From 3edff470cb25806dd452c98af641c90b6e7bbab8 Mon Sep 17 00:00:00 2001 From: Pedro Madureira Date: Thu, 15 Jun 2023 21:53:24 +0100 Subject: [PATCH] [lab-Natural Language Processing] PedroFMadureira --- your-code/challenge-1-PedroMadureira.ipynb | 498 ++ your-code/challenge-2-PedroMadureira.ipynb | 4780 ++++++++++++++++++++ 2 files changed, 5278 insertions(+) create mode 100644 your-code/challenge-1-PedroMadureira.ipynb create mode 100644 your-code/challenge-2-PedroMadureira.ipynb diff --git a/your-code/challenge-1-PedroMadureira.ipynb b/your-code/challenge-1-PedroMadureira.ipynb new file mode 100644 index 0000000..8f6e186 --- /dev/null +++ b/your-code/challenge-1-PedroMadureira.ipynb @@ -0,0 +1,498 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Challenge 1: Prepare Textual Data for Analysis\n", + "\n", + "In this challenge, we will walk you through how to prepare raw text data for NLP analysis. Due to time limitation, we will cover **text cleaning, tokenization, stemming, lemmatization, and stop words removal** but skip POS tags, named entity recognition, and trunking. The latter 3 steps are more advanced and not required for our next challenge on sentiment analysis. \n", + "\n", + "## Objectives\n", + "\n", + "* Learn how to prepare text data for NLP analysis in Python\n", + "* Write the functions you will use in Challenge 3 for cleaning, tokenizing, stemming, and lemmatizing data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Text Cleaning\n", + "\n", + "Text cleaning is also called text cleansing. The goal is to clean up the messy real-world textual data in order to improve the text analysis accuracy at later steps. For generic textual data sources, we usually need to fix the following problems:\n", + "\n", + "* Missing values\n", + "* Special characters\n", + "* Numbers\n", + "\n", + "For web data, we need to additinally fix:\n", + "\n", + "* HTML tags\n", + "* JavaScripts\n", + "* CSS\n", + "* URLs\n", + "\n", + "Case by case, there may also be special problems we need to fix for certain types of data. For instance, for Twitter tweets data we need to fix hashtags and the Twitter handler including a *@* sign and Twitter usernames.\n", + "\n", + "In addition, we also need to convert the texts to lower cases so that when we anaylize the words later, NLTK will not think *Ironhack* and *ironhack* mean different things.\n", + "\n", + "Note that the above are the general steps to clean up data for NLP analysis. In specific cases, not all those steps apply. For example, if you are analyzing textual data on history, you probably don't want to remove numbers because numbers (such as years and dates) are important in history. Besides, if you are doing something like network analysis on web data, you may want to retain hyperlinks so that you will be able to extract the outbounding links in the next steps. Sometimes you may also need to do some cleaning first, then extract some features, then do more cleaning, then extract more features. You'll have to make these judgments by yourself case by case. \n", + "\n", + "In this challenge we are keeping things relatively simple so **you only need to clean up special characters, numbers, and URLs**. Let's say you have the following messy string to clean up:\n", + "\n", + "```\n", + "@Ironhack's-#Q website 776-is http://ironhack.com [(2018)]\")\n", + "```\n", + "\n", + "You will write a function, which will be part of you NLP analysis pipeline in the next challenge, to clean up strings like above and output:\n", + "\n", + "```\n", + "ironhack s q website is\n", + "```\n", + "\n", + "**In the cell below, write a function called `clean_up`**. Test your function with the above string and make sure you receive the expected output.\n", + "\n", + "*Notes:*\n", + "\n", + "* Use regular expressions to identify URL patterns and remove URLs.\n", + "\n", + "* You don't want to replace special characters/numbers with an empty string. Because that will join words that shouldn't be joined. For instance, if you replace the `'` in `you're`, you will get `youre` which is undesirable. So instead, replace special characters and numbers with a whitespace.\n", + "\n", + "* The order matters in terms of what to clean before others. For example, if you clean special characters before URLs, it will be difficult to identify the URLs patterns.\n", + "\n", + "* Don't worry about single letters and multiple whitespaces in your returned string. In our next steps those issues will be fixed." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "text = \"\"\"@Ironhack's-#Q website 776-is http://ironhack.com [(2018)]\")\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import re" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n Cleans up numbers, URLs, and special characters from a string.\\n\\n Args:\\n s: The string to be cleaned up.\\n\\n Returns:\\n A string that has been cleaned up.\\n'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# def clean_up(s):\n", + "\"\"\"\n", + " Cleans up numbers, URLs, and special characters from a string.\n", + "\n", + " Args:\n", + " s: The string to be cleaned up.\n", + "\n", + " Returns:\n", + " A string that has been cleaned up.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ironhack s q website is'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def clean_up(s):\n", + " s = re.sub(r'https?://(?:[-\\w.]|(?:%[\\da-fA-F]{2}))+/?', ' ', s) # removing URL\n", + " s = re.sub(r'[^\\w\\s]|\\d|_', ' ', s) # removing special characters and numbers\n", + " s = re.sub(' +', ' ', s) # removing extra spaces\n", + " s = str(s).lower().strip()\n", + " return s\n", + "\n", + "s_cleaned = clean_up(text)\n", + "s_cleaned" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tokenization\n", + "\n", + "We have actually discussed the concept of tokenization in the Bag of Words lab before. In that lab, we did both tokenization and calculated the [matrix of document-term frequency](https://en.wikipedia.org/wiki/Document-term_matrix). In this lab, we only need tokenization.\n", + "\n", + "In the cell below, write a function called **`tokenize`** to convert a string to a list of words. We'll use the string we received in the previous step *`ironhack s q website is`* to test your function. Your function shoud return:\n", + "\n", + "```python\n", + "['ironhack', 's', 'q', 'website', 'is']\n", + "```\n", + "\n", + "*Hint: use the `word_tokenize` function in NLTK.*" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import nltk\n", + "from nltk.tokenize import word_tokenize #tokenizing library" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package punkt to\n", + "[nltk_data] C:\\Users\\pc\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n", + "[nltk_data] Downloading package omw-1.4 to\n", + "[nltk_data] C:\\Users\\pc\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package omw-1.4 is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nltk.download('punkt') #tokenization\n", + "nltk.download('omw-1.4')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n Tokenize a string.\\n\\n Args:\\n s: String to be tokenized.\\n\\n Returns:\\n A list of words as the result of tokenization.\\n'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#def tokenize(s):\n", + "\"\"\"\n", + " Tokenize a string.\n", + "\n", + " Args:\n", + " s: String to be tokenized.\n", + "\n", + " Returns:\n", + " A list of words as the result of tokenization.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ironhack', 's', 'q', 'website', 'is']" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def tokenize(s):\n", + " tokens = word_tokenize(s)\n", + " return tokens\n", + "\n", + "s_cleaned2 = tokenize(s_cleaned)\n", + "s_cleaned2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stemming and Lemmatization\n", + "\n", + "We will do stemming and lemmatization in the same step because otherwise we'll have to loop each token lists twice. You have learned in the previous challenge that stemming and lemmatization are similar but have different purposes for text normalization:\n", + "\n", + "**Stemming reduces words to their root forms (stems) even if the stem itself is not a valid word**. For instance, *token*, *tokenize*, and *tokenization* will be reduced to the same stem - *token*. And *change*, *changed*, *changing* will be reduced to *chang*.\n", + "\n", + "In NLTK, there are three stemming libraries: [*Porter*](https://www.nltk.org/_modules/nltk/stem/porter.html), [*Snowball*](https://www.nltk.org/_modules/nltk/stem/snowball.html), and [*Lancaster*](https://www.nltk.org/_modules/nltk/stem/lancaster.html). The difference among the three is the agressiveness with which they perform stemming. Porter is the most gentle stemmer that preserves the word's original form if it has doubts. In contrast, Lancaster is the most aggressive one that sometimes produces wrong outputs. And Snowball is in between. **In most cases you will use either Porter or Snowball**.\n", + "\n", + "**Lemmatization differs from stemming in that lemmatization cares about whether the reduced form belongs to the target language and it often requires the context (i.e. POS or parts-of-speech) in order to perform the correct transformation**. For example, the [*Word Net lemmatizer* in NLTK](https://www.nltk.org/_modules/nltk/stem/wordnet.html) yields different results with and without being told that *was* is a verb:\n", + "\n", + "```python\n", + ">>> from nltk.stem import WordNetLemmatizer\n", + ">>> lemmatizer = WordNetLemmatizer()\n", + ">>> lemmatizer.lemmatize('was')\n", + "'wa'\n", + ">>> lemmatizer.lemmatize('runs', pos='v')\n", + "'be'\n", + "```\n", + "\n", + "In the cell below, import the necessary libraries and define a function called `stem_and_lemmatize` that performs both stemming and lemmatization on a list of words. Don't worry about the POS part of lemmatization for now." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package wordnet to\n", + "[nltk_data] C:\\Users\\pc\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package wordnet is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk.stem import WordNetLemmatizer #lemmatizing library\n", + "from nltk.stem import PorterStemmer\n", + "nltk.download('wordnet') #database of English language" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n Perform stemming and lemmatization on a list of words.\\n\\n Args:\\n l: A list of strings.\\n\\n Returns:\\n A list of strings after being stemmed and lemmatized.\\n'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#def stem_and_lemmatize(l):\n", + "\"\"\"\n", + " Perform stemming and lemmatization on a list of words.\n", + "\n", + " Args:\n", + " l: A list of strings.\n", + "\n", + " Returns:\n", + " A list of strings after being stemmed and lemmatized.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ironhack', 's', 'q', 'websit', 'is']" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def stem_and_lemmatize(l):\n", + " stemmer = PorterStemmer()\n", + " lemmatizer = WordNetLemmatizer()\n", + " text = [stemmer.stem(lemmatizer.lemmatize(i)) for i in l]\n", + " return text\n", + "\n", + "s_cleaned3 = stem_and_lemmatize(s_cleaned2)\n", + "s_cleaned3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stop Words Removal\n", + "\n", + "Stop Words are the most commonly used words in a language that don't contribute to the main meaning of the texts. Examples of English stop words are `i`, `me`, `is`, `and`, `the`, `but`, and `here`. We want to remove stop words from analysis because otherwise stop words will take the overwhelming portion in our tokenized word list and the NLP algorithms will have problems in identifying the truely important words.\n", + "\n", + "NLTK has a `stopwords` package that allows us to import the most common stop words in over a dozen langauges including English, Spanish, French, German, Dutch, Portuguese, Italian, etc. These are the bare minimum stop words (100-150 words in each language) that can get beginners started. Some other NLP packages such as [*stop-words*](https://pypi.org/project/stop-words/) and [*wordcloud*](https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html) provide bigger lists of stop words.\n", + "\n", + "Now in the cell below, create a function called `remove_stopwords` that loop through a list of words that have been stemmed and lemmatized to check and remove stop words. Return a new list where stop words have been removed." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package stopwords to\n", + "[nltk_data] C:\\Users\\pc\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk.corpus import stopwords #stopwords library\n", + "nltk.download('stopwords') #stopwords" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n Remove English stopwords from a list of strings.\\n\\n Args:\\n l: A list of strings.\\n\\n Returns:\\n A list of strings after stop words are removed.\\n'" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#def remove_stopwords(l):\n", + "\"\"\"\n", + " Remove English stopwords from a list of strings.\n", + "\n", + " Args:\n", + " l: A list of strings.\n", + "\n", + " Returns:\n", + " A list of strings after stop words are removed.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ironhack', 'q', 'websit']" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def remove_stopwords(l):\n", + " stop_words = stopwords.words('english')\n", + " tokens = [t for t in l if t not in stop_words]\n", + " return tokens\n", + "\n", + "s_cleaned4 = remove_stopwords(s_cleaned3)\n", + "s_cleaned4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this challenge you have learned several text preparation techniques in more depths including text cleaning, tokenization, stemming, lemmatization, and stopwords removal. You have also written the functions you will be using in the next challenge to prepare texts for NLP analysis. Now we are ready to move on to the next challenge - Sentiment Analysis." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/your-code/challenge-2-PedroMadureira.ipynb b/your-code/challenge-2-PedroMadureira.ipynb new file mode 100644 index 0000000..398944a --- /dev/null +++ b/your-code/challenge-2-PedroMadureira.ipynb @@ -0,0 +1,4780 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Challenge 2: Sentiment Analysis\n", + "\n", + "In this challenge we will learn sentiment analysis and practice performing sentiment analysis on Twitter tweets. \n", + "\n", + "## Introduction\n", + "\n", + "Sentiment analysis is to *systematically identify, extract, quantify, and study affective states and subjective information* based on texts ([reference](https://en.wikipedia.org/wiki/Sentiment_analysis)). In simple words, it's to understand whether a person is happy or unhappy in producing the piece of text. Why we (or rather, companies) care about sentiment in texts? It's because by understanding the sentiments in texts, we will be able to know if our customers are happy or unhappy about our products and services. If they are unhappy, the subsequent action is to figure out what have caused the unhappiness and make improvements.\n", + "\n", + "Basic sentiment analysis only understands the *positive* or *negative* (sometimes *neutral* too) polarities of the sentiment. More advanced sentiment analysis will also consider dimensions such as agreement, subjectivity, confidence, irony, and so on. In this challenge we will conduct the basic positive vs negative sentiment analysis based on real Twitter tweets.\n", + "\n", + "NLTK comes with a [sentiment analysis package](https://www.nltk.org/api/nltk.sentiment.html). This package is great for dummies to perform sentiment analysis because it requires only the textual data to make predictions. For example:\n", + "\n", + "```python\n", + ">>> from nltk.sentiment.vader import SentimentIntensityAnalyzer\n", + ">>> txt = \"Ironhack is a Global Tech School ranked num 2 worldwide. 
", + "
", + "Our mission is to help people transform their careers and join a thriving community of tech professionals that love what they do.\"\n", + ">>> analyzer = SentimentIntensityAnalyzer()\n", + ">>> analyzer.polarity_scores(txt)\n", + "{'neg': 0.0, 'neu': 0.741, 'pos': 0.259, 'compound': 0.8442}\n", + "```\n", + "\n", + "In this challenge, however, you will not use NLTK's sentiment analysis package because in your Machine Learning training in the past 2 weeks you have learned how to make predictions more accurate than that. The [tweets data](https://www.kaggle.com/kazanova/sentiment140) we will be using today are already coded for the positive/negative sentiment. You will be able to use the Naïve Bayes classifier you learned in the lesson to predict the sentiment of tweets based on the labels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conducting Sentiment Analysis\n", + "\n", + "### Loading and Exploring Data\n", + "\n", + "The dataset we'll be using today is located on Kaggle (https://www.kaggle.com/kazanova/sentiment140). Once you have downloaded and imported the dataset, it you will need to define the columns names: df.columns = ['target','id','date','flag','user','text']\n", + "\n", + "*Notes:* \n", + "\n", + "* The dataset is huuuuge (1.6m tweets). When you develop your data analysis codes, you can sample a subset of the data (e.g. 20k records) so that you will save a lot of time when you test your codes." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import re\n", + "import numpy as np\n", + "import nltk\n", + "from nltk.tokenize import word_tokenize\n", + "from sklearn.feature_extraction.text import CountVectorizer\n", + "from nltk.stem import PorterStemmer\n", + "from nltk.stem import WordNetLemmatizer\n", + "from nltk.corpus import stopwords\n", + "from nltk import FreqDist\n", + "from langdetect import detect\n", + "from nltk.corpus import movie_reviews\n", + "from nltk.sentiment import SentimentIntensityAnalyzer\n", + "import random\n", + "from nltk.corpus import movie_reviews\n", + "from nltk.classify import apply_features" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\"training.1600000.processed.noemoticon.csv\", encoding='latin1', header=None)\n", + "df.columns = ['target','id','date','flag','user','text']" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
targetiddateflagusertext
001467810369Mon Apr 06 22:19:45 PDT 2009NO_QUERY_TheSpecialOne_@switchfoot http://twitpic.com/2y1zl - Awww, t...
101467810672Mon Apr 06 22:19:49 PDT 2009NO_QUERYscotthamiltonis upset that he can't update his Facebook by ...
201467810917Mon Apr 06 22:19:53 PDT 2009NO_QUERYmattycus@Kenichan I dived many times for the ball. Man...
301467811184Mon Apr 06 22:19:57 PDT 2009NO_QUERYElleCTFmy whole body feels itchy and like its on fire
401467811193Mon Apr 06 22:19:57 PDT 2009NO_QUERYKaroli@nationwideclass no, it's not behaving at all....
.....................
159999542193601966Tue Jun 16 08:40:49 PDT 2009NO_QUERYAmandaMarie1028Just woke up. Having no school is the best fee...
159999642193601969Tue Jun 16 08:40:49 PDT 2009NO_QUERYTheWDBoardsTheWDB.com - Very cool to hear old Walt interv...
159999742193601991Tue Jun 16 08:40:49 PDT 2009NO_QUERYbpbabeAre you ready for your MoJo Makeover? Ask me f...
159999842193602064Tue Jun 16 08:40:49 PDT 2009NO_QUERYtinydiamondzHappy 38th Birthday to my boo of alll time!!! ...
159999942193602129Tue Jun 16 08:40:50 PDT 2009NO_QUERYRyanTrevMorrishappy #charitytuesday @theNSPCC @SparksCharity...
\n", + "

1600000 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " target id date flag \\\n", + "0 0 1467810369 Mon Apr 06 22:19:45 PDT 2009 NO_QUERY \n", + "1 0 1467810672 Mon Apr 06 22:19:49 PDT 2009 NO_QUERY \n", + "2 0 1467810917 Mon Apr 06 22:19:53 PDT 2009 NO_QUERY \n", + "3 0 1467811184 Mon Apr 06 22:19:57 PDT 2009 NO_QUERY \n", + "4 0 1467811193 Mon Apr 06 22:19:57 PDT 2009 NO_QUERY \n", + "... ... ... ... ... \n", + "1599995 4 2193601966 Tue Jun 16 08:40:49 PDT 2009 NO_QUERY \n", + "1599996 4 2193601969 Tue Jun 16 08:40:49 PDT 2009 NO_QUERY \n", + "1599997 4 2193601991 Tue Jun 16 08:40:49 PDT 2009 NO_QUERY \n", + "1599998 4 2193602064 Tue Jun 16 08:40:49 PDT 2009 NO_QUERY \n", + "1599999 4 2193602129 Tue Jun 16 08:40:50 PDT 2009 NO_QUERY \n", + "\n", + " user text \n", + "0 _TheSpecialOne_ @switchfoot http://twitpic.com/2y1zl - Awww, t... \n", + "1 scotthamilton is upset that he can't update his Facebook by ... \n", + "2 mattycus @Kenichan I dived many times for the ball. Man... \n", + "3 ElleCTF my whole body feels itchy and like its on fire \n", + "4 Karoli @nationwideclass no, it's not behaving at all.... \n", + "... ... ... \n", + "1599995 AmandaMarie1028 Just woke up. Having no school is the best fee... \n", + "1599996 TheWDBoards TheWDB.com - Very cool to hear old Walt interv... \n", + "1599997 bpbabe Are you ready for your MoJo Makeover? Ask me f... \n", + "1599998 tinydiamondz Happy 38th Birthday to my boo of alll time!!! ... \n", + "1599999 RyanTrevMorris happy #charitytuesday @theNSPCC @SparksCharity... \n", + "\n", + "[1600000 rows x 6 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
targetiddateflagusertext
041686122683Sun May 03 03:52:46 PDT 2009NO_QUERYspunkgirl@nicholasmw 1 day u will find that girl worry
102174460051Sun Jun 14 22:35:53 PDT 2009NO_QUERYBubbles_Flythere is nothing on tv and im so desperate to ...
201795849965Thu May 14 08:28:27 PDT 2009NO_QUERYktfry246Very excited that greys is on tonight. Not so ...
341933034865Tue May 26 22:49:43 PDT 2009NO_QUERYSheng072pm's again and again is a great song. Nichkhu...
401976523804Sat May 30 18:21:19 PDT 2009NO_QUERYamberselfMy teeth hurt
.....................
1999541956795183Thu May 28 22:42:33 PDT 2009NO_QUERYxdaniccca@MRSmamaL I'm soooper excited!! I'm not going ...
1999602203203675Tue Jun 16 23:14:14 PDT 2009NO_QUERYStacySailerJust watched the movie Wicked at Jimmy's... I ...
1999702233834257Thu Jun 18 21:58:44 PDT 2009NO_QUERYkieungaI feel mad at dad right now cos suddenly i thi...
1999802057777142Sat Jun 06 13:38:29 PDT 2009NO_QUERYShanz_xWatching big brother, not very good this year
1999942008026462Tue Jun 02 13:30:39 PDT 2009NO_QUERYMissStaceFmyt come off ere soon th nyt im sooooo boredd ...
\n", + "

20000 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " target id date flag \\\n", + "0 4 1686122683 Sun May 03 03:52:46 PDT 2009 NO_QUERY \n", + "1 0 2174460051 Sun Jun 14 22:35:53 PDT 2009 NO_QUERY \n", + "2 0 1795849965 Thu May 14 08:28:27 PDT 2009 NO_QUERY \n", + "3 4 1933034865 Tue May 26 22:49:43 PDT 2009 NO_QUERY \n", + "4 0 1976523804 Sat May 30 18:21:19 PDT 2009 NO_QUERY \n", + "... ... ... ... ... \n", + "19995 4 1956795183 Thu May 28 22:42:33 PDT 2009 NO_QUERY \n", + "19996 0 2203203675 Tue Jun 16 23:14:14 PDT 2009 NO_QUERY \n", + "19997 0 2233834257 Thu Jun 18 21:58:44 PDT 2009 NO_QUERY \n", + "19998 0 2057777142 Sat Jun 06 13:38:29 PDT 2009 NO_QUERY \n", + "19999 4 2008026462 Tue Jun 02 13:30:39 PDT 2009 NO_QUERY \n", + "\n", + " user text \n", + "0 spunkgirl @nicholasmw 1 day u will find that girl worry \n", + "1 Bubbles_Fly there is nothing on tv and im so desperate to ... \n", + "2 ktfry246 Very excited that greys is on tonight. Not so ... \n", + "3 Sheng07 2pm's again and again is a great song. Nichkhu... \n", + "4 amberself My teeth hurt \n", + "... ... ... \n", + "19995 xdaniccca @MRSmamaL I'm soooper excited!! I'm not going ... \n", + "19996 StacySailer Just watched the movie Wicked at Jimmy's... I ... \n", + "19997 kieunga I feel mad at dad right now cos suddenly i thi... \n", + "19998 Shanz_x Watching big brother, not very good this year \n", + "19999 MissStaceF myt come off ere soon th nyt im sooooo boredd ... \n", + "\n", + "[20000 rows x 6 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sample_df = df.sample(n=20000, random_state = 100)\n", + "sample_df = sample_df.reset_index(drop=True)\n", + "sample_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare Textual Data for Sentiment Analysis\n", + "\n", + "Now, apply the functions you have written in Challenge 1 to your whole data set. These functions include:\n", + "\n", + "* `clean_up()`\n", + "\n", + "* `tokenize()`\n", + "\n", + "* `stem_and_lemmatize()`\n", + "\n", + "* `remove_stopwords()`\n", + "\n", + "Create a new column called `text_processed` in the dataframe to contain the processed data. At the end, your `text_processed` column should contain lists of word tokens that are cleaned up. Your data should look like below:\n", + "\n", + "![Processed Data](data-cleaning-results.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Functions from challenge 1\n", + "def clean_up(s):\n", + " s = re.sub(r'https?://(?:[-\\w.]|(?:%[\\da-fA-F]{2}))+/?', ' ', s) # removing URL\n", + " s = re.sub(r'[^\\w\\s]|\\d|_', ' ', s) # removing special characters and numbers\n", + " s = re.sub(' +', ' ', s) # removing extra spaces\n", + " s = str(s).lower().strip()\n", + " return s\n", + "\n", + "def tokenize(s):\n", + " tokens = word_tokenize(s)\n", + " return tokens\n", + "\n", + "def stem_and_lemmatize(l):\n", + " stemmer = PorterStemmer()\n", + " lemmatizer = WordNetLemmatizer()\n", + " text = [stemmer.stem(lemmatizer.lemmatize(i)) for i in l]\n", + " return text\n", + "\n", + "def remove_stopwords(l):\n", + " stop_words = stopwords.words('english')\n", + " tokens = [t for t in l if t not in stop_words]\n", + " return tokens" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 20000/20000 [00:00<00:00, 43878.84it/s]\n", + "100%|██████████| 20000/20000 [00:03<00:00, 5894.37it/s]\n", + "100%|██████████| 20000/20000 [00:10<00:00, 1840.79it/s]\n", + "100%|██████████| 20000/20000 [00:10<00:00, 1971.98it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
targetiddateflagusertexttext_processed
041686122683Sun May 03 03:52:46 PDT 2009NO_QUERYspunkgirl@nicholasmw 1 day u will find that girl worry[nicholasmw, day, u, find, girl, worri]
102174460051Sun Jun 14 22:35:53 PDT 2009NO_QUERYBubbles_Flythere is nothing on tv and im so desperate to ...[noth, tv, im, desper, entertain, im, watch, h...
201795849965Thu May 14 08:28:27 PDT 2009NO_QUERYktfry246Very excited that greys is on tonight. Not so ...[veri, excit, grey, tonight, happi, season]
341933034865Tue May 26 22:49:43 PDT 2009NO_QUERYSheng072pm's again and again is a great song. Nichkhu...[pm, great, song, nichkhun, hwait]
401976523804Sat May 30 18:21:19 PDT 2009NO_QUERYamberselfMy teeth hurt[teeth, hurt]
........................
1999541956795183Thu May 28 22:42:33 PDT 2009NO_QUERYxdaniccca@MRSmamaL I'm soooper excited!! I'm not going ...[mrsmamal, soooper, excit, go, ani, girl, nemo...
1999602203203675Tue Jun 16 23:14:14 PDT 2009NO_QUERYStacySailerJust watched the movie Wicked at Jimmy's... I ...[watch, movi, wick, jimmi, thought, wa, good, ...
1999702233834257Thu Jun 18 21:58:44 PDT 2009NO_QUERYkieungaI feel mad at dad right now cos suddenly i thi...[feel, mad, dad, right, co, suddenli, think, s...
1999802057777142Sat Jun 06 13:38:29 PDT 2009NO_QUERYShanz_xWatching big brother, not very good this year[watch, big, brother, veri, good, thi, year]
1999942008026462Tue Jun 02 13:30:39 PDT 2009NO_QUERYMissStaceFmyt come off ere soon th nyt im sooooo boredd ...[myt, come, ere, soon, th, nyt, im, sooooo, bo...
\n", + "

20000 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " target id date flag \\\n", + "0 4 1686122683 Sun May 03 03:52:46 PDT 2009 NO_QUERY \n", + "1 0 2174460051 Sun Jun 14 22:35:53 PDT 2009 NO_QUERY \n", + "2 0 1795849965 Thu May 14 08:28:27 PDT 2009 NO_QUERY \n", + "3 4 1933034865 Tue May 26 22:49:43 PDT 2009 NO_QUERY \n", + "4 0 1976523804 Sat May 30 18:21:19 PDT 2009 NO_QUERY \n", + "... ... ... ... ... \n", + "19995 4 1956795183 Thu May 28 22:42:33 PDT 2009 NO_QUERY \n", + "19996 0 2203203675 Tue Jun 16 23:14:14 PDT 2009 NO_QUERY \n", + "19997 0 2233834257 Thu Jun 18 21:58:44 PDT 2009 NO_QUERY \n", + "19998 0 2057777142 Sat Jun 06 13:38:29 PDT 2009 NO_QUERY \n", + "19999 4 2008026462 Tue Jun 02 13:30:39 PDT 2009 NO_QUERY \n", + "\n", + " user text \\\n", + "0 spunkgirl @nicholasmw 1 day u will find that girl worry \n", + "1 Bubbles_Fly there is nothing on tv and im so desperate to ... \n", + "2 ktfry246 Very excited that greys is on tonight. Not so ... \n", + "3 Sheng07 2pm's again and again is a great song. Nichkhu... \n", + "4 amberself My teeth hurt \n", + "... ... ... \n", + "19995 xdaniccca @MRSmamaL I'm soooper excited!! I'm not going ... \n", + "19996 StacySailer Just watched the movie Wicked at Jimmy's... I ... \n", + "19997 kieunga I feel mad at dad right now cos suddenly i thi... \n", + "19998 Shanz_x Watching big brother, not very good this year \n", + "19999 MissStaceF myt come off ere soon th nyt im sooooo boredd ... \n", + "\n", + " text_processed \n", + "0 [nicholasmw, day, u, find, girl, worri] \n", + "1 [noth, tv, im, desper, entertain, im, watch, h... \n", + "2 [veri, excit, grey, tonight, happi, season] \n", + "3 [pm, great, song, nichkhun, hwait] \n", + "4 [teeth, hurt] \n", + "... ... \n", + "19995 [mrsmamal, soooper, excit, go, ani, girl, nemo... \n", + "19996 [watch, movi, wick, jimmi, thought, wa, good, ... \n", + "19997 [feel, mad, dad, right, co, suddenli, think, s... \n", + "19998 [watch, big, brother, veri, good, thi, year] \n", + "19999 [myt, come, ere, soon, th, nyt, im, sooooo, bo... \n", + "\n", + "[20000 rows x 7 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from tqdm import tqdm\n", + "tqdm.pandas()\n", + "\n", + "sample_df['text_processed'] = sample_df['text'].progress_apply(lambda x: clean_up(x))\n", + "sample_df['text_processed'] = sample_df['text_processed'].progress_apply(lambda x: tokenize(x))\n", + "sample_df['text_processed'] = sample_df['text_processed'].progress_apply(lambda x: stem_and_lemmatize(x))\n", + "sample_df['text_processed'] = sample_df['text_processed'].progress_apply(lambda x: remove_stopwords(x))\n", + "\n", + "sample_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating Bag of Words\n", + "\n", + "The purpose of this step is to create a [bag of words](https://en.wikipedia.org/wiki/Bag-of-words_model) from the processed data. The bag of words contains all the unique words in your whole text body (a.k.a. *corpus*) with the number of occurrence of each word. It will allow you to understand which words are the most important features across the whole corpus.\n", + "\n", + "Also, you can imagine you will have a massive set of words. The less important words (i.e. those of very low number of occurrence) do not contribute much to the sentiment. Therefore, you only need to use the most important words to build your feature set in the next step. In our case, we will use the top 5,000 words with the highest frequency to build the features.\n", + "\n", + "In the cell below, combine all the words in `text_processed` and calculate the frequency distribution of all words. A convenient library to calculate the term frequency distribution is NLTK's `FreqDist` class ([documentation](https://www.nltk.org/api/nltk.html#module-nltk.probability)). Then select the top 5,000 words from the frequency distribution." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('go', 1743),\n", + " ('get', 1429),\n", + " ('day', 1371),\n", + " ('wa', 1261),\n", + " ('thi', 1198),\n", + " ('good', 1115),\n", + " ('work', 1091),\n", + " ('love', 1029),\n", + " ('like', 1003),\n", + " ('quot', 938),\n", + " ('got', 934),\n", + " ('today', 874),\n", + " ('u', 865),\n", + " ('time', 854),\n", + " ('want', 732),\n", + " ('lol', 730),\n", + " ('one', 717),\n", + " ('back', 715),\n", + " ('miss', 710),\n", + " ('thank', 708),\n", + " ('know', 693),\n", + " ('see', 663),\n", + " ('feel', 636),\n", + " ('amp', 617),\n", + " ('think', 614),\n", + " ('im', 608),\n", + " ('realli', 605),\n", + " ('night', 590),\n", + " ('watch', 577),\n", + " ('still', 557),\n", + " ('make', 544),\n", + " ('new', 535),\n", + " ('na', 533),\n", + " ('oh', 512),\n", + " ('need', 512),\n", + " ('well', 506),\n", + " ('look', 506),\n", + " ('home', 499),\n", + " ('come', 497),\n", + " ('last', 492),\n", + " ('hope', 491),\n", + " ('ha', 475),\n", + " ('much', 468),\n", + " ('twitter', 455),\n", + " ('morn', 452),\n", + " ('sleep', 432),\n", + " ('great', 427),\n", + " ('tomorrow', 404),\n", + " ('wish', 404),\n", + " ('wait', 403),\n", + " ('fun', 383),\n", + " ('sad', 382),\n", + " ('veri', 376),\n", + " ('follow', 374),\n", + " ('sorri', 372),\n", + " ('tri', 362),\n", + " ('onli', 359),\n", + " ('haha', 357),\n", + " ('week', 351),\n", + " ('right', 343),\n", + " ('whi', 336),\n", + " ('friend', 336),\n", + " ('happi', 327),\n", + " ('bad', 326),\n", + " ('way', 325),\n", + " ('say', 324),\n", + " ('would', 323),\n", + " ('tonight', 321),\n", + " ('gon', 316),\n", + " ('thing', 315),\n", + " ('nice', 307),\n", + " ('take', 298),\n", + " ('yeah', 296),\n", + " ('hi', 294),\n", + " ('hate', 291),\n", + " ('tweet', 282),\n", + " ('even', 281),\n", + " ('could', 281),\n", + " ('better', 273),\n", + " ('bed', 272),\n", + " ('though', 268),\n", + " ('hour', 260),\n", + " ('peopl', 257),\n", + " ('school', 256),\n", + " ('show', 255),\n", + " ('awesom', 254),\n", + " ('x', 252),\n", + " ('tire', 250),\n", + " ('start', 248),\n", + " ('weekend', 246),\n", + " ('guy', 243),\n", + " ('use', 237),\n", + " ('hey', 235),\n", + " ('rain', 235),\n", + " ('let', 234),\n", + " ('sick', 233),\n", + " ('play', 231),\n", + " ('life', 230),\n", + " ('never', 228),\n", + " ('first', 226),\n", + " ('final', 225),\n", + " ('year', 224),\n", + " ('bore', 222),\n", + " ('dont', 220),\n", + " ('p', 220),\n", + " ('lt', 217),\n", + " ('movi', 217),\n", + " ('best', 213),\n", + " ('ye', 213),\n", + " ('girl', 212),\n", + " ('everyon', 211),\n", + " ('head', 210),\n", + " ('ok', 208),\n", + " ('wan', 208),\n", + " ('next', 206),\n", + " ('long', 204),\n", + " ('littl', 202),\n", + " ('suck', 201),\n", + " ('find', 197),\n", + " ('ani', 195),\n", + " ('help', 193),\n", + " ('pleas', 190),\n", + " ('alway', 190),\n", + " ('lot', 189),\n", + " ('soon', 188),\n", + " ('made', 188),\n", + " ('alreadi', 184),\n", + " ('eat', 183),\n", + " ('call', 181),\n", + " ('hurt', 180),\n", + " ('went', 180),\n", + " ('phone', 179),\n", + " ('n', 178),\n", + " ('cant', 177),\n", + " ('yet', 176),\n", + " ('done', 174),\n", + " ('man', 172),\n", + " ('readi', 172),\n", + " ('live', 171),\n", + " ('thought', 171),\n", + " ('sure', 171),\n", + " ('befor', 170),\n", + " ('damn', 170),\n", + " ('keep', 169),\n", + " ('cool', 169),\n", + " ('b', 167),\n", + " ('enjoy', 166),\n", + " ('listen', 163),\n", + " ('leav', 163),\n", + " ('ever', 162),\n", + " ('talk', 162),\n", + " ('song', 160),\n", + " ('someth', 158),\n", + " ('earli', 157),\n", + " ('ur', 157),\n", + " ('mayb', 156),\n", + " ('wow', 155),\n", + " ('becaus', 155),\n", + " ('read', 154),\n", + " ('tell', 153),\n", + " ('anoth', 153),\n", + " ('omg', 151),\n", + " ('yay', 151),\n", + " ('excit', 150),\n", + " ('amaz', 150),\n", + " ('away', 150),\n", + " ('left', 150),\n", + " ('pretti', 150),\n", + " ('doe', 149),\n", + " ('stuff', 149),\n", + " ('th', 149),\n", + " ('sound', 149),\n", + " ('later', 148),\n", + " ('parti', 148),\n", + " ('babi', 147),\n", + " ('hot', 147),\n", + " ('w', 145),\n", + " ('old', 145),\n", + " ('check', 143),\n", + " ('game', 142),\n", + " ('hous', 142),\n", + " ('someon', 141),\n", + " ('noth', 140),\n", + " ('hear', 140),\n", + " ('end', 140),\n", + " ('give', 139),\n", + " ('pic', 138),\n", + " ('fuck', 138),\n", + " ('guess', 137),\n", + " ('bit', 137),\n", + " ('summer', 136),\n", + " ('late', 136),\n", + " ('big', 136),\n", + " ('lost', 134),\n", + " ('saw', 132),\n", + " ('mean', 131),\n", + " ('mom', 130),\n", + " ('also', 129),\n", + " ('finish', 129),\n", + " ('stay', 129),\n", + " ('post', 129),\n", + " ('sun', 128),\n", + " ('monday', 127),\n", + " ('beauti', 127),\n", + " ('birthday', 126),\n", + " ('meet', 125),\n", + " ('weather', 125),\n", + " ('world', 123),\n", + " ('god', 123),\n", + " ('video', 123),\n", + " ('ta', 123),\n", + " ('iphon', 122),\n", + " ('put', 122),\n", + " ('ya', 121),\n", + " ('actual', 121),\n", + " ('r', 121),\n", + " ('cri', 120),\n", + " ('happen', 119),\n", + " ('job', 119),\n", + " ('wonder', 119),\n", + " ('found', 118),\n", + " ('updat', 118),\n", + " ('hair', 117),\n", + " ('luck', 117),\n", + " ('run', 117),\n", + " ('exam', 117),\n", + " ('two', 116),\n", + " ('hard', 115),\n", + " ('far', 115),\n", + " ('ugh', 113),\n", + " ('friday', 113),\n", + " ('stop', 112),\n", + " ('sinc', 112),\n", + " ('lunch', 112),\n", + " ('kid', 111),\n", + " ('okay', 111),\n", + " ('said', 111),\n", + " ('yesterday', 110),\n", + " ('com', 110),\n", + " ('woke', 109),\n", + " ('mani', 109),\n", + " ('cold', 109),\n", + " ('might', 108),\n", + " ('car', 108),\n", + " ('must', 107),\n", + " ('around', 107),\n", + " ('sunday', 107),\n", + " ('plan', 107),\n", + " ('glad', 107),\n", + " ('busi', 106),\n", + " ('everyth', 106),\n", + " ('food', 105),\n", + " ('least', 105),\n", + " ('welcom', 105),\n", + " ('caus', 105),\n", + " ('book', 105),\n", + " ('dream', 104),\n", + " ('month', 104),\n", + " ('anyon', 104),\n", + " ('cute', 104),\n", + " ('pictur', 104),\n", + " ('everi', 103),\n", + " ('shit', 103),\n", + " ('e', 103),\n", + " ('tho', 102),\n", + " ('poor', 102),\n", + " ('seem', 102),\n", + " ('gt', 102),\n", + " ('total', 102),\n", + " ('buy', 101),\n", + " ('funni', 101),\n", + " ('move', 101),\n", + " ('anyth', 100),\n", + " ('may', 100),\n", + " ('gone', 100),\n", + " ('chang', 99),\n", + " ('hahaha', 99),\n", + " ('probabl', 97),\n", + " ('dinner', 96),\n", + " ('place', 96),\n", + " ('drink', 95),\n", + " ('c', 95),\n", + " ('boy', 95),\n", + " ('forward', 95),\n", + " ('shop', 95),\n", + " ('almost', 94),\n", + " ('minut', 93),\n", + " ('music', 93),\n", + " ('drive', 93),\n", + " ('wrong', 92),\n", + " ('dad', 92),\n", + " ('ask', 91),\n", + " ('fan', 91),\n", + " ('g', 91),\n", + " ('without', 91),\n", + " ('famili', 90),\n", + " ('sit', 90),\n", + " ('till', 90),\n", + " ('real', 90),\n", + " ('mine', 89),\n", + " ('win', 89),\n", + " ('walk', 88),\n", + " ('aww', 88),\n", + " ('set', 88),\n", + " ('brother', 87),\n", + " ('headach', 87),\n", + " ('break', 85),\n", + " ('outsid', 85),\n", + " ('didnt', 85),\n", + " ('seen', 85),\n", + " ('word', 85),\n", + " ('xx', 85),\n", + " ('ñ', 85),\n", + " ('onc', 84),\n", + " ('idea', 84),\n", + " ('free', 84),\n", + " ('class', 84),\n", + " ('write', 84),\n", + " ('enough', 84),\n", + " ('train', 84),\n", + " ('rock', 83),\n", + " ('blog', 82),\n", + " ('person', 82),\n", + " ('die', 81),\n", + " ('room', 80),\n", + " ('open', 80),\n", + " ('believ', 80),\n", + " ('money', 80),\n", + " ('stupid', 79),\n", + " ('clean', 79),\n", + " ('goodnight', 79),\n", + " ('crazi', 79),\n", + " ('wont', 78),\n", + " ('wake', 78),\n", + " ('danc', 78),\n", + " ('text', 78),\n", + " ('tv', 77),\n", + " ('half', 77),\n", + " ('turn', 77),\n", + " ('send', 77),\n", + " ('fail', 77),\n", + " ('eye', 76),\n", + " ('hit', 76),\n", + " ('sweet', 76),\n", + " ('rememb', 76),\n", + " ('june', 76),\n", + " ('l', 76),\n", + " ('ill', 76),\n", + " ('alon', 75),\n", + " ('aw', 75),\n", + " ('awww', 75),\n", + " ('k', 75),\n", + " ('studi', 75),\n", + " ('took', 74),\n", + " ('heart', 74),\n", + " ('kill', 73),\n", + " ('internet', 73),\n", + " ('face', 73),\n", + " ('care', 73),\n", + " ('hello', 72),\n", + " ('whole', 72),\n", + " ('mother', 72),\n", + " ('anymor', 72),\n", + " ('abl', 72),\n", + " ('full', 71),\n", + " ('saturday', 71),\n", + " ('stori', 71),\n", + " ('pain', 71),\n", + " ('anyway', 70),\n", + " ('offic', 70),\n", + " ('true', 70),\n", + " ('came', 70),\n", + " ('either', 70),\n", + " ('problem', 70),\n", + " ('serious', 69),\n", + " ('sooo', 69),\n", + " ('ride', 69),\n", + " ('star', 69),\n", + " ('soo', 69),\n", + " ('worri', 68),\n", + " ('repli', 68),\n", + " ('coffe', 68),\n", + " ('v', 68),\n", + " ('kind', 68),\n", + " ('link', 67),\n", + " ('name', 67),\n", + " ('hell', 67),\n", + " ('dog', 67),\n", + " ('ð', 67),\n", + " ('beach', 66),\n", + " ('news', 66),\n", + " ('interest', 65),\n", + " ('site', 64),\n", + " ('add', 64),\n", + " ('hang', 64),\n", + " ('togeth', 64),\n", + " ('smile', 64),\n", + " ('pay', 64),\n", + " ('photo', 64),\n", + " ('la', 64),\n", + " ('kinda', 63),\n", + " ('comput', 63),\n", + " ('hand', 63),\n", + " ('super', 63),\n", + " ('close', 63),\n", + " ('â', 62),\n", + " ('bring', 62),\n", + " ('trip', 62),\n", + " ('f', 62),\n", + " ('fix', 62),\n", + " ('onlin', 62),\n", + " ('part', 62),\n", + " ('quit', 62),\n", + " ('vote', 61),\n", + " ('told', 61),\n", + " ('stuck', 61),\n", + " ('learn', 61),\n", + " ('pm', 60),\n", + " ('shower', 60),\n", + " ('pick', 60),\n", + " ('share', 60),\n", + " ('cat', 60),\n", + " ('favorit', 60),\n", + " ('min', 60),\n", + " ('hehe', 60),\n", + " ('www', 60),\n", + " ('bought', 60),\n", + " ('email', 60),\n", + " ('dead', 60),\n", + " ('awak', 60),\n", + " ('mind', 59),\n", + " ('visit', 59),\n", + " ('ticket', 59),\n", + " ('mileycyru', 59),\n", + " ('messag', 59),\n", + " ('high', 59),\n", + " ('cours', 59),\n", + " ('btw', 59),\n", + " ('cream', 59),\n", + " ('date', 59),\n", + " ('forget', 58),\n", + " ('wear', 58),\n", + " ('pack', 58),\n", + " ('test', 57),\n", + " ('london', 57),\n", + " ('wed', 57),\n", + " ('ah', 57),\n", + " ('figur', 57),\n", + " ('chocol', 57),\n", + " ('boo', 56),\n", + " ('dude', 56),\n", + " ('sunni', 56),\n", + " ('els', 55),\n", + " ('rest', 55),\n", + " ('bout', 55),\n", + " ('lucki', 55),\n", + " ('breakfast', 55),\n", + " ('facebook', 55),\n", + " ('asleep', 55),\n", + " ('page', 55),\n", + " ('hug', 55),\n", + " ('sometim', 54),\n", + " ('homework', 54),\n", + " ('sigh', 54),\n", + " ('red', 53),\n", + " ('bye', 53),\n", + " ('broke', 53),\n", + " ('lil', 53),\n", + " ('yea', 53),\n", + " ('afternoon', 53),\n", + " ('til', 53),\n", + " ('cut', 53),\n", + " ('le', 53),\n", + " ('foot', 53),\n", + " ('coupl', 53),\n", + " ('st', 53),\n", + " ('unfortun', 53),\n", + " ('ladi', 53),\n", + " ('forgot', 53),\n", + " ('spend', 53),\n", + " ('fall', 53),\n", + " ('scare', 52),\n", + " ('j', 52),\n", + " ('ago', 52),\n", + " ('citi', 52),\n", + " ('ice', 52),\n", + " ('goin', 51),\n", + " ('park', 51),\n", + " ('list', 51),\n", + " ('mad', 51),\n", + " ('nap', 51),\n", + " ('youtub', 51),\n", + " ('cuz', 51),\n", + " ('line', 51),\n", + " ('heard', 50),\n", + " ('congrat', 50),\n", + " ('laptop', 50),\n", + " ('ddlovato', 50),\n", + " ('suppos', 50),\n", + " ('team', 50),\n", + " ('short', 50),\n", + " ('appar', 50),\n", + " ('season', 49),\n", + " ('nite', 49),\n", + " ('ì', 49),\n", + " ('concert', 48),\n", + " ('via', 48),\n", + " ('lose', 48),\n", + " ('side', 48),\n", + " ('water', 48),\n", + " ('sign', 48),\n", + " ('hmm', 47),\n", + " ('worst', 47),\n", + " ('plu', 47),\n", + " ('weird', 47),\n", + " ('mum', 47),\n", + " ('tea', 47),\n", + " ('graduat', 47),\n", + " ('gym', 47),\n", + " ('celebr', 47),\n", + " ('catch', 46),\n", + " ('dear', 46),\n", + " ('town', 46),\n", + " ('h', 46),\n", + " ('lmao', 46),\n", + " ('pool', 46),\n", + " ('crap', 46),\n", + " ('past', 46),\n", + " ('depress', 46),\n", + " ('annoy', 46),\n", + " ('father', 46),\n", + " ('sister', 46),\n", + " ('jealou', 46),\n", + " ('point', 45),\n", + " ('bday', 45),\n", + " ('miley', 45),\n", + " ('offici', 45),\n", + " ('mr', 45),\n", + " ('tour', 45),\n", + " ('sore', 45),\n", + " ('definit', 45),\n", + " ('reason', 45),\n", + " ('ipod', 44),\n", + " ('tommcfli', 44),\n", + " ('hill', 44),\n", + " ('shot', 44),\n", + " ('followfriday', 44),\n", + " ('nd', 44),\n", + " ('fb', 44),\n", + " ('join', 44),\n", + " ('upset', 44),\n", + " ('instead', 44),\n", + " ('dress', 44),\n", + " ('possibl', 44),\n", + " ('sunshin', 43),\n", + " ('fine', 43),\n", + " ('age', 43),\n", + " ('moment', 43),\n", + " ('award', 43),\n", + " ('chanc', 43),\n", + " ('decid', 43),\n", + " ('perfect', 43),\n", + " ('record', 43),\n", + " ('wors', 43),\n", + " ('fli', 43),\n", + " ('relax', 43),\n", + " ('card', 42),\n", + " ('cancel', 42),\n", + " ('episod', 42),\n", + " ('complet', 42),\n", + " ('remind', 42),\n", + " ('download', 42),\n", + " ('ppl', 42),\n", + " ('parent', 42),\n", + " ('cook', 42),\n", + " ('top', 41),\n", + " ('bless', 41),\n", + " ('son', 41),\n", + " ('shirt', 41),\n", + " ('app', 41),\n", + " ('air', 41),\n", + " ('fight', 41),\n", + " ('tuesday', 41),\n", + " ('yep', 41),\n", + " ('soooo', 41),\n", + " ('kick', 41),\n", + " ('usual', 41),\n", + " ('invit', 40),\n", + " ('co', 40),\n", + " ('mood', 40),\n", + " ('ë', 40),\n", + " ('websit', 40),\n", + " ('cake', 40),\n", + " ('window', 40),\n", + " ('lay', 40),\n", + " ('jona', 40),\n", + " ('ive', 40),\n", + " ('fast', 40),\n", + " ('differ', 40),\n", + " ('load', 40),\n", + " ('order', 40),\n", + " ('myspac', 40),\n", + " ('freak', 40),\n", + " ('bro', 39),\n", + " ('agre', 39),\n", + " ('save', 39),\n", + " ('camp', 39),\n", + " ('drop', 39),\n", + " ('uk', 39),\n", + " ('rather', 39),\n", + " ('xxx', 39),\n", + " ('comment', 39),\n", + " ('ate', 39),\n", + " ('cheer', 39),\n", + " ('nope', 39),\n", + " ('piss', 38),\n", + " ('garden', 38),\n", + " ('album', 38),\n", + " ('appreci', 38),\n", + " ('camera', 38),\n", + " ('second', 38),\n", + " ('sim', 38),\n", + " ('warm', 38),\n", + " ('arriv', 38),\n", + " ('realiz', 38),\n", + " ('power', 38),\n", + " ('babe', 38),\n", + " ('support', 38),\n", + " ('ad', 38),\n", + " ('laugh', 38),\n", + " ('revis', 37),\n", + " ('lame', 37),\n", + " ('flight', 37),\n", + " ('broken', 37),\n", + " ('hungri', 37),\n", + " ('block', 37),\n", + " ('shame', 37),\n", + " ('holiday', 37),\n", + " ('account', 37),\n", + " ('fell', 37),\n", + " ('paper', 37),\n", + " ('sing', 37),\n", + " ('answer', 36),\n", + " ('hold', 36),\n", + " ('pa', 36),\n", + " ('light', 36),\n", + " ('sleepi', 36),\n", + " ('slow', 36),\n", + " ('design', 36),\n", + " ('taken', 36),\n", + " ('mate', 36),\n", + " ('da', 36),\n", + " ('question', 36),\n", + " ('xd', 36),\n", + " ('bet', 36),\n", + " ('except', 36),\n", + " ('chat', 36),\n", + " ('three', 35),\n", + " ('colleg', 35),\n", + " ('band', 35),\n", + " ('voic', 35),\n", + " ('sent', 35),\n", + " ('juli', 35),\n", + " ('beat', 35),\n", + " ('blue', 35),\n", + " ('longer', 35),\n", + " ('wtf', 35),\n", + " ('thx', 35),\n", + " ('dure', 35),\n", + " ('bum', 35),\n", + " ('race', 34),\n", + " ('david', 34),\n", + " ('mac', 34),\n", + " ('kate', 34),\n", + " ('slept', 34),\n", + " ('road', 34),\n", + " ('bu', 34),\n", + " ('twilight', 34),\n", + " ('green', 34),\n", + " ('hr', 34),\n", + " ('ahh', 34),\n", + " ('hmmm', 34),\n", + " ('terribl', 34),\n", + " ('throat', 34),\n", + " ('wednesday', 34),\n", + " ('manag', 34),\n", + " ('wit', 34),\n", + " ('store', 34),\n", + " ('woman', 34),\n", + " ('sat', 34),\n", + " ('tear', 34),\n", + " ('white', 33),\n", + " ('huge', 33),\n", + " ('luv', 33),\n", + " ('doesnt', 33),\n", + " ('near', 33),\n", + " ('upload', 33),\n", + " ('easi', 33),\n", + " ('yr', 33),\n", + " ('church', 33),\n", + " ('everybodi', 33),\n", + " ('connect', 33),\n", + " ('disappoint', 33),\n", + " ('english', 33),\n", + " ('math', 33),\n", + " ('group', 33),\n", + " ('bodi', 33),\n", + " ('havent', 33),\n", + " ('bike', 32),\n", + " ('met', 32),\n", + " ('troubl', 32),\n", + " ('tom', 32),\n", + " ('forev', 32),\n", + " ('crash', 32),\n", + " ('earlier', 32),\n", + " ('si', 32),\n", + " ('case', 32),\n", + " ('angel', 32),\n", + " ('absolut', 32),\n", + " ('shoe', 32),\n", + " ('mail', 32),\n", + " ('expect', 32),\n", + " ('bloodi', 32),\n", + " ('project', 32),\n", + " ('stand', 32),\n", + " ('boyfriend', 32),\n", + " ('tummi', 32),\n", + " ('vacat', 32),\n", + " ('ruin', 31),\n", + " ('swim', 31),\n", + " ('film', 31),\n", + " ('product', 31),\n", + " ('issu', 31),\n", + " ('especi', 31),\n", + " ('roll', 31),\n", + " ('pull', 31),\n", + " ('stomach', 31),\n", + " ('rip', 31),\n", + " ('aint', 31),\n", + " ('black', 31),\n", + " ('appl', 31),\n", + " ('front', 31),\n", + " ('mile', 30),\n", + " ('flu', 30),\n", + " ('cousin', 30),\n", + " ('servic', 30),\n", + " ('knew', 30),\n", + " ('lazi', 30),\n", + " ('count', 30),\n", + " ('jonasbroth', 30),\n", + " ('etc', 30),\n", + " ('touch', 30),\n", + " ('ahhh', 30),\n", + " ('tan', 30),\n", + " ('type', 30),\n", + " ('thursday', 30),\n", + " ('mess', 30),\n", + " ('box', 30),\n", + " ('ach', 30),\n", + " ('fair', 30),\n", + " ('radio', 30),\n", + " ('server', 30),\n", + " ('dm', 30),\n", + " ('mmm', 30),\n", + " ('club', 30),\n", + " ('whatev', 29),\n", + " ('idk', 29),\n", + " ('number', 29),\n", + " ('raini', 29),\n", + " ('blackberri', 29),\n", + " ('chill', 29),\n", + " ('doctor', 29),\n", + " ('practic', 29),\n", + " ('lie', 29),\n", + " ('dark', 29),\n", + " ('gave', 29),\n", + " ('mtv', 29),\n", + " ('bar', 29),\n", + " ('wash', 29),\n", + " ('understand', 29),\n", + " ('horribl', 29),\n", + " ('quiet', 29),\n", + " ('due', 29),\n", + " ('joke', 29),\n", + " ('histori', 29),\n", + " ('spent', 29),\n", + " ('beer', 29),\n", + " ('becom', 29),\n", + " ('although', 29),\n", + " ('talent', 28),\n", + " ('shall', 28),\n", + " ('search', 28),\n", + " ('heat', 28),\n", + " ('memori', 28),\n", + " ('bitch', 28),\n", + " ('mommi', 28),\n", + " ('q', 28),\n", + " ('burn', 28),\n", + " ('safe', 28),\n", + " ('em', 28),\n", + " ('death', 28),\n", + " ('xoxo', 28),\n", + " ('state', 28),\n", + " ('fml', 28),\n", + " ('uh', 28),\n", + " ('blood', 28),\n", + " ('bbq', 28),\n", + " ('allow', 28),\n", + " ('pass', 28),\n", + " ('vip', 28),\n", + " ('note', 28),\n", + " ('insid', 28),\n", + " ('sadli', 28),\n", + " ('ï', 28),\n", + " ('scari', 28),\n", + " ('interview', 28),\n", + " ('pc', 28),\n", + " ('bf', 28),\n", + " ('googl', 28),\n", + " ('speak', 28),\n", + " ('felt', 27),\n", + " ('apart', 27),\n", + " ('tast', 27),\n", + " ('mix', 27),\n", + " ('ear', 27),\n", + " ('peep', 27),\n", + " ('hun', 27),\n", + " ('compani', 27),\n", + " ('shoot', 27),\n", + " ('profil', 27),\n", + " ('prob', 27),\n", + " ('kiss', 27),\n", + " ('yo', 27),\n", + " ('notic', 27),\n", + " ('rd', 27),\n", + " ('moon', 27),\n", + " ('emili', 27),\n", + " ('exhaust', 27),\n", + " ('sky', 27),\n", + " ('cloth', 27),\n", + " ('pray', 27),\n", + " ('french', 27),\n", + " ('fit', 27),\n", + " ('wat', 27),\n", + " ('round', 27),\n", + " ('spot', 27),\n", + " ('crack', 27),\n", + " ('lone', 27),\n", + " ('plane', 26),\n", + " ('joe', 26),\n", + " ('dvd', 26),\n", + " ('goodby', 26),\n", + " ('glass', 26),\n", + " ('nose', 26),\n", + " ('upgrad', 26),\n", + " ('nick', 26),\n", + " ('paint', 26),\n", + " ('deal', 26),\n", + " ('wast', 26),\n", + " ('web', 26),\n", + " ('experi', 26),\n", + " ('shine', 26),\n", + " ('finger', 26),\n", + " ('worth', 26),\n", + " ('cover', 26),\n", + " ('leg', 26),\n", + " ('woo', 26),\n", + " ('san', 26),\n", + " ('bag', 26),\n", + " ('chillin', 26),\n", + " ('random', 26),\n", + " ('yummi', 26),\n", + " ('child', 26),\n", + " ('instal', 26),\n", + " ('stress', 26),\n", + " ('street', 26),\n", + " ('john', 26),\n", + " ('hubbi', 26),\n", + " ('channel', 26),\n", + " ('key', 25),\n", + " ('return', 25),\n", + " ('hospit', 25),\n", + " ('mcfli', 25),\n", + " ('quick', 25),\n", + " ('peac', 25),\n", + " ('island', 25),\n", + " ('major', 25),\n", + " ('fire', 25),\n", + " ('magic', 25),\n", + " ('stick', 25),\n", + " ('midnight', 25),\n", + " ('current', 25),\n", + " ('def', 25),\n", + " ('meant', 25),\n", + " ('daddi', 25),\n", + " ('brain', 25),\n", + " ('caught', 25),\n", + " ('request', 25),\n", + " ('fri', 25),\n", + " ('toni', 25),\n", + " ('ny', 25),\n", + " ('special', 25),\n", + " ('screen', 25),\n", + " ('pizza', 25),\n", + " ('hilari', 25),\n", + " ('singl', 25),\n", + " ('exactli', 25),\n", + " ('somebodi', 25),\n", + " ('bb', 25),\n", + " ('hangov', 25),\n", + " ('step', 25),\n", + " ('chicken', 25),\n", + " ('gosh', 25),\n", + " ('pink', 25),\n", + " ('report', 24),\n", + " ('doin', 24),\n", + " ('cup', 24),\n", + " ('event', 24),\n", + " ('track', 24),\n", + " ('confus', 24),\n", + " ('low', 24),\n", + " ('sort', 24),\n", + " ('travel', 24),\n", + " ('anywher', 24),\n", + " ('view', 24),\n", + " ('ff', 24),\n", + " ('mark', 24),\n", + " ('along', 24),\n", + " ('cd', 24),\n", + " ('seriou', 24),\n", + " ('isnt', 24),\n", + " ('copi', 24),\n", + " ('sum', 24),\n", + " ('bowl', 24),\n", + " ('plz', 24),\n", + " ('ooh', 24),\n", + " ('yup', 24),\n", + " ('promis', 24),\n", + " ('½', 24),\n", + " ('guitar', 24),\n", + " ('z', 24),\n", + " ('america', 24),\n", + " ('anim', 23),\n", + " ('joy', 23),\n", + " ('button', 23),\n", + " ('storm', 23),\n", + " ('four', 23),\n", + " ('board', 23),\n", + " ('suggest', 23),\n", + " ('argh', 23),\n", + " ('ohh', 23),\n", + " ('bummer', 23),\n", + " ('eh', 23),\n", + " ('perform', 23),\n", + " ('deserv', 23),\n", + " ('daughter', 23),\n", + " ('hannah', 23),\n", + " ('somehow', 23),\n", + " ('cooki', 23),\n", + " ('yum', 23),\n", + " ('art', 23),\n", + " ('ju', 23),\n", + " ('surpris', 23),\n", + " ('direct', 23),\n", + " ('version', 23),\n", + " ('gettin', 23),\n", + " ('ouch', 23),\n", + " ('unless', 23),\n", + " ('arm', 23),\n", + " ('proud', 23),\n", + " ('futur', 23),\n", + " ('chees', 23),\n", + " ('teeth', 22),\n", + " ('buddi', 22),\n", + " ('cough', 22),\n", + " ('appli', 22),\n", + " ('laundri', 22),\n", + " ('result', 22),\n", + " ('epic', 22),\n", + " ('vega', 22),\n", + " ('nyc', 22),\n", + " ('delet', 22),\n", + " ('ador', 22),\n", + " ('fish', 22),\n", + " ('ga', 22),\n", + " ('holi', 22),\n", + " ('tweep', 22),\n", + " ('info', 22),\n", + " ('cross', 22),\n", + " ('grade', 22),\n", + " ('extra', 22),\n", + " ('pop', 22),\n", + " ('posit', 22),\n", + " ('hahah', 22),\n", + " ('nervou', 22),\n", + " ('nah', 22),\n", + " ('normal', 22),\n", + " ('jack', 22),\n", + " ('alex', 22),\n", + " ('airport', 22),\n", + " ...]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_words = [word for row in sample_df['text_processed'] for word in row]\n", + "\n", + "freq_dist = FreqDist(total_words)\n", + "\n", + "top_words = freq_dist.most_common(5000)\n", + "top_words" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building Features\n", + "\n", + "Now let's build the features. Using the top 5,000 words, create a 2-dimensional matrix to record whether each of those words is contained in each document (tweet). Then you also have an output column to indicate whether the sentiment in each tweet is positive. For example, assuming your bag of words has 5 items (`['one', 'two', 'three', 'four', 'five']`) out of 4 documents (`['A', 'B', 'C', 'D']`), your feature set is essentially:\n", + "\n", + "| Doc | one | two | three | four | five | is_positive |\n", + "|---|---|---|---|---|---|---|\n", + "| A | True | False | False | True | False | True |\n", + "| B | False | False | False | True | True | False |\n", + "| C | False | True | False | False | False | True |\n", + "| D | True | False | False | False | True | False|\n", + "\n", + "However, because the `nltk.NaiveBayesClassifier.train` class we will use in the next step does not work with Pandas dataframe, the structure of your feature set should be converted to the Python list looking like below:\n", + "\n", + "```python\n", + "[\n", + "\t({\n", + "\t\t'one': True,\n", + "\t\t'two': False,\n", + "\t\t'three': False,\n", + "\t\t'four': True,\n", + "\t\t'five': False\n", + "\t}, True),\n", + "\t({\n", + "\t\t'one': False,\n", + "\t\t'two': False,\n", + "\t\t'three': False,\n", + "\t\t'four': True,\n", + "\t\t'five': True\n", + "\t}, False),\n", + "\t({\n", + "\t\t'one': False,\n", + "\t\t'two': True,\n", + "\t\t'three': False,\n", + "\t\t'four': False,\n", + "\t\t'five': False\n", + "\t}, True),\n", + "\t({\n", + "\t\t'one': True,\n", + "\t\t'two': False,\n", + "\t\t'three': False,\n", + "\t\t'four': False,\n", + "\t\t'five': True\n", + "\t}, False)\n", + "]\n", + "```\n", + "\n", + "To help you in this step, watch the [following video](https://www.youtube.com/watch?v=-vVskDsHcVc) to learn how to build the feature set with Python and NLTK. The source code in this video can be found [here](https://pythonprogramming.net/words-as-features-nltk-tutorial/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![Building Features](building-features.jpg)](https://www.youtube.com/watch?v=-vVskDsHcVc)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "bag_of_words = [word for word, _ in top_words]\n", + "num_documents = len(sample_df['text_processed'])\n", + "num_words = len(bag_of_words)\n", + "features = np.zeros((num_documents, num_words), dtype=bool)\n", + "\n", + "for i, words_list in enumerate(sample_df['text_processed']):\n", + " for word in words_list:\n", + " if word in bag_of_words:\n", + " word_index = bag_of_words.index(word)\n", + " features[i, word_index] = True\n", + "\n", + "feature_data = {word: features[:, i] for i, word in enumerate(bag_of_words)}\n", + "data = pd.DataFrame(feature_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'go': array([False, False, False, ..., False, False, False]),\n", + " 'get': array([False, False, False, ..., False, False, False]),\n", + " 'day': array([ True, False, False, ..., False, False, False]),\n", + " 'wa': array([False, False, False, ..., False, False, False]),\n", + " 'thi': array([False, False, False, ..., False, True, False]),\n", + " 'good': array([False, False, False, ..., False, True, False]),\n", + " 'work': array([False, False, False, ..., False, False, False]),\n", + " 'love': array([False, False, False, ..., False, False, False]),\n", + " 'like': array([False, False, False, ..., False, False, False]),\n", + " 'quot': array([False, False, False, ..., False, False, False]),\n", + " 'got': array([False, False, False, ..., False, False, False]),\n", + " 'today': array([False, False, False, ..., False, False, False]),\n", + " 'u': array([ True, False, False, ..., False, False, False]),\n", + " 'time': array([False, False, False, ..., False, False, False]),\n", + " 'want': array([False, False, False, ..., False, False, False]),\n", + " 'lol': array([False, False, False, ..., False, False, False]),\n", + " 'one': array([False, False, False, ..., False, False, False]),\n", + " 'back': array([False, False, False, ..., False, False, False]),\n", + " 'miss': array([False, False, False, ..., False, False, False]),\n", + " 'thank': array([False, False, False, ..., False, False, False]),\n", + " 'know': array([False, False, False, ..., False, False, False]),\n", + " 'see': array([False, False, False, ..., False, False, False]),\n", + " 'feel': array([False, False, False, ..., True, False, False]),\n", + " 'amp': array([False, False, False, ..., False, False, False]),\n", + " 'think': array([False, False, False, ..., True, False, False]),\n", + " 'im': array([False, True, False, ..., False, False, True]),\n", + " 'realli': array([False, False, False, ..., False, False, False]),\n", + " 'night': array([False, False, False, ..., False, False, False]),\n", + " 'watch': array([False, True, False, ..., False, True, True]),\n", + " 'still': array([False, False, False, ..., False, False, False]),\n", + " 'make': array([False, False, False, ..., False, False, False]),\n", + " 'new': array([False, False, False, ..., False, False, False]),\n", + " 'na': array([False, False, False, ..., False, False, False]),\n", + " 'oh': array([False, False, False, ..., False, False, False]),\n", + " 'need': array([False, False, False, ..., False, False, False]),\n", + " 'well': array([False, False, False, ..., False, False, False]),\n", + " 'look': array([False, False, False, ..., False, False, False]),\n", + " 'home': array([False, False, False, ..., False, False, False]),\n", + " 'come': array([False, False, False, ..., False, False, True]),\n", + " 'last': array([False, False, False, ..., False, False, False]),\n", + " 'hope': array([False, False, False, ..., False, False, False]),\n", + " 'ha': array([False, False, False, ..., False, False, False]),\n", + " 'much': array([False, False, False, ..., False, False, False]),\n", + " 'twitter': array([False, False, False, ..., False, False, False]),\n", + " 'morn': array([False, False, False, ..., False, False, False]),\n", + " 'sleep': array([False, False, False, ..., False, False, False]),\n", + " 'great': array([False, False, False, ..., False, False, False]),\n", + " 'tomorrow': array([False, False, False, ..., False, False, False]),\n", + " 'wish': array([False, False, False, ..., False, False, False]),\n", + " 'wait': array([False, False, False, ..., False, False, False]),\n", + " 'fun': array([False, False, False, ..., False, False, False]),\n", + " 'sad': array([False, True, False, ..., True, False, False]),\n", + " 'veri': array([False, False, True, ..., False, True, False]),\n", + " 'follow': array([False, False, False, ..., False, False, False]),\n", + " 'sorri': array([False, False, False, ..., False, False, False]),\n", + " 'tri': array([False, False, False, ..., False, False, False]),\n", + " 'onli': array([False, False, False, ..., False, False, False]),\n", + " 'haha': array([False, False, False, ..., False, False, False]),\n", + " 'week': array([False, False, False, ..., False, False, False]),\n", + " 'right': array([False, False, False, ..., True, False, False]),\n", + " 'whi': array([False, False, False, ..., False, False, False]),\n", + " 'friend': array([False, False, False, ..., False, False, False]),\n", + " 'happi': array([False, False, True, ..., False, False, False]),\n", + " 'bad': array([False, False, False, ..., False, False, False]),\n", + " 'way': array([False, False, False, ..., False, False, False]),\n", + " 'say': array([False, False, False, ..., False, False, False]),\n", + " 'would': array([False, False, False, ..., False, False, False]),\n", + " 'tonight': array([False, False, True, ..., False, False, False]),\n", + " 'gon': array([False, False, False, ..., False, False, False]),\n", + " 'thing': array([False, False, False, ..., False, False, False]),\n", + " 'nice': array([False, False, False, ..., False, False, False]),\n", + " 'take': array([False, False, False, ..., False, False, False]),\n", + " 'yeah': array([False, False, False, ..., False, False, False]),\n", + " 'hi': array([False, True, False, ..., False, False, False]),\n", + " 'hate': array([False, False, False, ..., False, False, False]),\n", + " 'tweet': array([False, False, False, ..., False, False, False]),\n", + " 'even': array([False, False, False, ..., False, False, False]),\n", + " 'could': array([False, False, False, ..., False, False, False]),\n", + " 'better': array([False, False, False, ..., False, False, False]),\n", + " 'bed': array([False, False, False, ..., False, False, True]),\n", + " 'though': array([False, False, False, ..., False, False, False]),\n", + " 'hour': array([False, False, False, ..., False, False, False]),\n", + " 'peopl': array([False, False, False, ..., False, False, False]),\n", + " 'school': array([False, False, False, ..., True, False, False]),\n", + " 'show': array([False, False, False, ..., False, False, False]),\n", + " 'awesom': array([False, False, False, ..., False, False, False]),\n", + " 'x': array([False, False, False, ..., False, False, False]),\n", + " 'tire': array([False, False, False, ..., False, False, False]),\n", + " 'start': array([False, False, False, ..., False, False, False]),\n", + " 'weekend': array([False, False, False, ..., False, False, False]),\n", + " 'guy': array([False, False, False, ..., False, False, False]),\n", + " 'use': array([False, False, False, ..., False, False, False]),\n", + " 'hey': array([False, False, False, ..., False, False, False]),\n", + " 'rain': array([False, False, False, ..., False, False, False]),\n", + " 'let': array([False, False, False, ..., False, False, False]),\n", + " 'sick': array([False, False, False, ..., False, False, False]),\n", + " 'play': array([False, False, False, ..., False, False, False]),\n", + " 'life': array([False, False, False, ..., False, False, False]),\n", + " 'never': array([False, False, False, ..., False, False, False]),\n", + " 'first': array([False, False, False, ..., False, False, False]),\n", + " 'final': array([False, False, False, ..., False, False, False]),\n", + " 'year': array([False, False, False, ..., False, True, False]),\n", + " 'bore': array([False, False, False, ..., False, False, False]),\n", + " 'dont': array([False, False, False, ..., False, False, False]),\n", + " 'p': array([False, False, False, ..., False, False, False]),\n", + " 'lt': array([False, False, False, ..., False, False, False]),\n", + " 'movi': array([False, False, False, ..., False, False, False]),\n", + " 'best': array([False, False, False, ..., False, False, False]),\n", + " 'ye': array([False, False, False, ..., False, False, False]),\n", + " 'girl': array([ True, False, False, ..., False, False, False]),\n", + " 'everyon': array([False, False, False, ..., False, False, False]),\n", + " 'head': array([False, False, False, ..., False, False, False]),\n", + " 'ok': array([False, False, False, ..., False, False, False]),\n", + " 'wan': array([False, False, False, ..., False, False, False]),\n", + " 'next': array([False, False, False, ..., False, False, False]),\n", + " 'long': array([False, False, False, ..., False, False, False]),\n", + " 'littl': array([False, False, False, ..., False, False, False]),\n", + " 'suck': array([False, False, False, ..., False, False, False]),\n", + " 'find': array([ True, False, False, ..., False, False, False]),\n", + " 'ani': array([False, False, False, ..., True, False, False]),\n", + " 'help': array([False, False, False, ..., False, False, False]),\n", + " 'pleas': array([False, False, False, ..., False, False, False]),\n", + " 'alway': array([False, False, False, ..., False, False, False]),\n", + " 'lot': array([False, False, False, ..., False, False, False]),\n", + " 'soon': array([False, False, False, ..., False, False, True]),\n", + " 'made': array([False, False, False, ..., False, False, False]),\n", + " 'alreadi': array([False, False, False, ..., False, False, False]),\n", + " 'eat': array([False, False, False, ..., False, False, False]),\n", + " 'call': array([False, False, False, ..., False, False, False]),\n", + " 'hurt': array([False, False, False, ..., False, False, False]),\n", + " 'went': array([False, False, False, ..., False, False, False]),\n", + " 'phone': array([False, False, False, ..., False, False, False]),\n", + " 'n': array([False, False, False, ..., False, False, False]),\n", + " 'cant': array([False, False, False, ..., False, False, False]),\n", + " 'yet': array([False, False, False, ..., False, False, False]),\n", + " 'done': array([False, False, False, ..., False, False, False]),\n", + " 'man': array([False, False, False, ..., False, False, False]),\n", + " 'readi': array([False, False, False, ..., False, False, False]),\n", + " 'live': array([False, False, False, ..., False, False, False]),\n", + " 'thought': array([False, False, False, ..., False, False, False]),\n", + " 'sure': array([False, False, False, ..., False, False, False]),\n", + " 'befor': array([False, False, False, ..., False, False, False]),\n", + " 'damn': array([False, False, False, ..., False, False, False]),\n", + " 'keep': array([False, False, False, ..., False, False, False]),\n", + " 'cool': array([False, False, False, ..., False, False, False]),\n", + " 'b': array([False, False, False, ..., False, False, False]),\n", + " 'enjoy': array([False, False, False, ..., False, False, False]),\n", + " 'listen': array([False, False, False, ..., False, False, False]),\n", + " 'leav': array([False, False, False, ..., False, False, False]),\n", + " 'ever': array([False, False, False, ..., False, False, False]),\n", + " 'talk': array([False, False, False, ..., False, False, False]),\n", + " 'song': array([False, False, False, ..., False, False, False]),\n", + " 'someth': array([False, False, False, ..., False, False, False]),\n", + " 'earli': array([False, False, False, ..., False, False, False]),\n", + " 'ur': array([False, False, False, ..., False, False, False]),\n", + " 'mayb': array([False, False, False, ..., False, False, False]),\n", + " 'wow': array([False, False, False, ..., False, False, False]),\n", + " 'becaus': array([False, False, False, ..., False, False, False]),\n", + " 'read': array([False, False, False, ..., False, False, False]),\n", + " 'tell': array([False, False, False, ..., False, False, False]),\n", + " 'anoth': array([False, False, False, ..., False, False, False]),\n", + " 'omg': array([False, False, False, ..., False, False, False]),\n", + " 'yay': array([False, False, False, ..., False, False, False]),\n", + " 'excit': array([False, False, True, ..., False, False, False]),\n", + " 'amaz': array([False, False, False, ..., False, False, False]),\n", + " 'away': array([False, False, False, ..., False, False, False]),\n", + " 'left': array([False, False, False, ..., False, False, False]),\n", + " 'pretti': array([False, False, False, ..., False, False, False]),\n", + " 'doe': array([False, False, False, ..., False, False, False]),\n", + " 'stuff': array([False, False, False, ..., False, False, False]),\n", + " 'th': array([False, False, False, ..., False, False, True]),\n", + " 'sound': array([False, False, False, ..., False, False, False]),\n", + " 'later': array([False, False, False, ..., False, False, False]),\n", + " 'parti': array([False, False, False, ..., False, False, False]),\n", + " 'babi': array([False, False, False, ..., False, False, False]),\n", + " 'hot': array([False, False, False, ..., False, False, False]),\n", + " 'w': array([False, False, False, ..., False, False, False]),\n", + " 'old': array([False, False, False, ..., False, False, False]),\n", + " 'check': array([False, False, False, ..., False, False, False]),\n", + " 'game': array([False, False, False, ..., False, False, False]),\n", + " 'hous': array([False, False, False, ..., False, False, False]),\n", + " 'someon': array([False, False, False, ..., False, False, False]),\n", + " 'noth': array([False, True, False, ..., False, False, False]),\n", + " 'hear': array([False, False, False, ..., False, False, False]),\n", + " 'end': array([False, False, False, ..., False, False, False]),\n", + " 'give': array([False, False, False, ..., False, False, False]),\n", + " 'pic': array([False, False, False, ..., False, False, False]),\n", + " 'fuck': array([False, False, False, ..., False, False, False]),\n", + " 'guess': array([False, False, False, ..., False, False, False]),\n", + " 'bit': array([False, False, False, ..., False, False, False]),\n", + " 'summer': array([False, False, False, ..., False, False, False]),\n", + " 'late': array([False, False, False, ..., False, False, False]),\n", + " 'big': array([False, False, False, ..., False, True, False]),\n", + " 'lost': array([False, False, False, ..., False, False, False]),\n", + " 'saw': array([False, False, False, ..., False, False, False]),\n", + " 'mean': array([False, False, False, ..., False, False, False]),\n", + " 'mom': array([False, False, False, ..., False, False, False]),\n", + " 'also': array([False, False, False, ..., False, False, False]),\n", + " 'finish': array([False, False, False, ..., False, False, False]),\n", + " 'stay': array([False, False, False, ..., False, False, False]),\n", + " 'post': array([False, False, False, ..., False, False, False]),\n", + " 'sun': array([False, False, False, ..., False, False, False]),\n", + " 'monday': array([False, False, False, ..., False, False, False]),\n", + " 'beauti': array([False, False, False, ..., False, False, False]),\n", + " 'birthday': array([False, False, False, ..., False, False, False]),\n", + " 'meet': array([False, False, False, ..., False, False, False]),\n", + " 'weather': array([False, False, False, ..., False, False, False]),\n", + " 'world': array([False, False, False, ..., True, False, False]),\n", + " 'god': array([False, False, False, ..., False, False, False]),\n", + " 'video': array([False, False, False, ..., False, False, False]),\n", + " 'ta': array([False, False, False, ..., False, False, False]),\n", + " 'iphon': array([False, False, False, ..., False, False, False]),\n", + " 'put': array([False, False, False, ..., False, False, False]),\n", + " 'ya': array([False, False, False, ..., False, False, False]),\n", + " 'actual': array([False, False, False, ..., False, False, False]),\n", + " 'r': array([False, False, False, ..., False, False, False]),\n", + " 'cri': array([False, False, False, ..., False, False, False]),\n", + " 'happen': array([False, False, False, ..., False, False, False]),\n", + " 'job': array([False, False, False, ..., False, False, False]),\n", + " 'wonder': array([False, False, False, ..., False, False, False]),\n", + " 'found': array([False, False, False, ..., False, False, False]),\n", + " 'updat': array([False, False, False, ..., False, False, False]),\n", + " 'hair': array([False, False, False, ..., False, False, False]),\n", + " 'luck': array([False, False, False, ..., False, False, False]),\n", + " 'run': array([False, False, False, ..., False, False, False]),\n", + " 'exam': array([False, False, False, ..., False, False, False]),\n", + " 'two': array([False, False, False, ..., False, False, False]),\n", + " 'hard': array([False, False, False, ..., False, False, False]),\n", + " 'far': array([False, False, False, ..., False, False, False]),\n", + " 'ugh': array([False, False, False, ..., False, False, False]),\n", + " 'friday': array([False, False, False, ..., False, False, False]),\n", + " 'stop': array([False, False, False, ..., False, False, False]),\n", + " 'sinc': array([False, False, False, ..., False, False, False]),\n", + " 'lunch': array([False, False, False, ..., False, False, False]),\n", + " 'kid': array([False, False, False, ..., False, False, False]),\n", + " 'okay': array([False, False, False, ..., False, False, False]),\n", + " 'said': array([False, False, False, ..., False, False, False]),\n", + " 'yesterday': array([False, False, False, ..., False, False, False]),\n", + " 'com': array([False, False, False, ..., False, False, False]),\n", + " 'woke': array([False, False, False, ..., False, False, False]),\n", + " 'mani': array([False, False, False, ..., False, False, False]),\n", + " 'cold': array([False, False, False, ..., False, False, False]),\n", + " 'might': array([False, False, False, ..., False, False, False]),\n", + " 'car': array([False, False, False, ..., False, False, False]),\n", + " 'must': array([False, False, False, ..., False, False, False]),\n", + " 'around': array([False, False, False, ..., False, False, False]),\n", + " 'sunday': array([False, False, False, ..., False, False, False]),\n", + " 'plan': array([False, False, False, ..., False, False, False]),\n", + " 'glad': array([False, False, False, ..., False, False, False]),\n", + " 'busi': array([False, False, False, ..., False, False, False]),\n", + " 'everyth': array([False, False, False, ..., False, False, False]),\n", + " 'food': array([False, False, False, ..., False, False, False]),\n", + " 'least': array([False, False, False, ..., False, False, False]),\n", + " 'welcom': array([False, False, False, ..., False, False, False]),\n", + " 'caus': array([False, False, False, ..., False, False, False]),\n", + " 'book': array([False, False, False, ..., False, False, False]),\n", + " 'dream': array([False, False, False, ..., False, False, False]),\n", + " 'month': array([False, False, False, ..., False, False, False]),\n", + " 'anyon': array([False, False, False, ..., False, False, False]),\n", + " 'cute': array([False, False, False, ..., False, False, False]),\n", + " 'pictur': array([False, False, False, ..., False, False, False]),\n", + " 'everi': array([False, False, False, ..., False, False, False]),\n", + " 'shit': array([False, False, False, ..., False, False, False]),\n", + " 'e': array([False, False, False, ..., False, False, False]),\n", + " 'tho': array([False, False, False, ..., False, False, False]),\n", + " 'poor': array([False, False, False, ..., False, False, False]),\n", + " 'seem': array([False, False, False, ..., False, False, False]),\n", + " 'gt': array([False, False, False, ..., False, False, False]),\n", + " 'total': array([False, False, False, ..., False, False, False]),\n", + " 'buy': array([False, False, False, ..., False, False, False]),\n", + " 'funni': array([False, False, False, ..., False, False, False]),\n", + " 'move': array([False, False, False, ..., False, False, False]),\n", + " 'anyth': array([False, False, False, ..., False, False, False]),\n", + " 'may': array([False, False, False, ..., False, False, False]),\n", + " 'gone': array([False, False, False, ..., False, False, False]),\n", + " 'chang': array([False, False, False, ..., False, False, False]),\n", + " 'hahaha': array([False, False, False, ..., False, False, False]),\n", + " 'probabl': array([False, False, False, ..., False, False, False]),\n", + " 'dinner': array([False, False, False, ..., False, False, False]),\n", + " 'place': array([False, False, False, ..., False, False, False]),\n", + " 'drink': array([False, False, False, ..., False, False, False]),\n", + " 'c': array([False, False, False, ..., False, False, False]),\n", + " 'boy': array([False, False, False, ..., False, False, False]),\n", + " 'forward': array([False, False, False, ..., False, False, False]),\n", + " 'shop': array([False, False, False, ..., False, False, False]),\n", + " 'almost': array([False, False, False, ..., False, False, False]),\n", + " 'minut': array([False, False, False, ..., False, False, False]),\n", + " 'music': array([False, False, False, ..., False, False, False]),\n", + " 'drive': array([False, False, False, ..., False, False, False]),\n", + " 'wrong': array([False, False, False, ..., False, False, False]),\n", + " 'dad': array([False, False, False, ..., True, False, False]),\n", + " 'ask': array([False, False, False, ..., False, False, False]),\n", + " 'fan': array([False, False, False, ..., False, False, False]),\n", + " 'g': array([False, False, False, ..., False, False, False]),\n", + " 'without': array([False, False, False, ..., False, False, False]),\n", + " 'famili': array([False, False, False, ..., False, False, False]),\n", + " 'sit': array([False, False, False, ..., False, False, False]),\n", + " 'till': array([False, False, False, ..., False, False, False]),\n", + " 'real': array([False, False, False, ..., False, False, False]),\n", + " 'mine': array([False, False, False, ..., True, False, False]),\n", + " 'win': array([False, False, False, ..., False, False, False]),\n", + " 'walk': array([False, False, False, ..., False, False, False]),\n", + " 'aww': array([False, False, False, ..., False, False, False]),\n", + " 'set': array([False, False, False, ..., False, False, False]),\n", + " 'brother': array([False, False, False, ..., False, True, False]),\n", + " 'headach': array([False, False, False, ..., False, False, False]),\n", + " 'break': array([False, False, False, ..., False, False, False]),\n", + " 'outsid': array([False, False, False, ..., False, False, False]),\n", + " 'didnt': array([False, False, False, ..., False, False, False]),\n", + " 'seen': array([False, False, False, ..., False, False, False]),\n", + " 'word': array([False, False, False, ..., False, False, False]),\n", + " 'xx': array([False, False, False, ..., False, False, True]),\n", + " 'ñ': array([False, False, False, ..., False, False, False]),\n", + " 'onc': array([False, False, False, ..., False, False, False]),\n", + " 'idea': array([False, False, False, ..., False, False, False]),\n", + " 'free': array([False, False, False, ..., False, False, False]),\n", + " 'class': array([False, False, False, ..., False, False, False]),\n", + " 'write': array([False, False, False, ..., False, False, False]),\n", + " 'enough': array([False, False, False, ..., False, False, False]),\n", + " 'train': array([False, False, False, ..., False, False, False]),\n", + " 'rock': array([False, False, False, ..., False, False, False]),\n", + " 'blog': array([False, False, False, ..., False, False, False]),\n", + " 'person': array([False, False, False, ..., False, False, False]),\n", + " 'die': array([False, False, False, ..., False, False, False]),\n", + " 'room': array([False, False, False, ..., False, False, False]),\n", + " 'open': array([False, False, False, ..., False, False, False]),\n", + " 'believ': array([False, False, False, ..., False, False, False]),\n", + " 'money': array([False, False, False, ..., False, False, False]),\n", + " 'stupid': array([False, False, False, ..., False, False, False]),\n", + " 'clean': array([False, False, False, ..., False, False, False]),\n", + " 'goodnight': array([False, False, False, ..., False, False, False]),\n", + " 'crazi': array([False, False, False, ..., False, False, False]),\n", + " 'wont': array([False, False, False, ..., False, False, False]),\n", + " 'wake': array([False, False, False, ..., False, False, False]),\n", + " 'danc': array([False, False, False, ..., False, False, False]),\n", + " 'text': array([False, False, False, ..., False, False, False]),\n", + " 'tv': array([False, True, False, ..., False, False, False]),\n", + " 'half': array([False, False, False, ..., False, False, False]),\n", + " 'turn': array([False, False, False, ..., False, False, False]),\n", + " 'send': array([False, False, False, ..., False, False, False]),\n", + " 'fail': array([False, False, False, ..., False, False, False]),\n", + " 'eye': array([False, False, False, ..., False, False, False]),\n", + " 'hit': array([False, False, False, ..., False, False, False]),\n", + " 'sweet': array([False, False, False, ..., False, False, False]),\n", + " 'rememb': array([False, False, False, ..., False, False, False]),\n", + " 'june': array([False, False, False, ..., False, False, False]),\n", + " 'l': array([False, False, False, ..., False, False, False]),\n", + " 'ill': array([False, False, False, ..., False, False, False]),\n", + " 'alon': array([False, False, False, ..., False, False, False]),\n", + " 'aw': array([False, False, False, ..., False, False, False]),\n", + " 'awww': array([False, False, False, ..., False, False, False]),\n", + " 'k': array([False, False, False, ..., False, False, False]),\n", + " 'studi': array([False, False, False, ..., False, False, False]),\n", + " 'took': array([False, False, False, ..., False, False, False]),\n", + " 'heart': array([False, False, False, ..., False, False, False]),\n", + " 'kill': array([False, False, False, ..., False, False, False]),\n", + " 'internet': array([False, False, False, ..., False, False, False]),\n", + " 'face': array([False, False, False, ..., False, False, False]),\n", + " 'care': array([False, False, False, ..., False, False, False]),\n", + " 'hello': array([False, False, False, ..., False, False, False]),\n", + " 'whole': array([False, False, False, ..., False, False, False]),\n", + " 'mother': array([False, False, False, ..., False, False, False]),\n", + " 'anymor': array([False, False, False, ..., False, False, False]),\n", + " 'abl': array([False, False, False, ..., False, False, False]),\n", + " 'full': array([False, False, False, ..., False, False, False]),\n", + " 'saturday': array([False, False, False, ..., False, False, False]),\n", + " 'stori': array([False, False, False, ..., False, False, False]),\n", + " 'pain': array([False, False, False, ..., False, False, False]),\n", + " 'anyway': array([False, False, False, ..., False, False, False]),\n", + " 'offic': array([False, False, False, ..., False, False, False]),\n", + " 'true': array([False, False, False, ..., False, False, False]),\n", + " 'came': array([False, False, False, ..., False, False, False]),\n", + " 'either': array([False, False, False, ..., False, False, False]),\n", + " 'problem': array([False, False, False, ..., False, False, False]),\n", + " 'serious': array([False, False, False, ..., False, False, False]),\n", + " 'sooo': array([False, False, False, ..., False, False, False]),\n", + " 'ride': array([False, False, False, ..., False, False, False]),\n", + " 'star': array([False, False, False, ..., False, False, False]),\n", + " 'soo': array([False, False, False, ..., False, False, False]),\n", + " 'worri': array([ True, False, False, ..., False, False, False]),\n", + " 'repli': array([False, False, False, ..., False, False, False]),\n", + " 'coffe': array([False, False, False, ..., False, False, False]),\n", + " 'v': array([False, False, False, ..., False, False, False]),\n", + " 'kind': array([False, False, False, ..., False, False, False]),\n", + " 'link': array([False, False, False, ..., False, False, False]),\n", + " 'name': array([False, False, False, ..., False, False, False]),\n", + " 'hell': array([False, False, False, ..., False, False, False]),\n", + " 'dog': array([False, False, False, ..., False, False, False]),\n", + " 'ð': array([False, False, False, ..., False, False, False]),\n", + " 'beach': array([False, False, False, ..., False, False, False]),\n", + " 'news': array([False, False, False, ..., False, False, False]),\n", + " 'interest': array([False, False, False, ..., False, False, False]),\n", + " 'site': array([False, False, False, ..., False, False, False]),\n", + " 'add': array([False, False, False, ..., False, False, False]),\n", + " 'hang': array([False, False, False, ..., False, False, False]),\n", + " 'togeth': array([False, False, False, ..., False, False, False]),\n", + " 'smile': array([False, False, False, ..., False, False, False]),\n", + " 'pay': array([False, False, False, ..., False, False, False]),\n", + " 'photo': array([False, False, False, ..., False, False, False]),\n", + " 'la': array([False, False, False, ..., False, False, False]),\n", + " 'kinda': array([False, False, False, ..., False, False, False]),\n", + " 'comput': array([False, False, False, ..., False, False, False]),\n", + " 'hand': array([False, False, False, ..., False, False, False]),\n", + " 'super': array([False, False, False, ..., False, False, False]),\n", + " 'close': array([False, False, False, ..., False, False, False]),\n", + " 'â': array([False, False, False, ..., False, False, False]),\n", + " 'bring': array([False, False, False, ..., False, False, False]),\n", + " 'trip': array([False, False, False, ..., False, False, False]),\n", + " 'f': array([False, False, False, ..., False, False, False]),\n", + " 'fix': array([False, False, False, ..., False, False, False]),\n", + " 'onlin': array([False, False, False, ..., False, False, False]),\n", + " 'part': array([False, False, False, ..., False, False, False]),\n", + " 'quit': array([False, False, False, ..., False, False, False]),\n", + " 'vote': array([False, False, False, ..., False, False, False]),\n", + " 'told': array([False, False, False, ..., False, False, False]),\n", + " 'stuck': array([False, False, False, ..., False, False, False]),\n", + " 'learn': array([False, False, False, ..., False, False, False]),\n", + " 'pm': array([False, False, False, ..., False, False, False]),\n", + " 'shower': array([False, False, False, ..., False, False, False]),\n", + " 'pick': array([False, False, False, ..., False, False, False]),\n", + " 'share': array([False, False, False, ..., False, False, False]),\n", + " 'cat': array([False, False, False, ..., False, False, False]),\n", + " 'favorit': array([False, False, False, ..., False, False, False]),\n", + " 'min': array([False, False, False, ..., False, False, False]),\n", + " 'hehe': array([False, False, False, ..., False, False, False]),\n", + " 'www': array([False, False, False, ..., False, False, False]),\n", + " 'bought': array([False, False, False, ..., False, False, False]),\n", + " 'email': array([False, False, False, ..., False, False, False]),\n", + " 'dead': array([False, False, False, ..., False, False, False]),\n", + " 'awak': array([False, False, False, ..., False, False, False]),\n", + " 'mind': array([False, False, False, ..., False, False, False]),\n", + " 'visit': array([False, False, False, ..., False, False, False]),\n", + " 'ticket': array([False, False, False, ..., False, False, False]),\n", + " 'mileycyru': array([False, False, False, ..., False, False, False]),\n", + " 'messag': array([False, False, False, ..., False, False, False]),\n", + " 'high': array([False, False, False, ..., False, False, False]),\n", + " 'cours': array([False, False, False, ..., False, False, False]),\n", + " 'btw': array([False, False, False, ..., False, False, False]),\n", + " 'cream': array([False, False, False, ..., False, False, False]),\n", + " 'date': array([False, False, False, ..., False, False, False]),\n", + " 'forget': array([False, False, False, ..., False, False, False]),\n", + " 'wear': array([False, False, False, ..., False, False, False]),\n", + " 'pack': array([False, False, False, ..., False, False, False]),\n", + " 'test': array([False, False, False, ..., False, False, False]),\n", + " 'london': array([False, False, False, ..., False, False, False]),\n", + " 'wed': array([False, False, False, ..., False, False, False]),\n", + " 'ah': array([False, False, False, ..., False, False, False]),\n", + " 'figur': array([False, False, False, ..., False, False, False]),\n", + " 'chocol': array([False, False, False, ..., False, False, False]),\n", + " 'boo': array([False, False, False, ..., False, False, False]),\n", + " 'dude': array([False, False, False, ..., False, False, False]),\n", + " 'sunni': array([False, False, False, ..., False, False, False]),\n", + " 'els': array([False, False, False, ..., False, False, False]),\n", + " 'rest': array([False, False, False, ..., False, False, False]),\n", + " 'bout': array([False, False, False, ..., False, False, False]),\n", + " 'lucki': array([False, False, False, ..., False, False, False]),\n", + " 'breakfast': array([False, False, False, ..., False, False, False]),\n", + " 'facebook': array([False, False, False, ..., False, False, False]),\n", + " 'asleep': array([False, False, False, ..., False, False, False]),\n", + " 'page': array([False, False, False, ..., False, False, False]),\n", + " 'hug': array([False, False, False, ..., False, False, False]),\n", + " 'sometim': array([False, False, False, ..., False, False, False]),\n", + " 'homework': array([False, False, False, ..., False, False, False]),\n", + " 'sigh': array([False, False, False, ..., False, False, False]),\n", + " 'red': array([False, False, False, ..., False, False, False]),\n", + " 'bye': array([False, False, False, ..., False, False, False]),\n", + " 'broke': array([False, False, False, ..., False, False, False]),\n", + " 'lil': array([False, False, False, ..., False, False, False]),\n", + " 'yea': array([False, False, False, ..., False, False, False]),\n", + " 'afternoon': array([False, False, False, ..., False, False, False]),\n", + " 'til': array([False, False, False, ..., False, False, False]),\n", + " 'cut': array([False, False, False, ..., False, False, False]),\n", + " 'le': array([False, False, False, ..., False, False, False]),\n", + " 'foot': array([False, False, False, ..., False, False, False]),\n", + " 'coupl': array([False, False, False, ..., False, False, False]),\n", + " 'st': array([False, False, False, ..., False, False, False]),\n", + " 'unfortun': array([False, False, False, ..., False, False, False]),\n", + " 'ladi': array([False, False, False, ..., False, False, False]),\n", + " 'forgot': array([False, False, False, ..., False, False, False]),\n", + " 'spend': array([False, False, False, ..., False, False, False]),\n", + " 'fall': array([False, False, False, ..., False, False, False]),\n", + " 'scare': array([False, False, False, ..., False, False, False]),\n", + " 'j': array([False, False, False, ..., False, False, False]),\n", + " 'ago': array([False, False, False, ..., False, False, False]),\n", + " 'citi': array([False, False, False, ..., False, False, False]),\n", + " 'ice': array([False, False, False, ..., False, False, False]),\n", + " 'goin': array([False, False, False, ..., False, False, False]),\n", + " 'park': array([False, False, False, ..., False, False, False]),\n", + " 'list': array([False, False, False, ..., False, False, False]),\n", + " 'mad': array([False, False, False, ..., True, False, False]),\n", + " 'nap': array([False, False, False, ..., False, False, False]),\n", + " 'youtub': array([False, False, False, ..., False, False, False]),\n", + " 'cuz': array([False, False, False, ..., False, False, False]),\n", + " 'line': array([False, False, False, ..., False, False, False]),\n", + " 'heard': array([False, False, False, ..., False, False, False]),\n", + " 'congrat': array([False, False, False, ..., False, False, False]),\n", + " 'laptop': array([False, False, False, ..., False, False, False]),\n", + " 'ddlovato': array([False, False, False, ..., False, False, False]),\n", + " 'suppos': array([False, False, False, ..., False, False, False]),\n", + " 'team': array([False, False, False, ..., False, False, False]),\n", + " 'short': array([False, False, False, ..., False, False, False]),\n", + " 'appar': array([False, False, False, ..., False, False, False]),\n", + " 'season': array([False, False, True, ..., False, False, False]),\n", + " 'nite': array([False, False, False, ..., False, False, False]),\n", + " 'ì': array([False, False, False, ..., False, False, False]),\n", + " 'concert': array([False, False, False, ..., False, False, False]),\n", + " 'via': array([False, False, False, ..., False, False, False]),\n", + " 'lose': array([False, False, False, ..., False, False, False]),\n", + " 'side': array([False, False, False, ..., False, False, False]),\n", + " 'water': array([False, False, False, ..., False, False, False]),\n", + " 'sign': array([False, False, False, ..., False, False, False]),\n", + " 'hmm': array([False, False, False, ..., False, False, False]),\n", + " 'worst': array([False, False, False, ..., False, False, False]),\n", + " 'plu': array([False, False, False, ..., False, False, False]),\n", + " 'weird': array([False, False, False, ..., False, False, False]),\n", + " 'mum': array([False, False, False, ..., False, False, False]),\n", + " 'tea': array([False, False, False, ..., False, False, False]),\n", + " 'graduat': array([False, False, False, ..., False, False, False]),\n", + " 'gym': array([False, False, False, ..., False, False, False]),\n", + " 'celebr': array([False, False, False, ..., False, False, False]),\n", + " 'catch': array([False, False, False, ..., False, False, False]),\n", + " 'dear': array([False, False, False, ..., False, False, False]),\n", + " 'town': array([False, False, False, ..., False, False, False]),\n", + " 'h': array([False, False, False, ..., False, False, False]),\n", + " 'lmao': array([False, False, False, ..., False, False, False]),\n", + " 'pool': array([False, False, False, ..., False, False, False]),\n", + " 'crap': array([False, False, False, ..., False, False, False]),\n", + " 'past': array([False, False, False, ..., False, False, False]),\n", + " 'depress': array([False, False, False, ..., False, False, False]),\n", + " 'annoy': array([False, False, False, ..., False, False, False]),\n", + " 'father': array([False, False, False, ..., False, False, False]),\n", + " 'sister': array([False, False, False, ..., False, False, False]),\n", + " 'jealou': array([False, False, False, ..., False, False, False]),\n", + " 'point': array([False, False, False, ..., False, False, False]),\n", + " 'bday': array([False, False, False, ..., False, False, False]),\n", + " 'miley': array([False, False, False, ..., False, False, False]),\n", + " 'offici': array([False, False, False, ..., False, False, False]),\n", + " 'mr': array([False, False, False, ..., False, False, False]),\n", + " 'tour': array([False, False, False, ..., False, False, False]),\n", + " 'sore': array([False, False, False, ..., False, False, False]),\n", + " 'definit': array([False, False, False, ..., False, False, False]),\n", + " 'reason': array([False, False, False, ..., False, False, False]),\n", + " 'ipod': array([False, False, False, ..., False, False, False]),\n", + " 'tommcfli': array([False, False, False, ..., False, False, False]),\n", + " 'hill': array([False, False, False, ..., False, False, False]),\n", + " 'shot': array([False, False, False, ..., False, False, False]),\n", + " 'followfriday': array([False, False, False, ..., False, False, False]),\n", + " 'nd': array([False, False, False, ..., False, False, False]),\n", + " 'fb': array([False, False, False, ..., False, False, False]),\n", + " 'join': array([False, False, False, ..., False, False, False]),\n", + " 'upset': array([False, False, False, ..., False, False, False]),\n", + " 'instead': array([False, False, False, ..., False, False, False]),\n", + " 'dress': array([False, False, False, ..., False, False, False]),\n", + " 'possibl': array([False, False, False, ..., False, False, False]),\n", + " 'sunshin': array([False, False, False, ..., False, False, False]),\n", + " 'fine': array([False, False, False, ..., False, False, False]),\n", + " 'age': array([False, False, False, ..., False, False, False]),\n", + " 'moment': array([False, False, False, ..., False, False, False]),\n", + " 'award': array([False, False, False, ..., False, False, False]),\n", + " 'chanc': array([False, False, False, ..., False, False, False]),\n", + " 'decid': array([False, False, False, ..., False, False, False]),\n", + " 'perfect': array([False, False, False, ..., False, False, False]),\n", + " 'record': array([False, False, False, ..., False, False, False]),\n", + " 'wors': array([False, False, False, ..., False, False, False]),\n", + " 'fli': array([False, False, False, ..., False, False, False]),\n", + " 'relax': array([False, False, False, ..., False, False, False]),\n", + " 'card': array([False, False, False, ..., False, False, False]),\n", + " 'cancel': array([False, False, False, ..., False, False, False]),\n", + " 'episod': array([False, False, False, ..., False, False, False]),\n", + " 'complet': array([False, False, False, ..., False, False, False]),\n", + " 'remind': array([False, False, False, ..., False, False, False]),\n", + " 'download': array([False, False, False, ..., False, False, False]),\n", + " 'ppl': array([False, False, False, ..., False, False, False]),\n", + " 'parent': array([False, False, False, ..., False, False, False]),\n", + " 'cook': array([False, False, False, ..., False, False, False]),\n", + " 'top': array([False, False, False, ..., False, False, False]),\n", + " 'bless': array([False, False, False, ..., False, False, False]),\n", + " 'son': array([False, False, False, ..., False, False, False]),\n", + " 'shirt': array([False, False, False, ..., False, False, False]),\n", + " 'app': array([False, False, False, ..., False, False, False]),\n", + " 'air': array([False, False, False, ..., False, False, False]),\n", + " 'fight': array([False, False, False, ..., False, False, False]),\n", + " 'tuesday': array([False, False, False, ..., False, False, False]),\n", + " 'yep': array([False, False, False, ..., False, False, False]),\n", + " 'soooo': array([False, False, False, ..., False, False, False]),\n", + " 'kick': array([False, False, False, ..., False, False, False]),\n", + " 'usual': array([False, False, False, ..., False, False, False]),\n", + " 'invit': array([False, False, False, ..., False, False, False]),\n", + " 'co': array([False, False, False, ..., True, False, False]),\n", + " 'mood': array([False, False, False, ..., False, False, False]),\n", + " 'ë': array([False, False, False, ..., False, False, False]),\n", + " 'websit': array([False, False, False, ..., False, False, False]),\n", + " 'cake': array([False, False, False, ..., False, False, False]),\n", + " 'window': array([False, False, False, ..., False, False, False]),\n", + " 'lay': array([False, False, False, ..., False, False, False]),\n", + " 'jona': array([False, False, False, ..., False, False, False]),\n", + " 'ive': array([False, False, False, ..., False, False, False]),\n", + " 'fast': array([False, False, False, ..., False, False, False]),\n", + " 'differ': array([False, False, False, ..., False, False, False]),\n", + " 'load': array([False, False, False, ..., False, False, False]),\n", + " 'order': array([False, False, False, ..., False, False, False]),\n", + " 'myspac': array([False, False, False, ..., False, False, False]),\n", + " 'freak': array([False, False, False, ..., False, False, False]),\n", + " 'bro': array([False, False, False, ..., False, False, False]),\n", + " 'agre': array([False, False, False, ..., False, False, False]),\n", + " 'save': array([False, False, False, ..., False, False, False]),\n", + " 'camp': array([False, False, False, ..., False, False, False]),\n", + " 'drop': array([False, False, False, ..., False, False, False]),\n", + " 'uk': array([False, False, False, ..., False, False, False]),\n", + " 'rather': array([False, False, False, ..., False, False, False]),\n", + " 'xxx': array([False, False, False, ..., False, False, False]),\n", + " 'comment': array([False, False, False, ..., False, False, False]),\n", + " 'ate': array([False, False, False, ..., False, False, False]),\n", + " 'cheer': array([False, False, False, ..., False, False, False]),\n", + " 'nope': array([False, False, False, ..., False, False, False]),\n", + " 'piss': array([False, False, False, ..., False, False, False]),\n", + " 'garden': array([False, False, False, ..., False, False, False]),\n", + " 'album': array([False, False, False, ..., False, False, False]),\n", + " 'appreci': array([False, False, False, ..., False, False, False]),\n", + " 'camera': array([False, False, False, ..., False, False, False]),\n", + " 'second': array([False, False, False, ..., False, False, False]),\n", + " 'sim': array([False, False, False, ..., False, False, False]),\n", + " 'warm': array([False, False, False, ..., False, False, False]),\n", + " 'arriv': array([False, False, False, ..., False, False, False]),\n", + " 'realiz': array([False, False, False, ..., False, False, False]),\n", + " 'power': array([False, False, False, ..., False, False, False]),\n", + " 'babe': array([False, False, False, ..., False, False, False]),\n", + " 'support': array([False, False, False, ..., False, False, False]),\n", + " 'ad': array([False, False, False, ..., False, False, False]),\n", + " 'laugh': array([False, False, False, ..., False, False, False]),\n", + " 'revis': array([False, False, False, ..., False, False, False]),\n", + " 'lame': array([False, False, False, ..., False, False, False]),\n", + " 'flight': array([False, False, False, ..., False, False, False]),\n", + " 'broken': array([False, False, False, ..., False, False, False]),\n", + " 'hungri': array([False, False, False, ..., False, False, False]),\n", + " 'block': array([False, False, False, ..., False, False, False]),\n", + " 'shame': array([False, False, False, ..., False, False, False]),\n", + " 'holiday': array([False, False, False, ..., False, False, False]),\n", + " 'account': array([False, False, False, ..., False, False, False]),\n", + " 'fell': array([False, False, False, ..., False, False, False]),\n", + " 'paper': array([False, False, False, ..., False, False, False]),\n", + " 'sing': array([False, False, False, ..., False, False, False]),\n", + " 'answer': array([False, False, False, ..., False, False, False]),\n", + " 'hold': array([False, False, False, ..., False, False, False]),\n", + " 'pa': array([False, False, False, ..., False, False, False]),\n", + " 'light': array([False, False, False, ..., False, False, False]),\n", + " 'sleepi': array([False, False, False, ..., False, False, False]),\n", + " 'slow': array([False, False, False, ..., False, False, False]),\n", + " 'design': array([False, False, False, ..., False, False, False]),\n", + " 'taken': array([False, False, False, ..., False, False, False]),\n", + " 'mate': array([False, False, False, ..., False, False, False]),\n", + " 'da': array([False, False, False, ..., False, False, False]),\n", + " 'question': array([False, False, False, ..., False, False, False]),\n", + " 'xd': array([False, False, False, ..., False, False, False]),\n", + " 'bet': array([False, False, False, ..., False, False, False]),\n", + " 'except': array([False, False, False, ..., False, False, False]),\n", + " 'chat': array([False, False, False, ..., False, False, False]),\n", + " 'three': array([False, False, False, ..., False, False, False]),\n", + " 'colleg': array([False, False, False, ..., False, False, False]),\n", + " 'band': array([False, False, False, ..., False, False, False]),\n", + " 'voic': array([False, False, False, ..., False, False, False]),\n", + " 'sent': array([False, False, False, ..., False, False, False]),\n", + " 'juli': array([False, False, False, ..., False, False, False]),\n", + " 'beat': array([False, False, False, ..., False, False, False]),\n", + " 'blue': array([False, False, False, ..., False, False, False]),\n", + " 'longer': array([False, False, False, ..., False, False, False]),\n", + " 'wtf': array([False, False, False, ..., False, False, False]),\n", + " 'thx': array([False, False, False, ..., False, False, False]),\n", + " 'dure': array([False, False, False, ..., False, False, False]),\n", + " 'bum': array([False, False, False, ..., False, False, False]),\n", + " 'race': array([False, False, False, ..., False, False, False]),\n", + " 'david': array([False, False, False, ..., False, False, False]),\n", + " 'mac': array([False, False, False, ..., False, False, False]),\n", + " 'kate': array([False, False, False, ..., False, False, False]),\n", + " 'slept': array([False, False, False, ..., False, False, False]),\n", + " 'road': array([False, False, False, ..., False, False, False]),\n", + " 'bu': array([False, False, False, ..., False, False, False]),\n", + " 'twilight': array([False, False, False, ..., False, False, False]),\n", + " 'green': array([False, False, False, ..., False, False, False]),\n", + " 'hr': array([False, False, False, ..., False, False, False]),\n", + " 'ahh': array([False, False, False, ..., False, False, False]),\n", + " 'hmmm': array([False, False, False, ..., False, False, False]),\n", + " 'terribl': array([False, False, False, ..., False, False, False]),\n", + " 'throat': array([False, False, False, ..., False, False, False]),\n", + " 'wednesday': array([False, False, False, ..., False, False, False]),\n", + " 'manag': array([False, False, False, ..., False, False, False]),\n", + " 'wit': array([False, False, False, ..., False, False, False]),\n", + " 'store': array([False, False, False, ..., False, False, False]),\n", + " 'woman': array([False, False, False, ..., False, False, False]),\n", + " 'sat': array([False, False, False, ..., False, False, False]),\n", + " 'tear': array([False, False, False, ..., False, False, False]),\n", + " 'white': array([False, False, False, ..., False, False, False]),\n", + " 'huge': array([False, False, False, ..., False, False, False]),\n", + " 'luv': array([False, False, False, ..., False, False, False]),\n", + " 'doesnt': array([False, False, False, ..., False, False, False]),\n", + " 'near': array([False, False, False, ..., False, False, False]),\n", + " 'upload': array([False, False, False, ..., False, False, False]),\n", + " 'easi': array([False, False, False, ..., False, False, False]),\n", + " 'yr': array([False, False, False, ..., False, False, False]),\n", + " 'church': array([False, False, False, ..., False, False, False]),\n", + " 'everybodi': array([False, False, False, ..., False, False, False]),\n", + " 'connect': array([False, False, False, ..., False, False, False]),\n", + " 'disappoint': array([False, False, False, ..., False, False, False]),\n", + " 'english': array([False, False, False, ..., False, False, False]),\n", + " 'math': array([False, False, False, ..., False, False, False]),\n", + " 'group': array([False, False, False, ..., False, False, False]),\n", + " 'bodi': array([False, False, False, ..., False, False, False]),\n", + " 'havent': array([False, False, False, ..., False, False, False]),\n", + " 'bike': array([False, False, False, ..., False, False, False]),\n", + " 'met': array([False, False, False, ..., False, False, False]),\n", + " 'troubl': array([False, False, False, ..., False, False, False]),\n", + " 'tom': array([False, False, False, ..., False, False, False]),\n", + " 'forev': array([False, False, False, ..., False, False, False]),\n", + " 'crash': array([False, False, False, ..., False, False, False]),\n", + " 'earlier': array([False, False, False, ..., False, False, False]),\n", + " 'si': array([False, False, False, ..., False, False, False]),\n", + " 'case': array([False, False, False, ..., False, False, False]),\n", + " 'angel': array([False, False, False, ..., False, False, False]),\n", + " 'absolut': array([False, False, False, ..., False, False, False]),\n", + " 'shoe': array([False, False, False, ..., False, False, False]),\n", + " 'mail': array([False, False, False, ..., False, False, False]),\n", + " 'expect': array([False, False, False, ..., False, False, False]),\n", + " 'bloodi': array([False, False, False, ..., False, False, False]),\n", + " 'project': array([False, False, False, ..., False, False, False]),\n", + " 'stand': array([False, False, False, ..., False, False, False]),\n", + " 'boyfriend': array([False, False, False, ..., False, False, False]),\n", + " 'tummi': array([False, False, False, ..., False, False, False]),\n", + " 'vacat': array([False, False, False, ..., False, False, False]),\n", + " 'ruin': array([False, False, False, ..., False, False, False]),\n", + " 'swim': array([False, False, False, ..., False, False, False]),\n", + " 'film': array([False, False, False, ..., False, False, False]),\n", + " 'product': array([False, False, False, ..., False, False, False]),\n", + " 'issu': array([False, False, False, ..., False, False, False]),\n", + " 'especi': array([False, False, False, ..., False, False, False]),\n", + " 'roll': array([False, False, False, ..., False, False, False]),\n", + " 'pull': array([False, False, False, ..., False, False, False]),\n", + " 'stomach': array([False, False, False, ..., False, False, False]),\n", + " 'rip': array([False, False, False, ..., False, False, False]),\n", + " 'aint': array([False, False, False, ..., False, False, False]),\n", + " 'black': array([False, False, False, ..., False, False, False]),\n", + " 'appl': array([False, False, False, ..., False, False, False]),\n", + " 'front': array([False, False, False, ..., False, False, False]),\n", + " 'mile': array([False, False, False, ..., False, False, False]),\n", + " 'flu': array([False, False, False, ..., False, False, False]),\n", + " 'cousin': array([False, False, False, ..., False, False, False]),\n", + " 'servic': array([False, False, False, ..., False, False, False]),\n", + " 'knew': array([False, False, False, ..., False, False, False]),\n", + " 'lazi': array([False, False, False, ..., False, False, False]),\n", + " 'count': array([False, False, False, ..., False, False, False]),\n", + " 'jonasbroth': array([False, False, False, ..., False, False, False]),\n", + " 'etc': array([False, False, False, ..., False, False, False]),\n", + " 'touch': array([False, False, False, ..., False, False, False]),\n", + " 'ahhh': array([False, False, False, ..., False, False, False]),\n", + " 'tan': array([False, False, False, ..., False, False, False]),\n", + " 'type': array([False, False, False, ..., False, False, False]),\n", + " 'thursday': array([False, False, False, ..., False, False, False]),\n", + " 'mess': array([False, False, False, ..., False, False, False]),\n", + " 'box': array([False, False, False, ..., False, False, False]),\n", + " 'ach': array([False, False, False, ..., False, False, False]),\n", + " 'fair': array([False, False, False, ..., False, False, False]),\n", + " 'radio': array([False, False, False, ..., False, False, False]),\n", + " 'server': array([False, False, False, ..., False, False, False]),\n", + " 'dm': array([False, False, False, ..., False, False, False]),\n", + " 'mmm': array([False, False, False, ..., False, False, False]),\n", + " 'club': array([False, False, False, ..., False, False, False]),\n", + " 'whatev': array([False, False, False, ..., False, False, False]),\n", + " 'idk': array([False, False, False, ..., False, False, False]),\n", + " 'number': array([False, False, False, ..., False, False, False]),\n", + " 'raini': array([False, False, False, ..., False, False, False]),\n", + " 'blackberri': array([False, False, False, ..., False, False, False]),\n", + " 'chill': array([False, False, False, ..., False, False, False]),\n", + " 'doctor': array([False, False, False, ..., False, False, False]),\n", + " 'practic': array([False, False, False, ..., False, False, False]),\n", + " 'lie': array([False, False, False, ..., False, False, False]),\n", + " 'dark': array([False, False, False, ..., False, False, False]),\n", + " 'gave': array([False, False, False, ..., False, False, False]),\n", + " 'mtv': array([False, False, False, ..., False, False, False]),\n", + " 'bar': array([False, False, False, ..., False, False, False]),\n", + " 'wash': array([False, False, False, ..., False, False, False]),\n", + " 'understand': array([False, False, False, ..., False, False, False]),\n", + " 'horribl': array([False, False, False, ..., False, False, False]),\n", + " 'quiet': array([False, False, False, ..., False, False, False]),\n", + " 'due': array([False, False, False, ..., False, False, False]),\n", + " 'joke': array([False, False, False, ..., False, False, False]),\n", + " 'histori': array([False, False, False, ..., False, False, False]),\n", + " 'spent': array([False, False, False, ..., False, False, False]),\n", + " 'beer': array([False, False, False, ..., False, False, False]),\n", + " 'becom': array([False, False, False, ..., False, False, False]),\n", + " 'although': array([False, False, False, ..., False, False, False]),\n", + " 'talent': array([False, False, False, ..., False, False, False]),\n", + " 'shall': array([False, False, False, ..., False, False, False]),\n", + " 'search': array([False, False, False, ..., False, False, False]),\n", + " 'heat': array([False, False, False, ..., False, False, False]),\n", + " 'memori': array([False, False, False, ..., False, False, False]),\n", + " 'bitch': array([False, False, False, ..., False, False, False]),\n", + " 'mommi': array([False, False, False, ..., False, False, False]),\n", + " 'q': array([False, False, False, ..., False, False, False]),\n", + " 'burn': array([False, False, False, ..., False, False, False]),\n", + " 'safe': array([False, False, False, ..., False, False, False]),\n", + " 'em': array([False, False, False, ..., False, False, False]),\n", + " 'death': array([False, False, False, ..., False, False, False]),\n", + " 'xoxo': array([False, False, False, ..., False, False, False]),\n", + " 'state': array([False, False, False, ..., False, False, False]),\n", + " 'fml': array([False, False, False, ..., False, False, False]),\n", + " 'uh': array([False, False, False, ..., False, False, False]),\n", + " 'blood': array([False, False, False, ..., False, False, False]),\n", + " 'bbq': array([False, False, False, ..., False, False, False]),\n", + " 'allow': array([False, False, False, ..., False, False, False]),\n", + " 'pass': array([False, False, False, ..., False, False, False]),\n", + " 'vip': array([False, False, False, ..., False, False, False]),\n", + " 'note': array([False, False, False, ..., False, False, False]),\n", + " 'insid': array([False, False, False, ..., False, False, False]),\n", + " 'sadli': array([False, False, False, ..., False, False, False]),\n", + " 'ï': array([False, False, False, ..., False, False, False]),\n", + " 'scari': array([False, False, False, ..., False, False, False]),\n", + " 'interview': array([False, False, False, ..., False, False, False]),\n", + " 'pc': array([False, False, False, ..., False, False, False]),\n", + " 'bf': array([False, False, False, ..., False, False, False]),\n", + " 'googl': array([False, False, False, ..., False, False, False]),\n", + " 'speak': array([False, False, False, ..., False, False, False]),\n", + " 'felt': array([False, False, False, ..., False, False, False]),\n", + " 'apart': array([False, False, False, ..., False, False, False]),\n", + " 'tast': array([False, False, False, ..., False, False, False]),\n", + " 'mix': array([False, False, False, ..., False, False, False]),\n", + " 'ear': array([False, False, False, ..., False, False, False]),\n", + " 'peep': array([False, False, False, ..., False, False, False]),\n", + " 'hun': array([False, False, False, ..., False, False, False]),\n", + " 'compani': array([False, False, False, ..., False, False, False]),\n", + " 'shoot': array([False, False, False, ..., False, False, False]),\n", + " 'profil': array([False, False, False, ..., False, False, False]),\n", + " 'prob': array([False, False, False, ..., False, False, False]),\n", + " 'kiss': array([False, False, False, ..., False, False, False]),\n", + " 'yo': array([False, False, False, ..., False, False, False]),\n", + " 'notic': array([False, False, False, ..., False, False, False]),\n", + " 'rd': array([False, False, False, ..., False, False, False]),\n", + " 'moon': array([False, False, False, ..., False, False, False]),\n", + " 'emili': array([False, False, False, ..., False, False, False]),\n", + " 'exhaust': array([False, False, False, ..., False, False, False]),\n", + " 'sky': array([False, False, False, ..., False, False, False]),\n", + " 'cloth': array([False, False, False, ..., False, False, False]),\n", + " 'pray': array([False, False, False, ..., False, False, False]),\n", + " 'french': array([False, False, False, ..., False, False, False]),\n", + " 'fit': array([False, False, False, ..., False, False, False]),\n", + " 'wat': array([False, False, False, ..., False, False, False]),\n", + " 'round': array([False, False, False, ..., False, False, False]),\n", + " 'spot': array([False, False, False, ..., False, False, False]),\n", + " 'crack': array([False, False, False, ..., False, False, False]),\n", + " 'lone': array([False, False, False, ..., False, False, False]),\n", + " 'plane': array([False, False, False, ..., False, False, False]),\n", + " 'joe': array([False, False, False, ..., False, False, False]),\n", + " 'dvd': array([False, False, False, ..., False, False, True]),\n", + " 'goodby': array([False, False, False, ..., False, False, False]),\n", + " 'glass': array([False, False, False, ..., False, False, False]),\n", + " 'nose': array([False, False, False, ..., False, False, False]),\n", + " 'upgrad': array([False, False, False, ..., False, False, False]),\n", + " 'nick': array([False, False, False, ..., False, False, False]),\n", + " 'paint': array([False, False, False, ..., False, False, False]),\n", + " 'deal': array([False, False, False, ..., False, False, False]),\n", + " 'wast': array([False, False, False, ..., False, False, False]),\n", + " 'web': array([False, False, False, ..., False, False, False]),\n", + " 'experi': array([False, False, False, ..., False, False, False]),\n", + " 'shine': array([False, False, False, ..., False, False, False]),\n", + " 'finger': array([False, False, False, ..., False, False, False]),\n", + " 'worth': array([False, False, False, ..., False, False, False]),\n", + " 'cover': array([False, False, False, ..., False, False, False]),\n", + " 'leg': array([False, False, False, ..., False, False, False]),\n", + " 'woo': array([False, False, False, ..., False, False, False]),\n", + " 'san': array([False, False, False, ..., False, False, False]),\n", + " 'bag': array([False, False, False, ..., False, False, False]),\n", + " 'chillin': array([False, False, False, ..., False, False, False]),\n", + " 'random': array([False, False, False, ..., False, False, False]),\n", + " 'yummi': array([False, False, False, ..., False, False, False]),\n", + " 'child': array([False, False, False, ..., False, False, False]),\n", + " 'instal': array([False, False, False, ..., False, False, False]),\n", + " 'stress': array([False, False, False, ..., False, False, False]),\n", + " 'street': array([False, False, False, ..., False, False, False]),\n", + " 'john': array([False, False, False, ..., False, False, False]),\n", + " 'hubbi': array([False, False, False, ..., False, False, False]),\n", + " 'channel': array([False, False, False, ..., False, False, False]),\n", + " 'key': array([False, False, False, ..., False, False, False]),\n", + " 'return': array([False, False, False, ..., False, False, False]),\n", + " 'hospit': array([False, False, False, ..., False, False, False]),\n", + " 'mcfli': array([False, False, False, ..., False, False, False]),\n", + " 'quick': array([False, False, False, ..., False, False, False]),\n", + " 'peac': array([False, False, False, ..., False, False, False]),\n", + " 'island': array([False, False, False, ..., False, False, False]),\n", + " 'major': array([False, False, False, ..., False, False, False]),\n", + " 'fire': array([False, False, False, ..., False, False, False]),\n", + " 'magic': array([False, False, False, ..., False, False, False]),\n", + " 'stick': array([False, False, False, ..., False, False, False]),\n", + " 'midnight': array([False, False, False, ..., False, False, False]),\n", + " 'current': array([False, False, False, ..., False, False, False]),\n", + " 'def': array([False, False, False, ..., False, False, False]),\n", + " 'meant': array([False, False, False, ..., False, False, False]),\n", + " 'daddi': array([False, False, False, ..., False, False, False]),\n", + " 'brain': array([False, False, False, ..., False, False, False]),\n", + " 'caught': array([False, False, False, ..., False, False, False]),\n", + " 'request': array([False, False, False, ..., False, False, False]),\n", + " 'fri': array([False, False, False, ..., False, False, False]),\n", + " 'toni': array([False, False, False, ..., False, False, False]),\n", + " 'ny': array([False, False, False, ..., False, False, False]),\n", + " 'special': array([False, False, False, ..., False, False, False]),\n", + " 'screen': array([False, False, False, ..., False, False, False]),\n", + " 'pizza': array([False, False, False, ..., False, False, False]),\n", + " 'hilari': array([False, False, False, ..., False, False, False]),\n", + " 'singl': array([False, False, False, ..., False, False, False]),\n", + " 'exactli': array([False, False, False, ..., False, False, False]),\n", + " 'somebodi': array([False, False, False, ..., False, False, False]),\n", + " 'bb': array([False, False, False, ..., False, False, False]),\n", + " 'hangov': array([False, False, False, ..., False, False, False]),\n", + " 'step': array([False, False, False, ..., False, False, False]),\n", + " 'chicken': array([False, False, False, ..., False, False, False]),\n", + " 'gosh': array([False, False, False, ..., False, False, False]),\n", + " 'pink': array([False, False, False, ..., False, False, False]),\n", + " 'report': array([False, False, False, ..., False, False, False]),\n", + " 'doin': array([False, False, False, ..., False, False, False]),\n", + " 'cup': array([False, False, False, ..., False, False, False]),\n", + " 'event': array([False, False, False, ..., False, False, False]),\n", + " 'track': array([False, False, False, ..., False, False, False]),\n", + " 'confus': array([False, False, False, ..., False, False, False]),\n", + " 'low': array([False, False, False, ..., False, False, False]),\n", + " 'sort': array([False, False, False, ..., False, False, False]),\n", + " 'travel': array([False, False, False, ..., False, False, False]),\n", + " 'anywher': array([False, False, False, ..., False, False, False]),\n", + " 'view': array([False, False, False, ..., False, False, False]),\n", + " 'ff': array([False, False, False, ..., False, False, False]),\n", + " 'mark': array([False, False, False, ..., False, False, False]),\n", + " 'along': array([False, False, False, ..., False, False, False]),\n", + " 'cd': array([False, False, False, ..., False, False, False]),\n", + " 'seriou': array([False, False, False, ..., False, False, False]),\n", + " 'isnt': array([False, False, False, ..., False, False, False]),\n", + " 'copi': array([False, False, False, ..., False, False, False]),\n", + " 'sum': array([False, False, False, ..., False, False, False]),\n", + " 'bowl': array([False, False, False, ..., False, False, False]),\n", + " 'plz': array([False, False, False, ..., False, False, False]),\n", + " 'ooh': array([False, False, False, ..., False, False, False]),\n", + " 'yup': array([False, False, False, ..., False, False, False]),\n", + " 'promis': array([False, False, False, ..., False, False, False]),\n", + " '½': array([False, False, False, ..., False, False, False]),\n", + " 'guitar': array([False, False, False, ..., False, False, False]),\n", + " 'z': array([False, False, False, ..., False, False, False]),\n", + " 'america': array([False, False, False, ..., False, False, False]),\n", + " 'anim': array([False, False, False, ..., False, False, False]),\n", + " 'joy': array([False, False, False, ..., False, False, False]),\n", + " 'button': array([False, False, False, ..., False, False, False]),\n", + " 'storm': array([False, False, False, ..., False, False, False]),\n", + " 'four': array([False, False, False, ..., False, False, False]),\n", + " 'board': array([False, False, False, ..., False, False, False]),\n", + " 'suggest': array([False, False, False, ..., False, False, False]),\n", + " 'argh': array([False, False, False, ..., False, False, False]),\n", + " 'ohh': array([False, False, False, ..., False, False, False]),\n", + " 'bummer': array([False, False, False, ..., False, False, False]),\n", + " 'eh': array([False, False, False, ..., False, False, False]),\n", + " 'perform': array([False, False, False, ..., False, False, False]),\n", + " 'deserv': array([False, False, False, ..., False, False, False]),\n", + " 'daughter': array([False, False, False, ..., False, False, False]),\n", + " 'hannah': array([False, False, False, ..., False, False, False]),\n", + " 'somehow': array([False, False, False, ..., False, False, False]),\n", + " 'cooki': array([False, False, False, ..., False, False, False]),\n", + " 'yum': array([False, False, False, ..., False, False, False]),\n", + " 'art': array([False, False, False, ..., False, False, False]),\n", + " 'ju': array([False, False, False, ..., False, False, False]),\n", + " 'surpris': array([False, False, False, ..., False, False, False]),\n", + " 'direct': array([False, False, False, ..., False, False, False]),\n", + " 'version': array([False, False, False, ..., False, False, False]),\n", + " 'gettin': array([False, False, False, ..., False, False, False]),\n", + " 'ouch': array([False, False, False, ..., False, False, False]),\n", + " 'unless': array([False, False, False, ..., False, False, False]),\n", + " 'arm': array([False, False, False, ..., False, False, False]),\n", + " 'proud': array([False, False, False, ..., False, False, False]),\n", + " 'futur': array([False, False, False, ..., False, False, False]),\n", + " 'chees': array([False, False, False, ..., False, False, False]),\n", + " 'teeth': array([False, False, False, ..., False, False, False]),\n", + " 'buddi': array([False, False, False, ..., False, False, False]),\n", + " 'cough': array([False, False, False, ..., False, False, False]),\n", + " 'appli': array([False, False, False, ..., False, False, False]),\n", + " 'laundri': array([False, False, False, ..., False, False, False]),\n", + " 'result': array([False, False, False, ..., False, False, False]),\n", + " 'epic': array([False, False, False, ..., False, False, False]),\n", + " 'vega': array([False, False, False, ..., False, False, False]),\n", + " 'nyc': array([False, False, False, ..., False, False, False]),\n", + " 'delet': array([False, False, False, ..., False, False, False]),\n", + " 'ador': array([False, False, False, ..., False, False, False]),\n", + " 'fish': array([False, False, False, ..., False, False, False]),\n", + " 'ga': array([False, False, False, ..., False, False, False]),\n", + " 'holi': array([False, False, False, ..., False, False, False]),\n", + " 'tweep': array([False, False, False, ..., False, False, False]),\n", + " 'info': array([False, False, False, ..., False, False, False]),\n", + " 'cross': array([False, False, False, ..., False, False, False]),\n", + " 'grade': array([False, False, False, ..., False, False, False]),\n", + " 'extra': array([False, False, False, ..., False, False, False]),\n", + " 'pop': array([False, False, False, ..., False, False, False]),\n", + " 'posit': array([False, False, False, ..., False, False, False]),\n", + " 'hahah': array([False, False, False, ..., False, False, False]),\n", + " 'nervou': array([False, False, False, ..., False, False, False]),\n", + " 'nah': array([False, False, False, ..., False, False, False]),\n", + " 'normal': array([False, False, False, ..., False, False, False]),\n", + " 'jack': array([False, False, False, ..., False, False, False]),\n", + " 'alex': array([False, False, False, ..., False, False, False]),\n", + " 'airport': array([False, False, False, ..., False, False, False]),\n", + " ...}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feature_data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gogetdaywathigoodworklovelikequot...dvrglobestilowwwwshadowrusseladmirvegetprotestrochest
0FalseFalseTrueFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
4FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
..................................................................
19995TrueFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19996FalseFalseFalseTrueFalseTrueFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19997FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19998FalseFalseFalseFalseTrueTrueFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19999FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
\n", + "

20000 rows × 5000 columns

\n", + "
" + ], + "text/plain": [ + " go get day wa thi good work love like quot \\\n", + "0 False False True False False False False False False False \n", + "1 False False False False False False False False False False \n", + "2 False False False False False False False False False False \n", + "3 False False False False False False False False False False \n", + "4 False False False False False False False False False False \n", + "... ... ... ... ... ... ... ... ... ... ... \n", + "19995 True False False False False False False False False False \n", + "19996 False False False True False True False False False False \n", + "19997 False False False False False False False False False False \n", + "19998 False False False False True True False False False False \n", + "19999 False False False False False False False False False False \n", + "\n", + " ... dvr globe stil owwww shadow russel admir veget protest \\\n", + "0 ... False False False False False False False False False \n", + "1 ... False False False False False False False False False \n", + "2 ... False False False False False False False False False \n", + "3 ... False False False False False False False False False \n", + "4 ... False False False False False False False False False \n", + "... ... ... ... ... ... ... ... ... ... ... \n", + "19995 ... False False False False False False False False False \n", + "19996 ... False False False False False False False False False \n", + "19997 ... False False False False False False False False False \n", + "19998 ... False False False False False False False False False \n", + "19999 ... False False False False False False False False False \n", + "\n", + " rochest \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 False \n", + "4 False \n", + "... ... \n", + "19995 False \n", + "19996 False \n", + "19997 False \n", + "19998 False \n", + "19999 False \n", + "\n", + "[20000 rows x 5000 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package vader_lexicon to\n", + "[nltk_data] C:\\Users\\pc\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package vader_lexicon is already up-to-date!\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gogetdaywathigoodworklovelikequot...globestilowwwwshadowrusseladmirvegetprotestrochestpositive_tone
0FalseFalseTrueFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseTrue
3FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseTrue
4FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
..................................................................
19995TrueFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19996FalseFalseFalseTrueFalseTrueFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseTrue
19997FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19998FalseFalseFalseFalseTrueTrueFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseTrue
19999FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
\n", + "

20000 rows × 5001 columns

\n", + "
" + ], + "text/plain": [ + " go get day wa thi good work love like quot \\\n", + "0 False False True False False False False False False False \n", + "1 False False False False False False False False False False \n", + "2 False False False False False False False False False False \n", + "3 False False False False False False False False False False \n", + "4 False False False False False False False False False False \n", + "... ... ... ... ... ... ... ... ... ... ... \n", + "19995 True False False False False False False False False False \n", + "19996 False False False True False True False False False False \n", + "19997 False False False False False False False False False False \n", + "19998 False False False False True True False False False False \n", + "19999 False False False False False False False False False False \n", + "\n", + " ... globe stil owwww shadow russel admir veget protest \\\n", + "0 ... False False False False False False False False \n", + "1 ... False False False False False False False False \n", + "2 ... False False False False False False False False \n", + "3 ... False False False False False False False False \n", + "4 ... False False False False False False False False \n", + "... ... ... ... ... ... ... ... ... ... \n", + "19995 ... False False False False False False False False \n", + "19996 ... False False False False False False False False \n", + "19997 ... False False False False False False False False \n", + "19998 ... False False False False False False False False \n", + "19999 ... False False False False False False False False \n", + "\n", + " rochest positive_tone \n", + "0 False False \n", + "1 False False \n", + "2 False True \n", + "3 False True \n", + "4 False False \n", + "... ... ... \n", + "19995 False False \n", + "19996 False True \n", + "19997 False False \n", + "19998 False True \n", + "19999 False False \n", + "\n", + "[20000 rows x 5001 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nltk.download('vader_lexicon')\n", + "\n", + "sia = SentimentIntensityAnalyzer()\n", + "\n", + "def get_sentiment(text):\n", + " scores = sia.polarity_scores(text)\n", + " compound_score = scores['compound']\n", + " return compound_score > 0\n", + "\n", + "# joining all words separated by spaces so we get a coherent string\n", + "data['positive_tone'] = data.apply(lambda row: get_sentiment(' '.join(row.index[row])), axis=1)\n", + "data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building and Training Naive Bayes Model\n", + "\n", + "In this step you will split your feature set into a training and a test set. Then you will create a Bayes classifier instance using `nltk.NaiveBayesClassifier.train` ([example](https://www.nltk.org/book/ch06.html)) to train with the training dataset.\n", + "\n", + "After training the model, call `classifier.show_most_informative_features()` to inspect the most important features. The output will look like:\n", + "\n", + "```\n", + "Most Informative Features\n", + "\t snow = True False : True = 34.3 : 1.0\n", + "\t easter = True False : True = 26.2 : 1.0\n", + "\t headach = True False : True = 20.9 : 1.0\n", + "\t argh = True False : True = 17.6 : 1.0\n", + "\tunfortun = True False : True = 16.9 : 1.0\n", + "\t jona = True True : False = 16.2 : 1.0\n", + "\t ach = True False : True = 14.9 : 1.0\n", + "\t sad = True False : True = 13.0 : 1.0\n", + "\t parent = True False : True = 12.9 : 1.0\n", + "\t spring = True False : True = 12.7 : 1.0\n", + "```\n", + "\n", + "The [following video](https://www.youtube.com/watch?v=rISOsUaTrO4) will help you complete this step. The source code in this video can be found [here](https://pythonprogramming.net/naive-bayes-classifier-nltk-tutorial/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![Building and Training NB](nb-model-building.jpg)](https://www.youtube.com/watch?v=rISOsUaTrO4)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "X = data.drop(columns=['positive_tone'])\n", + "y = data['positive_tone']" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "train_data = []\n", + "for i in range(len(X)):\n", + " features = X.iloc[i].to_dict()\n", + " label = y.iloc[i]\n", + " train_data.append((features, label))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "({'go': False,\n", + " 'get': False,\n", + " 'day': True,\n", + " 'wa': False,\n", + " 'thi': False,\n", + " 'good': False,\n", + " 'work': False,\n", + " 'love': False,\n", + " 'like': False,\n", + " 'quot': False,\n", + " 'got': False,\n", + " 'today': False,\n", + " 'u': True,\n", + " 'time': False,\n", + " 'want': False,\n", + " 'lol': False,\n", + " 'one': False,\n", + " 'back': False,\n", + " 'miss': False,\n", + " 'thank': False,\n", + " 'know': False,\n", + " 'see': False,\n", + " 'feel': False,\n", + " 'amp': False,\n", + " 'think': False,\n", + " 'im': False,\n", + " 'realli': False,\n", + " 'night': False,\n", + " 'watch': False,\n", + " 'still': False,\n", + " 'make': False,\n", + " 'new': False,\n", + " 'na': False,\n", + " 'oh': False,\n", + " 'need': False,\n", + " 'well': False,\n", + " 'look': False,\n", + " 'home': False,\n", + " 'come': False,\n", + " 'last': False,\n", + " 'hope': False,\n", + " 'ha': False,\n", + " 'much': False,\n", + " 'twitter': False,\n", + " 'morn': False,\n", + " 'sleep': False,\n", + " 'great': False,\n", + " 'tomorrow': False,\n", + " 'wish': False,\n", + " 'wait': False,\n", + " 'fun': False,\n", + " 'sad': False,\n", + " 'veri': False,\n", + " 'follow': False,\n", + " 'sorri': False,\n", + " 'tri': False,\n", + " 'onli': False,\n", + " 'haha': False,\n", + " 'week': False,\n", + " 'right': False,\n", + " 'whi': False,\n", + " 'friend': False,\n", + " 'happi': False,\n", + " 'bad': False,\n", + " 'way': False,\n", + " 'say': False,\n", + " 'would': False,\n", + " 'tonight': False,\n", + " 'gon': False,\n", + " 'thing': False,\n", + " 'nice': False,\n", + " 'take': False,\n", + " 'yeah': False,\n", + " 'hi': False,\n", + " 'hate': False,\n", + " 'tweet': False,\n", + " 'even': False,\n", + " 'could': False,\n", + " 'better': False,\n", + " 'bed': False,\n", + " 'though': False,\n", + " 'hour': False,\n", + " 'peopl': False,\n", + " 'school': False,\n", + " 'show': False,\n", + " 'awesom': False,\n", + " 'x': False,\n", + " 'tire': False,\n", + " 'start': False,\n", + " 'weekend': False,\n", + " 'guy': False,\n", + " 'use': False,\n", + " 'hey': False,\n", + " 'rain': False,\n", + " 'let': False,\n", + " 'sick': False,\n", + " 'play': False,\n", + " 'life': False,\n", + " 'never': False,\n", + " 'first': False,\n", + " 'final': False,\n", + " 'year': False,\n", + " 'bore': False,\n", + " 'dont': False,\n", + " 'p': False,\n", + " 'lt': False,\n", + " 'movi': False,\n", + " 'best': False,\n", + " 'ye': False,\n", + " 'girl': True,\n", + " 'everyon': False,\n", + " 'head': False,\n", + " 'ok': False,\n", + " 'wan': False,\n", + " 'next': False,\n", + " 'long': False,\n", + " 'littl': False,\n", + " 'suck': False,\n", + " 'find': True,\n", + " 'ani': False,\n", + " 'help': False,\n", + " 'pleas': False,\n", + " 'alway': False,\n", + " 'lot': False,\n", + " 'soon': False,\n", + " 'made': False,\n", + " 'alreadi': False,\n", + " 'eat': False,\n", + " 'call': False,\n", + " 'hurt': False,\n", + " 'went': False,\n", + " 'phone': False,\n", + " 'n': False,\n", + " 'cant': False,\n", + " 'yet': False,\n", + " 'done': False,\n", + " 'man': False,\n", + " 'readi': False,\n", + " 'live': False,\n", + " 'thought': False,\n", + " 'sure': False,\n", + " 'befor': False,\n", + " 'damn': False,\n", + " 'keep': False,\n", + " 'cool': False,\n", + " 'b': False,\n", + " 'enjoy': False,\n", + " 'listen': False,\n", + " 'leav': False,\n", + " 'ever': False,\n", + " 'talk': False,\n", + " 'song': False,\n", + " 'someth': False,\n", + " 'earli': False,\n", + " 'ur': False,\n", + " 'mayb': False,\n", + " 'wow': False,\n", + " 'becaus': False,\n", + " 'read': False,\n", + " 'tell': False,\n", + " 'anoth': False,\n", + " 'omg': False,\n", + " 'yay': False,\n", + " 'excit': False,\n", + " 'amaz': False,\n", + " 'away': False,\n", + " 'left': False,\n", + " 'pretti': False,\n", + " 'doe': False,\n", + " 'stuff': False,\n", + " 'th': False,\n", + " 'sound': False,\n", + " 'later': False,\n", + " 'parti': False,\n", + " 'babi': False,\n", + " 'hot': False,\n", + " 'w': False,\n", + " 'old': False,\n", + " 'check': False,\n", + " 'game': False,\n", + " 'hous': False,\n", + " 'someon': False,\n", + " 'noth': False,\n", + " 'hear': False,\n", + " 'end': False,\n", + " 'give': False,\n", + " 'pic': False,\n", + " 'fuck': False,\n", + " 'guess': False,\n", + " 'bit': False,\n", + " 'summer': False,\n", + " 'late': False,\n", + " 'big': False,\n", + " 'lost': False,\n", + " 'saw': False,\n", + " 'mean': False,\n", + " 'mom': False,\n", + " 'also': False,\n", + " 'finish': False,\n", + " 'stay': False,\n", + " 'post': False,\n", + " 'sun': False,\n", + " 'monday': False,\n", + " 'beauti': False,\n", + " 'birthday': False,\n", + " 'meet': False,\n", + " 'weather': False,\n", + " 'world': False,\n", + " 'god': False,\n", + " 'video': False,\n", + " 'ta': False,\n", + " 'iphon': False,\n", + " 'put': False,\n", + " 'ya': False,\n", + " 'actual': False,\n", + " 'r': False,\n", + " 'cri': False,\n", + " 'happen': False,\n", + " 'job': False,\n", + " 'wonder': False,\n", + " 'found': False,\n", + " 'updat': False,\n", + " 'hair': False,\n", + " 'luck': False,\n", + " 'run': False,\n", + " 'exam': False,\n", + " 'two': False,\n", + " 'hard': False,\n", + " 'far': False,\n", + " 'ugh': False,\n", + " 'friday': False,\n", + " 'stop': False,\n", + " 'sinc': False,\n", + " 'lunch': False,\n", + " 'kid': False,\n", + " 'okay': False,\n", + " 'said': False,\n", + " 'yesterday': False,\n", + " 'com': False,\n", + " 'woke': False,\n", + " 'mani': False,\n", + " 'cold': False,\n", + " 'might': False,\n", + " 'car': False,\n", + " 'must': False,\n", + " 'around': False,\n", + " 'sunday': False,\n", + " 'plan': False,\n", + " 'glad': False,\n", + " 'busi': False,\n", + " 'everyth': False,\n", + " 'food': False,\n", + " 'least': False,\n", + " 'welcom': False,\n", + " 'caus': False,\n", + " 'book': False,\n", + " 'dream': False,\n", + " 'month': False,\n", + " 'anyon': False,\n", + " 'cute': False,\n", + " 'pictur': False,\n", + " 'everi': False,\n", + " 'shit': False,\n", + " 'e': False,\n", + " 'tho': False,\n", + " 'poor': False,\n", + " 'seem': False,\n", + " 'gt': False,\n", + " 'total': False,\n", + " 'buy': False,\n", + " 'funni': False,\n", + " 'move': False,\n", + " 'anyth': False,\n", + " 'may': False,\n", + " 'gone': False,\n", + " 'chang': False,\n", + " 'hahaha': False,\n", + " 'probabl': False,\n", + " 'dinner': False,\n", + " 'place': False,\n", + " 'drink': False,\n", + " 'c': False,\n", + " 'boy': False,\n", + " 'forward': False,\n", + " 'shop': False,\n", + " 'almost': False,\n", + " 'minut': False,\n", + " 'music': False,\n", + " 'drive': False,\n", + " 'wrong': False,\n", + " 'dad': False,\n", + " 'ask': False,\n", + " 'fan': False,\n", + " 'g': False,\n", + " 'without': False,\n", + " 'famili': False,\n", + " 'sit': False,\n", + " 'till': False,\n", + " 'real': False,\n", + " 'mine': False,\n", + " 'win': False,\n", + " 'walk': False,\n", + " 'aww': False,\n", + " 'set': False,\n", + " 'brother': False,\n", + " 'headach': False,\n", + " 'break': False,\n", + " 'outsid': False,\n", + " 'didnt': False,\n", + " 'seen': False,\n", + " 'word': False,\n", + " 'xx': False,\n", + " 'ñ': False,\n", + " 'onc': False,\n", + " 'idea': False,\n", + " 'free': False,\n", + " 'class': False,\n", + " 'write': False,\n", + " 'enough': False,\n", + " 'train': False,\n", + " 'rock': False,\n", + " 'blog': False,\n", + " 'person': False,\n", + " 'die': False,\n", + " 'room': False,\n", + " 'open': False,\n", + " 'believ': False,\n", + " 'money': False,\n", + " 'stupid': False,\n", + " 'clean': False,\n", + " 'goodnight': False,\n", + " 'crazi': False,\n", + " 'wont': False,\n", + " 'wake': False,\n", + " 'danc': False,\n", + " 'text': False,\n", + " 'tv': False,\n", + " 'half': False,\n", + " 'turn': False,\n", + " 'send': False,\n", + " 'fail': False,\n", + " 'eye': False,\n", + " 'hit': False,\n", + " 'sweet': False,\n", + " 'rememb': False,\n", + " 'june': False,\n", + " 'l': False,\n", + " 'ill': False,\n", + " 'alon': False,\n", + " 'aw': False,\n", + " 'awww': False,\n", + " 'k': False,\n", + " 'studi': False,\n", + " 'took': False,\n", + " 'heart': False,\n", + " 'kill': False,\n", + " 'internet': False,\n", + " 'face': False,\n", + " 'care': False,\n", + " 'hello': False,\n", + " 'whole': False,\n", + " 'mother': False,\n", + " 'anymor': False,\n", + " 'abl': False,\n", + " 'full': False,\n", + " 'saturday': False,\n", + " 'stori': False,\n", + " 'pain': False,\n", + " 'anyway': False,\n", + " 'offic': False,\n", + " 'true': False,\n", + " 'came': False,\n", + " 'either': False,\n", + " 'problem': False,\n", + " 'serious': False,\n", + " 'sooo': False,\n", + " 'ride': False,\n", + " 'star': False,\n", + " 'soo': False,\n", + " 'worri': True,\n", + " 'repli': False,\n", + " 'coffe': False,\n", + " 'v': False,\n", + " 'kind': False,\n", + " 'link': False,\n", + " 'name': False,\n", + " 'hell': False,\n", + " 'dog': False,\n", + " 'ð': False,\n", + " 'beach': False,\n", + " 'news': False,\n", + " 'interest': False,\n", + " 'site': False,\n", + " 'add': False,\n", + " 'hang': False,\n", + " 'togeth': False,\n", + " 'smile': False,\n", + " 'pay': False,\n", + " 'photo': False,\n", + " 'la': False,\n", + " 'kinda': False,\n", + " 'comput': False,\n", + " 'hand': False,\n", + " 'super': False,\n", + " 'close': False,\n", + " 'â': False,\n", + " 'bring': False,\n", + " 'trip': False,\n", + " 'f': False,\n", + " 'fix': False,\n", + " 'onlin': False,\n", + " 'part': False,\n", + " 'quit': False,\n", + " 'vote': False,\n", + " 'told': False,\n", + " 'stuck': False,\n", + " 'learn': False,\n", + " 'pm': False,\n", + " 'shower': False,\n", + " 'pick': False,\n", + " 'share': False,\n", + " 'cat': False,\n", + " 'favorit': False,\n", + " 'min': False,\n", + " 'hehe': False,\n", + " 'www': False,\n", + " 'bought': False,\n", + " 'email': False,\n", + " 'dead': False,\n", + " 'awak': False,\n", + " 'mind': False,\n", + " 'visit': False,\n", + " 'ticket': False,\n", + " 'mileycyru': False,\n", + " 'messag': False,\n", + " 'high': False,\n", + " 'cours': False,\n", + " 'btw': False,\n", + " 'cream': False,\n", + " 'date': False,\n", + " 'forget': False,\n", + " 'wear': False,\n", + " 'pack': False,\n", + " 'test': False,\n", + " 'london': False,\n", + " 'wed': False,\n", + " 'ah': False,\n", + " 'figur': False,\n", + " 'chocol': False,\n", + " 'boo': False,\n", + " 'dude': False,\n", + " 'sunni': False,\n", + " 'els': False,\n", + " 'rest': False,\n", + " 'bout': False,\n", + " 'lucki': False,\n", + " 'breakfast': False,\n", + " 'facebook': False,\n", + " 'asleep': False,\n", + " 'page': False,\n", + " 'hug': False,\n", + " 'sometim': False,\n", + " 'homework': False,\n", + " 'sigh': False,\n", + " 'red': False,\n", + " 'bye': False,\n", + " 'broke': False,\n", + " 'lil': False,\n", + " 'yea': False,\n", + " 'afternoon': False,\n", + " 'til': False,\n", + " 'cut': False,\n", + " 'le': False,\n", + " 'foot': False,\n", + " 'coupl': False,\n", + " 'st': False,\n", + " 'unfortun': False,\n", + " 'ladi': False,\n", + " 'forgot': False,\n", + " 'spend': False,\n", + " 'fall': False,\n", + " 'scare': False,\n", + " 'j': False,\n", + " 'ago': False,\n", + " 'citi': False,\n", + " 'ice': False,\n", + " 'goin': False,\n", + " 'park': False,\n", + " 'list': False,\n", + " 'mad': False,\n", + " 'nap': False,\n", + " 'youtub': False,\n", + " 'cuz': False,\n", + " 'line': False,\n", + " 'heard': False,\n", + " 'congrat': False,\n", + " 'laptop': False,\n", + " 'ddlovato': False,\n", + " 'suppos': False,\n", + " 'team': False,\n", + " 'short': False,\n", + " 'appar': False,\n", + " 'season': False,\n", + " 'nite': False,\n", + " 'ì': False,\n", + " 'concert': False,\n", + " 'via': False,\n", + " 'lose': False,\n", + " 'side': False,\n", + " 'water': False,\n", + " 'sign': False,\n", + " 'hmm': False,\n", + " 'worst': False,\n", + " 'plu': False,\n", + " 'weird': False,\n", + " 'mum': False,\n", + " 'tea': False,\n", + " 'graduat': False,\n", + " 'gym': False,\n", + " 'celebr': False,\n", + " 'catch': False,\n", + " 'dear': False,\n", + " 'town': False,\n", + " 'h': False,\n", + " 'lmao': False,\n", + " 'pool': False,\n", + " 'crap': False,\n", + " 'past': False,\n", + " 'depress': False,\n", + " 'annoy': False,\n", + " 'father': False,\n", + " 'sister': False,\n", + " 'jealou': False,\n", + " 'point': False,\n", + " 'bday': False,\n", + " 'miley': False,\n", + " 'offici': False,\n", + " 'mr': False,\n", + " 'tour': False,\n", + " 'sore': False,\n", + " 'definit': False,\n", + " 'reason': False,\n", + " 'ipod': False,\n", + " 'tommcfli': False,\n", + " 'hill': False,\n", + " 'shot': False,\n", + " 'followfriday': False,\n", + " 'nd': False,\n", + " 'fb': False,\n", + " 'join': False,\n", + " 'upset': False,\n", + " 'instead': False,\n", + " 'dress': False,\n", + " 'possibl': False,\n", + " 'sunshin': False,\n", + " 'fine': False,\n", + " 'age': False,\n", + " 'moment': False,\n", + " 'award': False,\n", + " 'chanc': False,\n", + " 'decid': False,\n", + " 'perfect': False,\n", + " 'record': False,\n", + " 'wors': False,\n", + " 'fli': False,\n", + " 'relax': False,\n", + " 'card': False,\n", + " 'cancel': False,\n", + " 'episod': False,\n", + " 'complet': False,\n", + " 'remind': False,\n", + " 'download': False,\n", + " 'ppl': False,\n", + " 'parent': False,\n", + " 'cook': False,\n", + " 'top': False,\n", + " 'bless': False,\n", + " 'son': False,\n", + " 'shirt': False,\n", + " 'app': False,\n", + " 'air': False,\n", + " 'fight': False,\n", + " 'tuesday': False,\n", + " 'yep': False,\n", + " 'soooo': False,\n", + " 'kick': False,\n", + " 'usual': False,\n", + " 'invit': False,\n", + " 'co': False,\n", + " 'mood': False,\n", + " 'ë': False,\n", + " 'websit': False,\n", + " 'cake': False,\n", + " 'window': False,\n", + " 'lay': False,\n", + " 'jona': False,\n", + " 'ive': False,\n", + " 'fast': False,\n", + " 'differ': False,\n", + " 'load': False,\n", + " 'order': False,\n", + " 'myspac': False,\n", + " 'freak': False,\n", + " 'bro': False,\n", + " 'agre': False,\n", + " 'save': False,\n", + " 'camp': False,\n", + " 'drop': False,\n", + " 'uk': False,\n", + " 'rather': False,\n", + " 'xxx': False,\n", + " 'comment': False,\n", + " 'ate': False,\n", + " 'cheer': False,\n", + " 'nope': False,\n", + " 'piss': False,\n", + " 'garden': False,\n", + " 'album': False,\n", + " 'appreci': False,\n", + " 'camera': False,\n", + " 'second': False,\n", + " 'sim': False,\n", + " 'warm': False,\n", + " 'arriv': False,\n", + " 'realiz': False,\n", + " 'power': False,\n", + " 'babe': False,\n", + " 'support': False,\n", + " 'ad': False,\n", + " 'laugh': False,\n", + " 'revis': False,\n", + " 'lame': False,\n", + " 'flight': False,\n", + " 'broken': False,\n", + " 'hungri': False,\n", + " 'block': False,\n", + " 'shame': False,\n", + " 'holiday': False,\n", + " 'account': False,\n", + " 'fell': False,\n", + " 'paper': False,\n", + " 'sing': False,\n", + " 'answer': False,\n", + " 'hold': False,\n", + " 'pa': False,\n", + " 'light': False,\n", + " 'sleepi': False,\n", + " 'slow': False,\n", + " 'design': False,\n", + " 'taken': False,\n", + " 'mate': False,\n", + " 'da': False,\n", + " 'question': False,\n", + " 'xd': False,\n", + " 'bet': False,\n", + " 'except': False,\n", + " 'chat': False,\n", + " 'three': False,\n", + " 'colleg': False,\n", + " 'band': False,\n", + " 'voic': False,\n", + " 'sent': False,\n", + " 'juli': False,\n", + " 'beat': False,\n", + " 'blue': False,\n", + " 'longer': False,\n", + " 'wtf': False,\n", + " 'thx': False,\n", + " 'dure': False,\n", + " 'bum': False,\n", + " 'race': False,\n", + " 'david': False,\n", + " 'mac': False,\n", + " 'kate': False,\n", + " 'slept': False,\n", + " 'road': False,\n", + " 'bu': False,\n", + " 'twilight': False,\n", + " 'green': False,\n", + " 'hr': False,\n", + " 'ahh': False,\n", + " 'hmmm': False,\n", + " 'terribl': False,\n", + " 'throat': False,\n", + " 'wednesday': False,\n", + " 'manag': False,\n", + " 'wit': False,\n", + " 'store': False,\n", + " 'woman': False,\n", + " 'sat': False,\n", + " 'tear': False,\n", + " 'white': False,\n", + " 'huge': False,\n", + " 'luv': False,\n", + " 'doesnt': False,\n", + " 'near': False,\n", + " 'upload': False,\n", + " 'easi': False,\n", + " 'yr': False,\n", + " 'church': False,\n", + " 'everybodi': False,\n", + " 'connect': False,\n", + " 'disappoint': False,\n", + " 'english': False,\n", + " 'math': False,\n", + " 'group': False,\n", + " 'bodi': False,\n", + " 'havent': False,\n", + " 'bike': False,\n", + " 'met': False,\n", + " 'troubl': False,\n", + " 'tom': False,\n", + " 'forev': False,\n", + " 'crash': False,\n", + " 'earlier': False,\n", + " 'si': False,\n", + " 'case': False,\n", + " 'angel': False,\n", + " 'absolut': False,\n", + " 'shoe': False,\n", + " 'mail': False,\n", + " 'expect': False,\n", + " 'bloodi': False,\n", + " 'project': False,\n", + " 'stand': False,\n", + " 'boyfriend': False,\n", + " 'tummi': False,\n", + " 'vacat': False,\n", + " 'ruin': False,\n", + " 'swim': False,\n", + " 'film': False,\n", + " 'product': False,\n", + " 'issu': False,\n", + " 'especi': False,\n", + " 'roll': False,\n", + " 'pull': False,\n", + " 'stomach': False,\n", + " 'rip': False,\n", + " 'aint': False,\n", + " 'black': False,\n", + " 'appl': False,\n", + " 'front': False,\n", + " 'mile': False,\n", + " 'flu': False,\n", + " 'cousin': False,\n", + " 'servic': False,\n", + " 'knew': False,\n", + " 'lazi': False,\n", + " 'count': False,\n", + " 'jonasbroth': False,\n", + " 'etc': False,\n", + " 'touch': False,\n", + " 'ahhh': False,\n", + " 'tan': False,\n", + " 'type': False,\n", + " 'thursday': False,\n", + " 'mess': False,\n", + " 'box': False,\n", + " 'ach': False,\n", + " 'fair': False,\n", + " 'radio': False,\n", + " 'server': False,\n", + " 'dm': False,\n", + " 'mmm': False,\n", + " 'club': False,\n", + " 'whatev': False,\n", + " 'idk': False,\n", + " 'number': False,\n", + " 'raini': False,\n", + " 'blackberri': False,\n", + " 'chill': False,\n", + " 'doctor': False,\n", + " 'practic': False,\n", + " 'lie': False,\n", + " 'dark': False,\n", + " 'gave': False,\n", + " 'mtv': False,\n", + " 'bar': False,\n", + " 'wash': False,\n", + " 'understand': False,\n", + " 'horribl': False,\n", + " 'quiet': False,\n", + " 'due': False,\n", + " 'joke': False,\n", + " 'histori': False,\n", + " 'spent': False,\n", + " 'beer': False,\n", + " 'becom': False,\n", + " 'although': False,\n", + " 'talent': False,\n", + " 'shall': False,\n", + " 'search': False,\n", + " 'heat': False,\n", + " 'memori': False,\n", + " 'bitch': False,\n", + " 'mommi': False,\n", + " 'q': False,\n", + " 'burn': False,\n", + " 'safe': False,\n", + " 'em': False,\n", + " 'death': False,\n", + " 'xoxo': False,\n", + " 'state': False,\n", + " 'fml': False,\n", + " 'uh': False,\n", + " 'blood': False,\n", + " 'bbq': False,\n", + " 'allow': False,\n", + " 'pass': False,\n", + " 'vip': False,\n", + " 'note': False,\n", + " 'insid': False,\n", + " 'sadli': False,\n", + " 'ï': False,\n", + " 'scari': False,\n", + " 'interview': False,\n", + " 'pc': False,\n", + " 'bf': False,\n", + " 'googl': False,\n", + " 'speak': False,\n", + " 'felt': False,\n", + " 'apart': False,\n", + " 'tast': False,\n", + " 'mix': False,\n", + " 'ear': False,\n", + " 'peep': False,\n", + " 'hun': False,\n", + " 'compani': False,\n", + " 'shoot': False,\n", + " 'profil': False,\n", + " 'prob': False,\n", + " 'kiss': False,\n", + " 'yo': False,\n", + " 'notic': False,\n", + " 'rd': False,\n", + " 'moon': False,\n", + " 'emili': False,\n", + " 'exhaust': False,\n", + " 'sky': False,\n", + " 'cloth': False,\n", + " 'pray': False,\n", + " 'french': False,\n", + " 'fit': False,\n", + " 'wat': False,\n", + " 'round': False,\n", + " 'spot': False,\n", + " 'crack': False,\n", + " 'lone': False,\n", + " 'plane': False,\n", + " 'joe': False,\n", + " 'dvd': False,\n", + " 'goodby': False,\n", + " 'glass': False,\n", + " 'nose': False,\n", + " 'upgrad': False,\n", + " 'nick': False,\n", + " 'paint': False,\n", + " 'deal': False,\n", + " 'wast': False,\n", + " 'web': False,\n", + " 'experi': False,\n", + " 'shine': False,\n", + " 'finger': False,\n", + " 'worth': False,\n", + " 'cover': False,\n", + " 'leg': False,\n", + " 'woo': False,\n", + " 'san': False,\n", + " 'bag': False,\n", + " 'chillin': False,\n", + " 'random': False,\n", + " 'yummi': False,\n", + " 'child': False,\n", + " 'instal': False,\n", + " 'stress': False,\n", + " 'street': False,\n", + " 'john': False,\n", + " 'hubbi': False,\n", + " 'channel': False,\n", + " 'key': False,\n", + " 'return': False,\n", + " 'hospit': False,\n", + " 'mcfli': False,\n", + " 'quick': False,\n", + " 'peac': False,\n", + " 'island': False,\n", + " 'major': False,\n", + " 'fire': False,\n", + " 'magic': False,\n", + " 'stick': False,\n", + " 'midnight': False,\n", + " 'current': False,\n", + " 'def': False,\n", + " 'meant': False,\n", + " 'daddi': False,\n", + " 'brain': False,\n", + " 'caught': False,\n", + " 'request': False,\n", + " 'fri': False,\n", + " 'toni': False,\n", + " 'ny': False,\n", + " 'special': False,\n", + " 'screen': False,\n", + " 'pizza': False,\n", + " 'hilari': False,\n", + " 'singl': False,\n", + " 'exactli': False,\n", + " 'somebodi': False,\n", + " 'bb': False,\n", + " 'hangov': False,\n", + " 'step': False,\n", + " 'chicken': False,\n", + " 'gosh': False,\n", + " 'pink': False,\n", + " 'report': False,\n", + " 'doin': False,\n", + " 'cup': False,\n", + " 'event': False,\n", + " 'track': False,\n", + " 'confus': False,\n", + " 'low': False,\n", + " 'sort': False,\n", + " 'travel': False,\n", + " 'anywher': False,\n", + " 'view': False,\n", + " 'ff': False,\n", + " 'mark': False,\n", + " 'along': False,\n", + " 'cd': False,\n", + " 'seriou': False,\n", + " 'isnt': False,\n", + " 'copi': False,\n", + " 'sum': False,\n", + " 'bowl': False,\n", + " 'plz': False,\n", + " 'ooh': False,\n", + " 'yup': False,\n", + " 'promis': False,\n", + " '½': False,\n", + " 'guitar': False,\n", + " 'z': False,\n", + " 'america': False,\n", + " 'anim': False,\n", + " 'joy': False,\n", + " 'button': False,\n", + " 'storm': False,\n", + " 'four': False,\n", + " 'board': False,\n", + " 'suggest': False,\n", + " 'argh': False,\n", + " 'ohh': False,\n", + " 'bummer': False,\n", + " 'eh': False,\n", + " 'perform': False,\n", + " 'deserv': False,\n", + " 'daughter': False,\n", + " 'hannah': False,\n", + " 'somehow': False,\n", + " 'cooki': False,\n", + " 'yum': False,\n", + " 'art': False,\n", + " 'ju': False,\n", + " 'surpris': False,\n", + " 'direct': False,\n", + " 'version': False,\n", + " 'gettin': False,\n", + " 'ouch': False,\n", + " 'unless': False,\n", + " 'arm': False,\n", + " 'proud': False,\n", + " 'futur': False,\n", + " 'chees': False,\n", + " 'teeth': False,\n", + " 'buddi': False,\n", + " 'cough': False,\n", + " 'appli': False,\n", + " 'laundri': False,\n", + " 'result': False,\n", + " 'epic': False,\n", + " 'vega': False,\n", + " 'nyc': False,\n", + " 'delet': False,\n", + " 'ador': False,\n", + " 'fish': False,\n", + " 'ga': False,\n", + " 'holi': False,\n", + " 'tweep': False,\n", + " 'info': False,\n", + " 'cross': False,\n", + " 'grade': False,\n", + " 'extra': False,\n", + " 'pop': False,\n", + " 'posit': False,\n", + " 'hahah': False,\n", + " 'nervou': False,\n", + " 'nah': False,\n", + " 'normal': False,\n", + " 'jack': False,\n", + " 'alex': False,\n", + " 'airport': False,\n", + " ...},\n", + " False)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_data[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Most Informative Features\n", + " great = True True : False = 74.1 : 1.0\n", + " love = True True : False = 62.5 : 1.0\n", + " best = True True : False = 45.9 : 1.0\n", + " yay = True True : False = 42.0 : 1.0\n", + " smile = True True : False = 35.4 : 1.0\n", + " nice = True True : False = 30.6 : 1.0\n", + " luck = True True : False = 29.8 : 1.0\n", + " thank = True True : False = 28.3 : 1.0\n", + " perfect = True True : False = 28.0 : 1.0\n", + " bless = True True : False = 27.2 : 1.0\n" + ] + } + ], + "source": [ + "# Shuffling\n", + "random.shuffle(train_data)\n", + "\n", + "# Train test split\n", + "train_size = int(0.8 * len(train_data))\n", + "train_set = train_data[:train_size]\n", + "test_set = train_data[train_size:]\n", + "\n", + "# Training the model\n", + "classifier = nltk.NaiveBayesClassifier.train(train_set)\n", + "\n", + "# Show the most informative features\n", + "classifier.show_most_informative_features()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing Naive Bayes Model\n", + "\n", + "Now we'll test our classifier with the test dataset. This is done by calling `nltk.classify.accuracy(classifier, test)`.\n", + "\n", + "As mentioned in one of the tutorial videos, a Naive Bayes model is considered OK if your accuracy score is over 0.6. If your accuracy score is over 0.7, you've done a great job!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.88325\n" + ] + } + ], + "source": [ + "accuracy = nltk.classify.accuracy(classifier, test_set)\n", + "print(\"Accuracy:\", accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}