From ce5603288fe5c5e6586421676900299a33c5ea27 Mon Sep 17 00:00:00 2001 From: masete Date: Tue, 22 Oct 2019 21:33:06 +0300 Subject: [PATCH 01/29] version 1 of the question and answer --- .gitignore | 6 + Procfile | 2 + README.md | 169 +- answer_policy_question.py | 750 +++ app.py | 94 + clear_redis.py | 10 + config.py | 18 + nltk.txt | 3 + opinion-lexicon-English/neg_words.txt | 4783 +++++++++++++++++++ opinion-lexicon-English/negative-words.txt | 4818 ++++++++++++++++++++ opinion-lexicon-English/pos_words.txt | 2007 ++++++++ opinion-lexicon-English/positive-words.txt | 2042 +++++++++ requirements.txt | 145 + static/css/jumbotron.css | 4 + templates/answer.html | 231 + templates/index.html | 236 + 16 files changed, 15316 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 Procfile create mode 100644 answer_policy_question.py create mode 100644 app.py create mode 100644 clear_redis.py create mode 100644 config.py create mode 100644 nltk.txt create mode 100644 opinion-lexicon-English/neg_words.txt create mode 100644 opinion-lexicon-English/negative-words.txt create mode 100644 opinion-lexicon-English/pos_words.txt create mode 100644 opinion-lexicon-English/positive-words.txt create mode 100644 requirements.txt create mode 100644 static/css/jumbotron.css create mode 100644 templates/answer.html create mode 100644 templates/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d7adbb3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/__pycache__/ +venv +.env +.DS_Store +.vscode +dump.rdb diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..5f24787 --- /dev/null +++ b/Procfile @@ -0,0 +1,2 @@ +web: python clear_redis.py && python app.py +worker: celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 diff --git a/README.md b/README.md index da8031e..d3830b0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,167 @@ -# Machine-Learning- -Machine Learning Question and Answer on pollicy +# Policy Question Answering System + +A web application that takes a user's question, surveys open access research articles about a given policy, and returns an answer to the user. + +# Project Overview + +Every year, millions of research articles on different policies and their consequences are published. Each of these is a rich source of information that can help policy advisors in determining the appropriate policies to implement. This application carries out a number of functions. + +1. Provide a chatbot that the user interacts with. +2. Based on the user's answers, generate a question about a given policy consequence. +3. Process the question to obtain keywords and then use these keywords to fetch open access research articles about the policy. +4. Perform claim detection on the abstract of each article to determine whether the article found evidence for or against a given policy consequence. +5. Count the total number of articles that are for or against a given policy consequence. +6. Display this data in a visualization and also provide short summaries of the policy and its consequence. + +# Running locally + +Make sure that you have Redis, Python 3.6+, pip, and virtualenv installed on your computer. + +Clone the git repository and change into the top directory. + +``` +git clone https://github.com/Prosper21/Policy-Question-Answering-System +cd Policy-Question-Answering-System +``` + +Create a virtual environment and activate it. + +``` +virtualenv venv +. venv/bin/activate +``` + +Install all the required packages by running the command: + +``` +pip install -r requirements.txt. +``` + +Create a .env file to store your environment variables. In our case, this would have the following values. + +``` +SECRET_KEY = 'xxx' # Use your own secret key here +REDIS_URL = 'redis://localhost:6379' +``` + +We now have all the files and packages that we need to run the application on our local host. +In one terminal, start the redis server by running: + +``` +redis-server +``` + +In a second terminal, change into the Policy-Question-Answering-System directory, activate the virtual environment, and start the celery workers by running: + +``` +celery worker -A answer_policy_question.celery -O fair +``` + +In a third terminal, change into the Policy-Question-Answering-System directory, activate the virtual environment, and start your application by running: + +``` +python app.py. +``` + +You should see the application running and you can access it on localhost:5000. + +# Deploying on Heroku + +Open an account on Heroku at . + +Install the Heroku CLI on your computer and carry out any other required configurations. The details can be found here . + +Clone the git repository and change into the top directory. + +``` +git clone https://github.com/Prosper21/Policy-Question-Answering-System +cd Policy-Question-Answering-System +``` + +Create an app on Heroku, which prepares Heroku to receive your source code. + +``` +heroku create +``` + +In this case, heroku generates a random name for your app. You can also provide your own name by running: + +``` +heroku create +``` + +Because this application uses Heroku addons, we need to create those first. In our case, we need the redis addon. We do this by running: + +``` +heroku addons:create heroku-redis:hobby-dev +``` + +This will automatically set the REDIS_URL configuration variable for our application but we also need to set up our SECRET_KEY configuration variable. We do this by running: + +``` +heroku config:set SECRET_KEY = 'xxx' # Use your own secret key here +``` + +We can now deploy to Heroku by running: + +``` +git push heroku master +``` +Go to the Heroku dashboard and makes sure that your app's web and worker dynos are both switched on. + +You can now visit the app at the url generated by its name i.e. herokuapp.app-name.com or simply open the app by running: + +``` +heroku open +``` + +# Sills Needed + +* Python 3.6+ +* JavaScript/HTML/CSS +* Heroku + +# Notes + +If you make any changes for example by installing new packages and running +``` +pip freeze > requirements.txt +``` +then you will have to add +``` +https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.1.0/en_core_web_sm- 2.1.0.tar.gz#egg=en_core_web_sm +``` +to your requirements.txt. This ensures that the required spaCy model is loaded. If this causes a 'Double requirement given' error upon deployment, look for + +``` +en-core-web-sm=='x.x.x' +``` + +in your requirements.txt file and delete it. + +# References + +Bing Liu, Minqing Hu and Junsheng Cheng. "Opinion Observer: Analyzing and Comparing Opinions on the Web." Proceedings of the 14th International World Wide Web conference (WWW-2005), May 10-14, 2005, Chiba, Japan. + +# TODO + +## Front-End + +### Chatbot UI + +At the moment, the chatbot assumes that the user provides very specific replies rather than full sentences. For example, when the bot asks 'What policy would you like to research today?', it expects a straight answer like 'cap and trade' rather than 'I would like to research cap and trade'. The same applies to the question 'And what effect of cap and trade on carbon emissions are you interested in?' where we expect an answer like 'carbon emissions' rather than 'I would like to know its effect on carbon emissions'. The reason for this is that the user's replies are being handled using JavaScript in the HTML files that render the page and thus there is no way to apply natural language processing techniques to automatically identify the policy or phenomenon of interest from full sentence replies. I have not yet figured out a way to do the processing of full sentence replies from the backend while maintaining a conversational flow but I believe this can be done. + +Another possible improvement is moving all the JavaScript code that is in the HTML files to the JavaScript folder in the static directory. The recommended practice is that JavaScript and HTML code should not me mixed. + +## Back-End + +### Duplicates + +Since we are fetching abstracts from three APIs, there is a chance of the same abstract appearing more than once in our results. It would be a good idea if these duplicates could be removed but some times, an extra character or space in the duplicate essentailly makes the two versions of the abstract different. I think one could use regex to clean up the abstracts and then be able to identify the duplicates. + + +### Claim detection + +At the moment, the claim detection algorithm is still a work in progress and could be improved durther for better results. + + diff --git a/answer_policy_question.py b/answer_policy_question.py new file mode 100644 index 0000000..14dc7a4 --- /dev/null +++ b/answer_policy_question.py @@ -0,0 +1,750 @@ +""" +A program that takes a policy question from a user, surveys open access +research articles, and uses natural language processing to determine if +a study found evidence 'for' or 'against' a given policy consequence. + +Copyright (c) 2019 Pollicy. +""" + +import en_core_web_sm +import textacy.extract +import spacy +from celery.backends.redis import RedisBackend +from celery import Celery, group, subtask, chord, states +import celery +from config import CeleryConfig +from nltk.corpus import stopwords, wordnet +from nltk.tokenize import sent_tokenize, word_tokenize +import os +import re +import requests +import json +import string +import itertools + +import nltk +nltk.download('stopwords') +nltk.download('wordnet') +nltk.download('punkt') +stop_words = stopwords.words("english") + + +def patch_celery(): + """Patch the redis backend.""" + + def _unpack_chord_result( + self, tup, decode, + EXCEPTION_STATES=states.EXCEPTION_STATES, + PROPAGATE_STATES=states.PROPAGATE_STATES, + ): + _, tid, state, retval = decode(tup) + + if state in EXCEPTION_STATES: + retval = self.exception_to_python(retval) + if state in PROPAGATE_STATES: + # retval is an Exception + # return '{}: {}'.format(retval.__class__.__name__, str(retval)) + + # return an empty list in case a task raises an exception + return [] + + return retval + + celery.backends.redis.RedisBackend._unpack_chord_result = _unpack_chord_result + + return celery + + +celery = patch_celery().Celery(__name__) +celery.config_from_object(CeleryConfig) + + +def one_sentence_per_doc(doc): + """Enforce one sentence per doc to help with dependency parsing.""" + doc[0].sent_start = True + for i in range(1, len(doc)): + doc[i].sent_start = False + return doc + + +# load spaCy model and set up pipeline +nlp = en_core_web_sm.load() +nlp.add_pipe(one_sentence_per_doc, before='parser') + +# load the opinion lexicon to be used for sentiment analysis +neg_file = open( + "opinion-lexicon-English/neg_words.txt", + "r", + encoding="ISO-8859-1") +pos_file = open( + "opinion-lexicon-English/pos_words.txt", + "r", + encoding="ISO-8859-1") +neg_words = [line.strip() for line in neg_file.readlines()] +pos_words = [line.strip() for line in pos_file.readlines()] +opinion_words = neg_words + pos_words + + +# base urls for the APIs used to fetch open access research articles +base_url_DOAJ = "https://doaj.org/api/v1/search/articles/" +base_url_CORE = "https://core.ac.uk:443/api-v2/articles/search/" +base_url_Crossref = "https://api.crossref.org/works?query=" + +# target words that we expect in an abstract of an article stating results +# of a study +claim_words = [ + 'result', + 'results', + 'show', + 'shows', + 'showed', + 'shown', + 'find', + 'finds', + 'findings', + 'found', + 'suggest', + 'suggests', + 'suggested', + 'evidence', + 'argue', + 'argues', + 'argued', + 'establish', + 'establishes', + 'established', + 'conclude', + 'concludes', + 'concluded', + 'confirm', + 'confirms', + 'confirmed', + 'points to', + 'indicate', + 'indicates', + 'indicated', + 'view', + 'see', + 'seen', + 'saw', + 'effect' + 'effects', + 'impact', + 'cause', + 'causal', + 'significant', + 'lead', + 'leads', + 'leads to', + 'lead to'] + + +def process_question(question): + """Get user's question, clean it, and parse it for keywords.""" + # remove punctuation and get individual lower case words + question_words = question.translate(str.maketrans( + '', '', string.punctuation)).lower().split() + # get the keywords + keywords = [w for w in question_words if w not in stop_words] + + # get the lemmas for the keywords (we are not using these yet but could do + # so later) + keywords_lemmas = [w.lemma_ for w in nlp(" ".join(keywords))] + + return keywords + + +def process_DOAJ_article(article): + """Process an article returned from DOAJ.""" + if "abstract" in article["bibjson"]: + abstract = article["bibjson"]["abstract"] + + if "url" in article["bibjson"]["link"][0]: + url = article["bibjson"]["link"][0]["url"] + else: + url = '' + + return {'abstract': abstract, 'pdf_url': url} + + +@celery.task(name='get_DOAJ_articles') +def get_DOAJ_articles(keywords): + """Retrieve articles from DOAJ in json format.""" + # get all the available results for the DOAJ API (1000 is the limit) + query_DOAJ = "%20".join(keywords) # DOAJ uses operator AND by default + url_DOAJ = base_url_DOAJ + query_DOAJ + "?page=1&pageSize=1000" + + DOAJ_response = requests.get(url_DOAJ) + DOAJ_response = json.loads(DOAJ_response.text) + DOAJ_results = DOAJ_response["results"] + + DOAJ_articles = [process_DOAJ_article(article) for article in DOAJ_results] + + return DOAJ_articles + + +def process_Crossref_article(item): + """Process an article returned from Crossref.""" + if "abstract" in item: + abstract = item["abstract"] + + if "URL" in item: + url = item["URL"] + else: + url = '' + + return {'abstract': abstract, 'pdf_url': url} + + +@celery.task(name='get_Crossref_articles') +def get_Crossref_articles(keywords): + """Retrieve articles from Crossref in json format.""" + # get all the available results for the Crossref API (1000 is the limit) + # Crossref does not allow the use of operator "AND" + query_Crossref = "+".join(keywords) + url_Crossref = base_url_Crossref + \ + query_Crossref + "&sort=relevance" + "&rows=1000" + + Crossref_response = requests.get(url_Crossref) + Crossref_response = json.loads(Crossref_response.text) + Crossref_items = Crossref_response["message"]["items"] + + Crossref_articles = [process_Crossref_article( + item) for item in Crossref_items] + + return Crossref_articles + + +def process_CORE_article(item): + """Process an article returned from CORE.""" + if "description" in item: + abstract = item["description"] + + if "downloadUrl" in item: + url = item["downloadUrl"] + else: + url = '' + + return {'abstract': abstract, 'pdf_url': url} + + +def call_CORE_api(page_CORE, query_CORE, api_key_CORE): + """ Perform a single API call to CORE.""" + url_CORE = base_url_CORE + query_CORE + "?page=" + str(page_CORE) + "&pageSize=" + str( + 100) + "&metadata=true&fulltext=false&citations=false&similar=false&duplicate=false&urls=false&faithfulMetadata=false&apiKey=" + api_key_CORE + + CORE_response = requests.get(url_CORE) + CORE_response = json.loads(CORE_response.text) + + # check if the call returned results and if the results list is not empty + if "data" in CORE_response and CORE_response["data"]: + return CORE_response["data"] + else: + return [] + + +@celery.task(name='get_CORE_articles') +def get_CORE_articles(keywords): + """Retrieve articles from CORE in json format.""" + # get all the available results for the CORE API (1000 is the limit) + query_CORE = "%20AND%20".join(keywords) + + # the CORE API key + api_key_CORE = '4ZLsvriVI1pDOGu3qbgMB2dwx506KR8P' + + # since CORE returns only 100 results per page, we have to make 10 calls + # to get 1000 results + CORE_list_of_lists = [ + call_CORE_api( + page_CORE, + query_CORE, + api_key_CORE) for page_CORE in range( + 1, + 11)] + + CORE_list = [ + item for sublist in CORE_list_of_lists for item in sublist if sublist] + + CORE_articles = [process_CORE_article(item) for item in CORE_list] + + return CORE_articles + + +def check_for_claim(abstract_sentences): + """Check if abstract contains claims.""" + for sentence in abstract_sentences: + for word in claim_words: + if word in sentence: + return True + + +def get_claims(abstract): + """Get sentences with claims.""" + abstract_sentences = sent_tokenize(abstract) # this is a list + + # for now, we only take sentences that have claim words + # (not those before or after) this may change later + claims_list = [] + for sentence in abstract_sentences: + for word in claim_words: + if word + ' that' in sentence or word + \ + ' to be' in sentence or word in sentence: + claims_list.append(sentence) + break + return claims_list + + +def missing_key_words(abstract, keywords): + """Check if abstract is missing a keyword.""" + for word in keywords: + if word not in abstract: + return True + + +def filter_articles(articles, keywords): + """ + Filter out articles whose abstracts do not have all the keywords + or make any claim. + """ + relevant_articles = [] + + articles = [ + article for article in articles if not missing_key_words( + article['abstract'], keywords)] + + for article in articles: + abstract_sentences = sent_tokenize( + article["abstract"]) # this is a list + if check_for_claim(abstract_sentences): + relevant_articles.append(article) + return relevant_articles + + +def simple_subjects_and_objects(verb): + """Get the subjects and objects of a given verb.""" + verb_objects = textacy.spacier.utils.get_objects_of_verb(verb) + verb_subjects = textacy.spacier.utils.get_subjects_of_verb(verb) + verb_objects.extend(verb_subjects) + return verb_objects + + +def verb_relevance(verb, sso, keywords): + """ + check if the verb and its object or subject are keywords + sso refers to a list containing simple subjects and objects of a verb + """ + if verb.text in keywords or verb.lemma_ in keywords: + for word in sso: + if word.text in keywords or word.lemma_ in keywords: + return True + + +def use_subjects_verbs_objects(sent_list, keywords): + """ + Use the subjects, verbs, and objects in a sentence to determine the claim + position. We want to visit all sentences before returning a position. + """ + list_length = len(sent_list) + i = 0 + position = None + + while i != list_length: + doc = nlp(sent_list[i]) + + # check if there is a direct statement of the policy consequence + svo_extract = textacy.extract.subject_verb_object_triples(doc) + + for triple in svo_extract: + triple = list(triple) + subj = triple[0] + verb = triple[1] + obj = triple[2] + + # check if the verb and object are in the key words + if (verb.text in keywords or verb.lemma_ in keywords) \ + and (obj.text in keywords or obj.lemma_ in keywords): + position = True + + # check if there is a 'not' before the verb + elif 'not' in verb.text and (obj.text in keywords + or obj.lemma_ in keywords): + if position: + position = False + + # if position is true, we return + if position: + return position + + # get main verbs that were not extracted as part of a svo triple + main_verbs = textacy.spacier.utils.get_main_verbs_of_sent(doc) + for verb in main_verbs: + sso = simple_subjects_and_objects(verb) + if verb_relevance(verb, sso, keywords): + position = True + return position + + i += 1 + + return position + + +def get_dependency_path_to_root(token, root): + """Traverse the path from the root to a token.""" + parent = token.head + tokens_list = [] + tokens_list.append(parent) + + while parent != root: + parent = parent.head + tokens_list.append(parent) + + # check for negation of consequence + for token in parent.subtree: + if token.text == 'not': + tokens_list.append(token) + + return tokens_list + + +def get_dependency_path_between_tokens(token_a, token_b): + """Traverse the path between relevant noun phrases in a sentence.""" + if token_b in token_a.subtree: + all_tokens = get_dependency_path_to_root(token_b, token_a) + elif token_a in token_b.subtree: + all_tokens = get_dependency_path_to_root(token_a, token_b) + else: + # get the lowest common ancestor + parent_a = token_a.head + while token_b not in parent_a.subtree: + parent_a = parent_a.head + + lowest_common_ancestor = parent_a + + tokens_a_side = get_dependency_path_to_root( + token_a, lowest_common_ancestor) + tokens_b_side = get_dependency_path_to_root( + token_b, lowest_common_ancestor) + all_tokens = tokens_a_side + tokens_b_side + all_tokens.append(lowest_common_ancestor) + all_tokens = list(set(all_tokens)) + return all_tokens + + +def use_noun_phrases(sent_list, keywords): + """ + Use the noun phrases in a sentence to determine its claim position. + We want to visit all sentences before returning a position. + """ + list_length = len(sent_list) + i = 0 + position = None + + while i != list_length: + doc = nlp(sent_list[i]) + # we want all our tokens to be noun phrases in this case + noun_phrases = [] + for np in doc.noun_chunks: + np.merge(np.root.tag_, np.root.lemma_, np.root.ent_type_) + + for token in doc: + noun_phrases.append(token) + + # get only the relevant phrases + relevant_noun_phrases = [] + for np in noun_phrases: + words = np.text.split() + for word in words: + if word in keywords: + relevant_noun_phrases.append(np) + # make sure that the noun phrase is appended only once even + # if it contains more than one key word otherwise big + # trouble later + break + + # use the dependency path between noun phrases (if we have only two + # noun phrases) + if len(relevant_noun_phrases) == 2: + tokens_btn_nps = get_dependency_path_between_tokens( + relevant_noun_phrases[0], relevant_noun_phrases[1]) + + # check if any of the tokens are in the keywords + for token in tokens_btn_nps: + if token.text in keywords: + position = True + + # check for negation + for token in tokens_btn_nps: + if token.text == 'not': + position = False + break + + if position is None: + # check for the sentiment of the adjective tokens between the + # noun phrases + for token in tokens_btn_nps: + # check if the word is an opinion word and assign sentiment + if token.text in opinion_words and str(token.tag_) == 'JJ': + position = True if token.text in pos_words else False + + if position: + return position + + # in case there is only one or more than two noun phrases + elif len(relevant_noun_phrases) != 0: + for np in relevant_noun_phrases: + parent = np.head + # check if any of the sibling tokens are in the keywords + for token in parent.children: + if token != np and (token.text in keywords): + position = True + break + + # check for negation + for token in parent.children: + if token != np and token.text == 'not': + position = False + break + + if position: + return position + + # get the root of the sentence + for token in doc: + if token.dep_ == 'ROOT': + root = token + + # check for negation in whole sentence + for token in root.subtree: + if token.text == 'not': + position = False + break + + else: + # we do not want position to change from false to 'not enough + # relevant noun phrases' + if not position: + position = False + + elif position is None: + position = 'Not enough relevant noun phrases' + + i += 1 + + return position + + +def use_effect_words(sent_list, keywords): + """Use effect words such as positive/negative 'effect' or 'impact'.""" + position = None + for sent in sent_list: + for word in keywords: + if word in sent: + if 'positive' in sent and ( + 'effects' in sent or 'effect' in sent or 'impact' or 'impacts'): + position = True + elif 'negative' in sent and ('effects' in sent or 'effect' in sent): + position = False + return position + + +def determine_claim_position(sent_list, keywords): + """Determine the claim position of sentences in a given abstract.""" + position = None + if sent_list: + # try subjects, verbs, and objects first + subj_verb_obj_result = use_subjects_verbs_objects(sent_list, keywords) + position = subj_verb_obj_result + + # if subjects, verbs, and objects do not work, try noun phrases + if position is None: + noun_phrase_result = use_noun_phrases(sent_list, keywords) + position = noun_phrase_result + + # if position is still None, try effect words + if position is None: + effect_result = use_effect_words(sent_list, keywords) + position = effect_result + + return position + + else: + # this really only gets returned if we use only claim statements and + # an abstract happens to have an empty list of claims + return position + + +def assign_position(relevant_articles, keywords): + """Assign a given position to the abstract.""" + for item in relevant_articles: + + abstract_sentences = sent_tokenize(item['abstract']) + claims = get_claims(item['abstract']) + item['claims'] = claims + + # the claim position is the position determined by examining sentences + # which make explicit claims + if determine_claim_position(claims, keywords): + item['claim_position'] = 'Yes' + elif determine_claim_position(claims, keywords) is False: + item['claim_position'] = 'No' + elif determine_claim_position(claims, keywords) == 'Not enough noun phrases': + item['claim_position'] = 'Not enough noun phrases' + else: + item['claim_position'] = 'No position' + + # the total position includes all sentences in the abstract and is + # therefore a superset of the claim position + if determine_claim_position(abstract_sentences, keywords): + item['total_position'] = 'Yes' + elif determine_claim_position(abstract_sentences, keywords) is False: + item['total_position'] = 'No' + elif determine_claim_position(abstract_sentences, keywords) == 'Not enough noun phrases': + item['total_position'] = 'Not enough noun phrases' + else: + item['total_position'] = 'No position' + + return relevant_articles + + +def get_article_positions(relevant_articles): + """Get summary of claim positions.""" + claim_positions = { + "Yes": 0, + "No": 0, + "No_position": 0, + "Yes_percent": 0, + "No_percent": 0, + "No_position_percent": 0} + + for article in relevant_articles: + if article['claim_position'] == 'Yes': + claim_positions["Yes"] += 1 + elif article['claim_position'] == 'No': + claim_positions["No"] += 1 + elif article['claim_position'] == 'No position': + claim_positions["No_position"] += 1 + + all_articles = len(relevant_articles) + + Yes_percent = round((claim_positions["Yes"] / all_articles) * 100, 2) + No_percent = round((claim_positions["No"] / all_articles) * 100, 2) + No_position_percent = round( + (claim_positions["No_position"] / all_articles) * 100, 2) + + if Yes_percent > No_percent and Yes_percent > No_position_percent: + decision = "Yes" + elif No_percent > Yes_percent and No_percent > No_position_percent: + decision = "No" + elif No_position_percent > Yes_percent and No_position_percent > No_percent: + decision = "No position" + else: + decision = "Uncertain" + + # generate recommendation to give to user + detailed_recommendation = ( + "Of the {} relevant open access research articles we surveyed, " + "{}% of them leaned towards a {} to your question, {}% leaned " + "towards a {}, and {}% did not state an explicit position. " + ).format(all_articles, Yes_percent, "Yes", No_percent, "No", No_position_percent) + \ + "Therefore, the recommended answer to your question is " + decision + "." + + claim_positions['Yes_percent'] = Yes_percent + claim_positions['No_percent'] = No_percent + claim_positions['No_position_percent'] = No_position_percent + claim_positions['detailed_recommendation'] = detailed_recommendation + + return claim_positions + + +@celery.task(name='answer_question') +def answer_question(articles, keywords=None): + """Perform claim detection on abstracts.""" + # articles is a list of lists that has to be flattened + combined_articles = [ + item for sublist in articles for item in sublist if item is not None] + + response = {} + response['All_articles'] = len(combined_articles) + + if not combined_articles: + # in case there are no articles returned by any of the APIs + claim_positions = {} + + # generate recommendation to give to user + detailed_recommendation = ( + "Unfortunately, we were not able to get any open access research " + "articles related to your query. We are, therefore, unable to " + "return a recommendation." + ) + + claim_positions['Yes'] = 'N/A' + claim_positions['No'] = 'N/A' + claim_positions['No_position'] = 'N/A' + claim_positions['Yes_percent'] = 'N/A' + claim_positions['No_percent'] = 'N/A' + claim_positions['No_position_percent'] = 'N/A' + claim_positions['detailed_recommendation'] = detailed_recommendation + + response['Claim_positions'] = claim_positions + + else: + # filter out the irrelevant articles + relevant_articles = filter_articles(combined_articles, keywords) + response['Relevant_articles'] = len(relevant_articles) + + if not relevant_articles: + claim_positions = {} + + # generate recommendation to give to user + detailed_recommendation = ( + "Unfortunately, none of the open access research articles we " + "surveyed were relevant to your query. We are, therefore, unable " + "to return a recommendation.") + + claim_positions['Yes'] = 'N/A' + claim_positions['No'] = 'N/A' + claim_positions['No_position'] = 'N/A' + claim_positions['Yes_percent'] = 'N/A' + claim_positions['No_percent'] = 'N/A' + claim_positions['No_position_percent'] = 'N/A' + claim_positions['detailed_recommendation'] = detailed_recommendation + + response['Claim_positions'] = claim_positions + # perform claim detection + relevant_articles_positions = assign_position( + relevant_articles, keywords) + # get summary of claim positions + claim_positions = get_article_positions( + relevant_articles_positions) + response['Claim_positions'] = claim_positions + + else: + # perform claim detection + relevant_articles_positions = assign_position( + relevant_articles, keywords) + # get summary of claim positions + claim_positions = get_article_positions( + relevant_articles_positions) + response['Claim_positions'] = claim_positions + + return response + + +if __name__ == '__main__': + + # get user input, clean it, and parse it for key words + question = input("Please enter your question: ") + print(question) + print() + keywords = process_question(question) + + # use a celery chord here and add keywords as an extra argument in + # addition to the header + callback = answer_question.subtask(kwargs={'keywords': keywords}) + header = [ + get_DOAJ_articles.subtask(args=(keywords, )), + get_Crossref_articles.subtask(args=(keywords, )), + get_CORE_articles.subtask(args=(keywords, )) + ] + result = chord(header)(callback) + print(result.get()) diff --git a/app.py b/app.py new file mode 100644 index 0000000..8828349 --- /dev/null +++ b/app.py @@ -0,0 +1,94 @@ +import os +import json +from flask import Flask, render_template, request, jsonify, url_for +from flask_bootstrap import Bootstrap +from gevent.pywsgi import WSGIServer + +import wikipedia + +from celery import subtask, chord + +from config import ProdConfig + +# import backgroud tasks here +from answer_policy_question import process_question, get_DOAJ_articles,\ + get_Crossref_articles, get_CORE_articles, answer_question + +app = Flask(__name__) + +app.config.from_object(ProdConfig) + +Bootstrap(app) + + +@app.route('/', methods=['GET', 'POST']) +def index(): + """Render the home page.""" + return render_template('index.html') + + +@app.route('/backgroundtask', methods=['POST', 'GET']) +def backgroundtask(): + """Start the background tasks.""" + question = request.json['question'] + keywords = process_question(question) + + # use a chord here + callback = answer_question.subtask(kwargs={'keywords': keywords}) + header = [ + get_DOAJ_articles.subtask(args=(keywords, )), + get_Crossref_articles.subtask(args=(keywords, )), + get_CORE_articles.subtask(args=(keywords, )) + ] + + task = chord(header)(callback) + + return jsonify( + {}), 202, { + 'Location': url_for( + 'taskstatus', task_id=task.id)} + + +@app.route('/status/', methods=['GET']) +def taskstatus(task_id): + """Check on the status of the background tasks.""" + # remember answer_question is the callback so we use its task id + task = answer_question.AsyncResult(task_id) + response_data = {'task_status': task.status, 'task_id': task.id} + + if task.status == 'SUCCESS': + response_data['results'] = task.get() + return jsonify(response_data) + + +@app.route('/result', methods=['POST']) +def returnanswer(): + """Return an answer to the user.""" + question = request.json['replies']['question'] + answer = request.json['results'] + + try: + summary_policy = wikipedia.summary(request.json['replies']['policy']) + except (DisambiguationError, HTTPTimeOutError, PageError, RedirectError): + summary_policy = '' + + try: + summary_consequence = wikipedia.summary( + request.json['replies']['phenomenon']) + except (DisambiguationError, HTTPTimeOutError, PageError, RedirectError): + summary_consequence = '' + + return render_template( + 'answer.html', + question=question, + answer=answer, + summary_policy=summary_policy, + summary_consequence=summary_consequence) + + +if __name__ == '__main__': + port = int(os.environ.get('PORT', 5000)) + host = '0.0.0.0' + http_server = WSGIServer((host, port), app) + print("Starting server on port {}".format(port)) + http_server.serve_forever() diff --git a/clear_redis.py b/clear_redis.py new file mode 100644 index 0000000..09bbef3 --- /dev/null +++ b/clear_redis.py @@ -0,0 +1,10 @@ +# This short program is used to flush the redis instance so that we do +# not run out of memory since the Heroku redis add-on only gives a few MB + +import os +import redis +from config import CeleryConfig + +redis_url = CeleryConfig.broker_url +r = redis.from_url(redis_url) +r.flushdb() diff --git a/config.py b/config.py new file mode 100644 index 0000000..28940be --- /dev/null +++ b/config.py @@ -0,0 +1,18 @@ +import os + +from dotenv import load_dotenv +load_dotenv() + + +class Config: + SECRET_KEY = os.getenv('SECRET_KEY') + + +class ProdConfig(Config): + DEBUG = False + + +class CeleryConfig: + broker_url = result_backend = os.getenv('REDIS_URL') + # result_expires = 600 + # broker_transport_options = {'visibility_timeout': 1800} diff --git a/nltk.txt b/nltk.txt new file mode 100644 index 0000000..dbde3fe --- /dev/null +++ b/nltk.txt @@ -0,0 +1,3 @@ +stopwords +wordnet +punkt \ No newline at end of file diff --git a/opinion-lexicon-English/neg_words.txt b/opinion-lexicon-English/neg_words.txt new file mode 100644 index 0000000..68e9cc0 --- /dev/null +++ b/opinion-lexicon-English/neg_words.txt @@ -0,0 +1,4783 @@ +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 +alarm +alarmed +alarming +alarmingly +alienate +alienated +alienation +allegation +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 +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 +naïve +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 diff --git a/opinion-lexicon-English/negative-words.txt b/opinion-lexicon-English/negative-words.txt new file mode 100644 index 0000000..3c4dd35 --- /dev/null +++ b/opinion-lexicon-English/negative-words.txt @@ -0,0 +1,4818 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Opinion Lexicon: Negative +; +; This file contains a list of NEGATIVE opinion words (or sentiment words). +; +; This file and the papers can all be downloaded from +; http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html +; +; If you use this list, please cite one of the following two papers: +; +; Minqing Hu and Bing Liu. "Mining and Summarizing Customer Reviews." +; Proceedings of the ACM SIGKDD International Conference on Knowledge +; Discovery and Data Mining (KDD-2004), Aug 22-25, 2004, Seattle, +; Washington, USA, +; Bing Liu, Minqing Hu and Junsheng Cheng. "Opinion Observer: Analyzing +; and Comparing Opinions on the Web." Proceedings of the 14th +; International World Wide Web conference (WWW-2005), May 10-14, +; 2005, Chiba, Japan. +; +; Notes: +; 1. The appearance of an opinion word in a sentence does not necessarily +; mean that the sentence expresses a positive or negative opinion. +; See the paper below: +; +; Bing Liu. "Sentiment Analysis and Subjectivity." An chapter in +; Handbook of Natural Language Processing, Second Edition, +; (editors: N. Indurkhya and F. J. Damerau), 2010. +; +; 2. You will notice many misspelled words in the list. They are not +; mistakes. They are included as these misspelled words appear +; frequently in social media content. +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +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 +alarm +alarmed +alarming +alarmingly +alienate +alienated +alienation +allegation +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 +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 +naïve +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 diff --git a/opinion-lexicon-English/pos_words.txt b/opinion-lexicon-English/pos_words.txt new file mode 100644 index 0000000..b3f2a7f --- /dev/null +++ b/opinion-lexicon-English/pos_words.txt @@ -0,0 +1,2007 @@ +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 +preferred +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 diff --git a/opinion-lexicon-English/positive-words.txt b/opinion-lexicon-English/positive-words.txt new file mode 100644 index 0000000..83c86d4 --- /dev/null +++ b/opinion-lexicon-English/positive-words.txt @@ -0,0 +1,2042 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Opinion Lexicon: Positive +; +; This file contains a list of POSITIVE opinion words (or sentiment words). +; +; This file and the papers can all be downloaded from +; http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html +; +; If you use this list, please cite one of the following two papers: +; +; Minqing Hu and Bing Liu. "Mining and Summarizing Customer Reviews." +; Proceedings of the ACM SIGKDD International Conference on Knowledge +; Discovery and Data Mining (KDD-2004), Aug 22-25, 2004, Seattle, +; Washington, USA, +; Bing Liu, Minqing Hu and Junsheng Cheng. "Opinion Observer: Analyzing +; and Comparing Opinions on the Web." Proceedings of the 14th +; International World Wide Web conference (WWW-2005), May 10-14, +; 2005, Chiba, Japan. +; +; Notes: +; 1. The appearance of an opinion word in a sentence does not necessarily +; mean that the sentence expresses a positive or negative opinion. +; See the paper below: +; +; Bing Liu. "Sentiment Analysis and Subjectivity." An chapter in +; Handbook of Natural Language Processing, Second Edition, +; (editors: N. Indurkhya and F. J. Damerau), 2010. +; +; 2. You will notice many misspelled words in the list. They are not +; mistakes. They are included as these misspelled words appear +; frequently in social media content. +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +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 +preferred +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 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d6d05a7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,145 @@ +alabaster==0.7.12 +amqp==2.5.0 +aniso8601==7.0.0 +appnope==0.1.0 +attrs==19.1.0 +autopep8==1.4.4 +awscli==1.16.183 +awsebcli==3.15.2 +Babel==2.7.0 +backcall==0.1.0 +beautifulsoup4==4.7.1 +billiard==3.6.0.0 +bleach==3.1.0 +blessed==1.15.0 +blis==0.2.4 +boto==2.49.0 +boto3==1.9.173 +botocore==1.12.173 +cached-property==1.5.1 +cachetools==3.1.1 +celery==4.3.0 +celery-s3==1.0.1 +cement==2.8.2 +certifi==2019.3.9 +chardet==3.0.4 +Click==7.0 +colorama==0.3.9 +cymem==2.0.2 +cytoolz==0.10.0 +decorator==4.4.0 +defusedxml==0.6.0 +docker==3.7.3 +docker-compose==1.23.2 +docker-pycreds==0.4.0 +dockerpty==0.4.1 +docopt==0.6.2 +docutils==0.14 +dominate==2.3.5 +entrypoints==0.3 +Flask==1.0.3 +Flask-Bootstrap==3.3.7.1 +flask-restplus==0.12.1 +Flask-WTF==0.14.2 +future==0.16.0 +futures==3.1.1 +gevent==1.4.0 +greenlet==0.4.15 +gunicorn==19.9.0 +idna==2.7 +imagesize==1.1.0 +ipykernel==5.1.0 +ipython==7.4.0 +ipython-genutils==0.2.0 +ipywidgets==7.4.2 +itsdangerous==1.1.0 +jedi==0.13.3 +jellyfish==0.6.1 +Jinja2==2.10.1 +jmespath==0.9.4 +joblib==0.13.2 +jsonschema==2.6.0 +jupyter==1.0.0 +jupyter-client==5.2.4 +jupyter-console==6.0.0 +jupyter-core==4.4.0 +kombu==4.6.3 +MarkupSafe==1.1.1 +mistune==0.8.4 +murmurhash==1.0.2 +nbconvert==5.4.1 +nbformat==4.4.0 +networkx==2.3 +nltk==3.4.5 +notebook==5.7.8 +numpy==1.16.4 +packaging==19.1 +pandocfilters==1.4.2 +parso==0.4.0 +pathspec==0.5.9 +pexpect==4.7.0 +pickleshare==0.7.5 +plac==0.9.6 +preshed==2.0.1 +prometheus-client==0.6.0 +prompt-toolkit==2.0.9 +ptyprocess==0.6.0 +pyasn1==0.4.5 +pycodestyle==2.5.0 +pyemd==0.5.1 +Pygments==2.3.1 +pyparsing==2.4.2 +Pyphen==0.9.5 +pyrsistent==0.14.11 +python-dateutil==2.8.0 +python-dotenv==0.10.3 +pytz==2019.1 +PyYAML==4.2b1 +pyzmq==18.0.1 +qtconsole==4.4.3 +redis==3.2.1 +requests==2.20.1 +rsa==3.4.2 +s3transfer==0.2.1 +scikit-learn==0.20.3 +scipy==1.3.0 +semantic-version==2.5.0 +Send2Trash==1.5.0 +singledispatch==3.4.0.3 +six==1.11.0 +snowballstemmer==1.9.0 +soupsieve==1.9.2 +spacy==2.1.6 +https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.1.0/en_core_web_sm-2.1.0.tar.gz#egg=en_core_web_sm +Sphinx==2.1.2 +sphinx-rtd-theme==0.4.3 +sphinxcontrib-applehelp==1.0.1 +sphinxcontrib-devhelp==1.0.1 +sphinxcontrib-htmlhelp==1.0.2 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.2 +sphinxcontrib-serializinghtml==1.1.3 +srsly==0.0.7 +termcolor==1.1.0 +terminado==0.8.2 +testpath==0.4.2 +textacy==0.8.0 +texttable==0.9.1 +thinc==7.0.8 +toolz==0.10.0 +tornado==6.0.2 +tqdm==4.32.2 +traitlets==4.3.2 +urllib3==1.24.2 +vine==1.3.0 +virtualenv==16.4.3 +visitor==0.1.3 +wasabi==0.2.2 +wcwidth==0.1.7 +webencodings==0.5.1 +websocket-client==0.56.0 +Werkzeug==0.15.4 +widgetsnbextension==3.4.2 +wikipedia==1.4.0 +WTForms==2.2.1 +xmltodict==0.12.0 diff --git a/static/css/jumbotron.css b/static/css/jumbotron.css new file mode 100644 index 0000000..d2fb0b1 --- /dev/null +++ b/static/css/jumbotron.css @@ -0,0 +1,4 @@ +body { + padding-top: 20px; + padding-bottom: 20px; +} diff --git a/templates/answer.html b/templates/answer.html new file mode 100644 index 0000000..9cac02f --- /dev/null +++ b/templates/answer.html @@ -0,0 +1,231 @@ +{% extends "bootstrap/base.html" %} +{% import "bootstrap/fixes.html" as fixes %} + +{% block title %}Answer{% endblock %} + +{% block content %} + + + + + + + +
+
+ +
+ +
+ + +
+

+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+ + + + +
+
+
+ + + + +
+

+
+

+
+
+ + + +
+ +
+ + +
+

+
+
+
+

+ Source: Wikipedia. +

+
+
+
+ + + + +
+

+
+
+
+

+ Source: Wikipedia. +

+
+
+
+ + + +
+ +
+ +
+ +
+ + + + +{% endblock %} + +{% block head %} +{{super()}} +{{fixes.ie8()}} +{% endblock %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..1a5a7e8 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,236 @@ +{% extends "bootstrap/base.html" %} +{% import "bootstrap/fixes.html" as fixes %} + +{% block title %}Question{% endblock %} + +{% block content %} + + + + + + + + + + + + + + + + + + + +
+
+ +

Policy DataBot

+ +
+
+
+
+

Explore data from policy research papers. Interact with the bot and get to know how many research studies have found evidence for or against a given policy consequence. Note that these are only open access papers and do not represent the opinion of all peer reviewed research.

+
+

At the moment, the databot only supports specific types of questions. The question generated by the bot depends on user input but it is always of the kind that asks about the effect of a given policy on a particular phenomenon e.g. Does cap and trade reduce carbon emissions?

+
+
+ +
+ +
+
+ + + +
+ +
+
+ + + + +{% endblock %} + +{% block head %} +{{super()}} +{{fixes.ie8()}} +{% endblock %} \ No newline at end of file From 4a0befe037bd4e56f294f09e21c3dbf246db48bf Mon Sep 17 00:00:00 2001 From: masete Date: Wed, 23 Oct 2019 09:57:39 +0300 Subject: [PATCH 02/29] modifying the procfile for heroku not to run clear redis file --- .gitignore | 1 + Procfile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d7adbb3..0793f95 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ venv .DS_Store .vscode dump.rdb +/.idea/ diff --git a/Procfile b/Procfile index 5f24787..03568c6 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ -web: python clear_redis.py && python app.py +web: python app.py worker: celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 From 4a3e44f02b08dab24b3a8442e6ed49122325e4dd Mon Sep 17 00:00:00 2001 From: masete Date: Wed, 23 Oct 2019 10:50:06 +0300 Subject: [PATCH 03/29] add newleric to follow app performance --- Procfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Procfile b/Procfile index 03568c6..c70fee1 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ -web: python app.py -worker: celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 +web: newrelic-admin run-program python clear_redis.py && newrelic-admin run-program python app.py +worker: newrelic-admin run-program celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file From af9e33066f84b7fc74d6af3ee6fc3952ef975a7b Mon Sep 17 00:00:00 2001 From: masete Date: Wed, 23 Oct 2019 11:53:27 +0300 Subject: [PATCH 04/29] add line to run clear_redis containing redis url --- Procfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Procfile b/Procfile index c70fee1..8a3eb27 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ -web: newrelic-admin run-program python clear_redis.py && newrelic-admin run-program python app.py -worker: newrelic-admin run-program celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file +web: python clear_redis.py && python app.py +worker: celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file From 6e6f566d4ac5c833b55726a05dfaeb2546c7372b Mon Sep 17 00:00:00 2001 From: masete Date: Fri, 25 Oct 2019 11:05:10 +0300 Subject: [PATCH 05/29] add virtualenv --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0793f95..3bdf064 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ venv .vscode dump.rdb /.idea/ +/myenv From ede7066642010baa76101ac6c590afcd8d04cfe1 Mon Sep 17 00:00:00 2001 From: masete Date: Fri, 25 Oct 2019 12:27:46 +0300 Subject: [PATCH 06/29] comment flushdb method --- clear_redis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clear_redis.py b/clear_redis.py index 09bbef3..39e87c3 100644 --- a/clear_redis.py +++ b/clear_redis.py @@ -7,4 +7,4 @@ redis_url = CeleryConfig.broker_url r = redis.from_url(redis_url) -r.flushdb() +# r.flushdb() From 59223f9918082168361aabea4da9f98adbb2e28d Mon Sep 17 00:00:00 2001 From: masete Date: Sat, 26 Oct 2019 07:43:03 +0300 Subject: [PATCH 07/29] uncommenting flushdb in clear_redis.py --- clear_redis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clear_redis.py b/clear_redis.py index 39e87c3..09bbef3 100644 --- a/clear_redis.py +++ b/clear_redis.py @@ -7,4 +7,4 @@ redis_url = CeleryConfig.broker_url r = redis.from_url(redis_url) -# r.flushdb() +r.flushdb() From 059a6f279705d6967d114cb185061be7c0fbad00 Mon Sep 17 00:00:00 2001 From: masete Date: Sat, 26 Oct 2019 19:40:37 +0300 Subject: [PATCH 08/29] changing loglevel in procfile to verbose --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index 8a3eb27..230c348 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ web: python clear_redis.py && python app.py -worker: celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file +worker: celery worker -A answer_policy_question.celery -O fair --loglevel=verbose --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file From 593e7061ee9f96f88e8722d5c2ca8bac742e040b Mon Sep 17 00:00:00 2001 From: masete Date: Sat, 26 Oct 2019 20:20:05 +0300 Subject: [PATCH 09/29] changing loglevel in procfile to INFO --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index 230c348..8a3eb27 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ web: python clear_redis.py && python app.py -worker: celery worker -A answer_policy_question.celery -O fair --loglevel=verbose --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file +worker: celery worker -A answer_policy_question.celery -O fair --loglevel=INFO --concurrency=2 --max-tasks-per-child=1 \ No newline at end of file From 995c2bed0c04131b27d3f9f742d58d26b907190a Mon Sep 17 00:00:00 2001 From: masete Date: Sun, 27 Oct 2019 23:02:32 +0300 Subject: [PATCH 10/29] add a header in bootstrap --- templates/index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/templates/index.html b/templates/index.html index 1a5a7e8..6d08322 100644 --- a/templates/index.html +++ b/templates/index.html @@ -5,6 +5,8 @@ {% block content %} + + @@ -166,6 +168,7 @@

Policy DataBot

console.log(data) status_url = request.getResponseHeader('Location'); // check progress of task + console.log(request) update_progress(status_url) } }); From f7c23eb262e87f3f50f61b7ca412d406034d9ab1 Mon Sep 17 00:00:00 2001 From: masete Date: Sun, 27 Oct 2019 23:11:00 +0300 Subject: [PATCH 11/29] add head elements --- templates/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/index.html b/templates/index.html index 6d08322..50472ab 100644 --- a/templates/index.html +++ b/templates/index.html @@ -4,9 +4,9 @@ {% block title %}Question{% endblock %} {% block content %} - + - + From b51ec51183fac54c190def092431f79eb2865ced Mon Sep 17 00:00:00 2001 From: masete Date: Sun, 27 Oct 2019 23:28:53 +0300 Subject: [PATCH 12/29] feat(policy-analysis): enables people to compare different policies - Analyzes different policies and returns a data visualised content --- templates/answer.html | 51 ++++++++++++++++--------------------------- templates/index.html | 49 ++++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 60 deletions(-) diff --git a/templates/answer.html b/templates/answer.html index 9cac02f..8dfc75d 100644 --- a/templates/answer.html +++ b/templates/answer.html @@ -21,44 +21,38 @@

- +
-

+

-

+

-

+

-

+

-

+

- +
- + @@ -213,14 +200,14 @@

{% endblock %} @@ -228,4 +215,4 @@

{% block head %} {{super()}} {{fixes.ie8()}} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 50472ab..3fc8cf4 100644 --- a/templates/index.html +++ b/templates/index.html @@ -4,9 +4,7 @@ {% block title %}Question{% endblock %} {% block content %} - - - + @@ -32,7 +30,7 @@

Policy DataBot

-
+

Explore data from policy research papers. Interact with the bot and get to know how many research studies have found evidence for or against a given policy consequence. Note that these are only open access papers and do not represent the opinion of all peer reviewed research.

@@ -40,7 +38,7 @@

Policy DataBot

At the moment, the databot only supports specific types of questions. The question generated by the bot depends on user input but it is always of the kind that asks about the effect of a given policy on a particular phenomenon e.g. Does cap and trade reduce carbon emissions?

- +
@@ -49,7 +47,6 @@

Policy DataBot