{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/nguyen/projects/flask-rest-setup/sentiment-clf\n" ] } ], "source": [ "cd ../sentiment-clf/" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from model import NLPModel\n", "import pandas as pd\n", "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create the model object\n", "The NLP model object uses a Naive Bayes classifier and a TFIDF vectorizer:\n", "```\n", "self.clf = MultinomialNB()\n", "self.vectorizer = TfidfVectorizer()\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "model = NLPModel()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get the data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "with open('lib/data/train.tsv') as f:\n", " data = pd.read_csv(f, sep='\\t')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PhraseIdSentenceIdPhraseSentiment
011A series of escapades demonstrating the adage ...1
121A series of escapades demonstrating the adage ...2
231A series2
341A2
451series2
561of escapades demonstrating the adage that what...2
671of2
781escapades demonstrating the adage that what is...2
891escapades2
9101demonstrating the adage that what is good for ...2
\n", "
" ], "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", "5 6 1 of escapades demonstrating the adage that what... \n", "6 7 1 of \n", "7 8 1 escapades demonstrating the adage that what is... \n", "8 9 1 escapades \n", "9 10 1 demonstrating the adage that what is good for ... \n", "\n", " Sentiment \n", "0 1 \n", "1 2 \n", "2 2 \n", "3 2 \n", "4 2 \n", "5 2 \n", "6 2 \n", "7 2 \n", "8 2 \n", "9 2 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use only the 1 star and 5 star reviews\n", "For this example, we want to only predict positive or negative sentiment using the extreme cases." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "pos_neg = data[(data['Sentiment'] == 0) | (data['Sentiment'] == 4)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Relabel as 0 for negative and 1 for positive" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/nguyen/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " \n" ] } ], "source": [ "pos_neg['Binary'] = pos_neg.apply(\n", " lambda x: 0 if x['Sentiment'] == 0 else 1, axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fit a vectorizer to the vocabulary in the dataset" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "model.vectorizer_fit(pos_neg.loc[:, 'Phrase'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Transform the text in the dataset to its vectorized representation" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "X = model.vectorizer_transform(pos_neg.loc[:, 'Phrase'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Separate the target from the data" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "y = pos_neg.loc[:, 'Binary']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cross Validation!" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train the model" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "model.train(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from util import plot_roc" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nI4/EFi/+oai7CVnyY4CBZjYMOA741TmnG0YkkJ07d+59vGzZMtatW8f8+fMpX74869evZ9myZVSq\nVInZs2czd+7cAu0zNTW10DnS09PZtWsXTZo0oU6dOrRq1YpWrVpRu3btA27boUOHXPeVlZVF3bp1\nOeyww2jevDlmBVnNVUSkkGrWhLffhhNOgIMPLvJuolbyZjYU6AjUNLM1+OUsywA4514APsSv770U\nv/zmFdHKItG1YMECvvnmGxYsWMDnn3/OnDlz2Lp1a4E+W61atb2jvYcffpgLLrgg121r165dpJIX\nEYkbY8ZASgqccQb07Vvs3UWt5J1zF+XzvgP+HK3vl8javn0748aN4z//8Vc6litXjnHjxlG2bFl2\n7969z7YpKSk0atSIFi1acPLJJwP+nHTr1q2pXbs2e+ZUVKxYkUqVKpXsb0REJFaNGgUXXeRH7z17\nQgSOFMbFxDsJY8uWLTzzzDN88sknTJ8+fZ/32rVrR9u2bTEzGjduTPfu3TnppJM4/PDDNdFKRKSw\nhgyBfv3guONg7NiIFDyo5CWHDRs28N133/HTTz+xcOFC7r///n3eP+GEExg8eDCNGjUKE1BEJBG9\n+SZccQWccgp88AFUrhyxXavkk8TKlSu566672LFjB6VL+//ZnXOMHTuW+vXrY2asWLHid5875phj\nmDx5ss6Fi4hEy1dfQefOMHo0VKwY0V3H3V3odAndga1cuZJdu3YBsGnTJlasWMGKFSv4xz/+QenS\npfe5PKxVq1bA/18XXr58eVq3bk16ejp16tShT58+VKtWjebNm+ucuYhItGzdCqmpkJUF6emQyyWn\nZjbbOde+KF+hkXwcGjFiBA888ACLFi0q0PaVK1fmuuuuo2XLllx77bW67EtEJLRBg/zP559D/fq5\nFnxxqeRj3KpVq/j+++8B+Oyzz7jvvvv2vte+fXuysrLo2rUrmzdvpmPHjnsXk9mzWEqdOnWoWrVq\nkOwiInIAjz0Gd90F555brGvgC0IlH2PS0tIYMWIEr732GqmpqYwdO/aA240cOZJzzz23hNOJiEiR\nOQd//zvcdx9cfLGfcFc6ujWskg9o3Lhx9OzZc58lVvdfWrV169accsopnH/++QA0bNiQBg0alHhW\nEREpplde8QXfvz+8+qpf9CbKVPIlLC0tjfT0dPr168d7770HwOGHH07Hjh33buOc47bbbuPQQw/N\n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\nHwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.plot_roc(X_test, y_test, size_x=8, size_y=8)" ] }, { "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.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }