{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os \n",
    "import csv \n",
    "import pandas as pd "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment  \n",
       "0          1  \n",
       "1          2  \n",
       "2          2  \n",
       "3          2  \n",
       "4          2  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews = pd.read_csv(\"WK7/kaggle-sentiment/train.tsv\", delimiter = \"\\t\")\n",
    "reviews.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Visualizing the Data "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>79582</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>32927</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>27273</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>9206</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>7072</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count  sentiment\n",
       "0  79582          2\n",
       "1  32927          3\n",
       "2  27273          1\n",
       "3   9206          4\n",
       "4   7072          0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "label_count = pd.DataFrame(reviews.Sentiment.value_counts())\n",
    "label_count.columns = [\"count\"]\n",
    "label_count[\"sentiment\"] = label_count.index \n",
    "label_count.reset_index(drop = True, inplace = True)\n",
    "label_count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Packages needed for my graphs \n",
    "import seaborn as sns\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt \n",
    "from matplotlib import cm "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with sns.plotting_context(\"talk\"): \n",
    "    sns.barplot(y = \"count\", x = \"sentiment\", data = label_count, \n",
    "                palette = \"GnBu_d\")\n",
    "    plt.title(\"Count of Sentiment by Label\")\n",
    "    plt.xlabel(\"Sentiment\")\n",
    "    plt.ylabel(\"Count\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### When creating the testing and training data, I should have an equal sample size for each sentiment label. The label with the smallest number of entries is 0 with 7072 entries. Therefore I should randomly select 7072 reviews for the other 4 sentiment labels. This will help ensure that the training and testing data is balanced."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Looking at sentence id to determine the number of phrases each sentence is broken up into."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Phrase</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SentenceId</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Phrase\n",
       "SentenceId        \n",
       "1               63\n",
       "2               18\n",
       "3               35\n",
       "4               40\n",
       "5               10"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sentence_phrase_count = pd.DataFrame(reviews.groupby(\"SentenceId\")[\"Phrase\"].count())\n",
    "sentence_phrase_count.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>phrases_per_review</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>375</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>340</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>335</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>328</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>325</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count  phrases_per_review\n",
       "0    375                  14\n",
       "1    340                  19\n",
       "2    335                  15\n",
       "3    328                  16\n",
       "4    325                  18"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "count_phrase_counts = pd.DataFrame(sentence_phrase_count.Phrase.value_counts())\n",
    "count_phrase_counts[\"number_of_phrases\"] = count_phrase_counts.index\n",
    "count_phrase_counts.columns = [\"count\", \"phrases_per_review\"]\n",
    "count_phrase_counts.reset_index(drop = True, inplace = True)\n",
    "count_phrase_counts.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]\n"
     ]
    }
   ],
   "source": [
    "tick_mark_labels = []\n",
    "for num in range (1, 64): \n",
    "    if num%5 == 0: \n",
    "        tick_mark_labels.append(num)\n",
    "print(tick_mark_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4, 9, 14, 19, 24, 29, 34, 39, 44, 49, 54, 59]\n"
     ]
    }
   ],
   "source": [
    "tick_marks = []\n",
    "for num in tick_mark_labels: \n",
    "    new_num = num - 1\n",
    "    tick_marks.append(new_num)\n",
    "print(tick_marks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with sns.plotting_context(\"talk\"):\n",
    "    sns.barplot(y = \"count\", x = \"phrases_per_review\", \n",
    "                 data = count_phrase_counts, palette = \"GnBu_d\")\n",
    "    plt.title(\"Phrases per Review\")\n",
    "    plt.xlabel(\"Phrases per Review\")\n",
    "    plt.ylabel(\"Count\")\n",
    "    plt.xticks(tick_marks, tick_mark_labels, rotation = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The majority of reviews were broken into 7 - 25 phrases..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Creating a dictionary from the reviews to make a word cloud to visualize the phrases."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter \n",
    "def make_dic(df, column): \n",
    "    list_ = df[column].tolist()\n",
    "    string = \" \".join(list_).split()\n",
    "    dic = Counter(string)\n",
    "    return(dic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic = make_dic(reviews, \"Phrase\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from wordcloud import WordCloud, ImageColorGenerator\n",
    "from PIL import Image\n",
    "import numpy as np "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def word_cloud(mask_path, dic, title):    \n",
    "    with sns.plotting_context(\"talk\"):\n",
    "        mask = np.array(Image.open(mask_path))\n",
    "        word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n",
    "                  mask = mask, max_font_size = 125)\n",
    "        word_cloud.generate_from_frequencies(dic)\n",
    "        image_colors = ImageColorGenerator(mask)\n",
    "        plt.figure(figsize = [8,8])\n",
    "        plt.imshow(word_cloud.recolor(color_func = image_colors), \n",
    "                   interpolation = \"bilinear\")\n",
    "        plt.title(title)\n",
    "        plt.axis(\"off\")\n",
    "\n",
    "def all_words_df(dic): \n",
    "    df = pd.DataFrame.from_dict(dic, orient = \"index\")\n",
    "    df.columns = [\"count\"]\n",
    "    df[\"word\"] = df.index \n",
    "    df.reset_index(drop = True, inplace = True)\n",
    "    return(df)\n",
    "\n",
    "def top_words_df(df, num_of_words): \n",
    "    df.sort_values(by = [\"count\"], ascending = False, inplace = True)\n",
    "    df.reset_index(drop = True, inplace = True)\n",
    "    new_df = df[:num_of_words]\n",
    "    \n",
    "    return(new_df)\n",
    "\n",
    "def top_words_barplot(df, title): \n",
    "    with sns.plotting_context(\"talk\"): \n",
    "        sns.barplot(y = \"count\", x = \"word\", data = df, palette = \"GnBu_d\")\n",
    "        plt.ylabel(\"Count\")\n",
    "        plt.xlabel(\"Word\")\n",
    "        plt.xticks(rotation = 90)\n",
    "        plt.title(title)\n",
    "\n",
    "def unique_total_words( type_of_review, df): \n",
    "    print(\"The total number of words in the\", type_of_review, \"reviews is\", sum(df[\"count\"]))\n",
    "    print(\"The total number of unique words in the\", type_of_review, \"reviews is\", len(df))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'tomatoes.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-18-553b4f1b9477>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"tomatoes.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Rotten Tomatoes Reviews\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'tomatoes.png'"
     ]
    }
   ],
   "source": [
    "word_cloud(\"tomatoes.png\", dic, \"Rotten Tomatoes Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_df = all_words_df(dic)\n",
    "words_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_20 = top_words_df(words_df, 20)\n",
    "top_20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_20, \"Top 20 Words\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_total_words(\"all reviews uncleaned\", words_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Separating and visualizing for each sentiment label "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sentiment_subset(df, sentiment_label): \n",
    "    df = df[df[\"Sentiment\"] == sentiment_label]\n",
    "    df.reset_index(drop = True, inplace = True)\n",
    "    print(df.shape)\n",
    "    return(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(7072, 4)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>102</td>\n",
       "      <td>3</td>\n",
       "      <td>would have a hard time sitting through this one</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>104</td>\n",
       "      <td>3</td>\n",
       "      <td>have a hard time sitting through this one</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>158</td>\n",
       "      <td>5</td>\n",
       "      <td>Aggressive self-glorification and a manipulati...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>160</td>\n",
       "      <td>5</td>\n",
       "      <td>self-glorification and a manipulative whitewash</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>202</td>\n",
       "      <td>7</td>\n",
       "      <td>Trouble Every Day is a plodding mess .</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0       102           3    would have a hard time sitting through this one   \n",
       "1       104           3          have a hard time sitting through this one   \n",
       "2       158           5  Aggressive self-glorification and a manipulati...   \n",
       "3       160           5    self-glorification and a manipulative whitewash   \n",
       "4       202           7             Trouble Every Day is a plodding mess .   \n",
       "\n",
       "   Sentiment  \n",
       "0          0  \n",
       "1          0  \n",
       "2          0  \n",
       "3          0  \n",
       "4          0  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_0 = sentiment_subset(reviews, 0)\n",
    "reviews_0.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(27273, 4)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>34</td>\n",
       "      <td>1</td>\n",
       "      <td>the gander , some of which occasionally amuses...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>48</td>\n",
       "      <td>1</td>\n",
       "      <td>but none of which amounts to much of a story</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>none of which amounts to much of a story</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>82</td>\n",
       "      <td>3</td>\n",
       "      <td>Even fans of Ismail Merchant 's work , I suspe...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1        34           1  the gander , some of which occasionally amuses...   \n",
       "2        48           1       but none of which amounts to much of a story   \n",
       "3        50           1           none of which amounts to much of a story   \n",
       "4        82           3  Even fans of Ismail Merchant 's work , I suspe...   \n",
       "\n",
       "   Sentiment  \n",
       "0          1  \n",
       "1          1  \n",
       "2          1  \n",
       "3          1  \n",
       "4          1  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_1 = sentiment_subset(reviews, 1)\n",
    "reviews_1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(79582, 4)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>of escapades demonstrating the adage that what...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         2           1  A series of escapades demonstrating the adage ...   \n",
       "1         3           1                                           A series   \n",
       "2         4           1                                                  A   \n",
       "3         5           1                                             series   \n",
       "4         6           1  of escapades demonstrating the adage that what...   \n",
       "\n",
       "   Sentiment  \n",
       "0          2  \n",
       "1          2  \n",
       "2          2  \n",
       "3          2  \n",
       "4          2  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_2 = sentiment_subset(reviews, 2)\n",
    "reviews_2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(32927, 4)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>good for the goose</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>good</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>47</td>\n",
       "      <td>1</td>\n",
       "      <td>amuses</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>65</td>\n",
       "      <td>2</td>\n",
       "      <td>This quiet , introspective and entertaining in...</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>68</td>\n",
       "      <td>2</td>\n",
       "      <td>quiet , introspective and entertaining</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0        22           1                                 good for the goose   \n",
       "1        23           1                                               good   \n",
       "2        47           1                                             amuses   \n",
       "3        65           2  This quiet , introspective and entertaining in...   \n",
       "4        68           2             quiet , introspective and entertaining   \n",
       "\n",
       "   Sentiment  \n",
       "0          3  \n",
       "1          3  \n",
       "2          3  \n",
       "3          3  \n",
       "4          3  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_3 = sentiment_subset(reviews, 3)\n",
    "reviews_3.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(9206, 4)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>2</td>\n",
       "      <td>This quiet , introspective and entertaining in...</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>67</td>\n",
       "      <td>2</td>\n",
       "      <td>quiet , introspective and entertaining indepen...</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>75</td>\n",
       "      <td>2</td>\n",
       "      <td>entertaining</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>78</td>\n",
       "      <td>2</td>\n",
       "      <td>is worth seeking</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>118</td>\n",
       "      <td>4</td>\n",
       "      <td>A positively thrilling combination of ethnogra...</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0        64           2  This quiet , introspective and entertaining in...   \n",
       "1        67           2  quiet , introspective and entertaining indepen...   \n",
       "2        75           2                                       entertaining   \n",
       "3        78           2                                   is worth seeking   \n",
       "4       118           4  A positively thrilling combination of ethnogra...   \n",
       "\n",
       "   Sentiment  \n",
       "0          4  \n",
       "1          4  \n",
       "2          4  \n",
       "3          4  \n",
       "4          4  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_4 = sentiment_subset(reviews, 4)\n",
    "reviews_4.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Phrase"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_0 = make_dic(reviews_0, \"Phrase\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# word_cloud(\"horrible.png\", dic_0, \"Bad Reviews: \\n Uncleaned\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>143</td>\n",
       "      <td>would</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>245</td>\n",
       "      <td>have</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2572</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>58</td>\n",
       "      <td>hard</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>142</td>\n",
       "      <td>time</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   count   word\n",
       "0    143  would\n",
       "1    245   have\n",
       "2   2572      a\n",
       "3     58   hard\n",
       "4    142   time"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_0 = all_words_df(dic_0)\n",
    "words_0.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>3722</td>\n",
       "      <td>,</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3070</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2572</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2507</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2236</td>\n",
       "      <td>of</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1973</td>\n",
       "      <td>.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1880</td>\n",
       "      <td>to</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1363</td>\n",
       "      <td>is</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1136</td>\n",
       "      <td>'s</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1130</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>998</td>\n",
       "      <td>in</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>927</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>757</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>738</td>\n",
       "      <td>as</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>576</td>\n",
       "      <td>this</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>509</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>488</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>477</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>437</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>424</td>\n",
       "      <td>n't</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0    3722      ,\n",
       "1    3070    the\n",
       "2    2572      a\n",
       "3    2507    and\n",
       "4    2236     of\n",
       "5    1973      .\n",
       "6    1880     to\n",
       "7    1363     is\n",
       "8    1136     's\n",
       "9    1130   that\n",
       "10    998     in\n",
       "11    927     it\n",
       "12    757  movie\n",
       "13    738     as\n",
       "14    576   this\n",
       "15    509    for\n",
       "16    488    its\n",
       "17    477   film\n",
       "18    437   with\n",
       "19    424    n't"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_words_0 = top_words_df(words_0, 20)\n",
    "top_words_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_0, \"Top 20 Words: \\n Bad Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the uncleaned bad reviews is 85609\n",
      "The total number of unique words in the uncleaned bad reviews is 7682\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"uncleaned bad\", words_0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_1 = make_dic(reviews_1, \"Phrase\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# word_cloud(\"bad.png\", dic_1, \"Somewhat Bad Reviews: \\n Uncleaned\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>9712</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>8847</td>\n",
       "      <td>,</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>7327</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>6552</td>\n",
       "      <td>of</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>6078</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>5437</td>\n",
       "      <td>to</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>4432</td>\n",
       "      <td>.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>3506</td>\n",
       "      <td>'s</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>3324</td>\n",
       "      <td>is</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>2941</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>2863</td>\n",
       "      <td>in</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>2697</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>2127</td>\n",
       "      <td>as</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>1685</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>1608</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>1520</td>\n",
       "      <td>n't</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>1484</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>1365</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>1266</td>\n",
       "      <td>but</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>1260</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0    9712    the\n",
       "1    8847      ,\n",
       "2    7327      a\n",
       "3    6552     of\n",
       "4    6078    and\n",
       "5    5437     to\n",
       "6    4432      .\n",
       "7    3506     's\n",
       "8    3324     is\n",
       "9    2941   that\n",
       "10   2863     in\n",
       "11   2697     it\n",
       "12   2127     as\n",
       "13   1685    for\n",
       "14   1608    its\n",
       "15   1520    n't\n",
       "16   1484   with\n",
       "17   1365  movie\n",
       "18   1266    but\n",
       "19   1260   film"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_1 = all_words_df(dic_1)\n",
    "top_words_1 = top_words_df(words_1, 20)\n",
    "top_words_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_1, \"Top 20 Words: \\n Somewhat Bad Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat bad uncleaned reviews is 248512\n",
      "The total number of unique words in the somewhat bad uncleaned reviews is 13400\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat bad uncleaned\", words_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_2 = make_dic(reviews_2, \"Phrase\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# word_cloud(\"neutral.png\", dic_2, \"Neutral Reviews: \\n Uncleaned\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>18638</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>13141</td>\n",
       "      <td>,</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>12126</td>\n",
       "      <td>of</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>11297</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>10062</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>8167</td>\n",
       "      <td>to</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>7001</td>\n",
       "      <td>'s</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>5370</td>\n",
       "      <td>in</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>4114</td>\n",
       "      <td>.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>3634</td>\n",
       "      <td>is</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>3607</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>3411</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>2851</td>\n",
       "      <td>as</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>2837</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>2498</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>2404</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>2131</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>1944</td>\n",
       "      <td>on</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>1898</td>\n",
       "      <td>be</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>1868</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0   18638    the\n",
       "1   13141      ,\n",
       "2   12126     of\n",
       "3   11297      a\n",
       "4   10062    and\n",
       "5    8167     to\n",
       "6    7001     's\n",
       "7    5370     in\n",
       "8    4114      .\n",
       "9    3634     is\n",
       "10   3607   that\n",
       "11   3411     it\n",
       "12   2851     as\n",
       "13   2837    for\n",
       "14   2498    its\n",
       "15   2404   with\n",
       "16   2131   film\n",
       "17   1944     on\n",
       "18   1898     be\n",
       "19   1868  movie"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_2 = all_words_df(dic_2)\n",
    "top_words_2 = top_words_df(words_2, 20)\n",
    "top_words_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_2, \"Top 20 Words: \\n Neutral Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the neutral uncleanned reviews is 413398\n",
      "The total number of unique words in the neutral uncleanned reviews is 17359\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"neutral uncleanned\", words_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_3 = make_dic(reviews_3, \"Phrase\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'good.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-51-53541d58ce81>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"good.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Somewhat Positive: \\n Uncleaned\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'good.png'"
     ]
    }
   ],
   "source": [
    "word_cloud(\"good.png\", dic_3, \"Somewhat Positive: \\n Uncleaned\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>46552</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>42006</td>\n",
       "      <td>,</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>33443</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>32245</td>\n",
       "      <td>of</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>31695</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>22363</td>\n",
       "      <td>to</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>17565</td>\n",
       "      <td>.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>16971</td>\n",
       "      <td>'s</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>13523</td>\n",
       "      <td>in</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>13340</td>\n",
       "      <td>is</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>12175</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>10358</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>8415</td>\n",
       "      <td>as</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>7568</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>7273</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>6947</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>6626</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>5929</td>\n",
       "      <td>an</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>5827</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>5064</td>\n",
       "      <td>this</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0   46552    the\n",
       "1   42006      ,\n",
       "2   33443      a\n",
       "3   32245     of\n",
       "4   31695    and\n",
       "5   22363     to\n",
       "6   17565      .\n",
       "7   16971     's\n",
       "8   13523     in\n",
       "9   13340     is\n",
       "10  12175   that\n",
       "11  10358     it\n",
       "12   8415     as\n",
       "13   7568   with\n",
       "14   7273    for\n",
       "15   6947    its\n",
       "16   6626   film\n",
       "17   5929     an\n",
       "18   5827  movie\n",
       "19   5064   this"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_3 = all_words_df(dic)\n",
    "top_words_3 = top_words_df(words_3, 20)\n",
    "top_words_3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_3, \"Somewhat Positive: \\n Uncleaned\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat positive uncleaned reviews is 1124157\n",
      "The total number of unique words in the somewhat positive uncleaned reviews is 18226\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat positive uncleaned\", words_3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_4 = make_dic(reviews_4, \"Phrase\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'best.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-56-5dec0d53b747>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"best.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Positive Reviews: \\n Uncleaned\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'best.png'"
     ]
    }
   ],
   "source": [
    "word_cloud(\"best.png\", dic_4, \"Positive Reviews: \\n Uncleaned\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>4879</td>\n",
       "      <td>,</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3968</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3819</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3311</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>3022</td>\n",
       "      <td>of</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>2280</td>\n",
       "      <td>.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1547</td>\n",
       "      <td>is</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1540</td>\n",
       "      <td>to</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1329</td>\n",
       "      <td>'s</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1248</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>1045</td>\n",
       "      <td>in</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>930</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>912</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>739</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>713</td>\n",
       "      <td>as</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>664</td>\n",
       "      <td>an</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>564</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>553</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>520</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>516</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0    4879      ,\n",
       "1    3968    and\n",
       "2    3819    the\n",
       "3    3311      a\n",
       "4    3022     of\n",
       "5    2280      .\n",
       "6    1547     is\n",
       "7    1540     to\n",
       "8    1329     's\n",
       "9    1248   that\n",
       "10   1045     in\n",
       "11    930   film\n",
       "12    912   with\n",
       "13    739     it\n",
       "14    713     as\n",
       "15    664     an\n",
       "16    564  movie\n",
       "17    553    for\n",
       "18    520      A\n",
       "19    516    its"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_4 = all_words_df(dic_4)\n",
    "top_words_4 = top_words_df(words_4, 20)\n",
    "top_words_4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_4, \"Top 20 Words: \\n Positive Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the positive uncleaned reviews is 98517\n",
      "The total number of unique words in the positive uncleaned reviews is 7759\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"positive uncleaned\", words_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Cleaning the Phrases \n",
    "    1. Make everything lowercase\n",
    "    2. Change contractions \n",
    "    3. Remove punctuation \n",
    "    4. Tokenize \n",
    "    5. Stem \n",
    "    6. Remove stopwords "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "def remove_contractions(df, column): \n",
    "    df[column] = df[column].str.replace(r\"(can't)\", \"cannot\")\n",
    "    df[column] = df[column].str.replace(r\"(n't)\", \" not\")\n",
    "    df[column] = df[column].str.replace(r\"('s)\", \"\")\n",
    "    df[column] = df[column].str.replace(r\"('m)\", \" am\")\n",
    "    df[column] = df[column].str.replace(r\"('d)\", \" would\")\n",
    "    df[column] = df[column].str.replace(r\"('ll)\", \" will\")\n",
    "    df[column] = df[column].str.replace(r\"('ve)\", \" have\")\n",
    "    df[column] = df[column].str.replace(r\"('re)\", \" are\")\n",
    "    return(df[column])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    a series of escapades demonstrating the adage ...\n",
       "1    a series of escapades demonstrating the adage ...\n",
       "2                                             a series\n",
       "3                                                    a\n",
       "4                                               series\n",
       "Name: phrase, dtype: object"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews[\"phrase\"] = reviews[\"Phrase\"].str.lower() \n",
    "reviews.phrase.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>156055</td>\n",
       "      <td>156056</td>\n",
       "      <td>8544</td>\n",
       "      <td>Hearst 's</td>\n",
       "      <td>2</td>\n",
       "      <td>hearst</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>156056</td>\n",
       "      <td>156057</td>\n",
       "      <td>8544</td>\n",
       "      <td>forced avuncular chortles</td>\n",
       "      <td>1</td>\n",
       "      <td>forced avuncular chortles</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>156057</td>\n",
       "      <td>156058</td>\n",
       "      <td>8544</td>\n",
       "      <td>avuncular chortles</td>\n",
       "      <td>3</td>\n",
       "      <td>avuncular chortles</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>156058</td>\n",
       "      <td>156059</td>\n",
       "      <td>8544</td>\n",
       "      <td>avuncular</td>\n",
       "      <td>2</td>\n",
       "      <td>avuncular</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>156059</td>\n",
       "      <td>156060</td>\n",
       "      <td>8544</td>\n",
       "      <td>chortles</td>\n",
       "      <td>2</td>\n",
       "      <td>chortles</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        PhraseId  SentenceId                     Phrase  Sentiment  \\\n",
       "156055    156056        8544                  Hearst 's          2   \n",
       "156056    156057        8544  forced avuncular chortles          1   \n",
       "156057    156058        8544         avuncular chortles          3   \n",
       "156058    156059        8544                  avuncular          2   \n",
       "156059    156060        8544                   chortles          2   \n",
       "\n",
       "                           phrase  \n",
       "156055                    hearst   \n",
       "156056  forced avuncular chortles  \n",
       "156057         avuncular chortles  \n",
       "156058                  avuncular  \n",
       "156059                   chortles  "
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews[\"phrase\"] = remove_contractions(reviews, \"phrase\") \n",
    "reviews.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "reviews[\"phrase\"] = reviews[\"phrase\"].str.replace(r\"[^\\w^\\s]\", \"\")\n",
    "reviews[\"phrase\"] = reviews[\"phrase\"].str.replace(r\"[0-9]+\", \"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "import nltk "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \n",
       "0          1  [a, series, of, escapades, demonstrating, the,...  \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...  \n",
       "2          2                                        [a, series]  \n",
       "3          2                                                [a]  \n",
       "4          2                                           [series]  "
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews[\"phrase\"] = reviews.apply(lambda row: nltk.word_tokenize(row[\"phrase\"]), axis = 1)\n",
    "reviews.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "from nltk.stem.snowball import SnowballStemmer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "stemmer = SnowballStemmer(\"english\")\n",
    "reviews[\"stemmed\"] = reviews.apply(lambda row: [stemmer.stem(token) for token in row[\"phrase\"]], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "2          2                                        [a, series]   \n",
       "3          2                                                [a]   \n",
       "4          2                                           [series]   \n",
       "\n",
       "                                             stemmed  \n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...  \n",
       "1  [a, seri, of, escapad, demonstr, the, adag, th...  \n",
       "2                                          [a, seri]  \n",
       "3                                                [a]  \n",
       "4                                             [seri]  "
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stopwords "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "import re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "#What the function does: It removes all words that have less than 3 characters in it. \n",
    "#Input: The string to have stopwords removed \n",
    "#Ouptut: The string with the words with 2 or less characters removed \n",
    "def remove_words_less_than_3_characters(string):\n",
    "    new_string = \"\"\n",
    "    for word in re.findall('[A-z][A-z]+\\w', string): \n",
    "        new_string = new_string + \" \" + word\n",
    "    return new_string"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "reviews[\"phrase_reduced\"] = reviews.apply(lambda row: remove_words_less_than_3_characters(row[\"Phrase\"]), axis =1 )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>series escapades demonstrating the adage that...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>series escapades demonstrating the adage that...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "      <td>series</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>series</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "2          2                                        [a, series]   \n",
       "3          2                                                [a]   \n",
       "4          2                                           [series]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "2                                          [a, seri]   \n",
       "3                                                [a]   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                      phrase_reduced  \n",
       "0   series escapades demonstrating the adage that...  \n",
       "1   series escapades demonstrating the adage that...  \n",
       "2                                             series  \n",
       "3                                                     \n",
       "4                                             series  "
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "2          2                                        [a, series]   \n",
       "3          2                                                [a]   \n",
       "4          2                                           [series]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "2                                          [a, seri]   \n",
       "3                                                [a]   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  [series, escapades, demonstrating, the, adage,...   \n",
       "1  [series, escapades, demonstrating, the, adage,...   \n",
       "2                                           [series]   \n",
       "3                                                 []   \n",
       "4                                           [series]   \n",
       "\n",
       "                                     reduced_stemmed  \n",
       "0  [seri, escapad, demonstr, the, adag, that, wha...  \n",
       "1  [seri, escapad, demonstr, the, adag, that, wha...  \n",
       "2                                             [seri]  \n",
       "3                                                 []  \n",
       "4                                             [seri]  "
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews[\"phrase_reduced\"] = reviews.apply(lambda row: nltk.word_tokenize(row[\"phrase_reduced\"]), axis = 1)\n",
    "stemmer = SnowballStemmer(\"english\")\n",
    "reviews[\"reduced_stemmed\"] = reviews.apply(lambda row: [stemmer.stem(token) for token in row[\"phrase_reduced\"]], axis = 1)\n",
    "reviews.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Generating a list of stop words from the first most commonly used words \n",
    "stop_words = [\"the\", \"and\", \"you\", \"that\", \"was\", \"for\", \"with\", \"are\", \"his\", \"they\", \"one\", \"have\", \n",
    "             \"this\", \"from\", \"had\", \"word\", \"what\", \"some\", \"can\", \"out\", \"other\", \"were\", \"all\", \"there\", \n",
    "             \"when\", \"use\", \"your\", \"how\", \"said\", \"each\", \"she\", \"which\", \"their\", \"time\", \"will\", \"way\", \n",
    "             \"about\", \"many\", \"then\", \"them\", \"write\", \"would\", \"these\", \"her\", \"make\", \"thing\", \"see\", \"him\", \n",
    "             \"two\", \"has\", \"look\", \"more\", \"day\", \"could\", \"come\", \"did\", \"number\", \"sound\", \"people\", \"over\", \n",
    "             \"know\", \"than\", \"first\", \"who\", \"may\", \"down\", \"side\", \"been\", \"now\", \"find\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "reviews[\"further_reduced\"] = reviews[\"phrase_reduced\"].apply(lambda row: [word for word in row if word not in stop_words])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "      <td>[series, escapades, demonstrating, adage, good...</td>\n",
       "      <td>[seri, escapad, demonstr, adag, good, goos, al...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "      <td>[series, escapades, demonstrating, adage, good...</td>\n",
       "      <td>[seri, escapad, demonstr, adag, good, goos]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "2          2                                        [a, series]   \n",
       "3          2                                                [a]   \n",
       "4          2                                           [series]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "2                                          [a, seri]   \n",
       "3                                                [a]   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  [series, escapades, demonstrating, the, adage,...   \n",
       "1  [series, escapades, demonstrating, the, adage,...   \n",
       "2                                           [series]   \n",
       "3                                                 []   \n",
       "4                                           [series]   \n",
       "\n",
       "                                     reduced_stemmed  \\\n",
       "0  [seri, escapad, demonstr, the, adag, that, wha...   \n",
       "1  [seri, escapad, demonstr, the, adag, that, wha...   \n",
       "2                                             [seri]   \n",
       "3                                                 []   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0  [series, escapades, demonstrating, adage, good...   \n",
       "1  [series, escapades, demonstrating, adage, good...   \n",
       "2                                           [series]   \n",
       "3                                                 []   \n",
       "4                                           [series]   \n",
       "\n",
       "                             further_reduced_stemmed  \n",
       "0  [seri, escapad, demonstr, adag, good, goos, al...  \n",
       "1        [seri, escapad, demonstr, adag, good, goos]  \n",
       "2                                             [seri]  \n",
       "3                                                 []  \n",
       "4                                             [seri]  "
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews[\"further_reduced_stemmed\"] = reviews[\"reduced_stemmed\"].apply(lambda row: [word for word in row if word not in stop_words])\n",
    "reviews.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Visualizing All Reviews "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_df_ready_for_viz(df, column): \n",
    "    df[column] = df[column].apply(\",\".join)\n",
    "    df[column] = df[column].str.replace(\",\", \" \")\n",
    "    return(df[column])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>series escapades demonstrating the adage that ...</td>\n",
       "      <td>seri escapad demonstr the adag that what good ...</td>\n",
       "      <td>series escapades demonstrating adage good goos...</td>\n",
       "      <td>seri escapad demonstr adag good goos also good...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>series escapades demonstrating the adage that ...</td>\n",
       "      <td>seri escapad demonstr the adag that what good ...</td>\n",
       "      <td>series escapades demonstrating adage good goose</td>\n",
       "      <td>seri escapad demonstr adag good goos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "2          2                                        [a, series]   \n",
       "3          2                                                [a]   \n",
       "4          2                                           [series]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "2                                          [a, seri]   \n",
       "3                                                [a]   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  series escapades demonstrating the adage that ...   \n",
       "1  series escapades demonstrating the adage that ...   \n",
       "2                                             series   \n",
       "3                                                      \n",
       "4                                             series   \n",
       "\n",
       "                                     reduced_stemmed  \\\n",
       "0  seri escapad demonstr the adag that what good ...   \n",
       "1  seri escapad demonstr the adag that what good ...   \n",
       "2                                               seri   \n",
       "3                                                      \n",
       "4                                               seri   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0  series escapades demonstrating adage good goos...   \n",
       "1    series escapades demonstrating adage good goose   \n",
       "2                                             series   \n",
       "3                                                      \n",
       "4                                             series   \n",
       "\n",
       "                             further_reduced_stemmed  \n",
       "0  seri escapad demonstr adag good goos also good...  \n",
       "1               seri escapad demonstr adag good goos  \n",
       "2                                               seri  \n",
       "3                                                     \n",
       "4                                               seri  "
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_viz = reviews.copy()\n",
    "columns = [\"phrase_reduced\", \"reduced_stemmed\", \"further_reduced\", \"further_reduced_stemmed\"]\n",
    "for column in columns: \n",
    "    reviews_viz[column] = get_df_ready_for_viz(reviews_viz, column)\n",
    "reviews_viz.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Phrase "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dic_all = make_dic(reviews_viz, \"phrase\")\n",
    "# word_cloud(\"tomatoes.png\", dic_all, \"Rotten Tomatoes: \\n Cleaned Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "# words_all = all_words_df(dic_all)\n",
    "# top_words_all = top_words_df(words_all, 20)\n",
    "# top_words_all"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "# top_words_barplot(top_words_all, \"Top 20 Words: \\n All Cleaned Reviews\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "# unique_total_words(\"all cleaned\", words_all)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(7072, 10)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>102</td>\n",
       "      <td>3</td>\n",
       "      <td>would have a hard time sitting through this one</td>\n",
       "      <td>0</td>\n",
       "      <td>[would, have, a, hard, time, sitting, through,...</td>\n",
       "      <td>[would, have, a, hard, time, sit, through, thi...</td>\n",
       "      <td>would have hard time sitting through this one</td>\n",
       "      <td>would have hard time sit through this one</td>\n",
       "      <td>hard sitting through</td>\n",
       "      <td>hard sit through</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>104</td>\n",
       "      <td>3</td>\n",
       "      <td>have a hard time sitting through this one</td>\n",
       "      <td>0</td>\n",
       "      <td>[have, a, hard, time, sitting, through, this, ...</td>\n",
       "      <td>[have, a, hard, time, sit, through, this, one]</td>\n",
       "      <td>have hard time sitting through this one</td>\n",
       "      <td>have hard time sit through this one</td>\n",
       "      <td>hard sitting through</td>\n",
       "      <td>hard sit through</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>158</td>\n",
       "      <td>5</td>\n",
       "      <td>Aggressive self-glorification and a manipulati...</td>\n",
       "      <td>0</td>\n",
       "      <td>[aggressive, selfglorification, and, a, manipu...</td>\n",
       "      <td>[aggress, selfglorif, and, a, manipul, whitewash]</td>\n",
       "      <td>Aggressive self glorification and manipulative...</td>\n",
       "      <td>aggress self glorif and manipul whitewash</td>\n",
       "      <td>Aggressive self glorification manipulative whi...</td>\n",
       "      <td>aggress self glorif manipul whitewash</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>160</td>\n",
       "      <td>5</td>\n",
       "      <td>self-glorification and a manipulative whitewash</td>\n",
       "      <td>0</td>\n",
       "      <td>[selfglorification, and, a, manipulative, whit...</td>\n",
       "      <td>[selfglorif, and, a, manipul, whitewash]</td>\n",
       "      <td>self glorification and manipulative whitewash</td>\n",
       "      <td>self glorif and manipul whitewash</td>\n",
       "      <td>self glorification manipulative whitewash</td>\n",
       "      <td>self glorif manipul whitewash</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>202</td>\n",
       "      <td>7</td>\n",
       "      <td>Trouble Every Day is a plodding mess .</td>\n",
       "      <td>0</td>\n",
       "      <td>[trouble, every, day, is, a, plodding, mess]</td>\n",
       "      <td>[troubl, everi, day, is, a, plod, mess]</td>\n",
       "      <td>Trouble Every Day plodding mess</td>\n",
       "      <td>troubl everi day plod mess</td>\n",
       "      <td>Trouble Every Day plodding mess</td>\n",
       "      <td>troubl everi plod mess</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0       102           3    would have a hard time sitting through this one   \n",
       "1       104           3          have a hard time sitting through this one   \n",
       "2       158           5  Aggressive self-glorification and a manipulati...   \n",
       "3       160           5    self-glorification and a manipulative whitewash   \n",
       "4       202           7             Trouble Every Day is a plodding mess .   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          0  [would, have, a, hard, time, sitting, through,...   \n",
       "1          0  [have, a, hard, time, sitting, through, this, ...   \n",
       "2          0  [aggressive, selfglorification, and, a, manipu...   \n",
       "3          0  [selfglorification, and, a, manipulative, whit...   \n",
       "4          0       [trouble, every, day, is, a, plodding, mess]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [would, have, a, hard, time, sit, through, thi...   \n",
       "1     [have, a, hard, time, sit, through, this, one]   \n",
       "2  [aggress, selfglorif, and, a, manipul, whitewash]   \n",
       "3           [selfglorif, and, a, manipul, whitewash]   \n",
       "4            [troubl, everi, day, is, a, plod, mess]   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0      would have hard time sitting through this one   \n",
       "1            have hard time sitting through this one   \n",
       "2  Aggressive self glorification and manipulative...   \n",
       "3      self glorification and manipulative whitewash   \n",
       "4                    Trouble Every Day plodding mess   \n",
       "\n",
       "                             reduced_stemmed  \\\n",
       "0  would have hard time sit through this one   \n",
       "1        have hard time sit through this one   \n",
       "2  aggress self glorif and manipul whitewash   \n",
       "3          self glorif and manipul whitewash   \n",
       "4                 troubl everi day plod mess   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0                               hard sitting through   \n",
       "1                               hard sitting through   \n",
       "2  Aggressive self glorification manipulative whi...   \n",
       "3          self glorification manipulative whitewash   \n",
       "4                    Trouble Every Day plodding mess   \n",
       "\n",
       "                 further_reduced_stemmed  \n",
       "0                       hard sit through  \n",
       "1                       hard sit through  \n",
       "2  aggress self glorif manipul whitewash  \n",
       "3          self glorif manipul whitewash  \n",
       "4                 troubl everi plod mess  "
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_0 = sentiment_subset(reviews_viz, 0)\n",
    "reviews_0_viz = reviews_0.copy()\n",
    "reviews_0_viz.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(27273, 10)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>series escapades demonstrating the adage that ...</td>\n",
       "      <td>seri escapad demonstr the adag that what good ...</td>\n",
       "      <td>series escapades demonstrating adage good goos...</td>\n",
       "      <td>seri escapad demonstr adag good goos also good...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>34</td>\n",
       "      <td>1</td>\n",
       "      <td>the gander , some of which occasionally amuses...</td>\n",
       "      <td>1</td>\n",
       "      <td>[the, gander, some, of, which, occasionally, a...</td>\n",
       "      <td>[the, gander, some, of, which, occasion, amus,...</td>\n",
       "      <td>the gander some which occasionally amuses but ...</td>\n",
       "      <td>the gander some which occasion amus but none w...</td>\n",
       "      <td>gander occasionally amuses but none amounts mu...</td>\n",
       "      <td>gander occasion amus but none amount much stori</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>48</td>\n",
       "      <td>1</td>\n",
       "      <td>but none of which amounts to much of a story</td>\n",
       "      <td>1</td>\n",
       "      <td>[but, none, of, which, amounts, to, much, of, ...</td>\n",
       "      <td>[but, none, of, which, amount, to, much, of, a...</td>\n",
       "      <td>but none which amounts much story</td>\n",
       "      <td>but none which amount much stori</td>\n",
       "      <td>but none amounts much story</td>\n",
       "      <td>but none amount much stori</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>none of which amounts to much of a story</td>\n",
       "      <td>1</td>\n",
       "      <td>[none, of, which, amounts, to, much, of, a, st...</td>\n",
       "      <td>[none, of, which, amount, to, much, of, a, stori]</td>\n",
       "      <td>none which amounts much story</td>\n",
       "      <td>none which amount much stori</td>\n",
       "      <td>none amounts much story</td>\n",
       "      <td>none amount much stori</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>82</td>\n",
       "      <td>3</td>\n",
       "      <td>Even fans of Ismail Merchant 's work , I suspe...</td>\n",
       "      <td>1</td>\n",
       "      <td>[even, fans, of, ismail, merchant, work, i, su...</td>\n",
       "      <td>[even, fan, of, ismail, merchant, work, i, sus...</td>\n",
       "      <td>Even fans Ismail Merchant work suspect would h...</td>\n",
       "      <td>even fan ismail merchant work suspect would ha...</td>\n",
       "      <td>Even fans Ismail Merchant work suspect hard si...</td>\n",
       "      <td>even fan ismail merchant work suspect hard sit...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1        34           1  the gander , some of which occasionally amuses...   \n",
       "2        48           1       but none of which amounts to much of a story   \n",
       "3        50           1           none of which amounts to much of a story   \n",
       "4        82           3  Even fans of Ismail Merchant 's work , I suspe...   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          1  [the, gander, some, of, which, occasionally, a...   \n",
       "2          1  [but, none, of, which, amounts, to, much, of, ...   \n",
       "3          1  [none, of, which, amounts, to, much, of, a, st...   \n",
       "4          1  [even, fans, of, ismail, merchant, work, i, su...   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1  [the, gander, some, of, which, occasion, amus,...   \n",
       "2  [but, none, of, which, amount, to, much, of, a...   \n",
       "3  [none, of, which, amount, to, much, of, a, stori]   \n",
       "4  [even, fan, of, ismail, merchant, work, i, sus...   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  series escapades demonstrating the adage that ...   \n",
       "1  the gander some which occasionally amuses but ...   \n",
       "2                  but none which amounts much story   \n",
       "3                      none which amounts much story   \n",
       "4  Even fans Ismail Merchant work suspect would h...   \n",
       "\n",
       "                                     reduced_stemmed  \\\n",
       "0  seri escapad demonstr the adag that what good ...   \n",
       "1  the gander some which occasion amus but none w...   \n",
       "2                   but none which amount much stori   \n",
       "3                       none which amount much stori   \n",
       "4  even fan ismail merchant work suspect would ha...   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0  series escapades demonstrating adage good goos...   \n",
       "1  gander occasionally amuses but none amounts mu...   \n",
       "2                        but none amounts much story   \n",
       "3                            none amounts much story   \n",
       "4  Even fans Ismail Merchant work suspect hard si...   \n",
       "\n",
       "                             further_reduced_stemmed  \n",
       "0  seri escapad demonstr adag good goos also good...  \n",
       "1    gander occasion amus but none amount much stori  \n",
       "2                         but none amount much stori  \n",
       "3                             none amount much stori  \n",
       "4  even fan ismail merchant work suspect hard sit...  "
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_1 = sentiment_subset(reviews_viz, 1)\n",
    "reviews_1_viz = reviews_1.copy()\n",
    "reviews_1_viz.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(79582, 10)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>series escapades demonstrating the adage that ...</td>\n",
       "      <td>seri escapad demonstr the adag that what good ...</td>\n",
       "      <td>series escapades demonstrating adage good goose</td>\n",
       "      <td>seri escapad demonstr adag good goos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "      <td>series</td>\n",
       "      <td>seri</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>of escapades demonstrating the adage that what...</td>\n",
       "      <td>2</td>\n",
       "      <td>[of, escapades, demonstrating, the, adage, tha...</td>\n",
       "      <td>[of, escapad, demonstr, the, adag, that, what,...</td>\n",
       "      <td>escapades demonstrating the adage that what go...</td>\n",
       "      <td>escapad demonstr the adag that what good for t...</td>\n",
       "      <td>escapades demonstrating adage good goose</td>\n",
       "      <td>escapad demonstr adag good goos</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         2           1  A series of escapades demonstrating the adage ...   \n",
       "1         3           1                                           A series   \n",
       "2         4           1                                                  A   \n",
       "3         5           1                                             series   \n",
       "4         6           1  of escapades demonstrating the adage that what...   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2                                        [a, series]   \n",
       "2          2                                                [a]   \n",
       "3          2                                           [series]   \n",
       "4          2  [of, escapades, demonstrating, the, adage, tha...   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1                                          [a, seri]   \n",
       "2                                                [a]   \n",
       "3                                             [seri]   \n",
       "4  [of, escapad, demonstr, the, adag, that, what,...   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  series escapades demonstrating the adage that ...   \n",
       "1                                             series   \n",
       "2                                                      \n",
       "3                                             series   \n",
       "4  escapades demonstrating the adage that what go...   \n",
       "\n",
       "                                     reduced_stemmed  \\\n",
       "0  seri escapad demonstr the adag that what good ...   \n",
       "1                                               seri   \n",
       "2                                                      \n",
       "3                                               seri   \n",
       "4  escapad demonstr the adag that what good for t...   \n",
       "\n",
       "                                   further_reduced  \\\n",
       "0  series escapades demonstrating adage good goose   \n",
       "1                                           series   \n",
       "2                                                    \n",
       "3                                           series   \n",
       "4         escapades demonstrating adage good goose   \n",
       "\n",
       "                further_reduced_stemmed  \n",
       "0  seri escapad demonstr adag good goos  \n",
       "1                                  seri  \n",
       "2                                        \n",
       "3                                  seri  \n",
       "4       escapad demonstr adag good goos  "
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_2 = sentiment_subset(reviews_viz, 2)\n",
    "reviews_2_viz = reviews_2.copy()\n",
    "reviews_2_viz.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(32927, 10)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>good for the goose</td>\n",
       "      <td>3</td>\n",
       "      <td>[good, for, the, goose]</td>\n",
       "      <td>[good, for, the, goos]</td>\n",
       "      <td>good for the goose</td>\n",
       "      <td>good for the goos</td>\n",
       "      <td>good goose</td>\n",
       "      <td>good goos</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>good</td>\n",
       "      <td>3</td>\n",
       "      <td>[good]</td>\n",
       "      <td>[good]</td>\n",
       "      <td>good</td>\n",
       "      <td>good</td>\n",
       "      <td>good</td>\n",
       "      <td>good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>47</td>\n",
       "      <td>1</td>\n",
       "      <td>amuses</td>\n",
       "      <td>3</td>\n",
       "      <td>[amuses]</td>\n",
       "      <td>[amus]</td>\n",
       "      <td>amuses</td>\n",
       "      <td>amus</td>\n",
       "      <td>amuses</td>\n",
       "      <td>amus</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>65</td>\n",
       "      <td>2</td>\n",
       "      <td>This quiet , introspective and entertaining in...</td>\n",
       "      <td>3</td>\n",
       "      <td>[this, quiet, introspective, and, entertaining...</td>\n",
       "      <td>[this, quiet, introspect, and, entertain, inde...</td>\n",
       "      <td>This quiet introspective and entertaining inde...</td>\n",
       "      <td>this quiet introspect and entertain independ</td>\n",
       "      <td>This quiet introspective entertaining independent</td>\n",
       "      <td>quiet introspect entertain independ</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>68</td>\n",
       "      <td>2</td>\n",
       "      <td>quiet , introspective and entertaining</td>\n",
       "      <td>3</td>\n",
       "      <td>[quiet, introspective, and, entertaining]</td>\n",
       "      <td>[quiet, introspect, and, entertain]</td>\n",
       "      <td>quiet introspective and entertaining</td>\n",
       "      <td>quiet introspect and entertain</td>\n",
       "      <td>quiet introspective entertaining</td>\n",
       "      <td>quiet introspect entertain</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0        22           1                                 good for the goose   \n",
       "1        23           1                                               good   \n",
       "2        47           1                                             amuses   \n",
       "3        65           2  This quiet , introspective and entertaining in...   \n",
       "4        68           2             quiet , introspective and entertaining   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          3                            [good, for, the, goose]   \n",
       "1          3                                             [good]   \n",
       "2          3                                           [amuses]   \n",
       "3          3  [this, quiet, introspective, and, entertaining...   \n",
       "4          3          [quiet, introspective, and, entertaining]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0                             [good, for, the, goos]   \n",
       "1                                             [good]   \n",
       "2                                             [amus]   \n",
       "3  [this, quiet, introspect, and, entertain, inde...   \n",
       "4                [quiet, introspect, and, entertain]   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0                                 good for the goose   \n",
       "1                                               good   \n",
       "2                                             amuses   \n",
       "3  This quiet introspective and entertaining inde...   \n",
       "4               quiet introspective and entertaining   \n",
       "\n",
       "                                reduced_stemmed  \\\n",
       "0                             good for the goos   \n",
       "1                                          good   \n",
       "2                                          amus   \n",
       "3  this quiet introspect and entertain independ   \n",
       "4                quiet introspect and entertain   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0                                         good goose   \n",
       "1                                               good   \n",
       "2                                             amuses   \n",
       "3  This quiet introspective entertaining independent   \n",
       "4                   quiet introspective entertaining   \n",
       "\n",
       "               further_reduced_stemmed  \n",
       "0                            good goos  \n",
       "1                                 good  \n",
       "2                                 amus  \n",
       "3  quiet introspect entertain independ  \n",
       "4           quiet introspect entertain  "
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_3 = sentiment_subset(reviews_viz, 3)\n",
    "reviews_3_viz = reviews_3.copy()\n",
    "reviews_3_viz.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(9206, 10)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>2</td>\n",
       "      <td>This quiet , introspective and entertaining in...</td>\n",
       "      <td>4</td>\n",
       "      <td>[this, quiet, introspective, and, entertaining...</td>\n",
       "      <td>[this, quiet, introspect, and, entertain, inde...</td>\n",
       "      <td>This quiet introspective and entertaining inde...</td>\n",
       "      <td>this quiet introspect and entertain independ w...</td>\n",
       "      <td>This quiet introspective entertaining independ...</td>\n",
       "      <td>quiet introspect entertain independ worth seek</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>67</td>\n",
       "      <td>2</td>\n",
       "      <td>quiet , introspective and entertaining indepen...</td>\n",
       "      <td>4</td>\n",
       "      <td>[quiet, introspective, and, entertaining, inde...</td>\n",
       "      <td>[quiet, introspect, and, entertain, independ]</td>\n",
       "      <td>quiet introspective and entertaining independent</td>\n",
       "      <td>quiet introspect and entertain independ</td>\n",
       "      <td>quiet introspective entertaining independent</td>\n",
       "      <td>quiet introspect entertain independ</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>75</td>\n",
       "      <td>2</td>\n",
       "      <td>entertaining</td>\n",
       "      <td>4</td>\n",
       "      <td>[entertaining]</td>\n",
       "      <td>[entertain]</td>\n",
       "      <td>entertaining</td>\n",
       "      <td>entertain</td>\n",
       "      <td>entertaining</td>\n",
       "      <td>entertain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>78</td>\n",
       "      <td>2</td>\n",
       "      <td>is worth seeking</td>\n",
       "      <td>4</td>\n",
       "      <td>[is, worth, seeking]</td>\n",
       "      <td>[is, worth, seek]</td>\n",
       "      <td>worth seeking</td>\n",
       "      <td>worth seek</td>\n",
       "      <td>worth seeking</td>\n",
       "      <td>worth seek</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>118</td>\n",
       "      <td>4</td>\n",
       "      <td>A positively thrilling combination of ethnogra...</td>\n",
       "      <td>4</td>\n",
       "      <td>[a, positively, thrilling, combination, of, et...</td>\n",
       "      <td>[a, posit, thrill, combin, of, ethnographi, an...</td>\n",
       "      <td>positively thrilling combination ethnography a...</td>\n",
       "      <td>posit thrill combin ethnographi and all the in...</td>\n",
       "      <td>positively thrilling combination ethnography i...</td>\n",
       "      <td>posit thrill combin ethnographi intrigu betray...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0        64           2  This quiet , introspective and entertaining in...   \n",
       "1        67           2  quiet , introspective and entertaining indepen...   \n",
       "2        75           2                                       entertaining   \n",
       "3        78           2                                   is worth seeking   \n",
       "4       118           4  A positively thrilling combination of ethnogra...   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          4  [this, quiet, introspective, and, entertaining...   \n",
       "1          4  [quiet, introspective, and, entertaining, inde...   \n",
       "2          4                                     [entertaining]   \n",
       "3          4                               [is, worth, seeking]   \n",
       "4          4  [a, positively, thrilling, combination, of, et...   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [this, quiet, introspect, and, entertain, inde...   \n",
       "1      [quiet, introspect, and, entertain, independ]   \n",
       "2                                        [entertain]   \n",
       "3                                  [is, worth, seek]   \n",
       "4  [a, posit, thrill, combin, of, ethnographi, an...   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  This quiet introspective and entertaining inde...   \n",
       "1   quiet introspective and entertaining independent   \n",
       "2                                       entertaining   \n",
       "3                                      worth seeking   \n",
       "4  positively thrilling combination ethnography a...   \n",
       "\n",
       "                                     reduced_stemmed  \\\n",
       "0  this quiet introspect and entertain independ w...   \n",
       "1            quiet introspect and entertain independ   \n",
       "2                                          entertain   \n",
       "3                                         worth seek   \n",
       "4  posit thrill combin ethnographi and all the in...   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0  This quiet introspective entertaining independ...   \n",
       "1       quiet introspective entertaining independent   \n",
       "2                                       entertaining   \n",
       "3                                      worth seeking   \n",
       "4  positively thrilling combination ethnography i...   \n",
       "\n",
       "                             further_reduced_stemmed  \n",
       "0     quiet introspect entertain independ worth seek  \n",
       "1                quiet introspect entertain independ  \n",
       "2                                          entertain  \n",
       "3                                         worth seek  \n",
       "4  posit thrill combin ethnographi intrigu betray...  "
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews_4 = sentiment_subset(reviews_viz, 4)\n",
    "reviews_4_viz = reviews_4.copy()\n",
    "reviews_4_viz.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_0 = make_dic(reviews_0_viz, \"phrase_reduced\")\n",
    "# word_cloud(\"horrible.png\", dic_0, \"Bad Reviews: \\n Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>3117</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2544</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1131</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>790</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>576</td>\n",
       "      <td>this</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>535</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>488</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>477</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>437</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>433</td>\n",
       "      <td>bad</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>418</td>\n",
       "      <td>you</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>345</td>\n",
       "      <td>The</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>319</td>\n",
       "      <td>like</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>310</td>\n",
       "      <td>than</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>288</td>\n",
       "      <td>not</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>284</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>264</td>\n",
       "      <td>from</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>260</td>\n",
       "      <td>out</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>252</td>\n",
       "      <td>too</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>245</td>\n",
       "      <td>have</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0    3117    the\n",
       "1    2544    and\n",
       "2    1131   that\n",
       "3     790  movie\n",
       "4     576   this\n",
       "5     535    for\n",
       "6     488    its\n",
       "7     477   film\n",
       "8     437   with\n",
       "9     433    bad\n",
       "10    418    you\n",
       "11    345    The\n",
       "12    319   like\n",
       "13    310   than\n",
       "14    288    not\n",
       "15    284    one\n",
       "16    264   from\n",
       "17    260    out\n",
       "18    252    too\n",
       "19    245   have"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_0 = all_words_df(dic_0)\n",
    "top_words_0 = top_words_df(words_0, 20)\n",
    "top_words_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_0, \"Top 20 Words: \\n Bad Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the bad reduced reviews is 62373\n",
      "The total number of unique words in the bad reduced reviews is 7220\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"bad reduced\", words_0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'bad.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-93-bdc938ff87b0>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_1_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"phrase_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"bad.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Somewhat Bad Reviews: \\n Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'bad.png'"
     ]
    }
   ],
   "source": [
    "dic_1 = make_dic(reviews_1_viz, \"phrase_reduced\")\n",
    "word_cloud(\"bad.png\", dic_1, \"Somewhat Bad Reviews: \\n Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_1 = all_words_df(dic_1)\n",
    "top_words_1 = top_words_df(words_1, 20)\n",
    "top_words_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_words_1, \"Top 20 Words: \\n Somewhat Bad Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat bad reduced reviews is 248512\n",
      "The total number of unique words in the somewhat bad reduced reviews is 13400\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat bad reduced\", words_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'neutral.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-95-47cd9cbb2d9a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_2_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"phrase_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"neutral.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Neutral Reviews: \\n Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'neutral.png'"
     ]
    }
   ],
   "source": [
    "dic_2 = make_dic(reviews_2_viz, \"phrase_reduced\")\n",
    "word_cloud(\"neutral.png\", dic_2, \"Neutral Reviews: \\n Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_2 = all_words_df(dic_2)\n",
    "top_words_2 = top_words_df(words_2, 20)\n",
    "top_words_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_2, \"Top 20 Words: \\n Neutral Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the neutral reduced reviews is 413398\n",
      "The total number of unique words in the neutral reduced reviews is 17359\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"neutral reduced\", words_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'good.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-98-9226dcdeb817>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_3_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"phrase_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"good.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Good Reviews: \\n Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'good.png'"
     ]
    }
   ],
   "source": [
    "dic_3 = make_dic(reviews_3_viz, \"phrase_reduced\")\n",
    "word_cloud(\"good.png\", dic_3, \"Good Reviews: \\n Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_3 = all_words_df(dic_3)\n",
    "top_words_3 = top_words_df(words_3, 20)\n",
    "top_words_3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_words_3, \"Top 20 Words: \\n Somewhat Postive Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_total_words(\"somewhat positive reduced\", words_3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_4 = make_dic(reviews_4_viz, \"phrase_reduced\")\n",
    "word_cloud(\"best.png\", dic_4, \"Positive Reviews: \\n Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>4879</td>\n",
       "      <td>,</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3968</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3819</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>3311</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>3022</td>\n",
       "      <td>of</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>2280</td>\n",
       "      <td>.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1547</td>\n",
       "      <td>is</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1540</td>\n",
       "      <td>to</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1329</td>\n",
       "      <td>'s</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1248</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>1045</td>\n",
       "      <td>in</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>930</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>912</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>739</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>713</td>\n",
       "      <td>as</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>664</td>\n",
       "      <td>an</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>564</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>553</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>520</td>\n",
       "      <td>A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>516</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count   word\n",
       "0    4879      ,\n",
       "1    3968    and\n",
       "2    3819    the\n",
       "3    3311      a\n",
       "4    3022     of\n",
       "5    2280      .\n",
       "6    1547     is\n",
       "7    1540     to\n",
       "8    1329     's\n",
       "9    1248   that\n",
       "10   1045     in\n",
       "11    930   film\n",
       "12    912   with\n",
       "13    739     it\n",
       "14    713     as\n",
       "15    664     an\n",
       "16    564  movie\n",
       "17    553    for\n",
       "18    520      A\n",
       "19    516    its"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_4 = all_words_df(dic_4)\n",
    "top_words_4 = top_words_df(words_4, 20)\n",
    "top_words_4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_4, \"Top 20 Words: \\n Positive Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the positive reduced reviews is 98517\n",
      "The total number of unique words in the positive reduced reviews is 7759\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"positive reduced\", words_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Reduced Stemmed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "dic_0 = make_dic(reviews_0_viz, \"reduced_stemmed\")\n",
    "# word_cloud(\"horrible.png\", dic_0, \"Bad Reviews: \\n Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>3462</td>\n",
       "      <td>the</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2549</td>\n",
       "      <td>and</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1139</td>\n",
       "      <td>that</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>862</td>\n",
       "      <td>movi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>652</td>\n",
       "      <td>this</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>551</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>545</td>\n",
       "      <td>for</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>499</td>\n",
       "      <td>bad</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>492</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>452</td>\n",
       "      <td>with</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>437</td>\n",
       "      <td>you</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>357</td>\n",
       "      <td>like</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>310</td>\n",
       "      <td>than</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>304</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>301</td>\n",
       "      <td>not</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>285</td>\n",
       "      <td>have</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>268</td>\n",
       "      <td>from</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>260</td>\n",
       "      <td>out</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>259</td>\n",
       "      <td>all</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>256</td>\n",
       "      <td>too</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count  word\n",
       "0    3462   the\n",
       "1    2549   and\n",
       "2    1139  that\n",
       "3     862  movi\n",
       "4     652  this\n",
       "5     551  film\n",
       "6     545   for\n",
       "7     499   bad\n",
       "8     492    it\n",
       "9     452  with\n",
       "10    437   you\n",
       "11    357  like\n",
       "12    310  than\n",
       "13    304   one\n",
       "14    301   not\n",
       "15    285  have\n",
       "16    268  from\n",
       "17    260   out\n",
       "18    259   all\n",
       "19    256   too"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_0 = all_words_df(dic_0)\n",
    "top_words_0 = top_words_df(words_0, 20)\n",
    "top_words_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_0, \"Top 20 Words: \\n Bad Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the bad reduced stemmed reviews is 62373\n",
      "The total number of unique words in the bad reduced stemmed reviews is 5084\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"bad reduced stemmed\", words_0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'bad.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-107-0c44aea59a38>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_1_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"bad.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Somewhat Bad Reviews: \\n Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'bad.png'"
     ]
    }
   ],
   "source": [
    "dic_1 = make_dic(reviews_1_viz, \"reduced_stemmed\")\n",
    "word_cloud(\"bad.png\", dic_1, \"Somewhat Bad Reviews: \\n Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_1 = all_words_df(dic_1)\n",
    "top_words_1 = top_words_df(words_1, 20)\n",
    "top_words_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_1, \"Top 20 Words: \\n Somewhat Bad Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat bad reduced stemmed reviews is 248512\n",
      "The total number of unique words in the somewhat bad reduced stemmed reviews is 13400\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat bad reduced stemmed\", words_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'neutral.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-110-9fe6a7e67627>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_2_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"neutral.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Neutral Reviews: \\n Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'neutral.png'"
     ]
    }
   ],
   "source": [
    "dic_2 = make_dic(reviews_2_viz, \"reduced_stemmed\")\n",
    "word_cloud(\"neutral.png\", dic_2, \"Neutral Reviews: \\n Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_2 = all_words_df(dic_2)\n",
    "top_words_2 = top_words_df(words_2, 20)\n",
    "top_words_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_words_2, \"Top 20 Words: \\n Neutral Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_total_words(\"neutral reduced stemmed\", words_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'good.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-111-78a92b1ee9e0>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_3_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"good.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Good Reviews: \\n Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'good.png'"
     ]
    }
   ],
   "source": [
    "dic_3 = make_dic(reviews_3_viz, \"reduced_stemmed\")\n",
    "word_cloud(\"good.png\", dic_3, \"Good Reviews: \\n Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_3 = all_words_df(dic_3)\n",
    "top_words_3 = top_words_df(words_3, 20)\n",
    "top_words_3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_3, \"Top 20 Words: \\n Somewhat Postive Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat positive reduced stemmed reviews is 1124157\n",
      "The total number of unique words in the somewhat positive reduced stemmed reviews is 18226\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat positive reduced stemmed\", words_3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'best.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-114-2e68e85da60c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_4\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_4_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"best.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Positive Reviews: \\n Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'best.png'"
     ]
    }
   ],
   "source": [
    "dic_4 = make_dic(reviews_4_viz, \"reduced_stemmed\")\n",
    "word_cloud(\"best.png\", dic_4, \"Positive Reviews: \\n Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_4 = all_words_df(dic_4)\n",
    "top_words_4 = top_words_df(words_4, 20)\n",
    "top_words_4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_4, \"Top 20 Words: \\n Positive Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the positive reduced stemmed reviews is 98517\n",
      "The total number of unique words in the positive reduced stemmed reviews is 7759\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"positive reduced stemmed\", words_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Further Reduced "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'horrible.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-117-2fd385620bba>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_0_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"horrible.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Bad Reviews: \\n Further Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'horrible.png'"
     ]
    }
   ],
   "source": [
    "dic_0 = make_dic(reviews_0_viz, \"further_reduced\")\n",
    "word_cloud(\"horrible.png\", dic_0, \"Bad Reviews: \\n Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_0 = all_words_df(dic_0)\n",
    "top_words_0 = top_words_df(words_0, 20)\n",
    "top_words_0\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_0, \"Top 20 Words: \\n Bad Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the bad further reduced reviews is 62373\n",
      "The total number of unique words in the bad further reduced reviews is 5084\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"bad further reduced\", words_0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'bad.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-120-e2ef93f60785>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_1_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"bad.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Somewhat Bad Reviews: \\n Further Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'bad.png'"
     ]
    }
   ],
   "source": [
    "dic_1 = make_dic(reviews_1_viz, \"further_reduced\")\n",
    "word_cloud(\"bad.png\", dic_1, \"Somewhat Bad Reviews: \\n Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_1 = all_words_df(dic_1)\n",
    "top_words_1 = top_words_df(words_1, 20)\n",
    "top_words_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_1, \"Top 20 Words: \\n Somewhat Bad Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat bad further reduced reviews is 248512\n",
      "The total number of unique words in the somewhat bad further reduced reviews is 13400\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat bad further reduced\", words_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'neutral.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-123-1c1799928923>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_2_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"neutral.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Neutral Reviews: \\n Further Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'neutral.png'"
     ]
    }
   ],
   "source": [
    "dic_2 = make_dic(reviews_2_viz, \"further_reduced\")\n",
    "word_cloud(\"neutral.png\", dic_2, \"Neutral Reviews: \\n Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_2 = all_words_df(dic_2)\n",
    "top_words_2 = top_words_df(words_2, 20)\n",
    "top_words_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_words_2, \"Top 20 Words: \\n Neutral Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the neutral futher reduced reviews is 413398\n",
      "The total number of unique words in the neutral futher reduced reviews is 17359\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"neutral futher reduced\", words_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'good.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-125-83ffccd17fcd>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_3_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"good.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Good Reviews: \\n Further Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'good.png'"
     ]
    }
   ],
   "source": [
    "dic_3 = make_dic(reviews_3_viz, \"further_reduced\")\n",
    "word_cloud(\"good.png\", dic_3, \"Good Reviews: \\n Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1837</td>\n",
       "      <td>its</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1832</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1405</td>\n",
       "      <td>but</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1321</td>\n",
       "      <td>movie</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1067</td>\n",
       "      <td>The</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>956</td>\n",
       "      <td>good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>663</td>\n",
       "      <td>story</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>630</td>\n",
       "      <td>funny</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>618</td>\n",
       "      <td>most</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>618</td>\n",
       "      <td>not</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>572</td>\n",
       "      <td>into</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>561</td>\n",
       "      <td>well</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>551</td>\n",
       "      <td>like</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>551</td>\n",
       "      <td>RRB</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>526</td>\n",
       "      <td>life</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>512</td>\n",
       "      <td>LRB</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>497</td>\n",
       "      <td>characters</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>473</td>\n",
       "      <td>comedy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>466</td>\n",
       "      <td>love</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>449</td>\n",
       "      <td>enough</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count        word\n",
       "0    1837         its\n",
       "1    1832        film\n",
       "2    1405         but\n",
       "3    1321       movie\n",
       "4    1067         The\n",
       "5     956        good\n",
       "6     663       story\n",
       "7     630       funny\n",
       "8     618        most\n",
       "9     618         not\n",
       "10    572        into\n",
       "11    561        well\n",
       "12    551        like\n",
       "13    551         RRB\n",
       "14    526        life\n",
       "15    512         LRB\n",
       "16    497  characters\n",
       "17    473      comedy\n",
       "18    466        love\n",
       "19    449      enough"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_3 = all_words_df(dic_3)\n",
    "top_words_3 = top_words_df(words_3, 20)\n",
    "top_words_3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_3, \"Top 20 Words: \\n Somewhat Postive Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat positive further reduced reviews is 161729\n",
      "The total number of unique words in the somewhat positive further reduced reviews is 12505\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat positive further reduced\", words_3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'best.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-129-0eee8cfe5a36>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_4\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_4_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"best.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Positive Reviews: \\n Further Reduced\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'best.png'"
     ]
    }
   ],
   "source": [
    "dic_4 = make_dic(reviews_4_viz, \"further_reduced\")\n",
    "word_cloud(\"best.png\", dic_4, \"Positive Reviews: \\n Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_4 = all_words_df(dic_4)\n",
    "top_words_4 = top_words_df(words_4, 20)\n",
    "top_words_4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_words_4, \"Top 20 Words: \\n Positive Further Reduced\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the positive further reduced reviews is 98517\n",
      "The total number of unique words in the positive further reduced reviews is 7759\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"positive further reduced\", words_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Further Reduced Stemmed "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'horrible.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-131-ffc919d79666>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_0_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"horrible.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Bad Reviews: \\n Further Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'horrible.png'"
     ]
    }
   ],
   "source": [
    "dic_0 = make_dic(reviews_0_viz, \"further_reduced_stemmed\")\n",
    "word_cloud(\"horrible.png\", dic_0, \"Bad Reviews: \\n Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>862</td>\n",
       "      <td>movi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>551</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>499</td>\n",
       "      <td>bad</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>492</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>357</td>\n",
       "      <td>like</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>301</td>\n",
       "      <td>not</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>256</td>\n",
       "      <td>too</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>229</td>\n",
       "      <td>but</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>227</td>\n",
       "      <td>charact</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>224</td>\n",
       "      <td>minut</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>216</td>\n",
       "      <td>just</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>183</td>\n",
       "      <td>comedi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>178</td>\n",
       "      <td>into</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>171</td>\n",
       "      <td>plot</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>167</td>\n",
       "      <td>even</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>165</td>\n",
       "      <td>feel</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>164</td>\n",
       "      <td>stori</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>153</td>\n",
       "      <td>ani</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>153</td>\n",
       "      <td>most</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>147</td>\n",
       "      <td>dull</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count     word\n",
       "0     862     movi\n",
       "1     551     film\n",
       "2     499      bad\n",
       "3     492       it\n",
       "4     357     like\n",
       "5     301      not\n",
       "6     256      too\n",
       "7     229      but\n",
       "8     227  charact\n",
       "9     224    minut\n",
       "10    216     just\n",
       "11    183   comedi\n",
       "12    178     into\n",
       "13    171     plot\n",
       "14    167     even\n",
       "15    165     feel\n",
       "16    164    stori\n",
       "17    153      ani\n",
       "18    153     most\n",
       "19    147     dull"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_0 = all_words_df(dic_0)\n",
    "top_words_0 = top_words_df(words_0, 20)\n",
    "top_words_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_0, \"Top 20 Words: \\n Bad Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the bad further reduced stemmed reviews is 46182\n",
      "The total number of unique words in the bad further reduced stemmed reviews is 5016\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"bad further reduced stemmed\", words_0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'bad.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-135-eb5b77ecd2b4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_1_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"bad.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Somewhat Bad Reviews: \\n Further Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'bad.png'"
     ]
    }
   ],
   "source": [
    "dic_1 = make_dic(reviews_1_viz, \"further_reduced_stemmed\")\n",
    "word_cloud(\"bad.png\", dic_1, \"Somewhat Bad Reviews: \\n Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_1 = all_words_df(dic_1)\n",
    "top_words_1 = top_words_df(words_1, 20)\n",
    "top_words_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_1, \"Top 20 Words: \\n Somewhat Bad Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat bad further reduced stemmed reviews is 248512\n",
      "The total number of unique words in the somewhat bad further reduced stemmed reviews is 13400\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat bad further reduced stemmed\", words_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'neutral.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-138-27dab4cf81a8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_2_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"neutral.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Neutral Reviews: \\n Further Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'neutral.png'"
     ]
    }
   ],
   "source": [
    "dic_2 = make_dic(reviews_2_viz, \"further_reduced_stemmed\")\n",
    "word_cloud(\"neutral.png\", dic_2, \"Neutral Reviews: \\n Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_2 = all_words_df(dic_2)\n",
    "top_words_2 = top_words_df(words_2, 20)\n",
    "top_words_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_words_barplot(top_words_2, \"Top 20 Words: \\n Neutral Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_total_words(\"neutral further reduced stemmed\", words_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'good.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-139-505dc0841fdd>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_3_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"good.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Good Reviews: \\n Further Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'good.png'"
     ]
    }
   ],
   "source": [
    "dic_3 = make_dic(reviews_3_viz, \"further_reduced_stemmed\")\n",
    "word_cloud(\"good.png\", dic_3, \"Good Reviews: \\n Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>word</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2080</td>\n",
       "      <td>film</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1870</td>\n",
       "      <td>it</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1639</td>\n",
       "      <td>movi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1434</td>\n",
       "      <td>but</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1005</td>\n",
       "      <td>good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>756</td>\n",
       "      <td>charact</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>739</td>\n",
       "      <td>stori</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>719</td>\n",
       "      <td>like</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>670</td>\n",
       "      <td>most</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>648</td>\n",
       "      <td>not</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>640</td>\n",
       "      <td>love</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>640</td>\n",
       "      <td>funni</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>607</td>\n",
       "      <td>work</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>581</td>\n",
       "      <td>well</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>572</td>\n",
       "      <td>into</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>552</td>\n",
       "      <td>perform</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>551</td>\n",
       "      <td>rrb</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>545</td>\n",
       "      <td>comedi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>544</td>\n",
       "      <td>life</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>512</td>\n",
       "      <td>lrb</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count     word\n",
       "0    2080     film\n",
       "1    1870       it\n",
       "2    1639     movi\n",
       "3    1434      but\n",
       "4    1005     good\n",
       "5     756  charact\n",
       "6     739    stori\n",
       "7     719     like\n",
       "8     670     most\n",
       "9     648      not\n",
       "10    640     love\n",
       "11    640    funni\n",
       "12    607     work\n",
       "13    581     well\n",
       "14    572     into\n",
       "15    552  perform\n",
       "16    551      rrb\n",
       "17    545   comedi\n",
       "18    544     life\n",
       "19    512      lrb"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words_3 = all_words_df(dic_3)\n",
    "top_words_3 = top_words_df(words_3, 20)\n",
    "top_words_3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_3, \"Top 20 Words: \\n Somewhat Postive Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the somewhat positive reduced reviews is 158185\n",
      "The total number of unique words in the somewhat positive reduced reviews is 8021\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"somewhat positive reduced\", words_3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'best.png'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-143-0ed92561b21f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mdic_4\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmake_dic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreviews_4_viz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"further_reduced_stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"best.png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic_4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Positive Reviews: \\n Further Reduced Stemmed\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-17-a52dc0f354f0>\u001b[0m in \u001b[0;36mword_cloud\u001b[0;34m(mask_path, dic, title)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mword_cloud\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"talk\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m         \u001b[0mmask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmask_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m         word_cloud = WordCloud(background_color = \"white\", max_words = 750, \n\u001b[1;32m      5\u001b[0m                   mask = mask, max_font_size = 125)\n",
      "\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/PIL/Image.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(fp, mode)\u001b[0m\n\u001b[1;32m   2764\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2765\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2766\u001b[0;31m         \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2767\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'best.png'"
     ]
    }
   ],
   "source": [
    "dic_4 = make_dic(reviews_4_viz, \"further_reduced_stemmed\")\n",
    "word_cloud(\"best.png\", dic_4, \"Positive Reviews: \\n Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words_4 = all_words_df(dic_4)\n",
    "top_words_4 = top_words_df(words_4, 20)\n",
    "top_words_4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "top_words_barplot(top_words_4, \"Top 20 Words: \\n Positive Further Reduced Stemmed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total number of words in the positive further reduced stemmed reviews is 98517\n",
      "The total number of unique words in the positive further reduced stemmed reviews is 7759\n"
     ]
    }
   ],
   "source": [
    "unique_total_words(\"positive further reduced stemmed\", words_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Getting the data ready to run naive bayes and svms on it... "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To make the training data contain an equal number of rows for each sentiment. The sample function replce = False is utilized "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_df(column):\n",
    "    df = pd.DataFrame()\n",
    "    df[\"review\"] = reviews[column]\n",
    "    df[\"sentiment\"] = reviews[\"Sentiment\"]\n",
    "    df.reset_index(drop = True, inplace = True)\n",
    "    return(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PhraseId</th>\n",
       "      <th>SentenceId</th>\n",
       "      <th>Phrase</th>\n",
       "      <th>Sentiment</th>\n",
       "      <th>phrase</th>\n",
       "      <th>stemmed</th>\n",
       "      <th>phrase_reduced</th>\n",
       "      <th>reduced_stemmed</th>\n",
       "      <th>further_reduced</th>\n",
       "      <th>further_reduced_stemmed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "      <td>[series, escapades, demonstrating, adage, good...</td>\n",
       "      <td>[seri, escapad, demonstr, adag, good, goos, al...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>A series of escapades demonstrating the adage ...</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series, of, escapades, demonstrating, the,...</td>\n",
       "      <td>[a, seri, of, escapad, demonstr, the, adag, th...</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "      <td>[series, escapades, demonstrating, adage, good...</td>\n",
       "      <td>[seri, escapad, demonstr, adag, good, goos]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>A series</td>\n",
       "      <td>2</td>\n",
       "      <td>[a, series]</td>\n",
       "      <td>[a, seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>2</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[a]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>series</td>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>[series]</td>\n",
       "      <td>[seri]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PhraseId  SentenceId                                             Phrase  \\\n",
       "0         1           1  A series of escapades demonstrating the adage ...   \n",
       "1         2           1  A series of escapades demonstrating the adage ...   \n",
       "2         3           1                                           A series   \n",
       "3         4           1                                                  A   \n",
       "4         5           1                                             series   \n",
       "\n",
       "   Sentiment                                             phrase  \\\n",
       "0          1  [a, series, of, escapades, demonstrating, the,...   \n",
       "1          2  [a, series, of, escapades, demonstrating, the,...   \n",
       "2          2                                        [a, series]   \n",
       "3          2                                                [a]   \n",
       "4          2                                           [series]   \n",
       "\n",
       "                                             stemmed  \\\n",
       "0  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "1  [a, seri, of, escapad, demonstr, the, adag, th...   \n",
       "2                                          [a, seri]   \n",
       "3                                                [a]   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                      phrase_reduced  \\\n",
       "0  [series, escapades, demonstrating, the, adage,...   \n",
       "1  [series, escapades, demonstrating, the, adage,...   \n",
       "2                                           [series]   \n",
       "3                                                 []   \n",
       "4                                           [series]   \n",
       "\n",
       "                                     reduced_stemmed  \\\n",
       "0  [seri, escapad, demonstr, the, adag, that, wha...   \n",
       "1  [seri, escapad, demonstr, the, adag, that, wha...   \n",
       "2                                             [seri]   \n",
       "3                                                 []   \n",
       "4                                             [seri]   \n",
       "\n",
       "                                     further_reduced  \\\n",
       "0  [series, escapades, demonstrating, adage, good...   \n",
       "1  [series, escapades, demonstrating, adage, good...   \n",
       "2                                           [series]   \n",
       "3                                                 []   \n",
       "4                                           [series]   \n",
       "\n",
       "                             further_reduced_stemmed  \n",
       "0  [seri, escapad, demonstr, adag, good, goos, al...  \n",
       "1        [seri, escapad, demonstr, adag, good, goos]  \n",
       "2                                             [seri]  \n",
       "3                                                 []  \n",
       "4                                             [seri]  "
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reviews.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>review</th>\n",
       "      <th>sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>[series, escapades, demonstrating, the, adage,...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>[]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>[series]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              review  sentiment\n",
       "0  [series, escapades, demonstrating, the, adage,...          1\n",
       "1  [series, escapades, demonstrating, the, adage,...          2\n",
       "2                                           [series]          2\n",
       "3                                                 []          2\n",
       "4                                           [series]          2"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "phrase_reduced_df = make_df(\"phrase_reduced\")\n",
    "phrase_reduced_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>review</th>\n",
       "      <th>sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>[seri, escapad, demonstr, the, adag, that, wha...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>[]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              review  sentiment\n",
       "0  [seri, escapad, demonstr, the, adag, that, wha...          1\n",
       "1  [seri, escapad, demonstr, the, adag, that, wha...          2\n",
       "2                                             [seri]          2\n",
       "3                                                 []          2\n",
       "4                                             [seri]          2"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reduced_stemmed_df = make_df(\"reduced_stemmed\")\n",
    "reduced_stemmed_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>review</th>\n",
       "      <th>sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>[series, escapades, demonstrating, adage, good...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>[series, escapades, demonstrating, adage, good...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>[series]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>[]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>[series]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              review  sentiment\n",
       "0  [series, escapades, demonstrating, adage, good...          1\n",
       "1  [series, escapades, demonstrating, adage, good...          2\n",
       "2                                           [series]          2\n",
       "3                                                 []          2\n",
       "4                                           [series]          2"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "further_reduced_df = make_df(\"further_reduced\")\n",
    "further_reduced_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>review</th>\n",
       "      <th>sentiment</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>[seri, escapad, demonstr, adag, good, goos, al...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>[seri, escapad, demonstr, adag, good, goos]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>[]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>[seri]</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              review  sentiment\n",
       "0  [seri, escapad, demonstr, adag, good, goos, al...          1\n",
       "1        [seri, escapad, demonstr, adag, good, goos]          2\n",
       "2                                             [seri]          2\n",
       "3                                                 []          2\n",
       "4                                             [seri]          2"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "further_reduced_stemmed_df = make_df(\"further_reduced_stemmed\")\n",
    "further_reduced_stemmed_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Models "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.naive_bayes import MultinomialNB\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [],
   "source": [
    "#What the function does: It takes the tokens from the df and joins it into a string, then replaces the \",\" with a space\n",
    "#Input: the df and column to be changed \n",
    "#Output: the data untokenized \n",
    "def getting_data_ready_for_freq(df, column): \n",
    "    df[column] = df[column].apply(\",\".join)\n",
    "    df[column] = df[column].str.replace(\",\", \" \")\n",
    "    return(df[column])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [],
   "source": [
    "phrase_reduced_df[\"review\"] = getting_data_ready_for_freq(phrase_reduced_df, \"review\")\n",
    "reduced_stemmed_df[\"review\"] = getting_data_ready_for_freq(reduced_stemmed_df, \"review\")\n",
    "further_reduced_df[\"review\"] = getting_data_ready_for_freq(further_reduced_df, \"review\")\n",
    "further_reduced_stemmed_df[\"review\"] = getting_data_ready_for_freq(further_reduced_stemmed_df, \"review\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "uni_vec = CountVectorizer(encoding='latin-1', binary=False, min_df=3)\n",
    "bi_vec = CountVectorizer(encoding='latin-1', ngram_range=(1,2), min_df=3)\n",
    "uni_tf_vec = TfidfVectorizer(encoding='latin-1', use_idf=True, min_df=3)\n",
    "bigram_tf_vec = TfidfVectorizer(encoding='latin-1', use_idf=True, ngram_range=(1,2), min_df=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_1_uni_vec = uni_vec.fit_transform(phrase_reduced_df[\"review\"])\n",
    "model_1_bi_vec = bi_vec.fit_transform(phrase_reduced_df[\"review\"])\n",
    "model_1_uni_tf_vec = uni_tf_vec.fit_transform(phrase_reduced_df[\"review\"])\n",
    "model_1_bigram_tf_vec = bigram_tf_vec.fit_transform(phrase_reduced_df[\"review\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_2_uni_vec = uni_vec.fit_transform(reduced_stemmed_df[\"review\"])\n",
    "model_2_bi_vec = bi_vec.fit_transform(reduced_stemmed_df[\"review\"])\n",
    "model_2_uni_tf_vec = uni_tf_vec.fit_transform(reduced_stemmed_df[\"review\"])\n",
    "model_2_bigram_tf_vec = bigram_tf_vec.fit_transform(reduced_stemmed_df[\"review\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_3_uni_vec = uni_vec.fit_transform(further_reduced_df[\"review\"])\n",
    "model_3_bi_vec = bi_vec.fit_transform(further_reduced_df[\"review\"])\n",
    "model_3_uni_tf_vec = uni_tf_vec.fit_transform(further_reduced_df[\"review\"])\n",
    "model_3_bigram_tf_vec = bigram_tf_vec.fit_transform(further_reduced_df[\"review\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_4_uni_vec = uni_vec.fit_transform(further_reduced_stemmed_df[\"review\"])\n",
    "model_4_bi_vec = bi_vec.fit_transform(further_reduced_stemmed_df[\"review\"])\n",
    "model_4_uni_tf_vec = uni_tf_vec.fit_transform(further_reduced_stemmed_df[\"review\"])\n",
    "model_4_bigram_tf_vec = bigram_tf_vec.fit_transform(further_reduced_stemmed_df[\"review\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating testing and training df and labels \n",
    "model_1_uni_vec_train, model_1_uni_vec_test, label_model_1_uni_vec_train, label_model_1_uni_vec_test = train_test_split(model_1_uni_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_1_bi_vec_train, model_1_bi_vec_test, label_model_1_bi_vec_train, label_model_1_bi_vec_test = train_test_split(model_1_bi_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_1_uni_tf_vec_train, model_1_uni_tf_vec_test, label_model_1_uni_tf_vec_train, label_model_1_uni_tf_vec_test = train_test_split(model_1_uni_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_1_bigram_tf_vec_train, model_1_bigram_tf_vec_test, label_model_1_bigram_tf_vec_train, label_model_1_bigram_tf_vec_test = train_test_split(model_1_bigram_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.2, random_state = 12) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating testing and training df and labels \n",
    "model_2_uni_vec_train, model_2_uni_vec_test, label_model_2_uni_vec_train, label_model_2_uni_vec_test = train_test_split(model_2_uni_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_2_bi_vec_train, model_2_bi_vec_test, label_model_2_bi_vec_train, label_model_2_bi_vec_test = train_test_split(model_2_bi_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_2_uni_tf_vec_train, model_2_uni_tf_vec_test, label_model_2_uni_tf_vec_train, label_model_2_uni_tf_vec_test = train_test_split(model_2_uni_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_2_bigram_tf_vec_train, model_2_bigram_tf_vec_test, label_model_2_bigram_tf_vec_train, label_model_2_bigram_tf_vec_test = train_test_split(model_2_bigram_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating testing and training df and labels \n",
    "model_3_uni_vec_train, model_3_uni_vec_test, label_model_3_uni_vec_train, label_model_3_uni_vec_test = train_test_split(model_3_uni_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_3_bi_vec_train, model_3_bi_vec_test, label_model_3_bi_vec_train, label_model_3_bi_vec_test = train_test_split(model_3_bi_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_3_uni_tf_vec_train, model_3_uni_tf_vec_test, label_model_3_uni_tf_vec_train, label_model_3_uni_tf_vec_test = train_test_split(model_3_uni_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_3_bigram_tf_vec_train, model_3_bigram_tf_vec_test, label_model_3_bigram_tf_vec_train, label_model_3_bigram_tf_vec_test = train_test_split(model_3_bigram_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating testing and training df and labels \n",
    "model_4_uni_vec_train, model_4_uni_vec_test, label_model_4_uni_vec_train, label_model_4_uni_vec_test = train_test_split(model_4_uni_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_4_bi_vec_train, model_4_bi_vec_test, label_model_4_bi_vec_train, label_model_4_bi_vec_test = train_test_split(model_4_bi_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_4_uni_tf_vec_train, model_4_uni_tf_vec_test, label_model_4_uni_tf_vec_train, label_model_4_uni_tf_vec_test = train_test_split(model_4_uni_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) \n",
    "model_4_bigram_tf_vec_train, model_4_bigram_tf_vec_test, label_model_4_bigram_tf_vec_train, label_model_4_bigram_tf_vec_test = train_test_split(model_4_bigram_tf_vec, phrase_reduced_df[\"sentiment\"], test_size = 0.4, random_state = 12) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "all_stats = []\n",
    "def running_model(model, clf, train_df, train_label, test_df, test_label): \n",
    "    clf = clf\n",
    "    clf.fit(train_df, train_label)\n",
    "    predicted = clf.predict(test_df)\n",
    "    accuracy = accuracy_score(test_label, predicted, normalize = True)\n",
    "    data = [model, clf, accuracy]\n",
    "    all_stats.append(data)\n",
    "    results = pd.DataFrame(all_stats, columns = [\"model\", \"classifier\", \"accuracy\"])\n",
    "    print(\"The accuracy is\", accuracy)\n",
    "    print(\"#----------------------------------------------------------------#\")\n",
    "    cm = confusion_matrix(test_label, predicted)\n",
    "    print(cm)\n",
    "    print(\"#----------------------------------------------------------------#\")\n",
    "    print(classification_report(test_label, predicted, target_names = [\"0\", \"1\", \"2\", \"3\", \"4\"]))\n",
    "    return clf, results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 1 Unigram Vec\n",
      "The accuracy is 0.603886325772139\n",
      "#----------------------------------------------------------------#\n",
      "[[  778  1340   642    86    13]\n",
      " [  750  4580  5072   595    54]\n",
      " [  283  2885 24725  3447   282]\n",
      " [   21   519  5226  6538   884]\n",
      " [    0    56   605  1967  1076]]\n",
      "#----------------------------------------------------------------#\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.42      0.27      0.33      2859\n",
      "           1       0.49      0.41      0.45     11051\n",
      "           2       0.68      0.78      0.73     31622\n",
      "           3       0.52      0.50      0.51     13188\n",
      "           4       0.47      0.29      0.36      3704\n",
      "\n",
      "    accuracy                           0.60     62424\n",
      "   macro avg       0.52      0.45      0.47     62424\n",
      "weighted avg       0.59      0.60      0.59     62424\n",
      "\n",
      "MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)\n"
     ]
    }
   ],
   "source": [
    "print(\"Model 1 Unigram Vec\")\n",
    "clf, results = running_model(\"Model 1 Unigram Vec\", MultinomialNB(), model_1_uni_vec_train, label_model_1_uni_vec_train, model_1_uni_vec_test, label_model_1_uni_vec_test)\n",
    "\n",
    "print(clf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "def return_features(vec, model):\n",
    "#     print(vec)\n",
    "    \n",
    "    for i,feature_probability in enumerate(model.coef_):\n",
    "        print('============ Sentiment Score: ', i)\n",
    "        df1 = pd.DataFrame(sorted(zip(feature_probability, vec.get_feature_names()))[:10])\n",
    "        df2 = pd.DataFrame(sorted(zip(feature_probability, vec.get_feature_names()))[-10:])\n",
    "        df3 = pd.concat([df1, df2], axis=1)\n",
    "        print(df3)\n",
    "#         print(tabulate(df3, tablefmt=\"fancy_grid\", headers=[\"Most\",\"Likely\",\"Least\",\"Likely\"], floatfmt=\".2f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============ Sentiment Score:  0\n",
      "           0        1         0         1\n",
      "0 -10.857575      aaa -5.769979      lust\n",
      "1 -10.857575  aaliyah -5.698520     tommi\n",
      "2 -10.857575      aan -5.664618   terrifi\n",
      "3 -10.857575  abagnal -5.529699  schepisi\n",
      "4 -10.857575   abbass -5.262864     blunt\n",
      "5 -10.857575   abbott -5.180821      rail\n",
      "6 -10.857575      abc -5.153792    kouyat\n",
      "7 -10.857575    abdul -5.037492   lighter\n",
      "8 -10.857575    abhor -4.719848     style\n",
      "9 -10.857575     abid -3.559130    assaya\n",
      "============ Sentiment Score:  1\n",
      "           0         1         0                1\n",
      "0 -11.746732       aaa -5.470088      nonchalleng\n",
      "1 -11.746732       aan -5.381981         schepisi\n",
      "2 -11.746732   abagnal -5.331635  straightforward\n",
      "3 -11.746732    abbott -5.170262          terrifi\n",
      "4 -11.746732     abdul -5.114730           kouyat\n",
      "5 -11.746732     abhor -5.062120         communal\n",
      "6 -11.746732    abject -4.954388            style\n",
      "7 -11.746732  aborigin -4.878758             rail\n",
      "8 -11.746732    abound -4.832995          lighter\n",
      "9 -11.746732   abraham -3.522837           assaya\n",
      "============ Sentiment Score:  2\n",
      "          0         1         0                1\n",
      "0 -12.24624    absent -5.521206          terrifi\n",
      "1 -12.24624  ackerman -5.467455  straightforward\n",
      "2 -12.24624    acquir -5.385576            abras\n",
      "3 -12.24624     activ -5.292556             orgi\n",
      "4 -12.24624   actorli -5.196118         communal\n",
      "5 -12.24624    adrian -5.133913            style\n",
      "6 -12.24624  affluenc -5.069985           kouyat\n",
      "7 -12.24624  affluent -4.897652             rail\n",
      "8 -12.24624     after -4.770334          lighter\n",
      "9 -12.24624   ailment -3.518138           assaya\n",
      "============ Sentiment Score:  3\n",
      "          0            1         0                1\n",
      "0 -11.86103      aaliyah -5.554754             orgi\n",
      "1 -11.86103          aan -5.540261           nineti\n",
      "2 -11.86103      abbrevi -5.496279             ming\n",
      "3 -11.86103          abc -5.479214  straightforward\n",
      "4 -11.86103  abderrahman -5.135996            style\n",
      "5 -11.86103        abdul -5.095991         communal\n",
      "6 -11.86103         abel -4.880024          lighter\n",
      "7 -11.86103       abhorr -4.836381           kouyat\n",
      "8 -11.86103         abid -4.836381             rail\n",
      "9 -11.86103        abort -3.256559           assaya\n",
      "============ Sentiment Score:  4\n",
      "           0            1         0        1\n",
      "0 -10.986326          aaa -5.728831   nineti\n",
      "1 -10.986326      aaliyah -5.625034     main\n",
      "2 -10.986326          aan -5.548247     burr\n",
      "3 -10.986326      abagnal -5.376854   string\n",
      "4 -10.986326      abandon -5.299351    tommi\n",
      "5 -10.986326       abbass -5.202501     rail\n",
      "6 -10.986326       abbott -5.160326  lighter\n",
      "7 -10.986326      abbrevi -5.154444    style\n",
      "8 -10.986326          abc -4.619856   kouyat\n",
      "9 -10.986326  abderrahman -3.191915   assaya\n"
     ]
    }
   ],
   "source": [
    "return_features(uni_vec, clf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 1 Bigram Vec\n",
      "The accuracy is 0.5912950147379213\n",
      "#----------------------------------------------------------------#\n",
      "[[ 1155  1315   331    44    14]\n",
      " [ 1269  5483  3673   560    66]\n",
      " [  581  4192 21625  4628   596]\n",
      " [   57   605  3923  7021  1582]\n",
      " [    9    42   297  1729  1627]]\n",
      "#----------------------------------------------------------------#\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.38      0.40      0.39      2859\n",
      "           1       0.47      0.50      0.48     11051\n",
      "           2       0.72      0.68      0.70     31622\n",
      "           3       0.50      0.53      0.52     13188\n",
      "           4       0.42      0.44      0.43      3704\n",
      "\n",
      "    accuracy                           0.59     62424\n",
      "   macro avg       0.50      0.51      0.50     62424\n",
      "weighted avg       0.60      0.59      0.59     62424\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(\"Model 1 Bigram Vec\")\n",
    "results = running_model(\"Model 1 Bigram Vec\", MultinomialNB(), model_1_bi_vec_train, label_model_1_bi_vec_train, model_1_bi_vec_test, label_model_1_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True),\n",
       "                  model                                         classifier  \\\n",
       " 0  Model 1 Unigram Vec  MultinomialNB(alpha=1.0, class_prior=None, fit...   \n",
       " 1  Model 1 Unigram Vec  MultinomialNB(alpha=1.0, class_prior=None, fit...   \n",
       " 2   Model 1 Bigram Vec  MultinomialNB(alpha=1.0, class_prior=None, fit...   \n",
       " \n",
       "    accuracy  \n",
       " 0  0.603886  \n",
       " 1  0.603886  \n",
       " 2  0.591295  )"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 1 Unigram TFIDF Vec\n",
      "The accuracy is 0.579040112777137\n",
      "#----------------------------------------------------------------#\n",
      "[[   71  1094  1644    50     0]\n",
      " [   38  2536  8190   287     0]\n",
      " [   10  1256 28537  1800    19]\n",
      " [    0   126  8146  4841    75]\n",
      " [    0    14  1446  2083   161]]\n",
      "#----------------------------------------------------------------#\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.60      0.02      0.05      2859\n",
      "           1       0.50      0.23      0.32     11051\n",
      "           2       0.59      0.90      0.72     31622\n",
      "           3       0.53      0.37      0.44     13188\n",
      "           4       0.63      0.04      0.08      3704\n",
      "\n",
      "    accuracy                           0.58     62424\n",
      "   macro avg       0.57      0.31      0.32     62424\n",
      "weighted avg       0.57      0.58      0.52     62424\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(\"Model 1 Unigram TFIDF Vec\")\n",
    "results = running_model(\"Model 1 Unigram TFIDF Vec\", MultinomialNB(), model_1_uni_tf_vec_train, label_model_1_uni_tf_vec_train, model_1_uni_tf_vec_test, label_model_1_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 1 Bigram TFIDF Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-187-31e7743b0eb1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 1 Bigram TFIDF Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_1_bigram_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_1_bigram_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_1_bigram_tf_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_1_bigram_tf_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 1 Bigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_1_bigram_tf_vec_train, label_model_1_bigram_tf_vec_train, model_1_bigram_tf_vec_test, label_model_1_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 2 Unigram Vec\")\n",
    "running_model(MultinomialNB(), model_2_uni_vec_train, label_model_2_uni_vec_train, model_2_uni_vec_test, label_model_2_uni_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 2 Bigram Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-188-5f38e2062f69>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 2 Bigram Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_2_bi_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_2_bi_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_2_bi_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_2_bi_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 2 Bigram Vec\")\n",
    "running_model(MultinomialNB(), model_2_bi_vec_train, label_model_2_bi_vec_train, model_2_bi_vec_test, label_model_2_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 2 Unigram TFIDF Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-189-f45d415c7b87>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 2 Unigram TFIDF Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_2_uni_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_2_uni_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_2_uni_tf_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_2_uni_tf_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 2 Unigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_2_uni_tf_vec_train, label_model_2_uni_tf_vec_train, model_2_uni_tf_vec_test, label_model_2_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 2 Bigram TFIDF Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-190-a1734cfdd160>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 2 Bigram TFIDF Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_2_bigram_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_2_bigram_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_2_bigram_tf_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_2_bigram_tf_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 2 Bigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_2_bigram_tf_vec_train, label_model_2_bigram_tf_vec_train, model_2_bigram_tf_vec_test, label_model_2_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 3 Unigram Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-191-f500af84770b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 3 Unigram Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_uni_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_uni_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_uni_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_uni_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 3 Unigram Vec\")\n",
    "running_model(MultinomialNB(), model_3_uni_vec_train, label_model_3_uni_vec_train, model_3_uni_vec_test, label_model_3_uni_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 3 Bigram Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-192-7b14d7cdd7c2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 3 Bigram Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_bi_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_bi_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_bi_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_bi_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 3 Bigram Vec\")\n",
    "running_model(MultinomialNB(), model_3_bi_vec_train, label_model_3_bi_vec_train, model_3_bi_vec_test, label_model_3_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 3 Unigram TFIDF Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-193-e6f4fc8d3882>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 3 Unigram TFIDF Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_uni_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_uni_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_uni_tf_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_uni_tf_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 3 Unigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_3_uni_tf_vec_train, label_model_3_uni_tf_vec_train, model_3_uni_tf_vec_test, label_model_3_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 3 Bigram TFIDF Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-194-adc7fcfdf0ec>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 3 Bigram TFIDF Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_bigram_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_bigram_tf_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_3_bigram_tf_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_3_bigram_tf_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 3 Bigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_3_bigram_tf_vec_train, label_model_3_bigram_tf_vec_train, model_3_bigram_tf_vec_test, label_model_3_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 4 Unigram Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-195-382a5e037cfc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 4 Unigram Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_4_uni_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_4_uni_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_4_uni_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_4_uni_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 4 Unigram Vec\")\n",
    "running_model(MultinomialNB(), model_4_uni_vec_train, label_model_4_uni_vec_train, model_4_uni_vec_test, label_model_4_uni_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model 4 Bigram Vec\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "running_model() missing 1 required positional argument: 'test_label'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-196-ea455412ca88>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Model 4 Bigram Vec\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mrunning_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMultinomialNB\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_4_bi_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_4_bi_vec_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_4_bi_vec_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_model_4_bi_vec_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: running_model() missing 1 required positional argument: 'test_label'"
     ]
    }
   ],
   "source": [
    "print(\"Model 4 Bigram Vec\")\n",
    "running_model(MultinomialNB(), model_4_bi_vec_train, label_model_4_bi_vec_train, model_4_bi_vec_test, label_model_4_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 4 Unigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_4_uni_tf_vec_train, label_model_4_uni_tf_vec_train, model_4_uni_tf_vec_test, label_model_4_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 4 Bigram TFIDF Vec\")\n",
    "running_model(MultinomialNB(), model_4_bigram_tf_vec_train, label_model_4_bigram_tf_vec_train, model_4_bigram_tf_vec_test, label_model_4_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SVMS "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "print(\"Model 1 Unigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_1_uni_vec_train, label_model_1_uni_vec_train, model_1_uni_vec_test, label_model_1_uni_vec_test)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 1 Bigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_1_bi_vec_train, label_model_1_bi_vec_train, model_1_bi_vec_test, label_model_1_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 1 Unigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_1_uni_tf_vec_train, label_model_1_uni_tf_vec_train, model_1_uni_tf_vec_test, label_model_1_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 1 Bigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_1_bigram_tf_vec_train, label_model_1_bigram_tf_vec_train, model_1_bigram_tf_vec_test, label_model_1_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 2 Unigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_2_uni_vec_train, label_model_2_uni_vec_train, model_2_uni_vec_test, label_model_2_uni_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 2 Bigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_2_bi_vec_train, label_model_2_bi_vec_train, model_2_bi_vec_test, label_model_2_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 2 Unigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_2_uni_tf_vec_train, label_model_2_uni_tf_vec_train, model_2_uni_tf_vec_test, label_model_2_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 2 Bigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_2_bigram_tf_vec_train, label_model_2_bigram_tf_vec_train, model_2_bigram_tf_vec_test, label_model_2_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 3 Unigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_3_uni_vec_train, label_model_3_uni_vec_train, model_3_uni_vec_test, label_model_3_uni_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 3 Bigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_3_bi_vec_train, label_model_3_bi_vec_train, model_3_bi_vec_test, label_model_3_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 3 Unigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_3_uni_tf_vec_train, label_model_3_uni_tf_vec_train, model_3_uni_tf_vec_test, label_model_3_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 3 Bigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_3_bigram_tf_vec_train, label_model_3_bigram_tf_vec_train, model_3_bigram_tf_vec_test, label_model_3_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 4 Unigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_4_uni_vec_train, label_model_4_uni_vec_train, model_4_uni_vec_test, label_model_4_uni_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 4 Bigram Vec\")\n",
    "running_model((LinearSVC(C=1)), model_4_bi_vec_train, label_model_4_bi_vec_train, model_4_bi_vec_test, label_model_4_bi_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 4 Unigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_4_uni_tf_vec_train, label_model_4_uni_tf_vec_train, model_4_uni_tf_vec_test, label_model_4_uni_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"Model 4 Bigram TFIDF Vec\")\n",
    "running_model((LinearSVC(C=1)), model_4_bigram_tf_vec_train, label_model_4_bigram_tf_vec_train, model_4_bigram_tf_vec_test, label_model_4_bigram_tf_vec_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def return_features(vec, model):\n",
    "    for i,feature_probability in enumerate(model.coef_):\n",
    "        print('============ Sentiment Score: ', i)\n",
    "        df1 = pd.DataFrame(sorted(zip(feature_probability, vec.get_feature_names()))[:10])\n",
    "        df2 = pd.DataFrame(sorted(zip(feature_probability, vec.get_feature_names()))[-10:])\n",
    "        df3 = pd.concat([df1, df2], axis=1)\n",
    "        print(tabulate(df3, tablefmt=\"fancy_grid\", headers=[\"Most\",\"Likely\",\"Least\",\"Likely\"], floatfmt=\".2f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
