com.project.shlok.TopicsAnalyzer.TwitterReader.java Source code

Java tutorial

Introduction

Here is the source code for com.project.shlok.TopicsAnalyzer.TwitterReader.java

Source

package com.project.shlok.TopicsAnalyzer;

import twitter4j.*;
import twitter4j.auth.AccessToken;
import uk.bl.wa.sentimentalj.Sentiment;
import uk.bl.wa.sentimentalj.SentimentalJ;

import com.aliasi.classify.JointClassification;
import com.aliasi.classify.LMClassifier;
import com.aliasi.util.AbstractExternalizable;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.twitter.Extractor;

import edu.stanford.nlp.ie.crf.CRFClassifier;
import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.tagger.maxent.MaxentTagger;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.Triple;

import org.bson.Document;

import java.io.File;
import java.util.*;

/**
 * Polarity of Topics on Social Media
 * CIS 700 - Text Mining for Social Media
 * TwitterReader.java
 * Purpose: Creates a TwitterObject to read tweets and analyze them
 *
 * @author Shlok Desai
 * @version 1.0 04/23/2016
 */
public class TwitterReader {
    TwitterObject twitterObject;

    public TwitterReader() {
        twitterObject = new TwitterObject();
    }

    public void readTweets(String query) {
        twitterObject.getTweets(query);
    }

    public void stop() {
        twitterObject.stop();
    }

}

/**
 * TwitterObject
 * Purpose: Reads tweets and analyses them
 * Implements : com.project.shlok.TopicsAnalyzer.TwitterStreamInterface
 */
@SuppressWarnings("rawtypes")
class TwitterObject implements TwitterStreamInterface {

    private final static String CONSUMER_KEY = "";
    private final static String CONSUMER_SECRET = "";
    private final static String OATH_TOKEN = "";
    private final static String OATH_TOKEN_SECRET = "";
    Twitter twitter;
    TwitterStream twitterStream;
    TwitterStreamListener twitterStreamListener;
    MongoClient mongoClient;
    MongoDatabase tweetsDatabase;
    MongoCollection<Document> tweets;
    MongoCollection<Document> sentimentsCol;
    MongoCollection<Document> entitiesCol;
    MongoCollection<Document> storiesCol;
    LMClassifier categoryClassifier;
    LMClassifier sentimentClassifier;
    SentimentalJ sentimentLexicon;
    CRFClassifier<CoreMap> entityClassifier;
    MaxentTagger tagger;
    ArrayList<String> stopwords;
    Properties properties;
    StanfordCoreNLP sentencePipeline;
    HashMap<String, Integer> stories;
    ArrayList<String> positivewordslist;
    ArrayList<String> negativewordslist;
    long count = 0;

    /**
       * Constructor
       * Instantiates the objects needed to read and analyse tweets
       * @param None
       * 
       */
    public TwitterObject() {
        twitter = TwitterFactory.getSingleton();
        twitterStream = TwitterStreamFactory.getSingleton();
        twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
        twitterStream.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
        AccessToken oauthAccessToken = new AccessToken(OATH_TOKEN, OATH_TOKEN_SECRET);
        twitter.setOAuthAccessToken(oauthAccessToken);
        twitterStream.setOAuthAccessToken(oauthAccessToken);
        twitterStreamListener = new TwitterStreamListener();
        twitterStreamListener.setTwitterStreamInterface(this);
        mongoClient = new MongoClient();
        tweetsDatabase = mongoClient.getDatabase("tweets_db");
        tweets = tweetsDatabase.getCollection("tweets");
        sentimentsCol = tweetsDatabase.getCollection("sentiments");
        entitiesCol = tweetsDatabase.getCollection("entities");
        storiesCol = tweetsDatabase.getCollection("stories");
        stopwords = new ArrayList<String>();
        positivewordslist = new ArrayList<String>();
        negativewordslist = new ArrayList<String>();
        String[] stops = { "https...", "http...", "a", "able", "about", "above", "abst", "accordance", "according",
                "accordingly", "across", "act", "actually", "added", "adj", "affected", "affecting", "affects",
                "after", "afterwards", "again", "against", "ah", "all", "almost", "alone", "along", "already",
                "also", "although", "always", "am", "among", "amongst", "an", "and", "announce", "another", "any",
                "anybody", "anyhow", "anymore", "anyone", "anything", "anyway", "anyways", "anywhere", "apparently",
                "approximately", "are", "aren", "arent", "arise", "around", "as", "aside", "ask", "asking", "at",
                "auth", "available", "away", "awfully", "b", "back", "be", "became", "because", "become", "becomes",
                "becoming", "been", "before", "beforehand", "begin", "beginning", "beginnings", "begins", "behind",
                "being", "believe", "below", "beside", "besides", "between", "beyond", "biol", "both", "brief",
                "briefly", "but", "by", "c", "ca", "came", "can", "cannot", "can't", "cause", "causes", "certain",
                "certainly", "co", "com", "come", "comes", "contain", "containing", "contains", "could", "couldnt",
                "d", "date", "did", "didn\'t", "different", "do", "does", "doesn\'t", "doing", "done", "don\'t",
                "down", "downwards", "due", "during", "e", "each", "ed", "edu", "effect", "eg", "eight", "eighty",
                "either", "else", "elsewhere", "end", "ending", "enough", "especially", "et", "et-al", "etc",
                "even", "ever", "every", "everybody", "everyone", "everything", "everywhere", "ex", "except", "f",
                "far", "few", "ff", "fifth", "first", "five", "fix", "followed", "following", "follows", "for",
                "former", "formerly", "forth", "found", "four", "from", "further", "furthermore", "g", "gave",
                "get", "gets", "getting", "give", "given", "gives", "giving", "go", "goes", "gone", "got", "gotten",
                "h", "had", "http", "https", "happens", "hardly", "has", "hasn\'t", "have", "haven't", "having",
                "he", "hed", "hence", "her", "here", "hereafter", "hereby", "herein", "heres", "hereupon", "hers",
                "herself", "hes", "hi", "hid", "him", "himself", "his", "hither", "home", "how", "howbeit",
                "however", "hundred", "i", "id", "ie", "if", "i'll", "im", "immediate", "immediately", "importance",
                "important", "in", "inc", "indeed", "index", "information", "instead", "into", "invention",
                "inward", "is", "isn't", "it", "itd", "it'll", "its", "itself", "i've", "j", "just", "k",
                "keep   keeps", "kept", "kg", "km", "know", "known", "knows", "l", "largely", "last", "lately",
                "later", "latter", "latterly", "least", "less", "lest", "let", "lets", "like", "liked", "likely",
                "line", "little", "'ll", "look", "looking", "looks", "ltd", "m", "made", "mainly", "make", "makes",
                "many", "may", "maybe", "me", "mean", "means", "meantime", "meanwhile", "merely", "mg", "might",
                "million", "miss", "ml", "more", "moreover", "most", "mostly", "mr", "mrs", "much", "mug", "must",
                "my", "myself", "n", "na", "name", "namely", "nay", "nd", "near", "nearly", "necessarily",
                "necessary", "need", "needs", "neither", "never", "nevertheless", "new", "next", "nine", "ninety",
                "no", "nobody", "non", "none", "nonetheless", "noone", "nor", "normally", "nos", "not", "noted",
                "nothing", "now", "nowhere", "o", "obtain", "obtained", "obviously", "of", "off", "often", "oh",
                "ok", "okay", "old", "omitted", "on", "once", "one", "ones", "only", "onto", "or", "ord", "other",
                "others", "otherwise", "ought", "our", "ours", "ourselves", "out", "outside", "over", "overall",
                "owing", "own", "p", "page", "pages", "part", "particular", "particularly", "past", "per",
                "perhaps", "placed", "please", "plus", "poorly", "possible", "possibly", "potentially", "pp",
                "predominantly", "present", "previously", "primarily", "probably", "promptly", "proud", "provides",
                "put", "q", "que", "quickly", "quite", "qv", "r", "ran", "rather", "rd", "re", "readily", "really",
                "recent", "recently", "ref", "refs", "regarding", "regardless", "regards", "related", "relatively",
                "research", "respectively", "resulted", "resulting", "results", "right", "run", "s", "said", "same",
                "saw", "say", "saying", "says", "sec", "section", "see", "seeing", "seem", "seemed", "seeming",
                "seems", "seen", "self", "selves", "sent", "seven", "several", "shall", "she", "shed", "she'll",
                "shes", "should", "shouldn't", "show", "showed", "shown", "showns", "shows", "significant",
                "significantly", "similar", "similarly", "since", "six", "slightly", "so", "some", "somebody",
                "somehow", "someone", "somethan", "something", "sometime", "sometimes", "somewhat", "somewhere",
                "soon", "sorry", "specifically", "specified", "specify", "specifying", "still", "stop", "strongly",
                "sub", "substantially", "successfully", "such", "sufficiently", "suggest", "sup", "sure   t",
                "take", "taken", "taking", "tell", "tends", "th", "than", "thank", "thanks", "thanx", "that",
                "that'll", "thats", "that've", "the", "their", "theirs", "them", "themselves", "then", "thence",
                "there", "thereafter", "thereby", "thered", "therefore", "therein", "there'll", "thereof",
                "therere", "theres", "thereto", "thereupon", "there've", "these", "they", "theyd", "they'll",
                "theyre", "they've", "think", "this", "those", "thou", "though", "thoughh", "thousand", "throug",
                "through", "throughout", "thru", "thus", "til", "tip", "to", "together", "too", "took", "toward",
                "towards", "tried", "tries", "truly", "try", "trying", "ts", "twice", "two", "u", "un", "under",
                "unfortunately", "unless", "unlike", "unlikely", "until", "unto", "up", "upon", "ups", "us", "use",
                "used", "useful", "usefully", "usefulness", "uses", "using", "usually", "v", "value", "various",
                "'ve", "very", "via", "viz", "vol", "vols", "vs", "w", "want", "wants", "was", "wasnt", "way", "we",
                "wed", "welcome", "we'll", "went", "were", "werent", "we've", "what", "whatever", "what'll",
                "whats", "when", "whence", "whenever", "where", "whereafter", "whereas", "whereby", "wherein",
                "wheres", "whereupon", "wherever", "whether", "which", "while", "whim", "whither", "who", "whod",
                "whoever", "whole", "who'll", "whom", "whomever", "whos", "whose", "why", "widely", "willing",
                "wish", "with", "within", "without", "wont", "words", "world", "would", "wouldnt", "www", "x", "y",
                "yes", "yet", "you", "youd", "you'll", "your", "youre", "yours", "yourself", "yourselves",
                "you\'ve", "z", "zero", "a", "about", "above", "across", "after", "again", "against", "all",
                "almost", "alone", "along", "already", "also", "although", "always", "among", "an", "and",
                "another", "any", "anybody", "anyone", "anything", "anywhere", "are", "area", "areas", "around",
                "as", "ask", "asked", "ask", "asks", "at", "away", "b", "back", "backed", "backing", "backs", "be",
                "became", "because", "become", "becomes", "been", "before", "began", "behind", "being", "beings",
                "best", "better", "between", "big", "both", "but", "by", "c", "came", "can", "cannot", "case",
                "cases", "certain", "certainly", "clear", "clearly", "come", "could", "d", "did", "differ",
                "different", "differently", "do", "does", "done", "down", "down", "downed", "downing", "downs",
                "during", "e", "each", "early", "either", "end", "ended", "ending", "ends", "enough", "even",
                "evenly", "ever", "every", "everybody", "everyone", "everything", "everywhere", "f", "face",
                "faces", "fact", "facts", "far", "felt", "few", "find", "finds", "first", "for", "four", "from",
                "full", "fully", "further", "furthered", "furthering", "furthers", "g", "gave", "general",
                "generally", "get", "gets", "give", "given", "gives", "go", "going", "good", "goods", "got",
                "great", "greater", "greatest", "group", "grouped", "grouping", "groups", "h", "had", "has", "have",
                "having", "he", "her", "here", "herself", "high", "high", "high", "higher", "highest", "him",
                "himself", "his", "how", "however", "i", "if", "important", "in", "interest", "interested",
                "interesting", "interests", "into", "is", "it", "its", "itself", "j", "just", "k", "keep", "keeps",
                "kind", "knew", "know", "known", "knows", "l", "large", "largely", "last", "later", "latest",
                "least", "less", "let", "lets", "like", "likely", "long", "longer", "longest", "m", "made", "make",
                "making", "man", "many", "may", "me", "member", "members", "men", "might", "more", "most", "mostly",
                "mr", "mrs", "much", "must", "my", "myself", "n", "necessary", "need", "needed", "needing", "needs",
                "never", "new", "new", "newer", "newest", "next", "no", "nobody", "non", "noone", "not", "nothing",
                "now", "nowhere", "number", "numbers", "o", "of", "off", "often", "old", "older", "oldest", "on",
                "once", "one", "only", "open", "opened", "opening", "opens", "or", "order", "ordered", "ordering",
                "orders", "other", "others", "our", "out", "over", "p", "part", "parted", "parting", "parts", "per",
                "perhaps", "place", "places", "point", "pointed", "pointing", "points", "possible", "present",
                "presented", "presenting", "presents", "problem", "problems", "put", "puts", "q", "quite", "r",
                "rather", "really", "right", "right", "room", "rooms", "s", "said", "same", "saw", "say", "says",
                "second", "seconds", "see", "seem", "seemed", "seeming", "seems", "sees", "several", "shall", "she",
                "should", "show", "showed", "showing", "shows", "side", "sides", "since", "small", "smaller",
                "smallest", "so", "some", "somebody", "someone", "something", "somewhere", "state", "states",
                "still", "still", "such", "sure", "t", "take", "taken", "than", "that", "the", "their", "them",
                "then", "there", "therefore", "these", "they", "thing", "things", "think", "thinks", "this",
                "those", "though", "thought", "thoughts", "three", "through", "thus", "to", "today", "together",
                "too", "took", "toward", "turn", "turned", "turning", "turns", "two", "u", "under", "until", "up",
                "upon", "us", "use", "used", "uses", "v", "very", "w", "want", "wanted", "wanting", "wants", "was",
                "way", "ways", "we", "well", "wells", "went", "were", "what", "when", "where", "whether", "which",
                "while", "who", "whole", "whose", "why", "will", "with", "within", "without", "work", "worked",
                "working", "works", "would", "x", "y", "year", "years", "yet", "you", "young", "younger",
                "youngest", "your", "yours", "z" };
        for (int i = 0; i < stops.length; ++i) {
            stopwords.add(stops[i]);
        }
        // Obtained from Bing Liu's lexicon
        String[] neglist = { "2-faced", "2-faces", "abnormal", "abolish", "abominable", "abominably", "abominate",
                "abomination", "abort", "aborted", "aborts", "abrade", "abrasive", "abrupt", "abruptly", "abscond",
                "absence", "absent-minded", "absentee", "absurd", "absurdity", "absurdly", "absurdness", "abuse",
                "abused", "abuses", "abusive", "abysmal", "abysmally", "abyss", "accidental", "accost", "accursed",
                "accusation", "accusations", "accuse", "accuses", "accusing", "accusingly", "acerbate", "acerbic",
                "acerbically", "ache", "ached", "aches", "achey", "aching", "acrid", "acridly", "acridness",
                "acrimonious", "acrimoniously", "acrimony", "adamant", "adamantly", "addict", "addicted",
                "addicting", "addicts", "admonish", "admonisher", "admonishingly", "admonishment", "admonition",
                "adulterate", "adulterated", "adulteration", "adulterier", "adversarial", "adversary", "adverse",
                "adversity", "afflict", "affliction", "afflictive", "affront", "afraid", "aggravate", "aggravating",
                "aggravation", "aggression", "aggressive", "aggressiveness", "aggressor", "aggrieve", "aggrieved",
                "aggrivation", "aghast", "agonies", "agonize", "agonizing", "agonizingly", "agony", "aground",
                "ail", "ailing", "ailment", "aimless", "allegations", "allege", "allergic", "allergies", "allergy",
                "aloof", "altercation", "ambiguity", "ambiguous", "ambivalence", "ambivalent", "ambush", "amiss",
                "amputate", "anarchism", "anarchist", "anarchistic", "anarchy", "anemic", "anger", "angrily",
                "angriness", "angry", "anguish", "animosity", "annihilate", "annihilation", "annoy", "annoyance",
                "annoyances", "annoyed", "annoying", "annoyingly", "annoys", "anomalous", "anomaly", "antagonism",
                "antagonist", "antagonistic", "antagonize", "anti-", "anti-american", "anti-israeli",
                "anti-occupation", "anti-proliferation", "anti-semites", "anti-social", "anti-us", "anti-white",
                "antipathy", "antiquated", "antithetical", "anxieties", "anxiety", "anxious", "anxiously",
                "anxiousness", "apathetic", "apathetically", "apathy", "apocalypse", "apocalyptic", "apologist",
                "apologists", "appal", "appall", "appalled", "appalling", "appallingly", "apprehension",
                "apprehensions", "apprehensive", "apprehensively", "arbitrary", "arcane", "archaic", "arduous",
                "arduously", "argumentative", "arrogance", "arrogant", "arrogantly", "ashamed", "asinine",
                "asininely", "asinininity", "askance", "asperse", "aspersion", "aspersions", "assail", "assassin",
                "assassinate", "assault", "assult", "astray", "asunder", "atrocious", "atrocities", "atrocity",
                "atrophy", "attack", "attacks", "audacious", "audaciously", "audaciousness", "audacity",
                "audiciously", "austere", "authoritarian", "autocrat", "autocratic", "avalanche", "avarice",
                "avaricious", "avariciously", "avenge", "averse", "aversion", "aweful", "awful", "awfully",
                "awfulness", "awkward", "awkwardness", "ax", "babble", "back-logged", "back-wood", "back-woods",
                "backache", "backaches", "backaching", "backbite", "backbiting", "backward", "backwardness",
                "backwood", "backwoods", "bad", "badly", "baffle", "baffled", "bafflement", "baffling", "bait",
                "balk", "banal", "banalize", "bane", "banish", "banishment", "bankrupt", "barbarian", "barbaric",
                "barbarically", "barbarity", "barbarous", "barbarously", "barren", "baseless", "bash", "bashed",
                "bashful", "bashing", "bastard", "bastards", "battered", "battering", "batty", "bearish", "beastly",
                "bedlam", "bedlamite", "befoul", "beg", "beggar", "beggarly", "begging", "beguile", "belabor",
                "belated", "beleaguer", "belie", "belittle", "belittled", "belittling", "bellicose", "belligerence",
                "belligerent", "belligerently", "bemoan", "bemoaning", "bemused", "bent", "berate", "bereave",
                "bereavement", "bereft", "berserk", "beseech", "beset", "besiege", "besmirch", "bestial", "betray",
                "betrayal", "betrayals", "betrayer", "betraying", "betrays", "bewail", "beware", "bewilder",
                "bewildered", "bewildering", "bewilderingly", "bewilderment", "bewitch", "bias", "biased", "biases",
                "bicker", "bickering", "bid-rigging", "bigotries", "bigotry", "bigoted", "bitch", "bitchy",
                "biting", "bitingly", "bitter", "bitterly", "bitterness", "bizarre", "blab", "blabber", "blackmail",
                "blah", "blame", "blameworthy", "bland", "blandish", "blaspheme", "blasphemous", "blasphemy",
                "blasted", "blatant", "blatantly", "blather", "bleak", "bleakly", "bleakness", "bleed", "bleeding",
                "bleeds", "blemish", "blind", "blinding", "blindingly", "blindside", "blister", "blistering",
                "bloated", "blockage", "blockhead", "bloodshed", "bloodthirsty", "bloody", "blotchy", "blow",
                "blunder", "blundering", "blunders", "blunt", "blur", "bluring", "blurred", "blurring", "blurry",
                "blurs", "blurt", "boastful", "boggle", "bogus", "boil", "boiling", "boisterous", "bomb", "bombard",
                "bombardment", "bombastic", "bondage", "bonkers", "bore", "bored", "boredom", "bores", "boring",
                "botch", "bother", "bothered", "bothering", "bothers", "bothersome", "bowdlerize", "boycott",
                "braggart", "bragger", "brainless", "brainwash", "brash", "brashly", "brashness", "brat", "bravado",
                "brazen", "brazenly", "brazenness", "breach", "break", "break-up", "break-ups", "breakdown",
                "breaking", "breaks", "breakup", "breakups", "bribery", "brimstone", "bristle", "brittle", "broke",
                "broken", "broken-hearted", "brood", "browbeat", "bruise", "bruised", "bruises", "bruising",
                "brusque", "brutal", "brutalising", "brutalities", "brutality", "brutalize", "brutalizing",
                "brutally", "brute", "brutish", "bs", "buckle", "bug", "bugging", "buggy", "bugs", "bulkier",
                "bulkiness", "bulky", "bulkyness", "bull****", "bull----", "bullies", "bullshit", "bullshyt",
                "bully", "bullying", "bullyingly", "bum", "bump", "bumped", "bumping", "bumpping", "bumps", "bumpy",
                "bungle", "bungler", "bungling", "bunk", "burden", "burdensome", "burdensomely", "burn", "burned",
                "burning", "burns", "bust", "busts", "busybody", "butcher", "butchery", "buzzing", "byzantine",
                "cackle", "calamities", "calamitous", "calamitously", "calamity", "callous", "calumniate",
                "calumniation", "calumnies", "calumnious", "calumniously", "calumny", "cancer", "cancerous",
                "cannibal", "cannibalize", "capitulate", "capricious", "capriciously", "capriciousness", "capsize",
                "careless", "carelessness", "caricature", "carnage", "carp", "cartoonish", "cash-strapped",
                "castigate", "castrated", "casualty", "cataclysm", "cataclysmal", "cataclysmic", "cataclysmically",
                "catastrophe", "catastrophes", "catastrophic", "catastrophically", "catastrophies", "caustic",
                "caustically", "cautionary", "cave", "censure", "chafe", "chaff", "chagrin", "challenging", "chaos",
                "chaotic", "chasten", "chastise", "chastisement", "chatter", "chatterbox", "cheap", "cheapen",
                "cheaply", "cheat", "cheated", "cheater", "cheating", "cheats", "checkered", "cheerless", "cheesy",
                "chide", "childish", "chill", "chilly", "chintzy", "choke", "choleric", "choppy", "chore",
                "chronic", "chunky", "clamor", "clamorous", "clash", "cliche", "cliched", "clique", "clog",
                "clogged", "clogs", "cloud", "clouding", "cloudy", "clueless", "clumsy", "clunky", "coarse",
                "cocky", "coerce", "coercion", "coercive", "cold", "coldly", "collapse", "collude", "collusion",
                "combative", "combust", "comical", "commiserate", "commonplace", "commotion", "commotions",
                "complacent", "complain", "complained", "complaining", "complains", "complaint", "complaints",
                "complex", "complicated", "complication", "complicit", "compulsion", "compulsive", "concede",
                "conceded", "conceit", "conceited", "concen", "concens", "concern", "concerned", "concerns",
                "concession", "concessions", "condemn", "condemnable", "condemnation", "condemned", "condemns",
                "condescend", "condescending", "condescendingly", "condescension", "confess", "confession",
                "confessions", "confined", "conflict", "conflicted", "conflicting", "conflicts", "confound",
                "confounded", "confounding", "confront", "confrontation", "confrontational", "confuse", "confused",
                "confuses", "confusing", "confusion", "confusions", "congested", "congestion", "cons", "conscons",
                "conservative", "conspicuous", "conspicuously", "conspiracies", "conspiracy", "conspirator",
                "conspiratorial", "conspire", "consternation", "contagious", "contaminate", "contaminated",
                "contaminates", "contaminating", "contamination", "contempt", "contemptible", "contemptuous",
                "contemptuously", "contend", "contention", "contentious", "contort", "contortions", "contradict",
                "contradiction", "contradictory", "contrariness", "contravene", "contrive", "contrived",
                "controversial", "controversy", "convoluted", "corrode", "corrosion", "corrosions", "corrosive",
                "corrupt", "corrupted", "corrupting", "corruption", "corrupts", "corruptted", "costlier", "costly",
                "counter-productive", "counterproductive", "coupists", "covetous", "coward", "cowardly", "crabby",
                "crack", "cracked", "cracks", "craftily", "craftly", "crafty", "cramp", "cramped", "cramping",
                "cranky", "crap", "crappy", "craps", "crash", "crashed", "crashes", "crashing", "crass", "craven",
                "cravenly", "craze", "crazily", "craziness", "crazy", "creak", "creaking", "creaks", "credulous",
                "creep", "creeping", "creeps", "creepy", "crept", "crime", "criminal", "cringe", "cringed",
                "cringes", "cripple", "crippled", "cripples", "crippling", "crisis", "critic", "critical",
                "criticism", "criticisms", "criticize", "criticized", "criticizing", "critics", "cronyism", "crook",
                "crooked", "crooks", "crowded", "crowdedness", "crude", "cruel", "crueler", "cruelest", "cruelly",
                "cruelness", "cruelties", "cruelty", "crumble", "crumbling", "crummy", "crumple", "crumpled",
                "crumples", "crush", "crushed", "crushing", "cry", "culpable", "culprit", "cumbersome", "cunt",
                "cunts", "cuplrit", "curse", "cursed", "curses", "curt", "cuss", "cussed", "cutthroat", "cynical",
                "cynicism", "d*mn", "damage", "damaged", "damages", "damaging", "damn", "damnable", "damnably",
                "damnation", "damned", "damning", "damper", "danger", "dangerous", "dangerousness", "dark",
                "darken", "darkened", "darker", "darkness", "dastard", "dastardly", "daunt", "daunting",
                "dauntingly", "dawdle", "daze", "dazed", "dead", "deadbeat", "deadlock", "deadly", "deadweight",
                "deaf", "dearth", "death", "debacle", "debase", "debasement", "debaser", "debatable", "debauch",
                "debaucher", "debauchery", "debilitate", "debilitating", "debility", "debt", "debts", "decadence",
                "decadent", "decay", "decayed", "deceit", "deceitful", "deceitfully", "deceitfulness", "deceive",
                "deceiver", "deceivers", "deceiving", "deception", "deceptive", "deceptively", "declaim", "decline",
                "declines", "declining", "decrement", "decrepit", "decrepitude", "decry", "defamation",
                "defamations", "defamatory", "defame", "defect", "defective", "defects", "defensive", "defiance",
                "defiant", "defiantly", "deficiencies", "deficiency", "deficient", "defile", "defiler", "deform",
                "deformed", "defrauding", "defunct", "defy", "degenerate", "degenerately", "degeneration",
                "degradation", "degrade", "degrading", "degradingly", "dehumanization", "dehumanize", "deign",
                "deject", "dejected", "dejectedly", "dejection", "delay", "delayed", "delaying", "delays",
                "delinquency", "delinquent", "delirious", "delirium", "delude", "deluded", "deluge", "delusion",
                "delusional", "delusions", "demean", "demeaning", "demise", "demolish", "demolisher", "demon",
                "demonic", "demonize", "demonized", "demonizes", "demonizing", "demoralize", "demoralizing",
                "demoralizingly", "denial", "denied", "denies", "denigrate", "denounce", "dense", "dent", "dented",
                "dents", "denunciate", "denunciation", "denunciations", "deny", "denying", "deplete", "deplorable",
                "deplorably", "deplore", "deploring", "deploringly", "deprave", "depraved", "depravedly",
                "deprecate", "depress", "depressed", "depressing", "depressingly", "depression", "depressions",
                "deprive", "deprived", "deride", "derision", "derisive", "derisively", "derisiveness", "derogatory",
                "desecrate", "desert", "desertion", "desiccate", "desiccated", "desititute", "desolate",
                "desolately", "desolation", "despair", "despairing", "despairingly", "desperate", "desperately",
                "desperation", "despicable", "despicably", "despise", "despised", "despoil", "despoiler",
                "despondence", "despondency", "despondent", "despondently", "despot", "despotic", "despotism",
                "destabilisation", "destains", "destitute", "destitution", "destroy", "destroyer", "destruction",
                "destructive", "desultory", "deter", "deteriorate", "deteriorating", "deterioration", "deterrent",
                "detest", "detestable", "detestably", "detested", "detesting", "detests", "detract", "detracted",
                "detracting", "detraction", "detracts", "detriment", "detrimental", "devastate", "devastated",
                "devastates", "devastating", "devastatingly", "devastation", "deviate", "deviation", "devil",
                "devilish", "devilishly", "devilment", "devilry", "devious", "deviously", "deviousness", "devoid",
                "diabolic", "diabolical", "diabolically", "diametrically", "diappointed", "diatribe", "diatribes",
                "dick", "dictator", "dictatorial", "die", "die-hard", "died", "dies", "difficult", "difficulties",
                "difficulty", "diffidence", "dilapidated", "dilemma", "dilly-dally", "dim", "dimmer", "din", "ding",
                "dings", "dinky", "dire", "direly", "direness", "dirt", "dirtbag", "dirtbags", "dirts", "dirty",
                "disable", "disabled", "disaccord", "disadvantage", "disadvantaged", "disadvantageous",
                "disadvantages", "disaffect", "disaffected", "disaffirm", "disagree", "disagreeable",
                "disagreeably", "disagreed", "disagreeing", "disagreement", "disagrees", "disallow", "disapointed",
                "disapointing", "disapointment", "disappoint", "disappointed", "disappointing", "disappointingly",
                "disappointment", "disappointments", "disappoints", "disapprobation", "disapproval", "disapprove",
                "disapproving", "disarm", "disarray", "disaster", "disasterous", "disastrous", "disastrously",
                "disavow", "disavowal", "disbelief", "disbelieve", "disbeliever", "disclaim", "discombobulate",
                "discomfit", "discomfititure", "discomfort", "discompose", "disconcert", "disconcerted",
                "disconcerting", "disconcertingly", "disconsolate", "disconsolately", "disconsolation",
                "discontent", "discontented", "discontentedly", "discontinued", "discontinuity", "discontinuous",
                "discord", "discordance", "discordant", "discountenance", "discourage", "discouragement",
                "discouraging", "discouragingly", "discourteous", "discourteously", "discoutinous", "discredit",
                "discrepant", "discriminate", "discrimination", "discriminatory", "disdain", "disdained",
                "disdainful", "disdainfully", "disfavor", "disgrace", "disgraced", "disgraceful", "disgracefully",
                "disgruntle", "disgruntled", "disgust", "disgusted", "disgustedly", "disgustful", "disgustfully",
                "disgusting", "disgustingly", "dishearten", "disheartening", "dishearteningly", "dishonest",
                "dishonestly", "dishonesty", "dishonor", "dishonorable", "dishonorablely", "disillusion",
                "disillusioned", "disillusionment", "disillusions", "disinclination", "disinclined", "disingenuous",
                "disingenuously", "disintegrate", "disintegrated", "disintegrates", "disintegration", "disinterest",
                "disinterested", "dislike", "disliked", "dislikes", "disliking", "dislocated", "disloyal",
                "disloyalty", "dismal", "dismally", "dismalness", "dismay", "dismayed", "dismaying", "dismayingly",
                "dismissive", "dismissively", "disobedience", "disobedient", "disobey", "disoobedient", "disorder",
                "disordered", "disorderly", "disorganized", "disorient", "disoriented", "disown", "disparage",
                "disparaging", "disparagingly", "dispensable", "dispirit", "dispirited", "dispiritedly",
                "dispiriting", "displace", "displaced", "displease", "displeased", "displeasing", "displeasure",
                "disproportionate", "disprove", "disputable", "dispute", "disputed", "disquiet", "disquieting",
                "disquietingly", "disquietude", "disregard", "disregardful", "disreputable", "disrepute",
                "disrespect", "disrespectable", "disrespectablity", "disrespectful", "disrespectfully",
                "disrespectfulness", "disrespecting", "disrupt", "disruption", "disruptive", "diss", "dissapointed",
                "dissappointed", "dissappointing", "dissatisfaction", "dissatisfactory", "dissatisfied",
                "dissatisfies", "dissatisfy", "dissatisfying", "dissed", "dissemble", "dissembler", "dissension",
                "dissent", "dissenter", "dissention", "disservice", "disses", "dissidence", "dissident",
                "dissidents", "dissing", "dissocial", "dissolute", "dissolution", "dissonance", "dissonant",
                "dissonantly", "dissuade", "dissuasive", "distains", "distaste", "distasteful", "distastefully",
                "distort", "distorted", "distortion", "distorts", "distract", "distracting", "distraction",
                "distraught", "distraughtly", "distraughtness", "distress", "distressed", "distressing",
                "distressingly", "distrust", "distrustful", "distrusting", "disturb", "disturbance", "disturbed",
                "disturbing", "disturbingly", "disunity", "disvalue", "divergent", "divisive", "divisively",
                "divisiveness", "dizzing", "dizzingly", "dizzy", "doddering", "dodgey", "dogged", "doggedly",
                "dogmatic", "doldrums", "domineer", "domineering", "donside", "doom", "doomed", "doomsday", "dope",
                "doubt", "doubtful", "doubtfully", "doubts", "douchbag", "douchebag", "douchebags", "downbeat",
                "downcast", "downer", "downfall", "downfallen", "downgrade", "downhearted", "downheartedly",
                "downhill", "downside", "downsides", "downturn", "downturns", "drab", "draconian", "draconic",
                "drag", "dragged", "dragging", "dragoon", "drags", "drain", "drained", "draining", "drains",
                "drastic", "drastically", "drawback", "drawbacks", "dread", "dreadful", "dreadfully",
                "dreadfulness", "dreary", "dripped", "dripping", "drippy", "drips", "drones", "droop", "droops",
                "drop-out", "drop-outs", "dropout", "dropouts", "drought", "drowning", "drunk", "drunkard",
                "drunken", "dubious", "dubiously", "dubitable", "dud", "dull", "dullard", "dumb", "dumbfound",
                "dump", "dumped", "dumping", "dumps", "dunce", "dungeon", "dungeons", "dupe", "dust", "dusty",
                "dwindling", "dying", "earsplitting", "eccentric", "eccentricity", "effigy", "effrontery",
                "egocentric", "egomania", "egotism", "egotistical", "egotistically", "egregious", "egregiously",
                "election-rigger", "elimination", "emaciated", "emasculate", "embarrass", "embarrassing",
                "embarrassingly", "embarrassment", "embattled", "embroil", "embroiled", "embroilment", "emergency",
                "emphatic", "emphatically", "emptiness", "encroach", "encroachment", "endanger", "enemies", "enemy",
                "enervate", "enfeeble", "enflame", "engulf", "enjoin", "enmity", "enrage", "enraged", "enraging",
                "enslave", "entangle", "entanglement", "entrap", "entrapment", "envious", "enviously",
                "enviousness", "epidemic", "equivocal", "erase", "erode", "erodes", "erosion", "err", "errant",
                "erratic", "erratically", "erroneous", "erroneously", "error", "errors", "eruptions", "escapade",
                "eschew", "estranged", "evade", "evasion", "evasive", "evil", "evildoer", "evils", "eviscerate",
                "exacerbate", "exagerate", "exagerated", "exagerates", "exaggerate", "exaggeration", "exasperate",
                "exasperated", "exasperating", "exasperatingly", "exasperation", "excessive", "excessively",
                "exclusion", "excoriate", "excruciating", "excruciatingly", "excuse", "excuses", "execrate",
                "exhaust", "exhausted", "exhaustion", "exhausts", "exhorbitant", "exhort", "exile", "exorbitant",
                "exorbitantance", "exorbitantly", "expel", "expensive", "expire", "expired", "explode", "exploit",
                "exploitation", "explosive", "expropriate", "expropriation", "expulse", "expunge", "exterminate",
                "extermination", "extinguish", "extort", "extortion", "extraneous", "extravagance", "extravagant",
                "extravagantly", "extremism", "extremist", "extremists", "eyesore", "f**k", "fabricate",
                "fabrication", "facetious", "facetiously", "fail", "failed", "failing", "fails", "failure",
                "failures", "faint", "fainthearted", "faithless", "fake", "fall", "fallacies", "fallacious",
                "fallaciously", "fallaciousness", "fallacy", "fallen", "falling", "fallout", "falls", "false",
                "falsehood", "falsely", "falsify", "falter", "faltered", "famine", "famished", "fanatic",
                "fanatical", "fanatically", "fanaticism", "fanatics", "fanciful", "far-fetched", "farce",
                "farcical", "farcical-yet-provocative", "farcically", "farfetched", "fascism", "fascist",
                "fastidious", "fastidiously", "fastuous", "fat", "fat-cat", "fat-cats", "fatal", "fatalistic",
                "fatalistically", "fatally", "fatcat", "fatcats", "fateful", "fatefully", "fathomless", "fatigue",
                "fatigued", "fatique", "fatty", "fatuity", "fatuous", "fatuously", "fault", "faults", "faulty",
                "fawningly", "faze", "fear", "fearful", "fearfully", "fears", "fearsome", "feckless", "feeble",
                "feeblely", "feebleminded", "feign", "feint", "fell", "felon", "felonious", "ferociously",
                "ferocity", "fetid", "fever", "feverish", "fevers", "fiasco", "fib", "fibber", "fickle", "fiction",
                "fictional", "fictitious", "fidget", "fidgety", "fiend", "fiendish", "fierce", "figurehead",
                "filth", "filthy", "finagle", "finicky", "fissures", "fist", "flabbergast", "flabbergasted",
                "flagging", "flagrant", "flagrantly", "flair", "flairs", "flak", "flake", "flakey", "flakieness",
                "flaking", "flaky", "flare", "flares", "flareup", "flareups", "flat-out", "flaunt", "flaw",
                "flawed", "flaws", "flee", "fleed", "fleeing", "fleer", "flees", "fleeting", "flicering", "flicker",
                "flickering", "flickers", "flighty", "flimflam", "flimsy", "flirt", "flirty", "floored", "flounder",
                "floundering", "flout", "fluster", "foe", "fool", "fooled", "foolhardy", "foolish", "foolishly",
                "foolishness", "forbid", "forbidden", "forbidding", "forceful", "foreboding", "forebodingly",
                "forfeit", "forged", "forgetful", "forgetfully", "forgetfulness", "forlorn", "forlornly", "forsake",
                "forsaken", "forswear", "foul", "foully", "foulness", "fractious", "fractiously", "fracture",
                "fragile", "fragmented", "frail", "frantic", "frantically", "franticly", "fraud", "fraudulent",
                "fraught", "frazzle", "frazzled", "freak", "freaking", "freakish", "freakishly", "freaks", "freeze",
                "freezes", "freezing", "frenetic", "frenetically", "frenzied", "frenzy", "fret", "fretful", "frets",
                "friction", "frictions", "fried", "friggin", "frigging", "fright", "frighten", "frightening",
                "frighteningly", "frightful", "frightfully", "frigid", "frost", "frown", "froze", "frozen",
                "fruitless", "fruitlessly", "frustrate", "frustrated", "frustrates", "frustrating", "frustratingly",
                "frustration", "frustrations", "fuck", "fucking", "fudge", "fugitive", "full-blown", "fulminate",
                "fumble", "fume", "fumes", "fundamentalism", "funky", "funnily", "funny", "furious", "furiously",
                "furor", "fury", "fuss", "fussy", "fustigate", "fusty", "futile", "futilely", "futility", "fuzzy",
                "gabble", "gaff", "gaffe", "gainsay", "gainsayer", "gall", "galling", "gallingly", "galls",
                "gangster", "gape", "garbage", "garish", "gasp", "gauche", "gaudy", "gawk", "gawky", "geezer",
                "genocide", "get-rich", "ghastly", "ghetto", "ghosting", "gibber", "gibberish", "gibe", "giddy",
                "gimmick", "gimmicked", "gimmicking", "gimmicks", "gimmicky", "glare", "glaringly", "glib",
                "glibly", "glitch", "glitches", "gloatingly", "gloom", "gloomy", "glower", "glum", "glut",
                "gnawing", "goad", "goading", "god-awful", "goof", "goofy", "goon", "gossip", "graceless",
                "gracelessly", "graft", "grainy", "grapple", "grate", "grating", "gravely", "greasy", "greed",
                "greedy", "grief", "grievance", "grievances", "grieve", "grieving", "grievous", "grievously",
                "grim", "grimace", "grind", "gripe", "gripes", "grisly", "gritty", "gross", "grossly", "grotesque",
                "grouch", "grouchy", "groundless", "grouse", "growl", "grudge", "grudges", "grudging", "grudgingly",
                "gruesome", "gruesomely", "gruff", "grumble", "grumpier", "grumpiest", "grumpily", "grumpish",
                "grumpy", "guile", "guilt", "guiltily", "guilty", "gullible", "gutless", "gutter", "hack", "hacks",
                "haggard", "haggle", "hairloss", "halfhearted", "halfheartedly", "hallucinate", "hallucination",
                "hamper", "hampered", "handicapped", "hang", "hangs", "haphazard", "hapless", "harangue", "harass",
                "harassed", "harasses", "harassment", "harboring", "harbors", "hard", "hard-hit", "hard-line",
                "hard-liner", "hardball", "harden", "hardened", "hardheaded", "hardhearted", "hardliner",
                "hardliners", "hardship", "hardships", "harm", "harmed", "harmful", "harms", "harpy", "harridan",
                "harried", "harrow", "harsh", "harshly", "hasseling", "hassle", "hassled", "hassles", "haste",
                "hastily", "hasty", "hate", "hated", "hateful", "hatefully", "hatefulness", "hater", "haters",
                "hates", "hating", "hatred", "haughtily", "haughty", "haunt", "haunting", "havoc", "hawkish",
                "haywire", "hazard", "hazardous", "haze", "hazy", "head-aches", "headache", "headaches",
                "heartbreaker", "heartbreaking", "heartbreakingly", "heartless", "heathen", "heavy-handed",
                "heavyhearted", "heck", "heckle", "heckled", "heckles", "hectic", "hedge", "hedonistic", "heedless",
                "hefty", "hegemonism", "hegemonistic", "hegemony", "heinous", "hell", "hell-bent", "hellion",
                "hells", "helpless", "helplessly", "helplessness", "heresy", "heretic", "heretical", "hesitant",
                "hestitant", "hideous", "hideously", "hideousness", "high-priced", "hiliarious", "hinder",
                "hindrance", "hiss", "hissed", "hissing", "ho-hum", "hoard", "hoax", "hobble", "hogs", "hollow",
                "hoodium", "hoodwink", "hooligan", "hopeless", "hopelessly", "hopelessness", "horde", "horrendous",
                "horrendously", "horrible", "horrid", "horrific", "horrified", "horrifies", "horrify", "horrifying",
                "horrifys", "hostage", "hostile", "hostilities", "hostility", "hotbeds", "hothead", "hotheaded",
                "hothouse", "hubris", "huckster", "hum", "humid", "humiliate", "humiliating", "humiliation",
                "humming", "hung", "hurt", "hurted", "hurtful", "hurting", "hurts", "hustler", "hype", "hypocricy",
                "hypocrisy", "hypocrite", "hypocrites", "hypocritical", "hypocritically", "hysteria", "hysteric",
                "hysterical", "hysterically", "hysterics", "idiocies", "idiocy", "idiot", "idiotic", "idiotically",
                "idiots", "idle", "ignoble", "ignominious", "ignominiously", "ignominy", "ignorance", "ignorant",
                "ignore", "ill-advised", "ill-conceived", "ill-defined", "ill-designed", "ill-fated", "ill-favored",
                "ill-formed", "ill-mannered", "ill-natured", "ill-sorted", "ill-tempered", "ill-treated",
                "ill-treatment", "ill-usage", "ill-used", "illegal", "illegally", "illegitimate", "illicit",
                "illiterate", "illness", "illogic", "illogical", "illogically", "illusion", "illusions", "illusory",
                "imaginary", "imbalance", "imbecile", "imbroglio", "immaterial", "immature", "imminence",
                "imminently", "immobilized", "immoderate", "immoderately", "immodest", "immoral", "immorality",
                "immorally", "immovable", "impair", "impaired", "impasse", "impatience", "impatient", "impatiently",
                "impeach", "impedance", "impede", "impediment", "impending", "impenitent", "imperfect",
                "imperfection", "imperfections", "imperfectly", "imperialist", "imperil", "imperious",
                "imperiously", "impermissible", "impersonal", "impertinent", "impetuous", "impetuously", "impiety",
                "impinge", "impious", "implacable", "implausible", "implausibly", "implicate", "implication",
                "implode", "impolite", "impolitely", "impolitic", "importunate", "importune", "impose", "imposers",
                "imposing", "imposition", "impossible", "impossiblity", "impossibly", "impotent", "impoverish",
                "impoverished", "impractical", "imprecate", "imprecise", "imprecisely", "imprecision", "imprison",
                "imprisonment", "improbability", "improbable", "improbably", "improper", "improperly",
                "impropriety", "imprudence", "imprudent", "impudence", "impudent", "impudently", "impugn",
                "impulsive", "impulsively", "impunity", "impure", "impurity", "inability", "inaccuracies",
                "inaccuracy", "inaccurate", "inaccurately", "inaction", "inactive", "inadequacy", "inadequate",
                "inadequately", "inadverent", "inadverently", "inadvisable", "inadvisably", "inane", "inanely",
                "inappropriate", "inappropriately", "inapt", "inaptitude", "inarticulate", "inattentive",
                "inaudible", "incapable", "incapably", "incautious", "incendiary", "incense", "incessant",
                "incessantly", "incite", "incitement", "incivility", "inclement", "incognizant", "incoherence",
                "incoherent", "incoherently", "incommensurate", "incomparable", "incomparably", "incompatability",
                "incompatibility", "incompatible", "incompetence", "incompetent", "incompetently", "incomplete",
                "incompliant", "incomprehensible", "incomprehension", "inconceivable", "inconceivably",
                "incongruous", "incongruously", "inconsequent", "inconsequential", "inconsequentially",
                "inconsequently", "inconsiderate", "inconsiderately", "inconsistence", "inconsistencies",
                "inconsistency", "inconsistent", "inconsolable", "inconsolably", "inconstant", "inconvenience",
                "inconveniently", "incorrect", "incorrectly", "incorrigible", "incorrigibly", "incredulous",
                "incredulously", "inculcate", "indecency", "indecent", "indecently", "indecision", "indecisive",
                "indecisively", "indecorum", "indefensible", "indelicate", "indeterminable", "indeterminably",
                "indeterminate", "indifference", "indifferent", "indigent", "indignant", "indignantly",
                "indignation", "indignity", "indiscernible", "indiscreet", "indiscreetly", "indiscretion",
                "indiscriminate", "indiscriminately", "indiscriminating", "indistinguishable", "indoctrinate",
                "indoctrination", "indolent", "indulge", "ineffective", "ineffectively", "ineffectiveness",
                "ineffectual", "ineffectually", "ineffectualness", "inefficacious", "inefficacy", "inefficiency",
                "inefficient", "inefficiently", "inelegance", "inelegant", "ineligible", "ineloquent",
                "ineloquently", "inept", "ineptitude", "ineptly", "inequalities", "inequality", "inequitable",
                "inequitably", "inequities", "inescapable", "inescapably", "inessential", "inevitable",
                "inevitably", "inexcusable", "inexcusably", "inexorable", "inexorably", "inexperience",
                "inexperienced", "inexpert", "inexpertly", "inexpiable", "inexplainable", "inextricable",
                "inextricably", "infamous", "infamously", "infamy", "infected", "infection", "infections",
                "inferior", "inferiority", "infernal", "infest", "infested", "infidel", "infidels", "infiltrator",
                "infiltrators", "infirm", "inflame", "inflammation", "inflammatory", "inflammed", "inflated",
                "inflationary", "inflexible", "inflict", "infraction", "infringe", "infringement", "infringements",
                "infuriate", "infuriated", "infuriating", "infuriatingly", "inglorious", "ingrate", "ingratitude",
                "inhibit", "inhibition", "inhospitable", "inhospitality", "inhuman", "inhumane", "inhumanity",
                "inimical", "inimically", "iniquitous", "iniquity", "injudicious", "injure", "injurious", "injury",
                "injustice", "injustices", "innuendo", "inoperable", "inopportune", "inordinate", "inordinately",
                "insane", "insanely", "insanity", "insatiable", "insecure", "insecurity", "insensible",
                "insensitive", "insensitively", "insensitivity", "insidious", "insidiously", "insignificance",
                "insignificant", "insignificantly", "insincere", "insincerely", "insincerity", "insinuate",
                "insinuating", "insinuation", "insociable", "insolence", "insolent", "insolently", "insolvent",
                "insouciance", "instability", "instable", "instigate", "instigator", "instigators", "insubordinate",
                "insubstantial", "insubstantially", "insufferable", "insufferably", "insufficiency", "insufficient",
                "insufficiently", "insular", "insult", "insulted", "insulting", "insultingly", "insults",
                "insupportable", "insupportably", "insurmountable", "insurmountably", "insurrection", "intefere",
                "inteferes", "intense", "interfere", "interference", "interferes", "intermittent", "interrupt",
                "interruption", "interruptions", "intimidate", "intimidating", "intimidatingly", "intimidation",
                "intolerable", "intolerablely", "intolerance", "intoxicate", "intractable", "intransigence",
                "intransigent", "intrude", "intrusion", "intrusive", "inundate", "inundated", "invader", "invalid",
                "invalidate", "invalidity", "invasive", "invective", "inveigle", "invidious", "invidiously",
                "invidiousness", "invisible", "involuntarily", "involuntary", "irascible", "irate", "irately",
                "ire", "irk", "irked", "irking", "irks", "irksome", "irksomely", "irksomeness", "irksomenesses",
                "ironic", "ironical", "ironically", "ironies", "irony", "irragularity", "irrational",
                "irrationalities", "irrationality", "irrationally", "irrationals", "irreconcilable",
                "irrecoverable", "irrecoverableness", "irrecoverablenesses", "irrecoverably", "irredeemable",
                "irredeemably", "irreformable", "irregular", "irregularity", "irrelevance", "irrelevant",
                "irreparable", "irreplacible", "irrepressible", "irresolute", "irresolvable", "irresponsible",
                "irresponsibly", "irretating", "irretrievable", "irreversible", "irritable", "irritably",
                "irritant", "irritate", "irritated", "irritating", "irritation", "irritations", "isolate",
                "isolated", "isolation", "issue", "issues", "itch", "itching", "itchy", "jabber", "jaded", "jagged",
                "jam", "jarring", "jaundiced", "jealous", "jealously", "jealousness", "jealousy", "jeer", "jeering",
                "jeeringly", "jeers", "jeopardize", "jeopardy", "jerk", "jerky", "jitter", "jitters", "jittery",
                "job-killing", "jobless", "joke", "joker", "jolt", "judder", "juddering", "judders", "jumpy",
                "junk", "junky", "junkyard", "jutter", "jutters", "kaput", "kill", "killed", "killer", "killing",
                "killjoy", "kills", "knave", "knife", "knock", "knotted", "kook", "kooky", "lack", "lackadaisical",
                "lacked", "lackey", "lackeys", "lacking", "lackluster", "lacks", "laconic", "lag", "lagged",
                "lagging", "laggy", "lags", "laid-off", "lambast", "lambaste", "lame", "lame-duck", "lament",
                "lamentable", "lamentably", "languid", "languish", "languor", "languorous", "languorously", "lanky",
                "lapse", "lapsed", "lapses", "lascivious", "last-ditch", "latency", "laughable", "laughably",
                "laughingstock", "lawbreaker", "lawbreaking", "lawless", "lawlessness", "layoff", "layoff-happy",
                "lazy", "leak", "leakage", "leakages", "leaking", "leaks", "leaky", "lech", "lecher", "lecherous",
                "lechery", "leech", "leer", "leery", "left-leaning", "lemon", "lengthy", "less-developed",
                "lesser-known", "letch", "lethal", "lethargic", "lethargy", "lewd", "lewdly", "lewdness",
                "liability", "liable", "liar", "liars", "licentious", "licentiously", "licentiousness", "lie",
                "lied", "lier", "lies", "life-threatening", "lifeless", "limit", "limitation", "limitations",
                "limited", "limits", "limp", "listless", "litigious", "little-known", "livid", "lividly", "loath",
                "loathe", "loathing", "loathly", "loathsome", "loathsomely", "lone", "loneliness", "lonely",
                "loner", "lonesome", "long-time", "long-winded", "longing", "longingly", "loophole", "loopholes",
                "loose", "loot", "lorn", "lose", "loser", "losers", "loses", "losing", "loss", "losses", "lost",
                "loud", "louder", "lousy", "loveless", "lovelorn", "low-rated", "lowly", "ludicrous", "ludicrously",
                "lugubrious", "lukewarm", "lull", "lumpy", "lunatic", "lunaticism", "lurch", "lure", "lurid",
                "lurk", "lurking", "lying", "macabre", "mad", "madden", "maddening", "maddeningly", "madder",
                "madly", "madman", "madness", "maladjusted", "maladjustment", "malady", "malaise", "malcontent",
                "malcontented", "maledict", "malevolence", "malevolent", "malevolently", "malice", "malicious",
                "maliciously", "maliciousness", "malign", "malignant", "malodorous", "maltreatment", "mangle",
                "mangled", "mangles", "mangling", "mania", "maniac", "maniacal", "manic", "manipulate",
                "manipulation", "manipulative", "manipulators", "mar", "marginal", "marginally", "martyrdom",
                "martyrdom-seeking", "mashed", "massacre", "massacres", "matte", "mawkish", "mawkishly",
                "mawkishness", "meager", "meaningless", "meanness", "measly", "meddle", "meddlesome", "mediocre",
                "mediocrity", "melancholy", "melodramatic", "melodramatically", "meltdown", "menace", "menacing",
                "menacingly", "mendacious", "mendacity", "menial", "merciless", "mercilessly", "mess", "messed",
                "messes", "messing", "messy", "midget", "miff", "militancy", "mindless", "mindlessly", "mirage",
                "mire", "misalign", "misaligned", "misaligns", "misapprehend", "misbecome", "misbecoming",
                "misbegotten", "misbehave", "misbehavior", "miscalculate", "miscalculation", "miscellaneous",
                "mischief", "mischievous", "mischievously", "misconception", "misconceptions", "miscreant",
                "miscreants", "misdirection", "miser", "miserable", "miserableness", "miserably", "miseries",
                "miserly", "misery", "misfit", "misfortune", "misgiving", "misgivings", "misguidance", "misguide",
                "misguided", "mishandle", "mishap", "misinform", "misinformed", "misinterpret", "misjudge",
                "misjudgment", "mislead", "misleading", "misleadingly", "mislike", "mismanage", "mispronounce",
                "mispronounced", "mispronounces", "misread", "misreading", "misrepresent", "misrepresentation",
                "miss", "missed", "misses", "misstatement", "mist", "mistake", "mistaken", "mistakenly", "mistakes",
                "mistified", "mistress", "mistrust", "mistrustful", "mistrustfully", "mists", "misunderstand",
                "misunderstanding", "misunderstandings", "misunderstood", "misuse", "moan", "mobster", "mock",
                "mocked", "mockeries", "mockery", "mocking", "mockingly", "mocks", "molest", "molestation",
                "monotonous", "monotony", "monster", "monstrosities", "monstrosity", "monstrous", "monstrously",
                "moody", "moot", "mope", "morbid", "morbidly", "mordant", "mordantly", "moribund", "moron",
                "moronic", "morons", "mortification", "mortified", "mortify", "mortifying", "motionless", "motley",
                "mourn", "mourner", "mournful", "mournfully", "muddle", "muddy", "mudslinger", "mudslinging",
                "mulish", "multi-polarization", "mundane", "murder", "murderer", "murderous", "murderously",
                "murky", "muscle-flexing", "mushy", "musty", "mysterious", "mysteriously", "mystery", "mystify",
                "myth", "nag", "nagging", "naive", "naively", "narrower", "nastily", "nastiness", "nasty",
                "naughty", "nauseate", "nauseates", "nauseating", "nauseatingly", "nave", "nebulous",
                "nebulously", "needless", "needlessly", "needy", "nefarious", "nefariously", "negate", "negation",
                "negative", "negatives", "negativity", "neglect", "neglected", "negligence", "negligent", "nemesis",
                "nepotism", "nervous", "nervously", "nervousness", "nettle", "nettlesome", "neurotic",
                "neurotically", "niggle", "niggles", "nightmare", "nightmarish", "nightmarishly", "nitpick",
                "nitpicking", "noise", "noises", "noisier", "noisy", "non-confidence", "nonexistent",
                "nonresponsive", "nonsense", "nosey", "notoriety", "notorious", "notoriously", "noxious",
                "nuisance", "numb", "obese", "object", "objection", "objectionable", "objections", "oblique",
                "obliterate", "obliterated", "oblivious", "obnoxious", "obnoxiously", "obscene", "obscenely",
                "obscenity", "obscure", "obscured", "obscures", "obscurity", "obsess", "obsessive", "obsessively",
                "obsessiveness", "obsolete", "obstacle", "obstinate", "obstinately", "obstruct", "obstructed",
                "obstructing", "obstruction", "obstructs", "obtrusive", "obtuse", "occlude", "occluded", "occludes",
                "occluding", "odd", "odder", "oddest", "oddities", "oddity", "oddly", "odor", "offence", "offend",
                "offender", "offending", "offenses", "offensive", "offensively", "offensiveness", "officious",
                "ominous", "ominously", "omission", "omit", "one-sided", "onerous", "onerously", "onslaught",
                "opinionated", "opponent", "opportunistic", "oppose", "opposition", "oppositions", "oppress",
                "oppression", "oppressive", "oppressively", "oppressiveness", "oppressors", "ordeal", "orphan",
                "ostracize", "outbreak", "outburst", "outbursts", "outcast", "outcry", "outlaw", "outmoded",
                "outrage", "outraged", "outrageous", "outrageously", "outrageousness", "outrages", "outsider",
                "over-acted", "over-awe", "over-balanced", "over-hyped", "over-priced", "over-valuation", "overact",
                "overacted", "overawe", "overbalance", "overbalanced", "overbearing", "overbearingly", "overblown",
                "overdo", "overdone", "overdue", "overemphasize", "overheat", "overkill", "overloaded", "overlook",
                "overpaid", "overpayed", "overplay", "overpower", "overpriced", "overrated", "overreach", "overrun",
                "overshadow", "oversight", "oversights", "oversimplification", "oversimplified", "oversimplify",
                "oversize", "overstate", "overstated", "overstatement", "overstatements", "overstates", "overtaxed",
                "overthrow", "overthrows", "overturn", "overweight", "overwhelm", "overwhelmed", "overwhelming",
                "overwhelmingly", "overwhelms", "overzealous", "overzealously", "overzelous", "pain", "painful",
                "painfull", "painfully", "pains", "pale", "pales", "paltry", "pan", "pandemonium", "pander",
                "pandering", "panders", "panic", "panick", "panicked", "panicking", "panicky", "paradoxical",
                "paradoxically", "paralize", "paralyzed", "paranoia", "paranoid", "parasite", "pariah", "parody",
                "partiality", "partisan", "partisans", "passe", "passive", "passiveness", "pathetic",
                "pathetically", "patronize", "paucity", "pauper", "paupers", "payback", "peculiar", "peculiarly",
                "pedantic", "peeled", "peeve", "peeved", "peevish", "peevishly", "penalize", "penalty",
                "perfidious", "perfidity", "perfunctory", "peril", "perilous", "perilously", "perish", "pernicious",
                "perplex", "perplexed", "perplexing", "perplexity", "persecute", "persecution", "pertinacious",
                "pertinaciously", "pertinacity", "perturb", "perturbed", "pervasive", "perverse", "perversely",
                "perversion", "perversity", "pervert", "perverted", "perverts", "pessimism", "pessimistic",
                "pessimistically", "pest", "pestilent", "petrified", "petrify", "pettifog", "petty", "phobia",
                "phobic", "phony", "picket", "picketed", "picketing", "pickets", "picky", "pig", "pigs", "pillage",
                "pillory", "pimple", "pinch", "pique", "pitiable", "pitiful", "pitifully", "pitiless", "pitilessly",
                "pittance", "pity", "plagiarize", "plague", "plasticky", "plaything", "plea", "pleas", "plebeian",
                "plight", "plot", "plotters", "ploy", "plunder", "plunderer", "pointless", "pointlessly", "poison",
                "poisonous", "poisonously", "pokey", "poky", "polarisation", "polemize", "pollute", "polluter",
                "polluters", "polution", "pompous", "poor", "poorer", "poorest", "poorly", "posturing", "pout",
                "poverty", "powerless", "prate", "pratfall", "prattle", "precarious", "precariously", "precipitate",
                "precipitous", "predatory", "predicament", "prejudge", "prejudice", "prejudices", "prejudicial",
                "premeditated", "preoccupy", "preposterous", "preposterously", "presumptuous", "presumptuously",
                "pretence", "pretend", "pretense", "pretentious", "pretentiously", "prevaricate", "pricey",
                "pricier", "prick", "prickle", "prickles", "prideful", "prik", "primitive", "prison", "prisoner",
                "problem", "problematic", "problems", "procrastinate", "procrastinates", "procrastination",
                "profane", "profanity", "prohibit", "prohibitive", "prohibitively", "propaganda", "propagandize",
                "proprietary", "prosecute", "protest", "protested", "protesting", "protests", "protracted",
                "provocation", "provocative", "provoke", "pry", "pugnacious", "pugnaciously", "pugnacity", "punch",
                "punish", "punishable", "punitive", "punk", "puny", "puppet", "puppets", "puzzled", "puzzlement",
                "puzzling", "quack", "qualm", "qualms", "quandary", "quarrel", "quarrellous", "quarrellously",
                "quarrels", "quarrelsome", "quash", "queer", "questionable", "quibble", "quibbles", "quitter",
                "rabid", "racism", "racist", "racists", "racy", "radical", "radicalization", "radically",
                "radicals", "rage", "ragged", "raging", "rail", "raked", "rampage", "rampant", "ramshackle",
                "rancor", "randomly", "rankle", "rant", "ranted", "ranting", "rantingly", "rants", "rape", "raped",
                "raping", "rascal", "rascals", "rash", "rattle", "rattled", "rattles", "ravage", "raving",
                "reactionary", "rebellious", "rebuff", "rebuke", "recalcitrant", "recant", "recession",
                "recessionary", "reckless", "recklessly", "recklessness", "recoil", "recourses", "redundancy",
                "redundant", "refusal", "refuse", "refused", "refuses", "refusing", "refutation", "refute",
                "refuted", "refutes", "refuting", "regress", "regression", "regressive", "regret", "regreted",
                "regretful", "regretfully", "regrets", "regrettable", "regrettably", "regretted", "reject",
                "rejected", "rejecting", "rejection", "rejects", "relapse", "relentless", "relentlessly",
                "relentlessness", "reluctance", "reluctant", "reluctantly", "remorse", "remorseful", "remorsefully",
                "remorseless", "remorselessly", "remorselessness", "renounce", "renunciation", "repel",
                "repetitive", "reprehensible", "reprehensibly", "reprehension", "reprehensive", "repress",
                "repression", "repressive", "reprimand", "reproach", "reproachful", "reprove", "reprovingly",
                "repudiate", "repudiation", "repugn", "repugnance", "repugnant", "repugnantly", "repulse",
                "repulsed", "repulsing", "repulsive", "repulsively", "repulsiveness", "resent", "resentful",
                "resentment", "resignation", "resigned", "resistance", "restless", "restlessness", "restrict",
                "restricted", "restriction", "restrictive", "resurgent", "retaliate", "retaliatory", "retard",
                "retarded", "retardedness", "retards", "reticent", "retract", "retreat", "retreated", "revenge",
                "revengeful", "revengefully", "revert", "revile", "reviled", "revoke", "revolt", "revolting",
                "revoltingly", "revulsion", "revulsive", "rhapsodize", "rhetoric", "rhetorical", "ricer",
                "ridicule", "ridicules", "ridiculous", "ridiculously", "rife", "rift", "rifts", "rigid", "rigidity",
                "rigidness", "rile", "riled", "rip", "rip-off", "ripoff", "ripped", "risk", "risks", "risky",
                "rival", "rivalry", "roadblocks", "rocky", "rogue", "rollercoaster", "rot", "rotten", "rough",
                "rremediable", "rubbish", "rude", "rue", "ruffian", "ruffle", "ruin", "ruined", "ruining",
                "ruinous", "ruins", "rumbling", "rumor", "rumors", "rumours", "rumple", "run-down", "runaway",
                "rupture", "rust", "rusts", "rusty", "rut", "ruthless", "ruthlessly", "ruthlessness", "ruts",
                "sabotage", "sack", "sacrificed", "sad", "sadden", "sadly", "sadness", "sag", "sagged", "sagging",
                "saggy", "sags", "salacious", "sanctimonious", "sap", "sarcasm", "sarcastic", "sarcastically",
                "sardonic", "sardonically", "sass", "satirical", "satirize", "savage", "savaged", "savagery",
                "savages", "scaly", "scam", "scams", "scandal", "scandalize", "scandalized", "scandalous",
                "scandalously", "scandals", "scandel", "scandels", "scant", "scapegoat", "scar", "scarce",
                "scarcely", "scarcity", "scare", "scared", "scarier", "scariest", "scarily", "scarred", "scars",
                "scary", "scathing", "scathingly", "sceptical", "scoff", "scoffingly", "scold", "scolded",
                "scolding", "scoldingly", "scorching", "scorchingly", "scorn", "scornful", "scornfully",
                "scoundrel", "scourge", "scowl", "scramble", "scrambled", "scrambles", "scrambling", "scrap",
                "scratch", "scratched", "scratches", "scratchy", "scream", "screech", "screw-up", "screwed",
                "screwed-up", "screwy", "scuff", "scuffs", "scum", "scummy", "second-class", "second-tier",
                "secretive", "sedentary", "seedy", "seethe", "seething", "self-coup", "self-criticism",
                "self-defeating", "self-destructive", "self-humiliation", "self-interest", "self-interested",
                "self-serving", "selfinterested", "selfish", "selfishly", "selfishness", "semi-retarded", "senile",
                "sensationalize", "senseless", "senselessly", "seriousness", "sermonize", "servitude", "set-up",
                "setback", "setbacks", "sever", "severe", "severity", "sh*t", "shabby", "shadowy", "shady", "shake",
                "shaky", "shallow", "sham", "shambles", "shame", "shameful", "shamefully", "shamefulness",
                "shameless", "shamelessly", "shamelessness", "shark", "sharply", "shatter", "shemale", "shimmer",
                "shimmy", "shipwreck", "shirk", "shirker", "shit", "shiver", "shock", "shocked", "shocking",
                "shockingly", "shoddy", "short-lived", "shortage", "shortchange", "shortcoming", "shortcomings",
                "shortness", "shortsighted", "shortsightedness", "showdown", "shrew", "shriek", "shrill", "shrilly",
                "shrivel", "shroud", "shrouded", "shrug", "shun", "shunned", "sick", "sicken", "sickening",
                "sickeningly", "sickly", "sickness", "sidetrack", "sidetracked", "siege", "sillily", "silly",
                "simplistic", "simplistically", "sin", "sinful", "sinfully", "sinister", "sinisterly", "sink",
                "sinking", "skeletons", "skeptic", "skeptical", "skeptically", "skepticism", "sketchy", "skimpy",
                "skinny", "skittish", "skittishly", "skulk", "slack", "slander", "slanderer", "slanderous",
                "slanderously", "slanders", "slap", "slashing", "slaughter", "slaughtered", "slave", "slaves",
                "sleazy", "slime", "slog", "slogged", "slogging", "slogs", "sloooooooooooooow", "sloooow", "slooow",
                "sloow", "sloppily", "sloppy", "sloth", "slothful", "slow", "slow-moving", "slowed", "slower",
                "slowest", "slowly", "sloww", "slowww", "slowwww", "slug", "sluggish", "slump", "slumping",
                "slumpping", "slur", "slut", "sluts", "sly", "smack", "smallish", "smash", "smear", "smell",
                "smelled", "smelling", "smells", "smelly", "smelt", "smoke", "smokescreen", "smolder", "smoldering",
                "smother", "smoulder", "smouldering", "smudge", "smudged", "smudges", "smudging", "smug", "smugly",
                "smut", "smuttier", "smuttiest", "smutty", "snag", "snagged", "snagging", "snags", "snappish",
                "snappishly", "snare", "snarky", "snarl", "sneak", "sneakily", "sneaky", "sneer", "sneering",
                "sneeringly", "snob", "snobbish", "snobby", "snobish", "snobs", "snub", "so-cal", "soapy", "sob",
                "sober", "sobering", "solemn", "solicitude", "somber", "sore", "sorely", "soreness", "sorrow",
                "sorrowful", "sorrowfully", "sorry", "sour", "sourly", "spade", "spank", "spendy", "spew", "spewed",
                "spewing", "spews", "spilling", "spinster", "spiritless", "spite", "spiteful", "spitefully",
                "spitefulness", "splatter", "split", "splitting", "spoil", "spoilage", "spoilages", "spoiled",
                "spoilled", "spoils", "spook", "spookier", "spookiest", "spookily", "spooky", "spoon-fed",
                "spoon-feed", "spoonfed", "sporadic", "spotty", "spurious", "spurn", "sputter", "squabble",
                "squabbling", "squander", "squash", "squeak", "squeaks", "squeaky", "squeal", "squealing",
                "squeals", "squirm", "stab", "stagnant", "stagnate", "stagnation", "staid", "stain", "stains",
                "stale", "stalemate", "stall", "stalls", "stammer", "stampede", "standstill", "stark", "starkly",
                "startle", "startling", "startlingly", "starvation", "starve", "static", "steal", "stealing",
                "steals", "steep", "steeply", "stench", "stereotype", "stereotypical", "stereotypically", "stern",
                "stew", "sticky", "stiff", "stiffness", "stifle", "stifling", "stiflingly", "stigma", "stigmatize",
                "sting", "stinging", "stingingly", "stingy", "stink", "stinks", "stodgy", "stole", "stolen",
                "stooge", "stooges", "stormy", "straggle", "straggler", "strain", "strained", "straining",
                "strange", "strangely", "stranger", "strangest", "strangle", "streaky", "strenuous", "stress",
                "stresses", "stressful", "stressfully", "stricken", "strict", "strictly", "strident", "stridently",
                "strife", "strike", "stringent", "stringently", "struck", "struggle", "struggled", "struggles",
                "struggling", "strut", "stubborn", "stubbornly", "stubbornness", "stuck", "stuffy", "stumble",
                "stumbled", "stumbles", "stump", "stumped", "stumps", "stun", "stunt", "stunted", "stupid",
                "stupidest", "stupidity", "stupidly", "stupified", "stupify", "stupor", "stutter", "stuttered",
                "stuttering", "stutters", "sty", "stymied", "sub-par", "subdued", "subjected", "subjection",
                "subjugate", "subjugation", "submissive", "subordinate", "subpoena", "subpoenas", "subservience",
                "subservient", "substandard", "subtract", "subversion", "subversive", "subversively", "subvert",
                "succumb", "suck", "sucked", "sucker", "sucks", "sucky", "sue", "sued", "sueing", "sues", "suffer",
                "suffered", "sufferer", "sufferers", "suffering", "suffers", "suffocate", "sugar-coat",
                "sugar-coated", "sugarcoated", "suicidal", "suicide", "sulk", "sullen", "sully", "sunder", "sunk",
                "sunken", "superficial", "superficiality", "superficially", "superfluous", "superstition",
                "superstitious", "suppress", "suppression", "surrender", "susceptible", "suspect", "suspicion",
                "suspicions", "suspicious", "suspiciously", "swagger", "swamped", "sweaty", "swelled", "swelling",
                "swindle", "swipe", "swollen", "symptom", "symptoms", "syndrome", "taboo", "tacky", "taint",
                "tainted", "tamper", "tangle", "tangled", "tangles", "tank", "tanked", "tanks", "tantrum", "tardy",
                "tarnish", "tarnished", "tarnishes", "tarnishing", "tattered", "taunt", "taunting", "tauntingly",
                "taunts", "taut", "tawdry", "taxing", "tease", "teasingly", "tedious", "tediously", "temerity",
                "temper", "tempest", "temptation", "tenderness", "tense", "tension", "tentative", "tentatively",
                "tenuous", "tenuously", "tepid", "terrible", "terribleness", "terribly", "terror", "terror-genic",
                "terrorism", "terrorize", "testily", "testy", "tetchily", "tetchy", "thankless", "thicker",
                "thirst", "thorny", "thoughtless", "thoughtlessly", "thoughtlessness", "thrash", "threat",
                "threaten", "threatening", "threats", "threesome", "throb", "throbbed", "throbbing", "throbs",
                "throttle", "thug", "thumb-down", "thumbs-down", "thwart", "time-consuming", "timid", "timidity",
                "timidly", "timidness", "tin-y", "tingled", "tingling", "tired", "tiresome", "tiring", "tiringly",
                "toil", "toll", "top-heavy", "topple", "torment", "tormented", "torrent", "tortuous", "torture",
                "tortured", "tortures", "torturing", "torturous", "torturously", "totalitarian", "touchy",
                "toughness", "tout", "touted", "touts", "toxic", "traduce", "tragedy", "tragic", "tragically",
                "traitor", "traitorous", "traitorously", "tramp", "trample", "transgress", "transgression", "trap",
                "traped", "trapped", "trash", "trashed", "trashy", "trauma", "traumatic", "traumatically",
                "traumatize", "traumatized", "travesties", "travesty", "treacherous", "treacherously", "treachery",
                "treason", "treasonous", "trick", "tricked", "trickery", "tricky", "trivial", "trivialize",
                "trouble", "troubled", "troublemaker", "troubles", "troublesome", "troublesomely", "troubling",
                "troublingly", "truant", "tumble", "tumbled", "tumbles", "tumultuous", "turbulent", "turmoil",
                "twist", "twisted", "twists", "two-faced", "two-faces", "tyrannical", "tyrannically", "tyranny",
                "tyrant", "ugh", "uglier", "ugliest", "ugliness", "ugly", "ulterior", "ultimatum", "ultimatums",
                "ultra-hardline", "un-viewable", "unable", "unacceptable", "unacceptablely", "unacceptably",
                "unaccessible", "unaccustomed", "unachievable", "unaffordable", "unappealing", "unattractive",
                "unauthentic", "unavailable", "unavoidably", "unbearable", "unbearablely", "unbelievable",
                "unbelievably", "uncaring", "uncertain", "uncivil", "uncivilized", "unclean", "unclear",
                "uncollectible", "uncomfortable", "uncomfortably", "uncomfy", "uncompetitive", "uncompromising",
                "uncompromisingly", "unconfirmed", "unconstitutional", "uncontrolled", "unconvincing",
                "unconvincingly", "uncooperative", "uncouth", "uncreative", "undecided", "undefined",
                "undependability", "undependable", "undercut", "undercuts", "undercutting", "underdog",
                "underestimate", "underlings", "undermine", "undermined", "undermines", "undermining", "underpaid",
                "underpowered", "undersized", "undesirable", "undetermined", "undid", "undignified", "undissolved",
                "undocumented", "undone", "undue", "unease", "uneasily", "uneasiness", "uneasy", "uneconomical",
                "unemployed", "unequal", "unethical", "uneven", "uneventful", "unexpected", "unexpectedly",
                "unexplained", "unfairly", "unfaithful", "unfaithfully", "unfamiliar", "unfavorable", "unfeeling",
                "unfinished", "unfit", "unforeseen", "unforgiving", "unfortunate", "unfortunately", "unfounded",
                "unfriendly", "unfulfilled", "unfunded", "ungovernable", "ungrateful", "unhappily", "unhappiness",
                "unhappy", "unhealthy", "unhelpful", "unilateralism", "unimaginable", "unimaginably", "unimportant",
                "uninformed", "uninsured", "unintelligible", "unintelligile", "unipolar", "unjust", "unjustifiable",
                "unjustifiably", "unjustified", "unjustly", "unkind", "unkindly", "unknown", "unlamentable",
                "unlamentably", "unlawful", "unlawfully", "unlawfulness", "unleash", "unlicensed", "unlikely",
                "unlucky", "unmoved", "unnatural", "unnaturally", "unnecessary", "unneeded", "unnerve", "unnerved",
                "unnerving", "unnervingly", "unnoticed", "unobserved", "unorthodox", "unorthodoxy", "unpleasant",
                "unpleasantries", "unpopular", "unpredictable", "unprepared", "unproductive", "unprofitable",
                "unprove", "unproved", "unproven", "unproves", "unproving", "unqualified", "unravel", "unraveled",
                "unreachable", "unreadable", "unrealistic", "unreasonable", "unreasonably", "unrelenting",
                "unrelentingly", "unreliability", "unreliable", "unresolved", "unresponsive", "unrest", "unruly",
                "unsafe", "unsatisfactory", "unsavory", "unscrupulous", "unscrupulously", "unsecure", "unseemly",
                "unsettle", "unsettled", "unsettling", "unsettlingly", "unskilled", "unsophisticated", "unsound",
                "unspeakable", "unspeakablely", "unspecified", "unstable", "unsteadily", "unsteadiness", "unsteady",
                "unsuccessful", "unsuccessfully", "unsupported", "unsupportive", "unsure", "unsuspecting",
                "unsustainable", "untenable", "untested", "unthinkable", "unthinkably", "untimely", "untouched",
                "untrue", "untrustworthy", "untruthful", "unusable", "unusably", "unuseable", "unuseably",
                "unusual", "unusually", "unviewable", "unwanted", "unwarranted", "unwatchable", "unwelcome",
                "unwell", "unwieldy", "unwilling", "unwillingly", "unwillingness", "unwise", "unwisely",
                "unworkable", "unworthy", "unyielding", "upbraid", "upheaval", "uprising", "uproar", "uproarious",
                "uproariously", "uproarous", "uproarously", "uproot", "upset", "upseting", "upsets", "upsetting",
                "upsettingly", "urgent", "useless", "usurp", "usurper", "utterly", "vagrant", "vague", "vagueness",
                "vain", "vainly", "vanity", "vehement", "vehemently", "vengeance", "vengeful", "vengefully",
                "vengefulness", "venom", "venomous", "venomously", "vent", "vestiges", "vex", "vexation", "vexing",
                "vexingly", "vibrate", "vibrated", "vibrates", "vibrating", "vibration", "vice", "vicious",
                "viciously", "viciousness", "victimize", "vile", "vileness", "vilify", "villainous", "villainously",
                "villains", "villian", "villianous", "villianously", "villify", "vindictive", "vindictively",
                "vindictiveness", "violate", "violation", "violator", "violators", "violent", "violently", "viper",
                "virulence", "virulent", "virulently", "virus", "vociferous", "vociferously", "volatile",
                "volatility", "vomit", "vomited", "vomiting", "vomits", "vulgar", "vulnerable", "wack", "wail",
                "wallow", "wane", "waning", "wanton", "war-like", "warily", "wariness", "warlike", "warned",
                "warning", "warp", "warped", "wary", "washed-out", "waste", "wasted", "wasteful", "wastefulness",
                "wasting", "water-down", "watered-down", "wayward", "weak", "weaken", "weakening", "weaker",
                "weakness", "weaknesses", "weariness", "wearisome", "weary", "wedge", "weed", "weep", "weird",
                "weirdly", "wheedle", "whimper", "whine", "whining", "whiny", "whips", "whore", "whores", "wicked",
                "wickedly", "wickedness", "wild", "wildly", "wiles", "wilt", "wily", "wimpy", "wince", "wobble",
                "wobbled", "wobbles", "woe", "woebegone", "woeful", "woefully", "womanizer", "womanizing", "worn",
                "worried", "worriedly", "worrier", "worries", "worrisome", "worry", "worrying", "worryingly",
                "worse", "worsen", "worsening", "worst", "worthless", "worthlessly", "worthlessness", "wound",
                "wounds", "wrangle", "wrath", "wreak", "wreaked", "wreaks", "wreck", "wrest", "wrestle", "wretch",
                "wretched", "wretchedly", "wretchedness", "wrinkle", "wrinkled", "wrinkles", "wrip", "wripped",
                "wripping", "writhe", "wrong", "wrongful", "wrongly", "wrought", "yawn", "zap", "zapped", "zaps",
                "zealot", "zealous", "zealously", "zombie" };
        for (int i = 0; i < neglist.length; ++i) {
            negativewordslist.add(neglist[i]);
        }

        // Obtained from Bing Liu's lexicon
        String[] poslist = { "a+", "abound", "abounds", "abundance", "abundant", "accessable", "accessible",
                "acclaim", "acclaimed", "acclamation", "accolade", "accolades", "accommodative", "accomodative",
                "accomplish", "accomplished", "accomplishment", "accomplishments", "accurate", "accurately",
                "achievable", "achievement", "achievements", "achievible", "acumen", "adaptable", "adaptive",
                "adequate", "adjustable", "admirable", "admirably", "admiration", "admire", "admirer", "admiring",
                "admiringly", "adorable", "adore", "adored", "adorer", "adoring", "adoringly", "adroit", "adroitly",
                "adulate", "adulation", "adulatory", "advanced", "advantage", "advantageous", "advantageously",
                "advantages", "adventuresome", "adventurous", "advocate", "advocated", "advocates", "affability",
                "affable", "affably", "affectation", "affection", "affectionate", "affinity", "affirm",
                "affirmation", "affirmative", "affluence", "affluent", "afford", "affordable", "affordably",
                "afordable", "agile", "agilely", "agility", "agreeable", "agreeableness", "agreeably", "all-around",
                "alluring", "alluringly", "altruistic", "altruistically", "amaze", "amazed", "amazement", "amazes",
                "amazing", "amazingly", "ambitious", "ambitiously", "ameliorate", "amenable", "amenity",
                "amiability", "amiabily", "amiable", "amicability", "amicable", "amicably", "amity", "ample",
                "amply", "amuse", "amusing", "amusingly", "angel", "angelic", "apotheosis", "appeal", "appealing",
                "applaud", "appreciable", "appreciate", "appreciated", "appreciates", "appreciative",
                "appreciatively", "appropriate", "approval", "approve", "ardent", "ardently", "ardor", "articulate",
                "aspiration", "aspirations", "aspire", "assurance", "assurances", "assure", "assuredly", "assuring",
                "astonish", "astonished", "astonishing", "astonishingly", "astonishment", "astound", "astounded",
                "astounding", "astoundingly", "astutely", "attentive", "attraction", "attractive", "attractively",
                "attune", "audible", "audibly", "auspicious", "authentic", "authoritative", "autonomous",
                "available", "aver", "avid", "avidly", "award", "awarded", "awards", "awe", "awed", "awesome",
                "awesomely", "awesomeness", "awestruck", "awsome", "backbone", "balanced", "bargain", "beauteous",
                "beautiful", "beautifullly", "beautifully", "beautify", "beauty", "beckon", "beckoned", "beckoning",
                "beckons", "believable", "believeable", "beloved", "benefactor", "beneficent", "beneficial",
                "beneficially", "beneficiary", "benefit", "benefits", "benevolence", "benevolent", "benifits",
                "best", "best-known", "best-performing", "best-selling", "better", "better-known",
                "better-than-expected", "beutifully", "blameless", "bless", "blessing", "bliss", "blissful",
                "blissfully", "blithe", "blockbuster", "bloom", "blossom", "bolster", "bonny", "bonus", "bonuses",
                "boom", "booming", "boost", "boundless", "bountiful", "brainiest", "brainy", "brand-new", "brave",
                "bravery", "bravo", "breakthrough", "breakthroughs", "breathlessness", "breathtaking",
                "breathtakingly", "breeze", "bright", "brighten", "brighter", "brightest", "brilliance",
                "brilliances", "brilliant", "brilliantly", "brisk", "brotherly", "bullish", "buoyant", "cajole",
                "calm", "calming", "calmness", "capability", "capable", "capably", "captivate", "captivating",
                "carefree", "cashback", "cashbacks", "catchy", "celebrate", "celebrated", "celebration",
                "celebratory", "champ", "champion", "charisma", "charismatic", "charitable", "charm", "charming",
                "charmingly", "chaste", "cheaper", "cheapest", "cheer", "cheerful", "cheery", "cherish",
                "cherished", "cherub", "chic", "chivalrous", "chivalry", "civility", "civilize", "clarity",
                "classic", "classy", "clean", "cleaner", "cleanest", "cleanliness", "cleanly", "clear", "clear-cut",
                "cleared", "clearer", "clearly", "clears", "clever", "cleverly", "cohere", "coherence", "coherent",
                "cohesive", "colorful", "comely", "comfort", "comfortable", "comfortably", "comforting", "comfy",
                "commend", "commendable", "commendably", "commitment", "commodious", "compact", "compactly",
                "compassion", "compassionate", "compatible", "competitive", "complement", "complementary",
                "complemented", "complements", "compliant", "compliment", "complimentary", "comprehensive",
                "conciliate", "conciliatory", "concise", "confidence", "confident", "congenial", "congratulate",
                "congratulation", "congratulations", "congratulatory", "conscientious", "considerate", "consistent",
                "consistently", "constructive", "consummate", "contentment", "continuity", "contrasty",
                "contribution", "convenience", "convenient", "conveniently", "convience", "convienient", "convient",
                "convincing", "convincingly", "cool", "coolest", "cooperative", "cooperatively", "cornerstone",
                "correct", "correctly", "cost-effective", "cost-saving", "counter-attack", "counter-attacks",
                "courage", "courageous", "courageously", "courageousness", "courteous", "courtly", "covenant",
                "cozy", "creative", "credence", "credible", "crisp", "crisper", "cure", "cure-all", "cushy", "cute",
                "cuteness", "danke", "danken", "daring", "daringly", "darling", "dashing", "dauntless", "dawn",
                "dazzle", "dazzled", "dazzling", "dead-cheap", "dead-on", "decency", "decent", "decisive",
                "decisiveness", "dedicated", "defeat", "defeated", "defeating", "defeats", "defender", "deference",
                "deft", "deginified", "delectable", "delicacy", "delicate", "delicious", "delight", "delighted",
                "delightful", "delightfully", "delightfulness", "dependable", "dependably", "deservedly",
                "deserving", "desirable", "desiring", "desirous", "destiny", "detachable", "devout", "dexterous",
                "dexterously", "dextrous", "dignified", "dignify", "dignity", "diligence", "diligent", "diligently",
                "diplomatic", "dirt-cheap", "distinction", "distinctive", "distinguished", "diversified", "divine",
                "divinely", "dominate", "dominated", "dominates", "dote", "dotingly", "doubtless", "dreamland",
                "dumbfounded", "dumbfounding", "dummy-proof", "durable", "dynamic", "eager", "eagerly", "eagerness",
                "earnest", "earnestly", "earnestness", "ease", "eased", "eases", "easier", "easiest", "easiness",
                "easing", "easy", "easy-to-use", "easygoing", "ebullience", "ebullient", "ebulliently",
                "ecenomical", "economical", "ecstasies", "ecstasy", "ecstatic", "ecstatically", "edify", "educated",
                "effective", "effectively", "effectiveness", "effectual", "efficacious", "efficient", "efficiently",
                "effortless", "effortlessly", "effusion", "effusive", "effusively", "effusiveness", "elan", "elate",
                "elated", "elatedly", "elation", "electrify", "elegance", "elegant", "elegantly", "elevate",
                "elite", "eloquence", "eloquent", "eloquently", "embolden", "eminence", "eminent", "empathize",
                "empathy", "empower", "empowerment", "enchant", "enchanted", "enchanting", "enchantingly",
                "encourage", "encouragement", "encouraging", "encouragingly", "endear", "endearing", "endorse",
                "endorsed", "endorsement", "endorses", "endorsing", "energetic", "energize", "energy-efficient",
                "energy-saving", "engaging", "engrossing", "enhance", "enhanced", "enhancement", "enhances",
                "enjoy", "enjoyable", "enjoyably", "enjoyed", "enjoying", "enjoyment", "enjoys", "enlighten",
                "enlightenment", "enliven", "ennoble", "enough", "enrapt", "enrapture", "enraptured", "enrich",
                "enrichment", "enterprising", "entertain", "entertaining", "entertains", "enthral", "enthrall",
                "enthralled", "enthuse", "enthusiasm", "enthusiast", "enthusiastic", "enthusiastically", "entice",
                "enticed", "enticing", "enticingly", "entranced", "entrancing", "entrust", "enviable", "enviably",
                "envious", "enviously", "enviousness", "envy", "equitable", "ergonomical", "err-free", "erudite",
                "ethical", "eulogize", "euphoria", "euphoric", "euphorically", "evaluative", "evenly", "eventful",
                "everlasting", "evocative", "exalt", "exaltation", "exalted", "exaltedly", "exalting", "exaltingly",
                "examplar", "examplary", "excallent", "exceed", "exceeded", "exceeding", "exceedingly", "exceeds",
                "excel", "exceled", "excelent", "excellant", "excelled", "excellence", "excellency", "excellent",
                "excellently", "excels", "exceptional", "exceptionally", "excite", "excited", "excitedly",
                "excitedness", "excitement", "excites", "exciting", "excitingly", "exellent", "exemplar",
                "exemplary", "exhilarate", "exhilarating", "exhilaratingly", "exhilaration", "exonerate",
                "expansive", "expeditiously", "expertly", "exquisite", "exquisitely", "extol", "extoll",
                "extraordinarily", "extraordinary", "exuberance", "exuberant", "exuberantly", "exult", "exultant",
                "exultation", "exultingly", "eye-catch", "eye-catching", "eyecatch", "eyecatching", "fabulous",
                "fabulously", "facilitate", "fair", "fairly", "fairness", "faith", "faithful", "faithfully",
                "faithfulness", "fame", "famed", "famous", "famously", "fancier", "fancinating", "fancy", "fanfare",
                "fans", "fantastic", "fantastically", "fascinate", "fascinating", "fascinatingly", "fascination",
                "fashionable", "fashionably", "fast", "fast-growing", "fast-paced", "faster", "fastest",
                "fastest-growing", "faultless", "fav", "fave", "favor", "favorable", "favored", "favorite",
                "favorited", "favour", "fearless", "fearlessly", "feasible", "feasibly", "feat", "feature-rich",
                "fecilitous", "feisty", "felicitate", "felicitous", "felicity", "fertile", "fervent", "fervently",
                "fervid", "fervidly", "fervor", "festive", "fidelity", "fiery", "fine", "fine-looking", "finely",
                "finer", "finest", "firmer", "first-class", "first-in-class", "first-rate", "flashy", "flatter",
                "flattering", "flatteringly", "flawless", "flawlessly", "flexibility", "flexible", "flourish",
                "flourishing", "fluent", "flutter", "fond", "fondly", "fondness", "foolproof", "foremost",
                "foresight", "formidable", "fortitude", "fortuitous", "fortuitously", "fortunate", "fortunately",
                "fortune", "fragrant", "free", "freed", "freedom", "freedoms", "fresh", "fresher", "freshest",
                "friendliness", "friendly", "frolic", "frugal", "fruitful", "ftw", "fulfillment", "fun",
                "futurestic", "futuristic", "gaiety", "gaily", "gain", "gained", "gainful", "gainfully", "gaining",
                "gains", "gallant", "gallantly", "galore", "geekier", "geeky", "gem", "gems", "generosity",
                "generous", "generously", "genial", "genius", "gentle", "gentlest", "genuine", "gifted", "glad",
                "gladden", "gladly", "gladness", "glamorous", "glee", "gleeful", "gleefully", "glimmer",
                "glimmering", "glisten", "glistening", "glitter", "glitz", "glorify", "glorious", "gloriously",
                "glory", "glow", "glowing", "glowingly", "god-given", "god-send", "godlike", "godsend", "gold",
                "golden", "good", "goodly", "goodness", "goodwill", "goood", "gooood", "gorgeous", "gorgeously",
                "grace", "graceful", "gracefully", "gracious", "graciously", "graciousness", "grand", "grandeur",
                "grateful", "gratefully", "gratification", "gratified", "gratifies", "gratify", "gratifying",
                "gratifyingly", "gratitude", "great", "greatest", "greatness", "grin", "groundbreaking",
                "guarantee", "guidance", "guiltless", "gumption", "gush", "gusto", "gutsy", "hail", "halcyon",
                "hale", "hallmark", "hallmarks", "hallowed", "handier", "handily", "hands-down", "handsome",
                "handsomely", "handy", "happier", "happily", "happiness", "happy", "hard-working", "hardier",
                "hardy", "harmless", "harmonious", "harmoniously", "harmonize", "harmony", "headway", "heal",
                "healthful", "healthy", "hearten", "heartening", "heartfelt", "heartily", "heartwarming", "heaven",
                "heavenly", "helped", "helpful", "helping", "hero", "heroic", "heroically", "heroine", "heroize",
                "heros", "high-quality", "high-spirited", "hilarious", "holy", "homage", "honest", "honesty",
                "honor", "honorable", "honored", "honoring", "hooray", "hopeful", "hospitable", "hot", "hotcake",
                "hotcakes", "hottest", "hug", "humane", "humble", "humility", "humor", "humorous", "humorously",
                "humour", "humourous", "ideal", "idealize", "ideally", "idol", "idolize", "idolized", "idyllic",
                "illuminate", "illuminati", "illuminating", "illumine", "illustrious", "ilu", "imaculate",
                "imaginative", "immaculate", "immaculately", "immense", "impartial", "impartiality", "impartially",
                "impassioned", "impeccable", "impeccably", "important", "impress", "impressed", "impresses",
                "impressive", "impressively", "impressiveness", "improve", "improved", "improvement",
                "improvements", "improves", "improving", "incredible", "incredibly", "indebted", "individualized",
                "indulgence", "indulgent", "industrious", "inestimable", "inestimably", "inexpensive",
                "infallibility", "infallible", "infallibly", "influential", "ingenious", "ingeniously", "ingenuity",
                "ingenuous", "ingenuously", "innocuous", "innovation", "innovative", "inpressed", "insightful",
                "insightfully", "inspiration", "inspirational", "inspire", "inspiring", "instantly", "instructive",
                "instrumental", "integral", "integrated", "intelligence", "intelligent", "intelligible",
                "interesting", "interests", "intimacy", "intimate", "intricate", "intrigue", "intriguing",
                "intriguingly", "intuitive", "invaluable", "invaluablely", "inventive", "invigorate",
                "invigorating", "invincibility", "invincible", "inviolable", "inviolate", "invulnerable",
                "irreplaceable", "irreproachable", "irresistible", "irresistibly", "issue-free", "jaw-droping",
                "jaw-dropping", "jollify", "jolly", "jovial", "joy", "joyful", "joyfully", "joyous", "joyously",
                "jubilant", "jubilantly", "jubilate", "jubilation", "jubiliant", "judicious", "justly", "keen",
                "keenly", "keenness", "kid-friendly", "kindliness", "kindly", "kindness", "knowledgeable", "kudos",
                "large-capacity", "laud", "laudable", "laudably", "lavish", "lavishly", "law-abiding", "lawful",
                "lawfully", "lead", "leading", "leads", "lean", "led", "legendary", "leverage", "levity",
                "liberate", "liberation", "liberty", "lifesaver", "light-hearted", "lighter", "likable", "like",
                "liked", "likes", "liking", "lionhearted", "lively", "logical", "long-lasting", "lovable",
                "lovably", "love", "loved", "loveliness", "lovely", "lover", "loves", "loving", "low-cost",
                "low-price", "low-priced", "low-risk", "lower-priced", "loyal", "loyalty", "lucid", "lucidly",
                "luck", "luckier", "luckiest", "luckiness", "lucky", "lucrative", "luminous", "lush", "luster",
                "lustrous", "luxuriant", "luxuriate", "luxurious", "luxuriously", "luxury", "lyrical", "magic",
                "magical", "magnanimous", "magnanimously", "magnificence", "magnificent", "magnificently",
                "majestic", "majesty", "manageable", "maneuverable", "marvel", "marveled", "marvelled",
                "marvellous", "marvelous", "marvelously", "marvelousness", "marvels", "master", "masterful",
                "masterfully", "masterpiece", "masterpieces", "masters", "mastery", "matchless", "mature",
                "maturely", "maturity", "meaningful", "memorable", "merciful", "mercifully", "mercy", "merit",
                "meritorious", "merrily", "merriment", "merriness", "merry", "mesmerize", "mesmerized",
                "mesmerizes", "mesmerizing", "mesmerizingly", "meticulous", "meticulously", "mightily", "mighty",
                "mind-blowing", "miracle", "miracles", "miraculous", "miraculously", "miraculousness", "modern",
                "modest", "modesty", "momentous", "monumental", "monumentally", "morality", "motivated",
                "multi-purpose", "navigable", "neat", "neatest", "neatly", "nice", "nicely", "nicer", "nicest",
                "nifty", "nimble", "noble", "nobly", "noiseless", "non-violence", "non-violent", "notably",
                "noteworthy", "nourish", "nourishing", "nourishment", "novelty", "nurturing", "oasis", "obsession",
                "obsessions", "obtainable", "openly", "openness", "optimal", "optimism", "optimistic", "opulent",
                "orderly", "originality", "outdo", "outdone", "outperform", "outperformed", "outperforming",
                "outperforms", "outshine", "outshone", "outsmart", "outstanding", "outstandingly", "outstrip",
                "outwit", "ovation", "overjoyed", "overtake", "overtaken", "overtakes", "overtaking", "overtook",
                "overture", "pain-free", "painless", "painlessly", "palatial", "pamper", "pampered", "pamperedly",
                "pamperedness", "pampers", "panoramic", "paradise", "paramount", "pardon", "passion", "passionate",
                "passionately", "patience", "patient", "patiently", "patriot", "patriotic", "peace", "peaceable",
                "peaceful", "peacefully", "peacekeepers", "peach", "peerless", "pep", "pepped", "pepping", "peppy",
                "peps", "perfect", "perfection", "perfectly", "permissible", "perseverance", "persevere",
                "personages", "personalized", "phenomenal", "phenomenally", "picturesque", "piety", "pinnacle",
                "playful", "playfully", "pleasant", "pleasantly", "pleased", "pleases", "pleasing", "pleasingly",
                "pleasurable", "pleasurably", "pleasure", "plentiful", "pluses", "plush", "plusses", "poetic",
                "poeticize", "poignant", "poise", "poised", "polished", "polite", "politeness", "popular",
                "portable", "posh", "positive", "positively", "positives", "powerful", "powerfully", "praise",
                "praiseworthy", "praising", "pre-eminent", "precious", "precise", "precisely", "preeminent",
                "prefer", "preferable", "preferably", "prefered", "preferes", "preferring", "prefers", "premier",
                "prestige", "prestigious", "prettily", "pretty", "priceless", "pride", "principled", "privilege",
                "privileged", "prize", "proactive", "problem-free", "problem-solver", "prodigious", "prodigiously",
                "prodigy", "productive", "productively", "proficient", "proficiently", "profound", "profoundly",
                "profuse", "profusion", "progress", "progressive", "prolific", "prominence", "prominent", "promise",
                "promised", "promises", "promising", "promoter", "prompt", "promptly", "proper", "properly",
                "propitious", "propitiously", "pros", "prosper", "prosperity", "prosperous", "prospros", "protect",
                "protection", "protective", "proud", "proven", "proves", "providence", "proving", "prowess",
                "prudence", "prudent", "prudently", "punctual", "pure", "purify", "purposeful", "quaint",
                "qualified", "qualify", "quicker", "quiet", "quieter", "radiance", "radiant", "rapid", "rapport",
                "rapt", "rapture", "raptureous", "raptureously", "rapturous", "rapturously", "rational",
                "razor-sharp", "reachable", "readable", "readily", "ready", "reaffirm", "reaffirmation",
                "realistic", "realizable", "reasonable", "reasonably", "reasoned", "reassurance", "reassure",
                "receptive", "reclaim", "recomend", "recommend", "recommendation", "recommendations", "recommended",
                "reconcile", "reconciliation", "record-setting", "recover", "recovery", "rectification", "rectify",
                "rectifying", "redeem", "redeeming", "redemption", "refine", "refined", "refinement", "reform",
                "reformed", "reforming", "reforms", "refresh", "refreshed", "refreshing", "refund", "refunded",
                "regal", "regally", "regard", "rejoice", "rejoicing", "rejoicingly", "rejuvenate", "rejuvenated",
                "rejuvenating", "relaxed", "relent", "reliable", "reliably", "relief", "relish", "remarkable",
                "remarkably", "remedy", "remission", "remunerate", "renaissance", "renewed", "renown", "renowned",
                "replaceable", "reputable", "reputation", "resilient", "resolute", "resound", "resounding",
                "resourceful", "resourcefulness", "respect", "respectable", "respectful", "respectfully", "respite",
                "resplendent", "responsibly", "responsive", "restful", "restored", "restructure", "restructured",
                "restructuring", "retractable", "revel", "revelation", "revere", "reverence", "reverent",
                "reverently", "revitalize", "revival", "revive", "revives", "revolutionary", "revolutionize",
                "revolutionized", "revolutionizes", "reward", "rewarding", "rewardingly", "rich", "richer",
                "richly", "richness", "right", "righten", "righteous", "righteously", "righteousness", "rightful",
                "rightfully", "rightly", "rightness", "risk-free", "robust", "rock-star", "rock-stars", "rockstar",
                "rockstars", "romantic", "romantically", "romanticize", "roomier", "roomy", "rosy", "safe",
                "safely", "sagacity", "sagely", "saint", "saintliness", "saintly", "salutary", "salute", "sane",
                "satisfactorily", "satisfactory", "satisfied", "satisfies", "satisfy", "satisfying", "satisified",
                "saver", "savings", "savior", "savvy", "scenic", "seamless", "seasoned", "secure", "securely",
                "selective", "self-determination", "self-respect", "self-satisfaction", "self-sufficiency",
                "self-sufficient", "sensation", "sensational", "sensationally", "sensations", "sensible",
                "sensibly", "sensitive", "serene", "serenity", "sexy", "sharp", "sharper", "sharpest", "shimmering",
                "shimmeringly", "shine", "shiny", "significant", "silent", "simpler", "simplest", "simplified",
                "simplifies", "simplify", "simplifying", "sincere", "sincerely", "sincerity", "skill", "skilled",
                "skillful", "skillfully", "slammin", "sleek", "slick", "smart", "smarter", "smartest", "smartly",
                "smile", "smiles", "smiling", "smilingly", "smitten", "smooth", "smoother", "smoothes", "smoothest",
                "smoothly", "snappy", "snazzy", "sociable", "soft", "softer", "solace", "solicitous",
                "solicitously", "solid", "solidarity", "soothe", "soothingly", "sophisticated", "soulful",
                "soundly", "soundness", "spacious", "sparkle", "sparkling", "spectacular", "spectacularly",
                "speedily", "speedy", "spellbind", "spellbinding", "spellbindingly", "spellbound", "spirited",
                "spiritual", "splendid", "splendidly", "splendor", "spontaneous", "sporty", "spotless", "sprightly",
                "stability", "stabilize", "stable", "stainless", "standout", "state-of-the-art", "stately",
                "statuesque", "staunch", "staunchly", "staunchness", "steadfast", "steadfastly", "steadfastness",
                "steadiest", "steadiness", "steady", "stellar", "stellarly", "stimulate", "stimulates",
                "stimulating", "stimulative", "stirringly", "straighten", "straightforward", "streamlined",
                "striking", "strikingly", "striving", "strong", "stronger", "strongest", "stunned", "stunning",
                "stunningly", "stupendous", "stupendously", "sturdier", "sturdy", "stylish", "stylishly",
                "stylized", "suave", "suavely", "sublime", "subsidize", "subsidized", "subsidizes", "subsidizing",
                "substantive", "succeed", "succeeded", "succeeding", "succeeds", "succes", "success", "successes",
                "successful", "successfully", "suffice", "sufficed", "suffices", "sufficient", "sufficiently",
                "suitable", "sumptuous", "sumptuously", "sumptuousness", "super", "superb", "superbly", "superior",
                "superiority", "supple", "support", "supported", "supporter", "supporting", "supportive",
                "supports", "supremacy", "supreme", "supremely", "supurb", "supurbly", "surmount", "surpass",
                "surreal", "survival", "survivor", "sustainability", "sustainable", "swank", "swankier",
                "swankiest", "swanky", "sweeping", "sweet", "sweeten", "sweetheart", "sweetly", "sweetness",
                "swift", "swiftness", "talent", "talented", "talents", "tantalize", "tantalizing", "tantalizingly",
                "tempt", "tempting", "temptingly", "tenacious", "tenaciously", "tenacity", "tender", "tenderly",
                "terrific", "terrifically", "thank", "thankful", "thinner", "thoughtful", "thoughtfully",
                "thoughtfulness", "thrift", "thrifty", "thrill", "thrilled", "thrilling", "thrillingly", "thrills",
                "thrive", "thriving", "thumb-up", "thumbs-up", "tickle", "tidy", "time-honored", "timely", "tingle",
                "titillate", "titillating", "titillatingly", "togetherness", "tolerable", "toll-free", "top",
                "top-notch", "top-quality", "topnotch", "tops", "tough", "tougher", "toughest", "traction",
                "tranquil", "tranquility", "transparent", "treasure", "tremendously", "trendy", "triumph",
                "triumphal", "triumphant", "triumphantly", "trivially", "trophy", "trouble-free", "trump",
                "trumpet", "trust", "trusted", "trusting", "trustingly", "trustworthiness", "trustworthy", "trusty",
                "truthful", "truthfully", "truthfulness", "twinkly", "ultra-crisp", "unabashed", "unabashedly",
                "unaffected", "unassailable", "unbeatable", "unbiased", "unbound", "uncomplicated", "unconditional",
                "undamaged", "undaunted", "understandable", "undisputable", "undisputably", "undisputed",
                "unencumbered", "unequivocal", "unequivocally", "unfazed", "unfettered", "unforgettable", "unity",
                "unlimited", "unmatched", "unparalleled", "unquestionable", "unquestionably", "unreal",
                "unrestricted", "unrivaled", "unselfish", "unwavering", "upbeat", "upgradable", "upgradeable",
                "upgraded", "upheld", "uphold", "uplift", "uplifting", "upliftingly", "upliftment", "upscale",
                "usable", "useable", "useful", "user-friendly", "user-replaceable", "valiant", "valiantly", "valor",
                "valuable", "variety", "venerate", "verifiable", "veritable", "versatile", "versatility", "vibrant",
                "vibrantly", "victorious", "victory", "viewable", "vigilance", "vigilant", "virtue", "virtuous",
                "virtuously", "visionary", "vivacious", "vivid", "vouch", "vouchsafe", "warm", "warmer",
                "warmhearted", "warmly", "warmth", "wealthy", "welcome", "well", "well-backlit", "well-balanced",
                "well-behaved", "well-being", "well-bred", "well-connected", "well-educated", "well-established",
                "well-informed", "well-intentioned", "well-known", "well-made", "well-managed", "well-mannered",
                "well-positioned", "well-received", "well-regarded", "well-rounded", "well-run", "well-wishers",
                "wellbeing", "whoa", "wholeheartedly", "wholesome", "whooa", "whoooa", "wieldy", "willing",
                "willingly", "willingness", "win", "windfall", "winnable", "winner", "winners", "winning", "wins",
                "wisdom", "wise", "wisely", "witty", "won", "wonder", "wonderful", "wonderfully", "wonderous",
                "wonderously", "wonders", "wondrous", "woo", "work", "workable", "worked", "works", "world-famous",
                "worth", "worth-while", "worthiness", "worthwhile", "worthy", "wow", "wowed", "wowing", "wows",
                "yay", "youthful", "zeal", "zenith", "zest", "zippy" };
        for (int i = 0; i < poslist.length; ++i) {
            positivewordslist.add(poslist[i]);
        }
        stories = new HashMap<String, Integer>();
        try {
            categoryClassifier = (LMClassifier) AbstractExternalizable
                    .readObject(new File("classifiers/categoryclassifier.txt"));
            sentimentClassifier = (LMClassifier) AbstractExternalizable
                    .readObject(new File("classifiers/sentimentclassifier.txt"));
            sentimentLexicon = new SentimentalJ();
            entityClassifier = CRFClassifier
                    .getClassifierNoExceptions("classifiers/english.conll.4class.distsim.crf.ser.gz");
            tagger = new MaxentTagger("classifiers/gate-EN-twitter.model");
            properties = new Properties();
            properties.put("annotators", "tokenize, ssplit");
            sentencePipeline = new StanfordCoreNLP(properties);
        } catch (Exception e) {
            System.out.println("Constructor: " + e.getMessage());
        }

    }

    /**
       * getTweets
       * Reads tweets based on a specific query
       * @param String - query to be tracked
       * @return None
       * 
       */
    public void getTweets(String query) {
        FilterQuery fq = new FilterQuery();
        fq.track(query);
        twitterStreamListener.setQuery(query);
        twitterStream.addListener(twitterStreamListener);
        twitterStream.filter(fq);
    }

    /**
       * cleanTweet
       * Removes urls,screennames, hashtags etc from a tweet
       * @param String - raw tweet
       * @return String - cleaned tweet after removing urls hashtags etc
       * 
       */

    public String cleanTweet(String tweet) {
        String tweetcopy = tweet;
        Extractor extractor = new Extractor();
        List<String> urList = extractor.extractURLs(tweetcopy);
        List<String> hashtagList = extractor.extractHashtags(tweetcopy);
        List<String> namesList = extractor.extractMentionedScreennames(tweetcopy);
        for (int i = 0; i < urList.size(); ++i) {
            String url = urList.get(i);
            tweetcopy = tweetcopy.replace(url, "");
        }
        for (int i = 0; i < hashtagList.size(); ++i) {
            String hashtag = "#" + hashtagList.get(i);
            tweetcopy = tweetcopy.replace(hashtag, "");
        }

        for (int i = 0; i < namesList.size(); ++i) {
            String name = "@" + namesList.get(i);
            tweetcopy = tweetcopy.replace(name, "");
        }
        if (tweet.substring(0, 2).equals("RT")) {
            tweetcopy = tweetcopy.substring(3);
        }

        tweetcopy = tweetcopy.replace("...", "");
        tweetcopy = tweetcopy.replace(".", "");
        tweetcopy = tweetcopy.replace(":", "");
        tweetcopy = tweetcopy.replaceAll("http.*?\\s", "");
        tweetcopy = tweetcopy.replaceAll("https.*?\\s", "");

        tweetcopy = tweetcopy.trim();
        if (org.apache.commons.lang3.StringUtils.isAllUpperCase(tweetcopy)) {
            tweetcopy = org.apache.commons.lang3.StringUtils.lowerCase(tweetcopy);
        }
        return tweetcopy;
    }

    /**
       * getCategory
       * Classifies a tweet as a tweet or a story
       * @param String - text to be classified
       * @return String - category of the text - stories or tweets
       * 
       */
    public String getCategory(String cleanTweet) {
        JointClassification categoryClassification = categoryClassifier.classify(cleanTweet);
        return categoryClassification.bestCategory();
    }

    /**
       * getSentiment
       * Gets the sentiment score for a tweet or story
       * @param String - the tweet
       *       String - the tweet after cleaning
       *       String - the category of the tweet
       * @return int - 1 for positive, -1 for negative, 0 for neutral
       * 
       */

    public int getSentiment(String tweet, String tweetcopy, String category) {

        String[] words = tweetcopy.split(" ");
        int posScoreLexicon = 0;
        int negScoreLexicon = 0;

        for (int i = 0; i < words.length; ++i) {
            if (positivewordslist.indexOf(words[i]) != -1) {
                posScoreLexicon++;
            }
            if (negativewordslist.indexOf(words[i]) != -1) {
                negScoreLexicon++;
            }
        }

        int lexiconScore = posScoreLexicon - negScoreLexicon;
        JointClassification sClassification = sentimentClassifier.classify(tweet);
        Sentiment tweetSentiment = sentimentLexicon.analyze(tweetcopy);
        int sentiment = 0;
        String sentiment1 = sClassification.bestCategory();
        int sentiment2 = tweetSentiment.getScore();
        if (category.equals("tweets")) {
            if (sentiment2 != 0) {
                if (sentiment1.equals("positive") || sentiment2 > 0 || lexiconScore > 0) {
                    sentiment = 1;
                }

                if (sentiment1.equals("negative") || sentiment2 < 0 || lexiconScore < 0) {
                    sentiment = -1;
                }
            }
        }
        if (category.equals("stories")) {
            if (sentiment2 != 0) {
                if (sentiment1.equals("positive") || sentiment2 > 0 || lexiconScore > 0) {
                    sentiment = 1;
                }
                if (sentiment1.equals("negative") || sentiment2 < 0 || lexiconScore < 0) {
                    sentiment = -1;
                }
            }
        }
        return sentiment;
    }

    /**
       * getKeywords
       * Extracts keywords from a tweet after removing stopwords
       * @param String - tweet to be used for keyword extraction
       * @return HashMap<String,Integer> - map of keywords and counts
       * 
       */

    public HashMap<String, Integer> getKeywords(String cleanTweet) {
        HashMap<String, Integer> keywordMap = new HashMap<String, Integer>();
        String taggedTweet = tagger.tagString(cleanTweet);
        String[] tweetTags = taggedTweet.split(" ");
        for (int i = 0; i < tweetTags.length; ++i) {
            String[] tweetTag = tweetTags[i].split("_");
            String word = tweetTag[0];
            String tag = tweetTag[1];
            if (word.length() > 4 && stopwords.indexOf(word) == -1 && (tag.equals("NN"))) {
                word = word.replace(".", "");
                word = word.replace(":", "");
                word = word.toLowerCase();
                word = word.replaceAll("[^a-zA-Z ]", "");

                if (keywordMap.containsKey(word)) {
                    keywordMap.put(word, keywordMap.get(word) + 1);

                } else {
                    keywordMap.put(word, 1);
                }

            }
        }

        return keywordMap;
    }

    /**
       * getEntities
       * Extracts named entities from a tweet
       * @param String - the tweet to be used for Named Entity extraction
       * @return HashMap<String,Integer> - a hashmap of entities and their respective counts
       * 
       */
    public HashMap<String, Integer> getEntities(String cleanTweet) {
        HashMap<String, Integer> entities = new HashMap<String, Integer>();
        List<Triple<String, Integer, Integer>> entitiesList = entityClassifier
                .classifyToCharacterOffsets(cleanTweet);
        for (Triple<String, Integer, Integer> entity : entitiesList) {
            String ner = cleanTweet.substring(entity.second, entity.third);
            if (entity.first.equals("PERSON") || entity.first.equals("LOCATION")
                    || (entity.first.equals("ORGANIZATION") && ner.length() < 4)) {
                String formattedNer = ner.trim().replaceAll("\\s+", "+").replace(".", "").replace(":", "");
                if (entities.containsKey(formattedNer)) {
                    entities.put(formattedNer, entities.get(formattedNer) + 1);
                } else {
                    entities.put(formattedNer, 1);
                }
            }
        }

        return entities;
    }

    /**
       * insertSentimentsAndKeywords
       * Inserts and updates the sentiment of a tweet and its keywords into the database
       * @param String query - the query associated with a tweet
       *       int sentiment - the sentiment of a tweet, 1,0 or -1
       *       HashMap<String,Integer> keywords - the keywords extracted from a tweet and their counts
       * @return None
       * 
       */
    public void insertSentimentsAndKeywords(String query, int sentiment, HashMap<String, Integer> keywords) {

        HashMap<String, Integer> newPosWords = new HashMap<String, Integer>();
        HashMap<String, Integer> newNegWords = new HashMap<String, Integer>();
        int newPosCount = 0;
        int newNegCount = 0;
        if (sentiment == 1) {
            newPosWords = keywords;
            newPosCount = 1;
        }
        if (sentiment == -1) {
            newNegWords = keywords;
            newNegCount = 1;
        }

        FindIterable<Document> sentimentIterable = sentimentsCol.find(Filters.eq("query", query));
        Iterator<Document> sentimentIterator = sentimentIterable.iterator();

        if (sentimentIterator.hasNext()) {
            Document sentiDoc = sentimentIterator.next();
            Integer storedPosCount = sentiDoc.getInteger("posCount");
            Integer storedNegCount = sentiDoc.getInteger("negCount");
            Document storedPosWords = (Document) sentiDoc.get("poswords");
            Document storedNegWords = (Document) sentiDoc.get("negwords");
            for (String posword : newPosWords.keySet()) {
                Sentiment poSentiment = sentimentLexicon.analyze(posword);
                if (storedPosWords.containsKey(posword)) {

                    if (poSentiment.getScore() >= 0) {
                        storedPosWords.put(posword,
                                ((Integer) storedPosWords.get(posword)) + newPosWords.get(posword));
                    }
                } else {
                    if (poSentiment.getScore() >= 0) {
                        storedPosWords.put(posword, newPosWords.get(posword));
                    }
                }
            }

            for (String negword : newNegWords.keySet()) {
                Sentiment negSentiment = sentimentLexicon.analyze(negword);
                if (storedNegWords.containsKey(negword)) {
                    if (negSentiment.getScore() >= 0) {
                        storedNegWords.put(negword,
                                ((Integer) storedNegWords.get(negword)) + newPosWords.get(negword));
                    }
                } else {
                    if (negSentiment.getScore() >= 0) {
                        storedNegWords.put(negword, newNegWords.get(negword));
                    }
                }
            }

            Document updateDoc = new Document("posCount", storedPosCount + newPosCount)
                    .append("negCount", storedNegCount + newNegCount).append("poswords", storedPosWords)
                    .append("negwords", storedNegWords);
            sentimentsCol.updateOne(new Document("_id", sentiDoc.get("_id")), new Document("$set", updateDoc));
        } else {
            Document sentiDoc = new Document("query", query);
            sentiDoc.append("posCount", newPosCount);
            sentiDoc.append("negCount", newNegCount);
            sentiDoc.append("poswords", newPosWords);
            sentiDoc.append("negwords", newNegWords);
            sentimentsCol.insertOne(sentiDoc);
        }

    }

    /**
       * insertEntities
       * Inserts and updates the named entities extracted from a tweet into the database
       * @param String query - the query associated with a tweet
       *       HashMap<String,Integer> entities - the entities extracted from a tweet and their counts
       * @return None
       * 
       */
    public void insertEntities(String query, HashMap<String, Integer> entities) {
        FindIterable<Document> entityIterable = entitiesCol.find(Filters.eq("query", query));
        Iterator<Document> entityIterator = entityIterable.iterator();

        if (entityIterator.hasNext()) {
            Document entityDoc = entityIterator.next();
            Document storedEntityDoc = (Document) entityDoc.get("entities");
            for (String entity : entities.keySet()) {
                if (storedEntityDoc.containsKey(entity)) {
                    Integer entityValue = (Integer) storedEntityDoc.get(entity);
                    storedEntityDoc.put(entity, entityValue + entities.get(entity));
                } else {
                    storedEntityDoc.put(entity, entities.get(entity));
                }
            }

            Document updateDoc = new Document("entities", storedEntityDoc);
            entitiesCol.updateOne(new Document("_id", entityDoc.get("_id")), new Document("$set", updateDoc));
        } else {
            Document newEntityDoc = new Document("query", query);
            newEntityDoc.append("entities", entities);
            entitiesCol.insertOne(newEntityDoc);

        }
    }

    /**
       * getStories
       * Extracts stories from a tweet
       * @param String - the tweet to be used for extracting stories
       * @return HashMap<String,Integer> - a map of stories and their corresponding counts
       * 
       */
    public HashMap<String, Integer> getStories(String cleanTweet) {
        cleanTweet = cleanTweet.replaceAll("[^A-Za-z0-9 ]", "");
        cleanTweet = cleanTweet.replace("http", "");
        cleanTweet = cleanTweet.replace("https", "");
        HashMap<String, Integer> storiesMap = new HashMap<String, Integer>();
        Annotation document = new Annotation(cleanTweet);
        sentencePipeline.annotate(document);
        List<CoreMap> sentences = document.get(SentencesAnnotation.class);
        for (CoreMap sentence : sentences) {
            String sentenceString = sentence.toString();
            if (stories.containsKey(sentenceString)) {
                stories.put(sentenceString, stories.get(sentenceString) + 1);
            } else {
                stories.put(sentenceString, 1);
            }
        }

        for (String story : stories.keySet()) {
            Sentiment storySentiment = sentimentLexicon.analyze(story);
            int storySentimentScore = storySentiment.getScore();
            if (stories.get(story) > 10 && storySentimentScore > -4 && storySentimentScore < 4) {
                String storyFormatted = story.trim().replaceAll("\\s+", "+");
                Integer count = stories.get(story);
                storiesMap.put(storyFormatted, count);
            }
        }

        return storiesMap;
    }

    /**
       * insertStories
       * Inserts and updates the trending stories extracted from a tweet into the database
       * @param String query - the query associated with a tweet
       *       HashMap<String,Integer> storiesMap - a map of stories and their respective counts
       * @return None
       * 
       */
    public void insertStories(String query, HashMap<String, Integer> storiesMap) {
        FindIterable<Document> storyIterable = storiesCol.find(Filters.eq("query", query));
        Iterator<Document> storyIterator = storyIterable.iterator();
        if (storyIterator.hasNext()) {
            if (!storiesMap.isEmpty()) {
                Document storyDoc = storyIterator.next();
                Document storyDocstories = (Document) storyDoc.get("stories");
                for (String key : storiesMap.keySet()) {
                    if (storyDocstories.containsKey(key)) {
                        Integer newCount = storiesMap.get(key);
                        storyDocstories.put(key, newCount);
                    } else {
                        storyDocstories.put(key, storiesMap.get(key));
                    }
                }

                Document updateDoc = new Document("stories", storyDocstories);
                storiesCol.updateOne(new Document("_id", storyDoc.get("_id")), new Document("$set", updateDoc));
            }
        } else {
            Document newStoryDoc = new Document("query", query);
            newStoryDoc.append("stories", storiesMap);
            storiesCol.insertOne(newStoryDoc);
        }
    }

    /**
       * onTweetReceived
       * Runs analysis on a tweet when it is received
       * @param String query - the query associated with a tweet
       *       String tweet - the tweet received from the streaming API
       * @return None
       * 
       */
    public void onTweetReceived(String query, String tweet) {
        int sentiment = 0;
        count++;
        HashMap<String, Integer> keywords = new HashMap<String, Integer>();
        HashMap<String, Integer> entities = new HashMap<String, Integer>();
        HashMap<String, Integer> storiesMap = new HashMap<String, Integer>();
        String cleanTweet = cleanTweet(tweet);

        String category = getCategory(cleanTweet);
        sentiment = getSentiment(tweet, cleanTweet, category);
        keywords = getKeywords(cleanTweet);
        if (category.equals("stories")) {
            entities = getEntities(cleanTweet);
            storiesMap = getStories(cleanTweet);
        }

        System.out.println("Analyzed " + count + " Tweets");
        insertSentimentsAndKeywords(query, sentiment, keywords);
        insertEntities(query, entities);
        insertStories(query, storiesMap);
    }

    /**
       * stop
       * Stops reading the tweets and their analysis
       * @param None
       * @return None
       * 
       */
    public void stop() {
        twitterStream.shutdown();
        count = 0;
        stories = new HashMap<String, Integer>();
    }
}

/**
 * TwitterStreamListener
 * Purpose: Class containing the interface to handle callbacks when a tweet is received
 * 
 */

class TwitterStreamListener implements StatusListener {
    TwitterStreamInterface twitterStreamInterface;
    String query;

    public void setTwitterStreamInterface(TwitterStreamInterface twitterStreamInterface) {
        this.twitterStreamInterface = twitterStreamInterface;
    }

    public TwitterStreamListener() {

    }

    public void setQuery(String query) {
        this.query = query;
    }

    public void onException(Exception arg0) {

    }

    public void onDeletionNotice(StatusDeletionNotice arg0) {

    }

    public void onScrubGeo(long arg0, long arg1) {

    }

    public void onStallWarning(StallWarning arg0) {

    }

    /**
       * onStatus
       * Gets the text from a twitter status and sends it to the interface for processing
       * @param Status status - the twitter Status object
       * @return None
       * 
       */
    public void onStatus(Status status) {
        String language = status.getLang();
        if (language.equals("en")) {
            String text = status.getText();
            twitterStreamInterface.onTweetReceived(query, text);
        }

    }

    public void onTrackLimitationNotice(int arg0) {

    }

}

/**
 * TwitterStreamInterface
 * Purpose: Declaration of an interface which handles the callbacks when a tweet is received
 * 
 */
interface TwitterStreamInterface {
    public void onTweetReceived(String query, String tweet);
}