{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sentiment Classification the old-fashioned way: \n",
"## `Naive Bayes`, `Logistic Regression`, and `Ngrams`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The purpose of this notebook is to show how sentiment classification is done via the classic techniques of `Naive Bayes`, `Logistic regression`, and `Ngrams`. We will be using `sklearn` and the `fastai` library.\n",
"\n",
"In a future lesson, we will revisit sentiment classification using `deep learning`, so that you can compare the two approaches."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The content here was extended from [Lesson 10 of the fast.ai Machine Learning course](https://course.fast.ai/lessonsml1/lesson10.html). Linear model is pretty close to the state of the art here. Jeremy surpassed state of the art using a RNN in fall 2017."
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"## 0.The fastai library"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"We will begin using [the fastai library](https://docs.fast.ai) (version 1.0) in this notebook. We will use it more once we move on to neural networks.\n",
"\n",
"The fastai library is built on top of PyTorch and encodes many state-of-the-art best practices. It is used in production at a number of companies. You can read more about it here:\n",
"\n",
"- [Fast.ai's software could radically democratize AI](https://www.zdnet.com/article/fast-ais-new-software-could-radically-democratize-ai/) (ZDNet)\n",
"\n",
"- [fastai v1 for PyTorch: Fast and accurate neural nets using modern best practices](https://www.fast.ai/2018/10/02/fastai-ai/) (fast.ai)\n",
"\n",
"- [fastai docs](https://docs.fast.ai/)\n",
"\n",
"### Installation\n",
"\n",
"With conda:\n",
"\n",
"`conda install -c pytorch -c fastai fastai=1.0`\n",
"\n",
"Or with pip:\n",
"\n",
"`pip install fastai==1.0`\n",
"\n",
"More [installation information here](https://github.com/fastai/fastai/blob/master/README.md).\n",
"\n",
"Beginning in lesson 4, we will be using GPUs, so if you want, you could switch to a [cloud option](https://course.fast.ai/#using-a-gpu) now to setup fastai."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. The IMDB dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The [large movie review dataset](http://ai.stanford.edu/~amaas/data/sentiment/) contains a collection of 50,000 reviews from IMDB, We will use the version hosted as part [fast.ai datasets](https://course.fast.ai/datasets.html) on AWS Open Datasets. \n",
"\n",
"The dataset contains an even number of positive and negative reviews. The authors considered only highly polarized reviews. A negative review has a score ≤ 4 out of 10, and a positive review has a score ≥ 7 out of 10. Neutral reviews are not included in the dataset. The dataset is divided into training and test sets. The training set is the same 25,000 labeled reviews.\n",
"\n",
"The **sentiment classification task** consists of predicting the polarity (positive or negative) of a given text."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"%reload_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from fastai import *\n",
"from fastai.text import *\n",
"from fastai.utils.mem import GPUMemTrace #call with mtrace"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import sklearn.feature_extraction.text as sklearn_text\n",
"import pickle "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Preview the sample IMDb data set"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"fast.ai has a number of [datasets hosted via AWS Open Datasets](https://course.fast.ai/datasets.html) for easy download. We can see them by checking the docs for URLs (remember `??` is a helpful command):"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"?? URLs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is always good to start working on a sample of your data before you use the full dataset-- this allows for quicker computations as you debug and get your code working. For IMDB, there is a sample dataset already available:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb_sample')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path = untar_data(URLs.IMDB_SAMPLE)\n",
"path"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Read the data set into a pandas dataframe, which we can inspect to get a sense of what our data looks like. We see that the three columns contain review label, review text, and the `is_valid` flag, respectively. `is_valid` is a boolean flag indicating whether the row is from the validation set or not."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
label
\n",
"
text
\n",
"
is_valid
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
negative
\n",
"
Un-bleeping-believable! Meg Ryan doesn't even ...
\n",
"
False
\n",
"
\n",
"
\n",
"
1
\n",
"
positive
\n",
"
This is a extremely well-made film. The acting...
\n",
"
False
\n",
"
\n",
"
\n",
"
2
\n",
"
negative
\n",
"
Every once in a long while a movie will come a...
\n",
"
False
\n",
"
\n",
"
\n",
"
3
\n",
"
positive
\n",
"
Name just says it all. I watched this movie wi...
\n",
"
False
\n",
"
\n",
"
\n",
"
4
\n",
"
negative
\n",
"
This movie succeeds at being one of the most u...
\n",
"
False
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" label text is_valid\n",
"0 negative Un-bleeping-believable! Meg Ryan doesn't even ... False\n",
"1 positive This is a extremely well-made film. The acting... False\n",
"2 negative Every once in a long while a movie will come a... False\n",
"3 positive Name just says it all. I watched this movie wi... False\n",
"4 negative This movie succeeds at being one of the most u... False"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(path/'texts.csv')\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Extract the movie reviews from the sample IMDb data set.\n",
"#### We will be using [TextList](https://docs.fast.ai/text.data.html#TextList) from the fastai library:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"failure count is 1\n",
"\n",
"Wall time: 28.2 s\n"
]
}
],
"source": [
"%%time\n",
"# throws `BrokenProcessPool' Error sometimes. Keep trying `till it works!\n",
"\n",
"count = 0\n",
"error = True\n",
"while error:\n",
" try: \n",
" # Preprocessing steps\n",
" movie_reviews = (TextList.from_csv(path, 'texts.csv', cols='text')\n",
" .split_from_df(col=2)\n",
" .label_from_df(cols=0))\n",
" error = False\n",
" print(f'failure count is {count}\\n') \n",
" except: # catch *all* exceptions\n",
" # accumulate failure count\n",
" count = count + 1\n",
" print(f'failure count is {count}')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exploring IMDb review data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A good first step for any data problem is to explore the data and get a sense of what it looks like. In this case we are looking at movie reviews, which have been labeled as \"positive\" or \"negative\". The reviews have already been `tokenized`, i.e. split into `tokens`, basic units such as words, prefixes, punctuation, capitalization, and other features of the text."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LabelLists;\n",
"\n",
"Train: LabelList (800 items)\n",
"x: TextList\n",
"xxbos xxmaj un - xxunk - believable ! xxmaj meg xxmaj ryan does n't even look her usual xxunk lovable self in this , which normally makes me forgive her shallow xxunk acting xxunk . xxmaj hard to believe she was the producer on this dog . xxmaj plus xxmaj kevin xxmaj kline : what kind of suicide trip has his career been on ? xxmaj xxunk ... xxmaj xxunk ! ! ! xxmaj finally this was directed by the guy who did xxmaj big xxmaj xxunk ? xxmaj must be a replay of xxmaj jonestown - hollywood style . xxmaj xxunk !,xxbos xxmaj this is a extremely well - made film . xxmaj the acting , script and camera - work are all first - rate . xxmaj the music is good , too , though it is mostly early in the film , when things are still relatively xxunk . xxmaj there are no really xxunk in the cast , though several faces will be familiar . xxmaj the entire cast does an excellent job with the script . \n",
" \n",
" xxmaj but it is hard to watch , because there is no good end to a situation like the one presented . xxmaj it is now xxunk to blame the xxmaj british for setting xxmaj hindus and xxmaj muslims against each other , and then xxunk xxunk them into two countries . xxmaj there is some merit in this view , but it 's also true that no one forced xxmaj hindus and xxmaj muslims in the region to xxunk each other as they did around the time of partition . xxmaj it seems more likely that the xxmaj british simply saw the xxunk between the xxunk and were clever enough to exploit them to their own ends . \n",
" \n",
" xxmaj the result is that there is much cruelty and inhumanity in the situation and this is very unpleasant to remember and to see on the screen . xxmaj but it is never painted as a black - and - white case . xxmaj there is xxunk and xxunk on both sides , and also the hope for change in the younger generation . \n",
" \n",
" xxmaj there is redemption of a sort , in the end , when xxmaj xxunk has to make a hard choice between a man who has ruined her life , but also truly loved her , and her family which has xxunk her , then later come looking for her . xxmaj but by that point , she has no xxunk that is without great pain for her . \n",
" \n",
" xxmaj this film carries the message that both xxmaj muslims and xxmaj hindus have their grave xxunk , and also that both can be xxunk and caring people . xxmaj the reality of partition makes that xxunk all the more wrenching , since there can never be real xxunk across the xxmaj india / xxmaj pakistan border . xxmaj in that sense , it is similar to \" xxmaj mr & xxmaj xxunk xxmaj xxunk \" . \n",
" \n",
" xxmaj in the end , we were glad to have seen the film , even though the resolution was xxunk . xxmaj if the xxup uk and xxup us could deal with their own xxunk of racism with this kind of xxunk , they would certainly be better off .,xxbos xxmaj every once in a long while a movie will come along that will be so awful that i feel compelled to warn people . xxmaj if i labor all my days and i can save but one soul from watching this movie , how great will be my joy . \n",
" \n",
" xxmaj where to begin my discussion of pain . xxmaj for xxunk , there was a musical xxunk every five minutes . xxmaj there was no character development . xxmaj every character was a stereotype . xxmaj we had xxunk guy , fat guy who eats donuts , goofy foreign guy , etc . xxmaj the script felt as if it were being written as the movie was being shot . xxmaj the production value was so incredibly low that it felt like i was watching a junior high video presentation . xxmaj have the directors , producers , etc . ever even seen a movie before ? xxmaj xxunk is getting worse and worse with every new entry . xxmaj the concept for this movie sounded so funny . xxmaj how could you go wrong with xxmaj gary xxmaj coleman and a handful of somewhat legitimate actors . xxmaj but trust me when i say this , things went wrong , xxup very xxup wrong .,xxbos xxmaj name just says it all . i watched this movie with my dad when it came out and having served in xxmaj xxunk he had great admiration for the man . xxmaj the disappointing thing about this film is that it only xxunk on a short period of the man 's life - interestingly enough the man 's entire life would have made such an epic bio - xxunk that it is staggering to imagine the cost for production . \n",
" \n",
" xxmaj some posters xxunk to the flawed xxunk about the man , which are cheap shots . xxmaj the theme of the movie \" xxmaj duty , xxmaj honor , xxmaj country \" are not just mere words xxunk from the lips of a high - xxunk officer - it is the deep xxunk of one man 's total devotion to his country . \n",
" \n",
" xxmaj ironically xxmaj xxunk being the liberal that he was xxunk a better understanding of the man . xxmaj he does a great job showing the xxunk general xxunk with the xxunk side of the man .,xxbos xxmaj this movie succeeds at being one of the most unique movies you 've seen . xxmaj however this comes from the fact that you ca n't make heads or xxunk of this mess . xxmaj it almost seems as a series of challenges set up to determine whether or not you are willing to walk out of the movie and give up the money you just paid . xxmaj if you do n't want to feel xxunk you 'll sit through this horrible film and develop a real sense of pity for the actors involved , they 've all seen better days , but then you realize they actually got paid quite a bit of money to do this and you 'll lose pity for them just like you 've already done for the film . i ca n't go on enough about this horrible movie , its almost something that xxmaj ed xxmaj wood would have made and in that case it surely would have been his masterpiece . \n",
" \n",
" xxmaj to start you are forced to sit through an opening dialogue the likes of which you 've never seen / heard , this thing has got to be five minutes long . xxmaj on top of that it is narrated , as to suggest that you the viewer can not read . xxmaj then we meet xxmaj mr. xxmaj xxunk and the xxunk of terrible lines gets xxunk , it is as if he is xxunk solely to get lines on to the movie poster xxunk line . xxmaj soon we meet xxmaj stephen xxmaj xxunk , who i typically enjoy ) and he does his best not to drown in this but ultimately he does . xxmaj then comes the ultimate insult , xxmaj tara xxmaj xxunk playing an intelligent role , oh help us ! xxmaj tara xxmaj xxunk is not a very talented actress and somehow she xxunk gets roles in movies , in my opinion though she should stick to movies of the xxmaj american pie type . \n",
" \n",
" xxmaj all in all you just may want to see this for yourself when it comes out on video , i know that i got a kick out of it , i mean lets all be honest here , sometimes its comforting to xxunk in the shortcomings of others .\n",
"y: CategoryList\n",
"negative,positive,negative,positive,negative\n",
"Path: C:\\Users\\cross-entropy\\.fastai\\data\\imdb_sample;\n",
"\n",
"Valid: LabelList (200 items)\n",
"x: TextList\n",
"xxbos xxmaj this very funny xxmaj british comedy shows what might happen if a section of xxmaj london , in this case xxmaj xxunk , were to xxunk itself independent from the rest of the xxup uk and its laws , xxunk & post - war xxunk . xxmaj merry xxunk is what would happen . \n",
" \n",
" xxmaj the explosion of a wartime bomb leads to the xxunk of ancient xxunk which show that xxmaj xxunk was xxunk to the xxmaj xxunk of xxmaj xxunk xxunk ago , a small historical xxunk long since forgotten . xxmaj to the new xxmaj xxunk , however , this is an unexpected opportunity to live as they please , free from any xxunk from xxmaj xxunk . \n",
" \n",
" xxmaj stanley xxmaj xxunk is excellent as the minor city xxunk who suddenly finds himself leading one of the world 's xxunk xxunk . xxmaj xxunk xxmaj margaret xxmaj xxunk is a delight as the history professor who sides with xxmaj xxunk . xxmaj others in the stand - out cast include xxmaj xxunk xxmaj xxunk , xxmaj paul xxmaj xxunk , xxmaj xxunk xxmaj xxunk , xxmaj xxunk xxmaj xxunk & xxmaj sir xxmaj michael xxmaj xxunk . \n",
" \n",
" xxmaj welcome to xxmaj xxunk !,xxbos i saw this movie once as a kid on the late - late show and fell in love with it . \n",
" \n",
" xxmaj it took 30 + years , but i recently did find it on xxup dvd - it was n't cheap , either - in a xxunk that xxunk in war movies . xxmaj we watched it last night for the first time . xxmaj the audio was good , however it was grainy and had the trailers between xxunk . xxmaj even so , it was better than i remembered it . i was also impressed at how true it was to the play . \n",
" \n",
" xxmaj the xxunk is around here xxunk . xxmaj if you 're xxunk in finding it , fire me a xxunk and i 'll see if i can get you the xxunk . xxunk,xxbos xxmaj this is , in my opinion , a very good film , especially for xxmaj michael xxmaj jackson lovers . xxmaj it contains a message on drugs , stunning special effects , and an awesome music video . \n",
" \n",
" xxmaj the main film is xxunk around the song and music video ' xxmaj smooth xxmaj criminal . ' xxmaj unlike the four - minute music video , it is normal speed and , in my opinion , much xxunk to watch . \n",
" \n",
" xxmaj the plot is rather weird , however . xxmaj michael xxmaj jackson plays a xxunk ' gangster ' that , when he sees a shooting star , he xxunk into a piece of xxunk . xxmaj throughout the film , he xxunk into a race car , a giant robot , and a space ship . \n",
" \n",
" xxmaj the robot scene in particular is a bit drawn out and strange . i found it a little out - of - whack compared to the rest of the film . \n",
" \n",
" a child is kidnapped , xxmaj michael tries to save her , is tortured and beaten , and suddenly turns into a giant robot that blows up all the bad guys . a little weird ? xxmaj yeah . \n",
" \n",
" xxmaj but besides the bizarre robot scene , it 's a very good movie , and any xxmaj michael xxmaj jackson fan will enjoy both the xxmaj smooth xxmaj criminal music video and the movie .,xxbos xxmaj in xxmaj iran , women are not xxunk to attend men 's sporting events , apparently to \" xxunk \" them from all the xxunk and foul language they might hear xxunk from the male fans ( so since men ca n't xxunk or xxunk themselves , women are forced to suffer . xxmaj go figure . ) . \" xxmaj xxunk \" tells the tale of a half dozen or so young women who , dressed like men , attempt to xxunk into the high - xxunk match between xxmaj iran and xxmaj xxunk that , in xxunk , qualified xxmaj iran to go to the xxmaj world xxmaj cup ( the movie was actually filmed in large part during that game ) . \n",
" \n",
" \" xxmaj xxunk \" is a xxunk - of - life comedy that will remind you of all those great xxunk films ( \" xxmaj the xxmaj shop on xxmaj main xxmaj street , \" \" xxmaj loves of a xxmaj blonde , \" \" xxmaj closely xxmaj watched xxmaj trains \" etc . ) that xxunk out of xxmaj communist xxmaj xxunk as part of the \" xxmaj xxunk xxmaj xxunk \" in the mid xxunk 's . xxmaj as with many of those works , \" xxmaj xxunk \" is more concerned with xxunk life than with xxunk any kind of xxunk contrived fictional narrative . xxmaj indeed , it is the simplicity of the xxunk and the xxunk of the style that make the movie so effective . \n",
" \n",
" xxmaj once their xxunk is discovered , the girls are xxunk into a small xxunk right outside the xxunk where they can hear the xxunk xxunk xxunk from the game inside . xxmaj stuck where they are , all they can do is xxunk with the security guards to let them go in , guards who are basically xxunk , good - xxunk xxunk who are compelled to do their duty as a part of their xxunk military service . xxmaj even most of the men going into the xxunk do n't seem particularly xxunk at the thought of these women being allowed in . xxmaj still the prohibition xxunk . xxmaj yet , how can one not be impressed by the very real courage and xxunk displayed by these women as they go up against a system that continues to xxunk such a xxunk xxunk and xxunk xxunk ? xxmaj and , yet , the purpose of these women is not to xxunk behind a cause or to make a \" point . \" xxmaj they are simply obsessed fans with a burning desire to watch a soccer game and , like all the men in the country , xxunk on their team . \n",
" \n",
" xxmaj it 's hard to tell just how much of the dialogue is scripted and how much of it is xxunk , but , in either case , the actors , with their xxunk xxunk faces , do a magnificent job making each moment seem utterly real and convincing . xxmaj xxunk xxmaj xxunk - xxunk and xxmaj xxunk xxmaj xxunk are notable xxunk in a xxunk excellent cast . xxmaj the structure of the film is also very loose and xxunk , as writer / director xxmaj xxunk xxmaj xxunk and co - writer xxmaj xxunk xxmaj xxunk focus for a few brief moments on one or two of the characters , then move xxunk and xxunk onto others . xxmaj with this documentary - type approach , we come to feel as if we are xxunk an actual event xxunk in \" real time . \" xxmaj very often , it 's quite easy for us to forget we 're actually watching a movie . \n",
" \n",
" xxmaj it was a very smart move on the part of the filmmakers to include so much good - xxunk humor in the film ( it 's what the xxmaj xxunk filmmakers did as well ) , the better to point up the utter absurdity of the situation and xxunk the appeal of the film for audiences both domestic and foreign . \" xxmaj xxunk \" is obviously a cry for justice , but it is one that is made all the more effective by its xxunk to make of its story a heavy - breathing tragedy . xxmaj instead , it realizes that nothing breaks down social xxunk quite as xxunk as humor and an appeal to the audience 's common humanity . xxmaj and is n't that what true art is supposed to be all about ? xxmaj in its own quiet , xxunk way , \" xxmaj xxunk \" is one of the great , under - appreciated xxunk of xxunk .,xxbos \" xxmaj in xxmaj xxunk xxunk , the xxmaj university of xxmaj xxunk xxunk to xxunk xxmaj xxunk xxmaj national xxmaj xxunk , with an xxunk of xxmaj xxunk xxunk offering to xxunk the research . xxmaj xxunk xxunk became the first \" national \" xxunk . xxmaj it did not , however , remain at its original location in the xxmaj xxunk forest . xxmaj in xxunk , it moved xxunk west from the \" xxmaj xxunk xxmaj city \" to a new site on xxmaj xxunk xxunk . xxmaj when xxmaj xxunk xxmaj xxunk visited xxmaj xxunk 's director , xxmaj walter xxmaj xxunk , in xxunk , he asked him what kind of xxunk was to be built at the new site . xxmaj when xxmaj xxunk described a heavy - water xxunk xxunk at one - xxunk the power of the xxmaj xxunk xxmaj xxunk xxmaj xxunk under design at xxmaj xxunk xxmaj xxunk , xxmaj xxunk xxunk it would be xxunk if xxmaj xxunk took the xxmaj xxunk xxmaj xxunk design and xxunk the xxmaj xxunk xxmaj xxunk xxmaj xxunk at one - xxunk capacity . xxmaj the joke proved unintentionally xxunk . \" \n",
" \n",
" xxmaj the xxup xxunk plant used xxunk to separate the xxunk in thousands of tall xxunk . xxmaj it was built next to the xxup xxunk power plant , which provided the necessary steam . xxmaj much less xxunk than xxup xxunk , the xxup xxunk plant was torn down after the war . \n",
" \n",
" xxmaj concerned that the xxmaj xxunk xxmaj energy xxmaj xxunk research program might become too xxunk , xxmaj xxunk xxunk a xxunk of industrial xxunk , and during a xxmaj xxunk visit to xxmaj xxunk xxmaj xxunk , he xxunk with xxmaj clark xxmaj center , manager of xxmaj xxunk & xxmaj xxunk , a xxunk of xxmaj union xxmaj xxunk xxmaj corporation at xxmaj xxunk xxmaj xxunk , the possibility of the company xxunk xxunk of the xxmaj xxunk . \n",
" \n",
" xxmaj prince xxmaj henry ( of xxmaj xxunk ) xxmaj xxunk in xxmaj washington and xxmaj visiting the xxmaj german xxmaj xxunk ( xxunk ) . xxmaj xxunk , with xxmaj prince xxmaj henry of xxmaj xxunk according to the xxunk of science and its xxunk their were already concerns with the xxunk of new science with military xxunk . xxmaj the xxmaj xxunk ( xxunk / xxup ii ) , \" xxmaj xxunk xxmaj xxunk 's splendid xxunk at the xxunk xxmaj st. xxmaj xxunk , xxmaj new xxmaj york . xxmaj taken at the exact moment of xxmaj prince xxmaj henry 's xxunk , and the raising of the xxunk standard . \" xxmaj if xxmaj xxunk knew of these necessary xxunk to xxunk xxunk then what was the xxunk of the xxunk xxup xxunk and xxup wwii . xxmaj the quality of xxunk control i xxunk ? \n",
" \n",
" xxmaj thus , did the xxunk of xxmaj xxunk xxmaj xxunk xxunk for a military mission , or a business plan , based on the security xxunk of xxmaj xxunk xxunk ? xxmaj because supposedly their were no survivors , and the ones who were caught in xxmaj europe ordered to be executed . xxmaj of the xxunk man commando team the survivors who were captured were executed under orders of the xxmaj german xxmaj army against xxunk , and xxunk acts of the xxmaj state of xxmaj germany . \n",
" \n",
" xxmaj the xxmaj xxunk xxmaj no . xxunk / xxunk xxunk xxmaj xxunk . xxup xxunk / xxunk , xxmaj xxunk xxup xxunk , 18 xxmaj xxunk xxunk , ( xxunk ) xxmaj xxunk xxmaj hitler ; xxmaj translation of xxmaj document no . xxup xxunk , xxmaj office of xxup u.s. xxmaj chief of xxmaj xxunk , xxunk true copy xxmaj xxunk xxmaj major , xxunk xxup xxunk xxunk xxmaj march xxunk , xxunk , xxunk at the xxup u.s. xxmaj national xxmaj xxunk . \n",
" \n",
" xxmaj the xxup xxunk xxmaj society xxunk xxunk xxmaj xxunk xxmaj xxunk . , xxunk xxunk , xxup xxunk xxunk\n",
"y: CategoryList\n",
"positive,positive,positive,positive,positive\n",
"Path: C:\\Users\\cross-entropy\\.fastai\\data\\imdb_sample;\n",
"\n",
"Test: None"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"movie_reviews"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Let's examine the`movie_reviews` object:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['__class__',\n",
" '__delattr__',\n",
" '__dict__',\n",
" '__dir__',\n",
" '__doc__',\n",
" '__eq__',\n",
" '__format__',\n",
" '__ge__',\n",
" '__getattr__',\n",
" '__getattribute__',\n",
" '__gt__',\n",
" '__hash__',\n",
" '__init__',\n",
" '__init_subclass__',\n",
" '__le__',\n",
" '__lt__',\n",
" '__module__',\n",
" '__ne__',\n",
" '__new__',\n",
" '__reduce__',\n",
" '__reduce_ex__',\n",
" '__repr__',\n",
" '__setattr__',\n",
" '__setstate__',\n",
" '__sizeof__',\n",
" '__str__',\n",
" '__subclasshook__',\n",
" '__weakref__',\n",
" 'add_test',\n",
" 'add_test_folder',\n",
" 'databunch',\n",
" 'filter_by_func',\n",
" 'get_processors',\n",
" 'label_const',\n",
" 'label_empty',\n",
" 'label_from_df',\n",
" 'label_from_folder',\n",
" 'label_from_func',\n",
" 'label_from_list',\n",
" 'label_from_lists',\n",
" 'label_from_re',\n",
" 'lists',\n",
" 'load_empty',\n",
" 'load_state',\n",
" 'path',\n",
" 'process',\n",
" 'test',\n",
" 'train',\n",
" 'transform',\n",
" 'transform_y',\n",
" 'valid']"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(movie_reviews)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `movie_reviews` splits the data into training and validation sets, `.train` and `.valid` "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 800 and 200 reviews in the training and validations sets, respectively.\n"
]
}
],
"source": [
"print(f'There are {len(movie_reviews.train.x)} and {len(movie_reviews.valid.x)} reviews in the training and validations sets, respectively.')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Reviews are composed of lists of tokens. In NLP, a **token** is the basic unit of processing (what the tokens are depends on the application and your choices). Here, the tokens mostly correspond to words or punctuation, as well as several special tokens, corresponding to unknown words, capitalization, etc."
]
},
{
"attachments": {
"image.png": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA08AAAHMCAYAAAANhZNFAAAgAElEQVR4Aey9D1Bb553v/d3XqfyuZ+l4BiaZla87VpqNGPe17CzSeI0cbyBswc4CTgtKaohbBJ0AvgvEU+PcNea2gGcNTmPBXAN9g5UpFmkseBtEbwxMHUhdi10iZm3Lt74obxJ5mmvd1x4067FaOqhmzjvPkY50dHQEh7+G+KcZW0fPeZ7f8/t9nv9/+QuO4zjQhwgQASJABIgAESACRIAIEAEiQATmJPB/zPmWXhIBIkAEiAARIAJEgAgQASJABIgAT4AGT5QRiAARIAJEgAgQASJABIgAESACCgjQ4EkBJPJCBIgAESACRIAIEAEiQASIABGgwRPlASJABIgAESACRIAIEAEiQASIgAICNHhSAIm8EAEiQASIABEgAkSACBABIkAEaPBEeYAIEAEiQASIABEgAkSACBABIqCAAA2eFEAiL0SACBABIkAEiAARIAJEgAgQARo8UR4gAkSACBABIkAEiAARIAJEgAgoIECDJwWQyAsRIAJEgAgQASJABIgAESACRIAGT5QHiAARIAJEgAgQASJABIgAESACCgjQ4EkBJPJCBIgAESACRIAIEAEiQASIABGgwRPlASJABIgAESACRIAIEAEiQASIgAICNHhSAIm8EAEiQASIABEgAkSACBABIkAEaPBEeYAIEAEiQASIABEgAkSACBABIqCAAA2eFEAiL0SACBABIkAEiAARIAJEgAgQARo8UR4gAkSACBABIkAEiAARIAJEgAgoILCowZN/oBp6vV7Bv2o47gGCf8t1BRo9Ui9+OKr00Fc54H+keqzVyOP5hNI2lM4Jtb5u4fNKNP3j5SQMuwov3G0sL1vgniuuOBvm8qzsnSJ2ykQto69w2szHYxljXLSoew5U6/WoHlih0hpO8xWTv2jD11DAlU6D5TLVN4KWkoxwm1WNIcVZxg0La+se9zZh0em8OnW9ojp8ufISySECROCxJ/DEYgiovmGEuUwrCurDRNcQ3DtyYN6tFrmnQPOXop/0SASWQmA2AK+zF44/5aMmO3kpkigsEYglQHkrlsdX6pcfjtO1sH+ug/lUBQybv46nN8sb6L9uR/utVJw8pJP3QK4rRoDYrxhaEkwEiMAyE1jU4ClplwmVu8SauGFhg6fnTKgsj290FE/yiUXS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xW1pJO924MJb1bBNhzjWvnscph0JJiuXPS/JsddgKWmsLToJ84dmWBuakalnfxNNeVshl0RybtqSHvSq29Hxcweaj1oRZHnw2b0wnepFZXaiCUs5SeRGBIjAeiLwF+yu9fWkMOlKBIjAYgl4YT/ciy1dtbQPf7EIKdzKE2BnPQ80AjRLH8daWMEo7ppADVslow8RIAJEgAisOoG1deZp1c2nCInA40MgeN2B3g3boFmpFcTHByVZugwE3G0ZKDxig0d8DpWd9XSys54qaL4hXs5dhghJBBEgAkSACBCBZSCw5rbtLYNNJIIIEIE4AkHcuOJF/rHKubd/xoUjByKwMgRSMwqBbgvKq6b4M4TqjUH4xm2wdLug2teE12hlZWXAk1QiQASIABFYEgEaPC0JHwUmAuuFgAqGqlbEHjtfL7qTnl9FAqodlejs/DrOvuuA5aiNvxWNnW/dX9+Dipe0kj8I8FUkQDYRASJABIjAeiRAZ57WY6qRzkSACBABIkAEiAARIAJEgAisOgE687TqyClCIkAEiAARIAJEgAgQASJABNYjARo8rcdUI52JABEgAkSACBABIkAEiAARWHUCNHhadeQUIREgAkSACBABIkAEiAARIALrkQANntZjqpHORIAIEAEiQASIABEgAkSACKw6ARo8rTpyipAIEAEiQASIABEgAkSACBCB9UiABk/rMdVIZyJABIgAESACRIAIEAEiQARWnQANnlYdOUVIBIgAESACRIAIEAEiQASIwHokQIOn9ZhqpDMRIAJEgAgQASJABIgAESACq06ABk+rjpwiJAJEgAgQASJABIgAESACRGA9EqDB03pMNdKZCBABIkAEiAARIAJEgAgQgVUnQIOnVUdOERIBIkAEiAARIAJEgAgQASKwHgnQ4Gk9phrpTASIABEgAkSACBABIkAEiMCqE6DB06ojpwiJABEgAkSACBABIkAEiAARWI8EaPC0HlONdCYCRIAIEAEiQASIABEgAkRg1QnQ4GnVkVOERIAIEAEiQASIABEgAkSACKxHAk+sR6WXW+eHDx/iz3/+M2ZnZ5dbtCJ5GzZswNe+9jU88QQlhyJg5IkIEAEiQASIABEgAkSACDwCAn/BcRz3COJdM1HOzMzwA6e1oBAbQG3cuHEtqEI6EAEiQASIABEgAkSACBABIiAh8Fhv2xNWnCRMHtlP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dlRm1CGh9WNUps5g5ikitdALvt5y/hfmjR1DqJjSA0hoWgp53Am4YNaZYCnsxBCbtV2yn8elHEvWAFMrzvd31cCRATRlymfEp05IV4kAESACRGAhCSzJPU8LCWyhZWtzS5F+ywI7cxX+mH28l63oTyxGTsr8DpweM2xUnBkS4AfQe5vQL3iEE7MJDPXz3hoNifxuCjF40X4/LuVYtIDnSTHPJSv6V+UjL40GTvOEmLIlAkSACMwLgSW752kuaKxYsQLj49JdtnOR6+zyYDpN+VmdhX0HTqGgy468MD9COWXaxXwx4IK1axj5b52EdhoEi7kYpNvSIRD/1zuw/u1qVJfeF/bHAT5h356XeaTMCvFpuSgL97iUY1HCnXOlPLAf78PtwC2cO+9C0qEa4bed5lwQZUgEiAARIALzRGBZD56efPLJRTd4YjpN99EWNqD0pUM4dSMdFZsfj1kazwdm9G9vwfl5Xq43HVu6vowIrMnCsfeAtpOncfpICXwP2A8Ya7G1sB2tRXqF+/JFzOVxKcciRjx3qn0b+NqCzssrkZTbhIZcyc80zJ0QyokIEAEiQATmkcCy3vPEuI6NjeGbb76ZR8TRZ80GTivZD33ShwgQASJABIgAESACRIAIEIFFR2DZD56YRR4+fMgPoBZqCR9bqscGTk88sawnAhdd4yCFiAARIAJEgAgQASJABIiAlAANnqQ06JgIEAEiQASIABEgAkSACBABIhCBAHnbiwCGgokAESACRIAIEAEiQASIABEgAlICNHiS0qBjIkAEiAARIAJEgAgQASJABIhABAI0eIoAhoKJABEgAkSACBABIkAEiAARIAJSAjR4ktKgYyJABIgAESACRIAIEAEiQASIQAQCNHiKAIaCiQARIAJEgAgQASJABIgAESACUgI0eJLSoGMiQASIABEgAkSACBABIkAEiEAEAjR4igCGgokAESACRIAIEAEiQASIABEgAlICNHiS0qBjIkAEiAARIAJEgAgQASJABIhABAI0eIoAhoKJABEgAkSACBABIkAEiAARIAJSAjR4ktKgYyJABIgAESACRIAIEAEiQASIQAQCNHiKAIaCiQARIAJEgAgQASJABIgAESACUgI0eJLSoGMiQASIABEgAkSACBABIkAEiEAEAjR4igCGgokAESACRIAIEAEiQASIABEgAlICT0hPluvx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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Special tokens:\n",
"All those tokens starting with \"xx\" are fastai special tokens. You can see the list of all of them and their meanings ([in the fastai docs](https://docs.fast.ai/text.transform.html)): \n",
"\n",
"![image.png](attachment:image.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Let's examine the structure of the `training set`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### movie_reviews.train is a `LabelList` object. \n",
"#### movie_reviews.train.x is a `TextList` object that holds the reviews\n",
"#### movie_reviews.train.y is a `CategoryList` object that holds the labels "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\f",
"There are 800 movie reviews in the training set\n",
"\n",
"LabelList (800 items)\n",
"x: TextList\n",
"xxbos xxmaj un - xxunk - believable ! xxmaj meg xxmaj ryan does n't even look her usual xxunk lovable self in this , which normally makes me forgive her shallow xxunk acting xxunk . xxmaj hard to believe she was the producer on this dog . xxmaj plus xxmaj kevin xxmaj kline : what kind of suicide trip has his career been on ? xxmaj xxunk ... xxmaj xxunk ! ! ! xxmaj finally this was directed by the guy who did xxmaj big xxmaj xxunk ? xxmaj must be a replay of xxmaj jonestown - hollywood style . xxmaj xxunk !,xxbos xxmaj this is a extremely well - made film . xxmaj the acting , script and camera - work are all first - rate . xxmaj the music is good , too , though it is mostly early in the film , when things are still relatively xxunk . xxmaj there are no really xxunk in the cast , though several faces will be familiar . xxmaj the entire cast does an excellent job with the script . \n",
" \n",
" xxmaj but it is hard to watch , because there is no good end to a situation like the one presented . xxmaj it is now xxunk to blame the xxmaj british for setting xxmaj hindus and xxmaj muslims against each other , and then xxunk xxunk them into two countries . xxmaj there is some merit in this view , but it 's also true that no one forced xxmaj hindus and xxmaj muslims in the region to xxunk each other as they did around the time of partition . xxmaj it seems more likely that the xxmaj british simply saw the xxunk between the xxunk and were clever enough to exploit them to their own ends . \n",
" \n",
" xxmaj the result is that there is much cruelty and inhumanity in the situation and this is very unpleasant to remember and to see on the screen . xxmaj but it is never painted as a black - and - white case . xxmaj there is xxunk and xxunk on both sides , and also the hope for change in the younger generation . \n",
" \n",
" xxmaj there is redemption of a sort , in the end , when xxmaj xxunk has to make a hard choice between a man who has ruined her life , but also truly loved her , and her family which has xxunk her , then later come looking for her . xxmaj but by that point , she has no xxunk that is without great pain for her . \n",
" \n",
" xxmaj this film carries the message that both xxmaj muslims and xxmaj hindus have their grave xxunk , and also that both can be xxunk and caring people . xxmaj the reality of partition makes that xxunk all the more wrenching , since there can never be real xxunk across the xxmaj india / xxmaj pakistan border . xxmaj in that sense , it is similar to \" xxmaj mr & xxmaj xxunk xxmaj xxunk \" . \n",
" \n",
" xxmaj in the end , we were glad to have seen the film , even though the resolution was xxunk . xxmaj if the xxup uk and xxup us could deal with their own xxunk of racism with this kind of xxunk , they would certainly be better off .,xxbos xxmaj every once in a long while a movie will come along that will be so awful that i feel compelled to warn people . xxmaj if i labor all my days and i can save but one soul from watching this movie , how great will be my joy . \n",
" \n",
" xxmaj where to begin my discussion of pain . xxmaj for xxunk , there was a musical xxunk every five minutes . xxmaj there was no character development . xxmaj every character was a stereotype . xxmaj we had xxunk guy , fat guy who eats donuts , goofy foreign guy , etc . xxmaj the script felt as if it were being written as the movie was being shot . xxmaj the production value was so incredibly low that it felt like i was watching a junior high video presentation . xxmaj have the directors , producers , etc . ever even seen a movie before ? xxmaj xxunk is getting worse and worse with every new entry . xxmaj the concept for this movie sounded so funny . xxmaj how could you go wrong with xxmaj gary xxmaj coleman and a handful of somewhat legitimate actors . xxmaj but trust me when i say this , things went wrong , xxup very xxup wrong .,xxbos xxmaj name just says it all . i watched this movie with my dad when it came out and having served in xxmaj xxunk he had great admiration for the man . xxmaj the disappointing thing about this film is that it only xxunk on a short period of the man 's life - interestingly enough the man 's entire life would have made such an epic bio - xxunk that it is staggering to imagine the cost for production . \n",
" \n",
" xxmaj some posters xxunk to the flawed xxunk about the man , which are cheap shots . xxmaj the theme of the movie \" xxmaj duty , xxmaj honor , xxmaj country \" are not just mere words xxunk from the lips of a high - xxunk officer - it is the deep xxunk of one man 's total devotion to his country . \n",
" \n",
" xxmaj ironically xxmaj xxunk being the liberal that he was xxunk a better understanding of the man . xxmaj he does a great job showing the xxunk general xxunk with the xxunk side of the man .,xxbos xxmaj this movie succeeds at being one of the most unique movies you 've seen . xxmaj however this comes from the fact that you ca n't make heads or xxunk of this mess . xxmaj it almost seems as a series of challenges set up to determine whether or not you are willing to walk out of the movie and give up the money you just paid . xxmaj if you do n't want to feel xxunk you 'll sit through this horrible film and develop a real sense of pity for the actors involved , they 've all seen better days , but then you realize they actually got paid quite a bit of money to do this and you 'll lose pity for them just like you 've already done for the film . i ca n't go on enough about this horrible movie , its almost something that xxmaj ed xxmaj wood would have made and in that case it surely would have been his masterpiece . \n",
" \n",
" xxmaj to start you are forced to sit through an opening dialogue the likes of which you 've never seen / heard , this thing has got to be five minutes long . xxmaj on top of that it is narrated , as to suggest that you the viewer can not read . xxmaj then we meet xxmaj mr. xxmaj xxunk and the xxunk of terrible lines gets xxunk , it is as if he is xxunk solely to get lines on to the movie poster xxunk line . xxmaj soon we meet xxmaj stephen xxmaj xxunk , who i typically enjoy ) and he does his best not to drown in this but ultimately he does . xxmaj then comes the ultimate insult , xxmaj tara xxmaj xxunk playing an intelligent role , oh help us ! xxmaj tara xxmaj xxunk is not a very talented actress and somehow she xxunk gets roles in movies , in my opinion though she should stick to movies of the xxmaj american pie type . \n",
" \n",
" xxmaj all in all you just may want to see this for yourself when it comes out on video , i know that i got a kick out of it , i mean lets all be honest here , sometimes its comforting to xxunk in the shortcomings of others .\n",
"y: CategoryList\n",
"negative,positive,negative,positive,negative\n",
"Path: C:\\Users\\cross-entropy\\.fastai\\data\\imdb_sample\n"
]
}
],
"source": [
"print(f'\\fThere are {len(movie_reviews.train.x)} movie reviews in the training set\\n')\n",
"print(movie_reviews.train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The text of the movie review is stored as a character `string`, which contains the tokens separated by spaces. Here is the text of the first review:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"xxbos xxmaj un - xxunk - believable ! xxmaj meg xxmaj ryan does n't even look her usual xxunk lovable self in this , which normally makes me forgive her shallow xxunk acting xxunk . xxmaj hard to believe she was the producer on this dog . xxmaj plus xxmaj kevin xxmaj kline : what kind of suicide trip has his career been on ? xxmaj xxunk ... xxmaj xxunk ! ! ! xxmaj finally this was directed by the guy who did xxmaj big xxmaj xxunk ? xxmaj must be a replay of xxmaj jonestown - hollywood style . xxmaj xxunk !\n",
"\n",
"There are 511 characters in the review\n"
]
}
],
"source": [
"print(movie_reviews.train.x[0].text)\n",
"print(f'\\nThere are {len(movie_reviews.train.x[0].text)} characters in the review')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The text string can be split to get the list of tokens."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['xxbos', 'xxmaj', 'un', '-', 'xxunk', '-', 'believable', '!', 'xxmaj', 'meg', 'xxmaj', 'ryan', 'does', \"n't\", 'even', 'look', 'her', 'usual', 'xxunk', 'lovable', 'self', 'in', 'this', ',', 'which', 'normally', 'makes', 'me', 'forgive', 'her', 'shallow', 'xxunk', 'acting', 'xxunk', '.', 'xxmaj', 'hard', 'to', 'believe', 'she', 'was', 'the', 'producer', 'on', 'this', 'dog', '.', 'xxmaj', 'plus', 'xxmaj', 'kevin', 'xxmaj', 'kline', ':', 'what', 'kind', 'of', 'suicide', 'trip', 'has', 'his', 'career', 'been', 'on', '?', 'xxmaj', 'xxunk', '...', 'xxmaj', 'xxunk', '!', '!', '!', 'xxmaj', 'finally', 'this', 'was', 'directed', 'by', 'the', 'guy', 'who', 'did', 'xxmaj', 'big', 'xxmaj', 'xxunk', '?', 'xxmaj', 'must', 'be', 'a', 'replay', 'of', 'xxmaj', 'jonestown', '-', 'hollywood', 'style', '.', 'xxmaj', 'xxunk', '!']\n",
"\n",
"The review has 103 tokens\n"
]
}
],
"source": [
"print(movie_reviews.train.x[0].text.split())\n",
"print(f'\\nThe review has {len(movie_reviews.train.x[0].text.split())} tokens')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The review tokens are `numericalized`, ie. mapped to integers. So a movie review is also stored as an array of integers:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 2 5 4622 25 ... 10 5 0 52]\n",
"\n",
"The array contains 103 numericalized tokens\n"
]
}
],
"source": [
"print(movie_reviews.train.x[0].data)\n",
"print(f'\\nThe array contains {len(movie_reviews.train.x[0].data)} numericalized tokens')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. The IMDb Vocabulary"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The `movie_revews` object also contains a `.vocab` property, even though it is not shown with`dir()`. (This may be an error in the `fastai` library.) "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"movie_reviews.vocab"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The `vocab` object is a kind of reversible dictionary that translates back and forth between tokens and their integer representations. It has two methods of particular interest: `stoi` and `itos`, which stand for `string-to-index` and `index-to-string`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### `movie_reviews.vocab.stoi` maps vocabulary tokens to their `indexes` in vocab"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"defaultdict(int,\n",
" {'xxunk': 0,\n",
" 'xxpad': 1,\n",
" 'xxbos': 2,\n",
" 'xxeos': 3,\n",
" 'xxfld': 4,\n",
" 'xxmaj': 5,\n",
" 'xxup': 6,\n",
" 'xxrep': 7,\n",
" 'xxwrep': 8,\n",
" 'the': 9,\n",
" '.': 10,\n",
" ',': 11,\n",
" 'and': 12,\n",
" 'a': 13,\n",
" 'of': 14,\n",
" 'to': 15,\n",
" 'is': 16,\n",
" 'it': 17,\n",
" 'in': 18,\n",
" 'i': 19,\n",
" 'that': 20,\n",
" 'this': 21,\n",
" '\"': 22,\n",
" \"'s\": 23,\n",
" '\\n \\n ': 24,\n",
" '-': 25,\n",
" 'was': 26,\n",
" 'as': 27,\n",
" 'for': 28,\n",
" 'movie': 29,\n",
" 'with': 30,\n",
" 'but': 31,\n",
" 'film': 32,\n",
" 'you': 33,\n",
" ')': 34,\n",
" 'on': 35,\n",
" '(': 36,\n",
" \"n't\": 37,\n",
" 'are': 38,\n",
" 'he': 39,\n",
" 'his': 40,\n",
" 'not': 41,\n",
" 'have': 42,\n",
" 'be': 43,\n",
" 'one': 44,\n",
" 'they': 45,\n",
" 'all': 46,\n",
" 'at': 47,\n",
" 'by': 48,\n",
" 'an': 49,\n",
" 'from': 50,\n",
" 'like': 51,\n",
" '!': 52,\n",
" 'so': 53,\n",
" 'who': 54,\n",
" 'there': 55,\n",
" 'about': 56,\n",
" 'just': 57,\n",
" 'out': 58,\n",
" 'if': 59,\n",
" 'or': 60,\n",
" 'do': 61,\n",
" 'what': 62,\n",
" 'her': 63,\n",
" 'has': 64,\n",
" \"'\": 65,\n",
" 'some': 66,\n",
" 'more': 67,\n",
" 'good': 68,\n",
" 'when': 69,\n",
" 'up': 70,\n",
" 'very': 71,\n",
" '?': 72,\n",
" 'she': 73,\n",
" 'would': 74,\n",
" 'no': 75,\n",
" 'really': 76,\n",
" 'were': 77,\n",
" 'their': 78,\n",
" 'my': 79,\n",
" 'had': 80,\n",
" 'time': 81,\n",
" 'can': 82,\n",
" 'only': 83,\n",
" 'which': 84,\n",
" 'even': 85,\n",
" 'see': 86,\n",
" 'story': 87,\n",
" 'me': 88,\n",
" 'into': 89,\n",
" 'did': 90,\n",
" ':': 91,\n",
" 'well': 92,\n",
" 'we': 93,\n",
" 'will': 94,\n",
" 'does': 95,\n",
" 'than': 96,\n",
" 'also': 97,\n",
" 'get': 98,\n",
" '...': 99,\n",
" 'people': 100,\n",
" 'other': 101,\n",
" 'bad': 102,\n",
" 'been': 103,\n",
" 'could': 104,\n",
" 'first': 105,\n",
" 'much': 106,\n",
" 'how': 107,\n",
" 'most': 108,\n",
" 'any': 109,\n",
" 'because': 110,\n",
" 'two': 111,\n",
" 'then': 112,\n",
" 'great': 113,\n",
" 'him': 114,\n",
" 'its': 115,\n",
" 'too': 116,\n",
" 'made': 117,\n",
" 'them': 118,\n",
" 'after': 119,\n",
" 'movies': 120,\n",
" 'make': 121,\n",
" '/': 122,\n",
" 'way': 123,\n",
" 'think': 124,\n",
" 'never': 125,\n",
" 'watch': 126,\n",
" 'acting': 127,\n",
" 'seen': 128,\n",
" ';': 129,\n",
" 'films': 130,\n",
" 'plot': 131,\n",
" 'being': 132,\n",
" 'many': 133,\n",
" 'over': 134,\n",
" 'where': 135,\n",
" 'character': 136,\n",
" 'man': 137,\n",
" 'little': 138,\n",
" 'better': 139,\n",
" 'life': 140,\n",
" 'characters': 141,\n",
" 'love': 142,\n",
" 'your': 143,\n",
" 'here': 144,\n",
" 'know': 145,\n",
" 'scenes': 146,\n",
" 'best': 147,\n",
" 'end': 148,\n",
" 'show': 149,\n",
" 'while': 150,\n",
" 'through': 151,\n",
" 'should': 152,\n",
" 'off': 153,\n",
" 'ever': 154,\n",
" 'these': 155,\n",
" 'go': 156,\n",
" 'such': 157,\n",
" 'say': 158,\n",
" '--': 159,\n",
" 'something': 160,\n",
" 'scene': 161,\n",
" 'still': 162,\n",
" 'before': 163,\n",
" 'though': 164,\n",
" 'watching': 165,\n",
" 'between': 166,\n",
" 'actually': 167,\n",
" 'old': 168,\n",
" '10': 169,\n",
" 'find': 170,\n",
" 'back': 171,\n",
" 'now': 172,\n",
" 'why': 173,\n",
" 'years': 174,\n",
" \"'ve\": 175,\n",
" 'actors': 176,\n",
" 'fact': 177,\n",
" 'those': 178,\n",
" \"'m\": 179,\n",
" 'thing': 180,\n",
" 'pretty': 181,\n",
" 'quite': 182,\n",
" 'part': 183,\n",
" 'going': 184,\n",
" 'same': 185,\n",
" 'real': 186,\n",
" 'another': 187,\n",
" 'down': 188,\n",
" 'funny': 189,\n",
" 'nothing': 190,\n",
" 'look': 191,\n",
" 'makes': 192,\n",
" '*': 193,\n",
" 'new': 194,\n",
" 'want': 195,\n",
" 'action': 196,\n",
" '&': 197,\n",
" 'director': 198,\n",
" 'work': 199,\n",
" 'few': 200,\n",
" \"'re\": 201,\n",
" 'seems': 202,\n",
" 'around': 203,\n",
" 'world': 204,\n",
" 'point': 205,\n",
" 'without': 206,\n",
" 'cast': 207,\n",
" 'again': 208,\n",
" 'own': 209,\n",
" 'both': 210,\n",
" 'lot': 211,\n",
" 'enough': 212,\n",
" 'every': 213,\n",
" 'family': 214,\n",
" 'got': 215,\n",
" 'ca': 216,\n",
" \"'ll\": 217,\n",
" 'probably': 218,\n",
" 'big': 219,\n",
" 'bit': 220,\n",
" 'might': 221,\n",
" 'things': 222,\n",
" 'horror': 223,\n",
" 'us': 224,\n",
" 'almost': 225,\n",
" 'may': 226,\n",
" 'right': 227,\n",
" 'must': 228,\n",
" 'away': 229,\n",
" 'thought': 230,\n",
" 'interesting': 231,\n",
" 'least': 232,\n",
" 'whole': 233,\n",
" 'series': 234,\n",
" 'gets': 235,\n",
" 'each': 236,\n",
" 'give': 237,\n",
" 'young': 238,\n",
" 'however': 239,\n",
" 'making': 240,\n",
" 'day': 241,\n",
" 'fun': 242,\n",
" 'anything': 243,\n",
" 'minutes': 244,\n",
" 'kind': 245,\n",
" 'come': 246,\n",
" 'girl': 247,\n",
" 'saw': 248,\n",
" 'script': 249,\n",
" 'take': 250,\n",
" 'long': 251,\n",
" 'times': 252,\n",
" 'someone': 253,\n",
" 'found': 254,\n",
" 'done': 255,\n",
" 'feel': 256,\n",
" 'far': 257,\n",
" 'since': 258,\n",
" 'role': 259,\n",
" 'original': 260,\n",
" 'course': 261,\n",
" 'goes': 262,\n",
" 'last': 263,\n",
" 'true': 264,\n",
" 'simply': 265,\n",
" 'always': 266,\n",
" \"'d\": 267,\n",
" 'tv': 268,\n",
" 'hard': 269,\n",
" 'place': 270,\n",
" 'set': 271,\n",
" 'trying': 272,\n",
" 'believe': 273,\n",
" 'shot': 274,\n",
" 'comes': 275,\n",
" 'actor': 276,\n",
" 'yet': 277,\n",
" '4': 278,\n",
" 'having': 279,\n",
" 'book': 280,\n",
" 'looks': 281,\n",
" 'guy': 282,\n",
" 'screen': 283,\n",
" 'later': 284,\n",
" 'shows': 285,\n",
" 'performance': 286,\n",
" 'worth': 287,\n",
" 'audience': 288,\n",
" 'comedy': 289,\n",
" 'sure': 290,\n",
" 'looking': 291,\n",
" 'sense': 292,\n",
" 'star': 293,\n",
" 'effects': 294,\n",
" 'read': 295,\n",
" 'takes': 296,\n",
" 'although': 297,\n",
" 'ending': 298,\n",
" 'john': 299,\n",
" 'anyone': 300,\n",
" 'worst': 301,\n",
" 'american': 302,\n",
" 'year': 303,\n",
" 'especially': 304,\n",
" 'women': 305,\n",
" 'together': 306,\n",
" 'dvd': 307,\n",
" 'instead': 308,\n",
" 'different': 309,\n",
" 'am': 310,\n",
" 'woman': 311,\n",
" 'men': 312,\n",
" '2': 313,\n",
" 'our': 314,\n",
" 'played': 315,\n",
" 'music': 316,\n",
" 'special': 317,\n",
" 'three': 318,\n",
" 'rest': 319,\n",
" 'put': 320,\n",
" 'maybe': 321,\n",
" 'wife': 322,\n",
" 'kids': 323,\n",
" 'war': 324,\n",
" 'left': 325,\n",
" 'black': 326,\n",
" 'once': 327,\n",
" 'second': 328,\n",
" 'watched': 329,\n",
" 'next': 330,\n",
" 'friends': 331,\n",
" 'rather': 332,\n",
" 'let': 333,\n",
" '\\x96': 334,\n",
" 'job': 335,\n",
" 'start': 336,\n",
" 'others': 337,\n",
" 'budget': 338,\n",
" 'need': 339,\n",
" 'mind': 340,\n",
" 'said': 341,\n",
" 'main': 342,\n",
" 'else': 343,\n",
" 'wrong': 344,\n",
" 'beautiful': 345,\n",
" 'half': 346,\n",
" 'high': 347,\n",
" 'idea': 348,\n",
" 'death': 349,\n",
" 'tell': 350,\n",
" 'help': 351,\n",
" 'nice': 352,\n",
" 'seem': 353,\n",
" 'perhaps': 354,\n",
" 'hollywood': 355,\n",
" 'everyone': 356,\n",
" 'play': 357,\n",
" 'case': 358,\n",
" 'production': 359,\n",
" 'piece': 360,\n",
" 'episode': 361,\n",
" 'camera': 362,\n",
" 'low': 363,\n",
" 'already': 364,\n",
" 'top': 365,\n",
" 'poor': 366,\n",
" 'during': 367,\n",
" '3': 368,\n",
" 'stars': 369,\n",
" 'house': 370,\n",
" '..': 371,\n",
" 'couple': 372,\n",
" 'boring': 373,\n",
" 'reason': 374,\n",
" 'try': 375,\n",
" 'along': 376,\n",
" 'name': 377,\n",
" 'small': 378,\n",
" 'plays': 379,\n",
" 'father': 380,\n",
" 'everything': 381,\n",
" 'used': 382,\n",
" 'video': 383,\n",
" 'getting': 384,\n",
" 'money': 385,\n",
" 'full': 386,\n",
" 'less': 387,\n",
" 'performances': 388,\n",
" 'often': 389,\n",
" 'liked': 390,\n",
" 'came': 391,\n",
" '1': 392,\n",
" 'robert': 393,\n",
" 'either': 394,\n",
" 'fan': 395,\n",
" 'given': 396,\n",
" 'hand': 397,\n",
" 'kill': 398,\n",
" 'felt': 399,\n",
" 'yes': 400,\n",
" 'completely': 401,\n",
" 'night': 402,\n",
" 'children': 403,\n",
" 'himself': 404,\n",
" 'girls': 405,\n",
" 'early': 406,\n",
" 'awful': 407,\n",
" 'oh': 408,\n",
" 'live': 409,\n",
" 'picture': 410,\n",
" 'parts': 411,\n",
" 'throughout': 412,\n",
" 'until': 413,\n",
" 'become': 414,\n",
" 'town': 415,\n",
" 'written': 416,\n",
" 'terrible': 417,\n",
" 'turn': 418,\n",
" 'child': 419,\n",
" 'despite': 420,\n",
" 'moments': 421,\n",
" 'boy': 422,\n",
" 'problem': 423,\n",
" 'able': 424,\n",
" 'head': 425,\n",
" 'stupid': 426,\n",
" 'beginning': 427,\n",
" 'home': 428,\n",
" 'version': 429,\n",
" 'excellent': 430,\n",
" 'sometimes': 431,\n",
" 'overall': 432,\n",
" 'recommend': 433,\n",
" 'sex': 434,\n",
" 'keep': 435,\n",
" 'human': 436,\n",
" 'drama': 437,\n",
" 'hero': 438,\n",
" 'supposed': 439,\n",
" 'seemed': 440,\n",
" 'use': 441,\n",
" 'writing': 442,\n",
" 'wo': 443,\n",
" 'remember': 444,\n",
" 'went': 445,\n",
" 'enjoy': 446,\n",
" 'classic': 447,\n",
" 'person': 448,\n",
" 'killer': 449,\n",
" 'lost': 450,\n",
" 'late': 451,\n",
" '5': 452,\n",
" 'title': 453,\n",
" 'king': 454,\n",
" 'entire': 455,\n",
" 'history': 456,\n",
" 'son': 457,\n",
" 'school': 458,\n",
" 'lead': 459,\n",
" 'english': 460,\n",
" 'sound': 461,\n",
" 'cinema': 462,\n",
" 'seeing': 463,\n",
" 'unfortunately': 464,\n",
" 'genre': 465,\n",
" 'sort': 466,\n",
" 'mean': 467,\n",
" 'friend': 468,\n",
" 'fans': 469,\n",
" 'close': 470,\n",
" 'quality': 471,\n",
" 'definitely': 472,\n",
" 'james': 473,\n",
" 'worse': 474,\n",
" 'says': 475,\n",
" 'except': 476,\n",
" 'doing': 477,\n",
" 'itself': 478,\n",
" 'past': 479,\n",
" 'certainly': 480,\n",
" 'days': 481,\n",
" 'five': 482,\n",
" 'dialogue': 483,\n",
" 'line': 484,\n",
" 'anyway': 485,\n",
" 'under': 486,\n",
" 'tries': 487,\n",
" 'called': 488,\n",
" 'fine': 489,\n",
" 'guys': 490,\n",
" 'care': 491,\n",
" 'style': 492,\n",
" 'hope': 493,\n",
" 'short': 494,\n",
" 'lines': 495,\n",
" 'told': 496,\n",
" 'car': 497,\n",
" 'decent': 498,\n",
" 'brother': 499,\n",
" 'killed': 500,\n",
" 'wanted': 501,\n",
" 'entertaining': 502,\n",
" 'based': 503,\n",
" 'absolutely': 504,\n",
" 'feeling': 505,\n",
" 'truly': 506,\n",
" 'etc': 507,\n",
" 'heard': 508,\n",
" 'serious': 509,\n",
" 'run': 510,\n",
" 'wonderful': 511,\n",
" 'lives': 512,\n",
" 'gives': 513,\n",
" 'moment': 514,\n",
" 'game': 515,\n",
" 'documentary': 516,\n",
" 'self': 517,\n",
" 'several': 518,\n",
" 'waste': 519,\n",
" 'dead': 520,\n",
" 'blood': 521,\n",
" 'matter': 522,\n",
" 'wonder': 523,\n",
" 'humor': 524,\n",
" 'thinking': 525,\n",
" 'against': 526,\n",
" 'white': 527,\n",
" 'side': 528,\n",
" 'works': 529,\n",
" 'mother': 530,\n",
" 'flick': 531,\n",
" 'stuff': 532,\n",
" 'turns': 533,\n",
" 'finally': 534,\n",
" 'loved': 535,\n",
" 'group': 536,\n",
" 'wants': 537,\n",
" 'face': 538,\n",
" 'guess': 539,\n",
" 'dark': 540,\n",
" 'city': 541,\n",
" 'events': 542,\n",
" 'starts': 543,\n",
" 'hour': 544,\n",
" 'took': 545,\n",
" 'george': 546,\n",
" 'themselves': 547,\n",
" 'red': 548,\n",
" 'behind': 549,\n",
" 'talking': 550,\n",
" 'hit': 551,\n",
" 'eyes': 552,\n",
" 'attempt': 553,\n",
" 'direction': 554,\n",
" 'novel': 555,\n",
" 'saying': 556,\n",
" 'word': 557,\n",
" 'dull': 558,\n",
" 'light': 559,\n",
" 'view': 560,\n",
" 'playing': 561,\n",
" 'opinion': 562,\n",
" 'expect': 563,\n",
" 'evil': 564,\n",
" 'ten': 565,\n",
" 'violence': 566,\n",
" 'local': 567,\n",
" 'final': 568,\n",
" 'gave': 569,\n",
" 'leave': 570,\n",
" 'paul': 571,\n",
" 'crap': 572,\n",
" 'happens': 573,\n",
" 'knows': 574,\n",
" 'problems': 575,\n",
" 'example': 576,\n",
" 'relationship': 577,\n",
" 'non': 578,\n",
" 'michael': 579,\n",
" 'victor': 580,\n",
" 'ridiculous': 581,\n",
" 'god': 582,\n",
" 'similar': 583,\n",
" 'general': 584,\n",
" 'major': 585,\n",
" 'bunch': 586,\n",
" 'sister': 587,\n",
" 'oscar': 588,\n",
" 'turned': 589,\n",
" 'brilliant': 590,\n",
" 'highly': 591,\n",
" 'nearly': 592,\n",
" 'de': 593,\n",
" 'please': 594,\n",
" 'romance': 595,\n",
" 'body': 596,\n",
" 'extremely': 597,\n",
" 'mr.': 598,\n",
" 'soon': 599,\n",
" 'yourself': 600,\n",
" 'known': 601,\n",
" 'lack': 602,\n",
" 'age': 603,\n",
" 'interest': 604,\n",
" 'ago': 605,\n",
" 'stories': 606,\n",
" 'exactly': 607,\n",
" 'finds': 608,\n",
" 'modern': 609,\n",
" 'voice': 610,\n",
" 'perfect': 611,\n",
" 'heart': 612,\n",
" 'alone': 613,\n",
" 'tells': 614,\n",
" 'daughter': 615,\n",
" 'directed': 616,\n",
" 'needs': 617,\n",
" 'kid': 618,\n",
" 'lady': 619,\n",
" 'sad': 620,\n",
" 'fight': 621,\n",
" 'happened': 622,\n",
" 'eye': 623,\n",
" 'favorite': 624,\n",
" 'using': 625,\n",
" 'upon': 626,\n",
" 'ben': 627,\n",
" 'none': 628,\n",
" 'beyond': 629,\n",
" 'nature': 630,\n",
" 'change': 631,\n",
" 'save': 632,\n",
" 'shots': 633,\n",
" 'country': 634,\n",
" 'number': 635,\n",
" 'shown': 636,\n",
" 'surprised': 637,\n",
" 'romantic': 638,\n",
" 'huge': 639,\n",
" 'murder': 640,\n",
" 'steve': 641,\n",
" 'slow': 642,\n",
" 'myself': 643,\n",
" 'woods': 644,\n",
" 'apparently': 645,\n",
" 'lake': 646,\n",
" 'cheap': 647,\n",
" 'involved': 648,\n",
" 'roles': 649,\n",
" '6': 650,\n",
" 'gore': 651,\n",
" 'obviously': 652,\n",
" 'knew': 653,\n",
" 'level': 654,\n",
" '8': 655,\n",
" 'experience': 656,\n",
" 'became': 657,\n",
" 'gone': 658,\n",
" 'cover': 659,\n",
" 'amazing': 660,\n",
" 'create': 661,\n",
" 'living': 662,\n",
" 'usually': 663,\n",
" 'order': 664,\n",
" 'monster': 665,\n",
" 'happen': 666,\n",
" 'list': 667,\n",
" 'clearly': 668,\n",
" 'power': 669,\n",
" 'features': 670,\n",
" 're': 671,\n",
" 'subject': 672,\n",
" 'across': 673,\n",
" 'parents': 674,\n",
" 'seriously': 675,\n",
" 'ways': 676,\n",
" 'room': 677,\n",
" 'filmed': 678,\n",
" 'cheesy': 679,\n",
" 'disappointed': 680,\n",
" 'important': 681,\n",
" 'plenty': 682,\n",
" '7': 683,\n",
" 'particular': 684,\n",
" 'started': 685,\n",
" 'today': 686,\n",
" 'enjoyed': 687,\n",
" 'cinematography': 688,\n",
" 'annoying': 689,\n",
" 'looked': 690,\n",
" 'supporting': 691,\n",
" 'mostly': 692,\n",
" 'message': 693,\n",
" 'somewhat': 694,\n",
" 'viewer': 695,\n",
" 'type': 696,\n",
" 'certain': 697,\n",
" 'release': 698,\n",
" 'effort': 699,\n",
" 'possible': 700,\n",
" 'add': 701,\n",
" 'figure': 702,\n",
" 'named': 703,\n",
" 'wish': 704,\n",
" 'difficult': 705,\n",
" 'falls': 706,\n",
" 'four': 707,\n",
" 'husband': 708,\n",
" 'score': 709,\n",
" 'leads': 710,\n",
" 'form': 711,\n",
" 'working': 712,\n",
" 'writer': 713,\n",
" 'sets': 714,\n",
" 'including': 715,\n",
" 'enjoyable': 716,\n",
" 'ok': 717,\n",
" 'note': 718,\n",
" 'spent': 719,\n",
" 'review': 720,\n",
" 'art': 721,\n",
" 'police': 722,\n",
" 'sit': 723,\n",
" 'horrible': 724,\n",
" 'actress': 725,\n",
" 'ones': 726,\n",
" 'bring': 727,\n",
" 'greatest': 728,\n",
" 'dance': 729,\n",
" 'earth': 730,\n",
" 'becomes': 731,\n",
" 'happy': 732,\n",
" 'cut': 733,\n",
" 'straight': 734,\n",
" 'soundtrack': 735,\n",
" 'leading': 736,\n",
" 'laugh': 737,\n",
" 'strange': 738,\n",
" 'space': 739,\n",
" 'b': 740,\n",
" 'tale': 741,\n",
" 'comic': 742,\n",
" 'near': 743,\n",
" 'due': 744,\n",
" 'weak': 745,\n",
" 'earlier': 746,\n",
" 'follow': 747,\n",
" 'british': 748,\n",
" 'ends': 749,\n",
" 'typical': 750,\n",
" 'attention': 751,\n",
" 'points': 752,\n",
" 'talent': 753,\n",
" 'tom': 754,\n",
" 'female': 755,\n",
" 'future': 756,\n",
" 'fall': 757,\n",
" 'laughs': 758,\n",
" 'stop': 759,\n",
" 'easy': 760,\n",
" 'moving': 761,\n",
" 'apart': 762,\n",
" 'chance': 763,\n",
" 'running': 764,\n",
" 'york': 765,\n",
" 'particularly': 766,\n",
" 'luke': 767,\n",
" 'bill': 768,\n",
" 'forced': 769,\n",
" 'theme': 770,\n",
" 'easily': 771,\n",
" 'rating': 772,\n",
" 'coming': 773,\n",
" 'davis': 774,\n",
" 'totally': 775,\n",
" 'realistic': 776,\n",
" 'simple': 777,\n",
" 'hours': 778,\n",
" 'taken': 779,\n",
" 'indeed': 780,\n",
" 'released': 781,\n",
" 'sexual': 782,\n",
" 'feels': 783,\n",
" 'french': 784,\n",
" 'screenplay': 785,\n",
" 'la': 786,\n",
" 'jokes': 787,\n",
" 'sequences': 788,\n",
" 'chase': 789,\n",
" 'portrayed': 790,\n",
" 'dramatic': 791,\n",
" 'mention': 792,\n",
" 'talk': 793,\n",
" 'gun': 794,\n",
" 'thriller': 795,\n",
" 'jimmy': 796,\n",
" 'career': 797,\n",
" 'reality': 798,\n",
" 'incredibly': 799,\n",
" 'whether': 800,\n",
" 'towards': 801,\n",
" 'entertainment': 802,\n",
" 'feature': 803,\n",
" 'western': 804,\n",
" 'dialog': 805,\n",
" 'business': 806,\n",
" 'suspense': 807,\n",
" 'focus': 808,\n",
" 'doubt': 809,\n",
" 'possibly': 810,\n",
" 'water': 811,\n",
" 'gay': 812,\n",
" 'blob': 813,\n",
" 'comments': 814,\n",
" 'brothers': 815,\n",
" 'clear': 816,\n",
" 'agree': 817,\n",
" 'allen': 818,\n",
" 'door': 819,\n",
" 'editing': 820,\n",
" 'third': 821,\n",
" 'deserves': 822,\n",
" 'silly': 823,\n",
" 'fantastic': 824,\n",
" 'convincing': 825,\n",
" 'hardly': 826,\n",
" 'lame': 827,\n",
" 'act': 828,\n",
" 'former': 829,\n",
" 'material': 830,\n",
" 'appears': 831,\n",
" 'understand': 832,\n",
" 'twist': 833,\n",
" 'episodes': 834,\n",
" 'buy': 835,\n",
" 'secret': 836,\n",
" 'richard': 837,\n",
" 'south': 838,\n",
" 'bourne': 839,\n",
" 'deal': 840,\n",
" 'musical': 841,\n",
" 'words': 842,\n",
" 'unique': 843,\n",
" 'mess': 844,\n",
" 'opening': 845,\n",
" 'society': 846,\n",
" 'avoid': 847,\n",
" 'footage': 848,\n",
" 'joe': 849,\n",
" 'free': 850,\n",
" 'forget': 851,\n",
" 'herself': 852,\n",
" 'appear': 853,\n",
" 'obvious': 854,\n",
" 'box': 855,\n",
" 'single': 856,\n",
" 'average': 857,\n",
" 'indian': 858,\n",
" 'rent': 859,\n",
" 'okay': 860,\n",
" 'scary': 861,\n",
" 'within': 862,\n",
" 'office': 863,\n",
" 'crime': 864,\n",
" 'science': 865,\n",
" '80': 866,\n",
" 'believable': 867,\n",
" 'period': 868,\n",
" 'showing': 869,\n",
" 'call': 870,\n",
" 'return': 871,\n",
" 'keeps': 872,\n",
" 'lee': 873,\n",
" 'expected': 874,\n",
" 'stay': 875,\n",
" 'middle': 876,\n",
" 'jack': 877,\n",
" 'hands': 878,\n",
" 'david': 879,\n",
" 'attempts': 880,\n",
" 'strong': 881,\n",
" 'tension': 882,\n",
" 'crew': 883,\n",
" 'hilarious': 884,\n",
" 'grade': 885,\n",
" 'outside': 886,\n",
" 'means': 887,\n",
" 'viewing': 888,\n",
" 'sadly': 889,\n",
" 'hell': 890,\n",
" 'whatever': 891,\n",
" 'sorry': 892,\n",
" 'recently': 893,\n",
" 'stage': 894,\n",
" 'decides': 895,\n",
" 'hear': 896,\n",
" 'team': 897,\n",
" 'learn': 898,\n",
" 'nor': 899,\n",
" 'open': 900,\n",
" 'break': 901,\n",
" 'question': 902,\n",
" 'remake': 903,\n",
" 'porn': 904,\n",
" 'pain': 905,\n",
" 'imagine': 906,\n",
" 'deep': 907,\n",
" 'zombie': 908,\n",
" 'basically': 909,\n",
" 'killing': 910,\n",
" 'company': 911,\n",
" 'poorly': 912,\n",
" 'dr.': 913,\n",
" 'predictable': 914,\n",
" 'taking': 915,\n",
" 'large': 916,\n",
" 'language': 917,\n",
" 'giving': 918,\n",
" 'public': 919,\n",
" 'audiences': 920,\n",
" 'ask': 921,\n",
" 'cool': 922,\n",
" 'america': 923,\n",
" 'slasher': 924,\n",
" 'west': 925,\n",
" 'mentioned': 926,\n",
" 'die': 927,\n",
" 'christmas': 928,\n",
" 'complete': 929,\n",
" 'needed': 930,\n",
" 'martin': 931,\n",
" 'makers': 932,\n",
" 'cgi': 933,\n",
" 'boys': 934,\n",
" 'vargas': 935,\n",
" 'usual': 936,\n",
" 'begin': 937,\n",
" 'dad': 938,\n",
" 'total': 939,\n",
" 'somehow': 940,\n",
" 'stick': 941,\n",
" 'shame': 942,\n",
" 'successful': 943,\n",
" 'sitting': 944,\n",
" 'fred': 945,\n",
" 'meets': 946,\n",
" 'unless': 947,\n",
" 'dancing': 948,\n",
" 'sounds': 949,\n",
" 'above': 950,\n",
" 'elements': 951,\n",
" 'whose': 952,\n",
" 'german': 953,\n",
" 'considering': 954,\n",
" 'caught': 955,\n",
" 'credit': 956,\n",
" 'interested': 957,\n",
" 'move': 958,\n",
" 'filming': 959,\n",
" 'truth': 960,\n",
" 'eventually': 961,\n",
" 'share': 962,\n",
" 'ability': 963,\n",
" 'meaning': 964,\n",
" 'agent': 965,\n",
" 'fast': 966,\n",
" 'stand': 967,\n",
" 'onto': 968,\n",
" 'plain': 969,\n",
" 'comment': 970,\n",
" 'kept': 971,\n",
" 'situation': 972,\n",
" 'setting': 973,\n",
" 'value': 974,\n",
" 'willing': 975,\n",
" 'realize': 976,\n",
" 'acted': 977,\n",
" 'weird': 978,\n",
" 'alive': 979,\n",
" 'fairly': 980,\n",
" 'dream': 981,\n",
" 'building': 982,\n",
" 'hair': 983,\n",
" 'bored': 984,\n",
" 'minute': 985,\n",
" 'emotional': 986,\n",
" 'directing': 987,\n",
" 'theatrical': 988,\n",
" 'famous': 989,\n",
" 'begins': 990,\n",
" 'front': 991,\n",
" 'catch': 992,\n",
" 'sequence': 993,\n",
" 'runs': 994,\n",
" 'follows': 995,\n",
" 'song': 996,\n",
" 'government': 997,\n",
" 'miss': 998,\n",
" 'actual': 999,\n",
" ...})"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"movie_reviews.vocab.stoi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### `movie_reviews.vocab.itos` maps the `indexes` of vocabulary tokens to `strings`"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"['xxunk',\n",
" 'xxpad',\n",
" 'xxbos',\n",
" 'xxeos',\n",
" 'xxfld',\n",
" 'xxmaj',\n",
" 'xxup',\n",
" 'xxrep',\n",
" 'xxwrep',\n",
" 'the',\n",
" '.',\n",
" ',',\n",
" 'and',\n",
" 'a',\n",
" 'of',\n",
" 'to',\n",
" 'is',\n",
" 'it',\n",
" 'in',\n",
" 'i',\n",
" 'that',\n",
" 'this',\n",
" '\"',\n",
" \"'s\",\n",
" '\\n \\n ',\n",
" '-',\n",
" 'was',\n",
" 'as',\n",
" 'for',\n",
" 'movie',\n",
" 'with',\n",
" 'but',\n",
" 'film',\n",
" 'you',\n",
" ')',\n",
" 'on',\n",
" '(',\n",
" \"n't\",\n",
" 'are',\n",
" 'he',\n",
" 'his',\n",
" 'not',\n",
" 'have',\n",
" 'be',\n",
" 'one',\n",
" 'they',\n",
" 'all',\n",
" 'at',\n",
" 'by',\n",
" 'an',\n",
" 'from',\n",
" 'like',\n",
" '!',\n",
" 'so',\n",
" 'who',\n",
" 'there',\n",
" 'about',\n",
" 'just',\n",
" 'out',\n",
" 'if',\n",
" 'or',\n",
" 'do',\n",
" 'what',\n",
" 'her',\n",
" 'has',\n",
" \"'\",\n",
" 'some',\n",
" 'more',\n",
" 'good',\n",
" 'when',\n",
" 'up',\n",
" 'very',\n",
" '?',\n",
" 'she',\n",
" 'would',\n",
" 'no',\n",
" 'really',\n",
" 'were',\n",
" 'their',\n",
" 'my',\n",
" 'had',\n",
" 'time',\n",
" 'can',\n",
" 'only',\n",
" 'which',\n",
" 'even',\n",
" 'see',\n",
" 'story',\n",
" 'me',\n",
" 'into',\n",
" 'did',\n",
" ':',\n",
" 'well',\n",
" 'we',\n",
" 'will',\n",
" 'does',\n",
" 'than',\n",
" 'also',\n",
" 'get',\n",
" '...',\n",
" 'people',\n",
" 'other',\n",
" 'bad',\n",
" 'been',\n",
" 'could',\n",
" 'first',\n",
" 'much',\n",
" 'how',\n",
" 'most',\n",
" 'any',\n",
" 'because',\n",
" 'two',\n",
" 'then',\n",
" 'great',\n",
" 'him',\n",
" 'its',\n",
" 'too',\n",
" 'made',\n",
" 'them',\n",
" 'after',\n",
" 'movies',\n",
" 'make',\n",
" '/',\n",
" 'way',\n",
" 'think',\n",
" 'never',\n",
" 'watch',\n",
" 'acting',\n",
" 'seen',\n",
" ';',\n",
" 'films',\n",
" 'plot',\n",
" 'being',\n",
" 'many',\n",
" 'over',\n",
" 'where',\n",
" 'character',\n",
" 'man',\n",
" 'little',\n",
" 'better',\n",
" 'life',\n",
" 'characters',\n",
" 'love',\n",
" 'your',\n",
" 'here',\n",
" 'know',\n",
" 'scenes',\n",
" 'best',\n",
" 'end',\n",
" 'show',\n",
" 'while',\n",
" 'through',\n",
" 'should',\n",
" 'off',\n",
" 'ever',\n",
" 'these',\n",
" 'go',\n",
" 'such',\n",
" 'say',\n",
" '--',\n",
" 'something',\n",
" 'scene',\n",
" 'still',\n",
" 'before',\n",
" 'though',\n",
" 'watching',\n",
" 'between',\n",
" 'actually',\n",
" 'old',\n",
" '10',\n",
" 'find',\n",
" 'back',\n",
" 'now',\n",
" 'why',\n",
" 'years',\n",
" \"'ve\",\n",
" 'actors',\n",
" 'fact',\n",
" 'those',\n",
" \"'m\",\n",
" 'thing',\n",
" 'pretty',\n",
" 'quite',\n",
" 'part',\n",
" 'going',\n",
" 'same',\n",
" 'real',\n",
" 'another',\n",
" 'down',\n",
" 'funny',\n",
" 'nothing',\n",
" 'look',\n",
" 'makes',\n",
" '*',\n",
" 'new',\n",
" 'want',\n",
" 'action',\n",
" '&',\n",
" 'director',\n",
" 'work',\n",
" 'few',\n",
" \"'re\",\n",
" 'seems',\n",
" 'around',\n",
" 'world',\n",
" 'point',\n",
" 'without',\n",
" 'cast',\n",
" 'again',\n",
" 'own',\n",
" 'both',\n",
" 'lot',\n",
" 'enough',\n",
" 'every',\n",
" 'family',\n",
" 'got',\n",
" 'ca',\n",
" \"'ll\",\n",
" 'probably',\n",
" 'big',\n",
" 'bit',\n",
" 'might',\n",
" 'things',\n",
" 'horror',\n",
" 'us',\n",
" 'almost',\n",
" 'may',\n",
" 'right',\n",
" 'must',\n",
" 'away',\n",
" 'thought',\n",
" 'interesting',\n",
" 'least',\n",
" 'whole',\n",
" 'series',\n",
" 'gets',\n",
" 'each',\n",
" 'give',\n",
" 'young',\n",
" 'however',\n",
" 'making',\n",
" 'day',\n",
" 'fun',\n",
" 'anything',\n",
" 'minutes',\n",
" 'kind',\n",
" 'come',\n",
" 'girl',\n",
" 'saw',\n",
" 'script',\n",
" 'take',\n",
" 'long',\n",
" 'times',\n",
" 'someone',\n",
" 'found',\n",
" 'done',\n",
" 'feel',\n",
" 'far',\n",
" 'since',\n",
" 'role',\n",
" 'original',\n",
" 'course',\n",
" 'goes',\n",
" 'last',\n",
" 'true',\n",
" 'simply',\n",
" 'always',\n",
" \"'d\",\n",
" 'tv',\n",
" 'hard',\n",
" 'place',\n",
" 'set',\n",
" 'trying',\n",
" 'believe',\n",
" 'shot',\n",
" 'comes',\n",
" 'actor',\n",
" 'yet',\n",
" '4',\n",
" 'having',\n",
" 'book',\n",
" 'looks',\n",
" 'guy',\n",
" 'screen',\n",
" 'later',\n",
" 'shows',\n",
" 'performance',\n",
" 'worth',\n",
" 'audience',\n",
" 'comedy',\n",
" 'sure',\n",
" 'looking',\n",
" 'sense',\n",
" 'star',\n",
" 'effects',\n",
" 'read',\n",
" 'takes',\n",
" 'although',\n",
" 'ending',\n",
" 'john',\n",
" 'anyone',\n",
" 'worst',\n",
" 'american',\n",
" 'year',\n",
" 'especially',\n",
" 'women',\n",
" 'together',\n",
" 'dvd',\n",
" 'instead',\n",
" 'different',\n",
" 'am',\n",
" 'woman',\n",
" 'men',\n",
" '2',\n",
" 'our',\n",
" 'played',\n",
" 'music',\n",
" 'special',\n",
" 'three',\n",
" 'rest',\n",
" 'put',\n",
" 'maybe',\n",
" 'wife',\n",
" 'kids',\n",
" 'war',\n",
" 'left',\n",
" 'black',\n",
" 'once',\n",
" 'second',\n",
" 'watched',\n",
" 'next',\n",
" 'friends',\n",
" 'rather',\n",
" 'let',\n",
" '\\x96',\n",
" 'job',\n",
" 'start',\n",
" 'others',\n",
" 'budget',\n",
" 'need',\n",
" 'mind',\n",
" 'said',\n",
" 'main',\n",
" 'else',\n",
" 'wrong',\n",
" 'beautiful',\n",
" 'half',\n",
" 'high',\n",
" 'idea',\n",
" 'death',\n",
" 'tell',\n",
" 'help',\n",
" 'nice',\n",
" 'seem',\n",
" 'perhaps',\n",
" 'hollywood',\n",
" 'everyone',\n",
" 'play',\n",
" 'case',\n",
" 'production',\n",
" 'piece',\n",
" 'episode',\n",
" 'camera',\n",
" 'low',\n",
" 'already',\n",
" 'top',\n",
" 'poor',\n",
" 'during',\n",
" '3',\n",
" 'stars',\n",
" 'house',\n",
" '..',\n",
" 'couple',\n",
" 'boring',\n",
" 'reason',\n",
" 'try',\n",
" 'along',\n",
" 'name',\n",
" 'small',\n",
" 'plays',\n",
" 'father',\n",
" 'everything',\n",
" 'used',\n",
" 'video',\n",
" 'getting',\n",
" 'money',\n",
" 'full',\n",
" 'less',\n",
" 'performances',\n",
" 'often',\n",
" 'liked',\n",
" 'came',\n",
" '1',\n",
" 'robert',\n",
" 'either',\n",
" 'fan',\n",
" 'given',\n",
" 'hand',\n",
" 'kill',\n",
" 'felt',\n",
" 'yes',\n",
" 'completely',\n",
" 'night',\n",
" 'children',\n",
" 'himself',\n",
" 'girls',\n",
" 'early',\n",
" 'awful',\n",
" 'oh',\n",
" 'live',\n",
" 'picture',\n",
" 'parts',\n",
" 'throughout',\n",
" 'until',\n",
" 'become',\n",
" 'town',\n",
" 'written',\n",
" 'terrible',\n",
" 'turn',\n",
" 'child',\n",
" 'despite',\n",
" 'moments',\n",
" 'boy',\n",
" 'problem',\n",
" 'able',\n",
" 'head',\n",
" 'stupid',\n",
" 'beginning',\n",
" 'home',\n",
" 'version',\n",
" 'excellent',\n",
" 'sometimes',\n",
" 'overall',\n",
" 'recommend',\n",
" 'sex',\n",
" 'keep',\n",
" 'human',\n",
" 'drama',\n",
" 'hero',\n",
" 'supposed',\n",
" 'seemed',\n",
" 'use',\n",
" 'writing',\n",
" 'wo',\n",
" 'remember',\n",
" 'went',\n",
" 'enjoy',\n",
" 'classic',\n",
" 'person',\n",
" 'killer',\n",
" 'lost',\n",
" 'late',\n",
" '5',\n",
" 'title',\n",
" 'king',\n",
" 'entire',\n",
" 'history',\n",
" 'son',\n",
" 'school',\n",
" 'lead',\n",
" 'english',\n",
" 'sound',\n",
" 'cinema',\n",
" 'seeing',\n",
" 'unfortunately',\n",
" 'genre',\n",
" 'sort',\n",
" 'mean',\n",
" 'friend',\n",
" 'fans',\n",
" 'close',\n",
" 'quality',\n",
" 'definitely',\n",
" 'james',\n",
" 'worse',\n",
" 'says',\n",
" 'except',\n",
" 'doing',\n",
" 'itself',\n",
" 'past',\n",
" 'certainly',\n",
" 'days',\n",
" 'five',\n",
" 'dialogue',\n",
" 'line',\n",
" 'anyway',\n",
" 'under',\n",
" 'tries',\n",
" 'called',\n",
" 'fine',\n",
" 'guys',\n",
" 'care',\n",
" 'style',\n",
" 'hope',\n",
" 'short',\n",
" 'lines',\n",
" 'told',\n",
" 'car',\n",
" 'decent',\n",
" 'brother',\n",
" 'killed',\n",
" 'wanted',\n",
" 'entertaining',\n",
" 'based',\n",
" 'absolutely',\n",
" 'feeling',\n",
" 'truly',\n",
" 'etc',\n",
" 'heard',\n",
" 'serious',\n",
" 'run',\n",
" 'wonderful',\n",
" 'lives',\n",
" 'gives',\n",
" 'moment',\n",
" 'game',\n",
" 'documentary',\n",
" 'self',\n",
" 'several',\n",
" 'waste',\n",
" 'dead',\n",
" 'blood',\n",
" 'matter',\n",
" 'wonder',\n",
" 'humor',\n",
" 'thinking',\n",
" 'against',\n",
" 'white',\n",
" 'side',\n",
" 'works',\n",
" 'mother',\n",
" 'flick',\n",
" 'stuff',\n",
" 'turns',\n",
" 'finally',\n",
" 'loved',\n",
" 'group',\n",
" 'wants',\n",
" 'face',\n",
" 'guess',\n",
" 'dark',\n",
" 'city',\n",
" 'events',\n",
" 'starts',\n",
" 'hour',\n",
" 'took',\n",
" 'george',\n",
" 'themselves',\n",
" 'red',\n",
" 'behind',\n",
" 'talking',\n",
" 'hit',\n",
" 'eyes',\n",
" 'attempt',\n",
" 'direction',\n",
" 'novel',\n",
" 'saying',\n",
" 'word',\n",
" 'dull',\n",
" 'light',\n",
" 'view',\n",
" 'playing',\n",
" 'opinion',\n",
" 'expect',\n",
" 'evil',\n",
" 'ten',\n",
" 'violence',\n",
" 'local',\n",
" 'final',\n",
" 'gave',\n",
" 'leave',\n",
" 'paul',\n",
" 'crap',\n",
" 'happens',\n",
" 'knows',\n",
" 'problems',\n",
" 'example',\n",
" 'relationship',\n",
" 'non',\n",
" 'michael',\n",
" 'victor',\n",
" 'ridiculous',\n",
" 'god',\n",
" 'similar',\n",
" 'general',\n",
" 'major',\n",
" 'bunch',\n",
" 'sister',\n",
" 'oscar',\n",
" 'turned',\n",
" 'brilliant',\n",
" 'highly',\n",
" 'nearly',\n",
" 'de',\n",
" 'please',\n",
" 'romance',\n",
" 'body',\n",
" 'extremely',\n",
" 'mr.',\n",
" 'soon',\n",
" 'yourself',\n",
" 'known',\n",
" 'lack',\n",
" 'age',\n",
" 'interest',\n",
" 'ago',\n",
" 'stories',\n",
" 'exactly',\n",
" 'finds',\n",
" 'modern',\n",
" 'voice',\n",
" 'perfect',\n",
" 'heart',\n",
" 'alone',\n",
" 'tells',\n",
" 'daughter',\n",
" 'directed',\n",
" 'needs',\n",
" 'kid',\n",
" 'lady',\n",
" 'sad',\n",
" 'fight',\n",
" 'happened',\n",
" 'eye',\n",
" 'favorite',\n",
" 'using',\n",
" 'upon',\n",
" 'ben',\n",
" 'none',\n",
" 'beyond',\n",
" 'nature',\n",
" 'change',\n",
" 'save',\n",
" 'shots',\n",
" 'country',\n",
" 'number',\n",
" 'shown',\n",
" 'surprised',\n",
" 'romantic',\n",
" 'huge',\n",
" 'murder',\n",
" 'steve',\n",
" 'slow',\n",
" 'myself',\n",
" 'woods',\n",
" 'apparently',\n",
" 'lake',\n",
" 'cheap',\n",
" 'involved',\n",
" 'roles',\n",
" '6',\n",
" 'gore',\n",
" 'obviously',\n",
" 'knew',\n",
" 'level',\n",
" '8',\n",
" 'experience',\n",
" 'became',\n",
" 'gone',\n",
" 'cover',\n",
" 'amazing',\n",
" 'create',\n",
" 'living',\n",
" 'usually',\n",
" 'order',\n",
" 'monster',\n",
" 'happen',\n",
" 'list',\n",
" 'clearly',\n",
" 'power',\n",
" 'features',\n",
" 're',\n",
" 'subject',\n",
" 'across',\n",
" 'parents',\n",
" 'seriously',\n",
" 'ways',\n",
" 'room',\n",
" 'filmed',\n",
" 'cheesy',\n",
" 'disappointed',\n",
" 'important',\n",
" 'plenty',\n",
" '7',\n",
" 'particular',\n",
" 'started',\n",
" 'today',\n",
" 'enjoyed',\n",
" 'cinematography',\n",
" 'annoying',\n",
" 'looked',\n",
" 'supporting',\n",
" 'mostly',\n",
" 'message',\n",
" 'somewhat',\n",
" 'viewer',\n",
" 'type',\n",
" 'certain',\n",
" 'release',\n",
" 'effort',\n",
" 'possible',\n",
" 'add',\n",
" 'figure',\n",
" 'named',\n",
" 'wish',\n",
" 'difficult',\n",
" 'falls',\n",
" 'four',\n",
" 'husband',\n",
" 'score',\n",
" 'leads',\n",
" 'form',\n",
" 'working',\n",
" 'writer',\n",
" 'sets',\n",
" 'including',\n",
" 'enjoyable',\n",
" 'ok',\n",
" 'note',\n",
" 'spent',\n",
" 'review',\n",
" 'art',\n",
" 'police',\n",
" 'sit',\n",
" 'horrible',\n",
" 'actress',\n",
" 'ones',\n",
" 'bring',\n",
" 'greatest',\n",
" 'dance',\n",
" 'earth',\n",
" 'becomes',\n",
" 'happy',\n",
" 'cut',\n",
" 'straight',\n",
" 'soundtrack',\n",
" 'leading',\n",
" 'laugh',\n",
" 'strange',\n",
" 'space',\n",
" 'b',\n",
" 'tale',\n",
" 'comic',\n",
" 'near',\n",
" 'due',\n",
" 'weak',\n",
" 'earlier',\n",
" 'follow',\n",
" 'british',\n",
" 'ends',\n",
" 'typical',\n",
" 'attention',\n",
" 'points',\n",
" 'talent',\n",
" 'tom',\n",
" 'female',\n",
" 'future',\n",
" 'fall',\n",
" 'laughs',\n",
" 'stop',\n",
" 'easy',\n",
" 'moving',\n",
" 'apart',\n",
" 'chance',\n",
" 'running',\n",
" 'york',\n",
" 'particularly',\n",
" 'luke',\n",
" 'bill',\n",
" 'forced',\n",
" 'theme',\n",
" 'easily',\n",
" 'rating',\n",
" 'coming',\n",
" 'davis',\n",
" 'totally',\n",
" 'realistic',\n",
" 'simple',\n",
" 'hours',\n",
" 'taken',\n",
" 'indeed',\n",
" 'released',\n",
" 'sexual',\n",
" 'feels',\n",
" 'french',\n",
" 'screenplay',\n",
" 'la',\n",
" 'jokes',\n",
" 'sequences',\n",
" 'chase',\n",
" 'portrayed',\n",
" 'dramatic',\n",
" 'mention',\n",
" 'talk',\n",
" 'gun',\n",
" 'thriller',\n",
" 'jimmy',\n",
" 'career',\n",
" 'reality',\n",
" 'incredibly',\n",
" 'whether',\n",
" 'towards',\n",
" 'entertainment',\n",
" 'feature',\n",
" 'western',\n",
" 'dialog',\n",
" 'business',\n",
" 'suspense',\n",
" 'focus',\n",
" 'doubt',\n",
" 'possibly',\n",
" 'water',\n",
" 'gay',\n",
" 'blob',\n",
" 'comments',\n",
" 'brothers',\n",
" 'clear',\n",
" 'agree',\n",
" 'allen',\n",
" 'door',\n",
" 'editing',\n",
" 'third',\n",
" 'deserves',\n",
" 'silly',\n",
" 'fantastic',\n",
" 'convincing',\n",
" 'hardly',\n",
" 'lame',\n",
" 'act',\n",
" 'former',\n",
" 'material',\n",
" 'appears',\n",
" 'understand',\n",
" 'twist',\n",
" 'episodes',\n",
" 'buy',\n",
" 'secret',\n",
" 'richard',\n",
" 'south',\n",
" 'bourne',\n",
" 'deal',\n",
" 'musical',\n",
" 'words',\n",
" 'unique',\n",
" 'mess',\n",
" 'opening',\n",
" 'society',\n",
" 'avoid',\n",
" 'footage',\n",
" 'joe',\n",
" 'free',\n",
" 'forget',\n",
" 'herself',\n",
" 'appear',\n",
" 'obvious',\n",
" 'box',\n",
" 'single',\n",
" 'average',\n",
" 'indian',\n",
" 'rent',\n",
" 'okay',\n",
" 'scary',\n",
" 'within',\n",
" 'office',\n",
" 'crime',\n",
" 'science',\n",
" '80',\n",
" 'believable',\n",
" 'period',\n",
" 'showing',\n",
" 'call',\n",
" 'return',\n",
" 'keeps',\n",
" 'lee',\n",
" 'expected',\n",
" 'stay',\n",
" 'middle',\n",
" 'jack',\n",
" 'hands',\n",
" 'david',\n",
" 'attempts',\n",
" 'strong',\n",
" 'tension',\n",
" 'crew',\n",
" 'hilarious',\n",
" 'grade',\n",
" 'outside',\n",
" 'means',\n",
" 'viewing',\n",
" 'sadly',\n",
" 'hell',\n",
" 'whatever',\n",
" 'sorry',\n",
" 'recently',\n",
" 'stage',\n",
" 'decides',\n",
" 'hear',\n",
" 'team',\n",
" 'learn',\n",
" 'nor',\n",
" 'open',\n",
" 'break',\n",
" 'question',\n",
" 'remake',\n",
" 'porn',\n",
" 'pain',\n",
" 'imagine',\n",
" 'deep',\n",
" 'zombie',\n",
" 'basically',\n",
" 'killing',\n",
" 'company',\n",
" 'poorly',\n",
" 'dr.',\n",
" 'predictable',\n",
" 'taking',\n",
" 'large',\n",
" 'language',\n",
" 'giving',\n",
" 'public',\n",
" 'audiences',\n",
" 'ask',\n",
" 'cool',\n",
" 'america',\n",
" 'slasher',\n",
" 'west',\n",
" 'mentioned',\n",
" 'die',\n",
" 'christmas',\n",
" 'complete',\n",
" 'needed',\n",
" 'martin',\n",
" 'makers',\n",
" 'cgi',\n",
" 'boys',\n",
" 'vargas',\n",
" 'usual',\n",
" 'begin',\n",
" 'dad',\n",
" 'total',\n",
" 'somehow',\n",
" 'stick',\n",
" 'shame',\n",
" 'successful',\n",
" 'sitting',\n",
" 'fred',\n",
" 'meets',\n",
" 'unless',\n",
" 'dancing',\n",
" 'sounds',\n",
" 'above',\n",
" 'elements',\n",
" 'whose',\n",
" 'german',\n",
" 'considering',\n",
" 'caught',\n",
" 'credit',\n",
" 'interested',\n",
" 'move',\n",
" 'filming',\n",
" 'truth',\n",
" 'eventually',\n",
" 'share',\n",
" 'ability',\n",
" 'meaning',\n",
" 'agent',\n",
" 'fast',\n",
" 'stand',\n",
" 'onto',\n",
" 'plain',\n",
" 'comment',\n",
" 'kept',\n",
" 'situation',\n",
" 'setting',\n",
" 'value',\n",
" 'willing',\n",
" 'realize',\n",
" 'acted',\n",
" 'weird',\n",
" 'alive',\n",
" 'fairly',\n",
" 'dream',\n",
" 'building',\n",
" 'hair',\n",
" 'bored',\n",
" 'minute',\n",
" 'emotional',\n",
" 'directing',\n",
" 'theatrical',\n",
" 'famous',\n",
" 'begins',\n",
" 'front',\n",
" 'catch',\n",
" 'sequence',\n",
" 'runs',\n",
" 'follows',\n",
" 'song',\n",
" 'government',\n",
" 'miss',\n",
" 'actual',\n",
" ...]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"movie_reviews.vocab.itos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Notice that ints-to-string and string-to-ints have different lengths. Think for a moment about why this is.\n",
"See Hint below"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"itos length 6016 \n",
"stoi length 19160 \n"
]
}
],
"source": [
"print('itos ', 'length ',len(movie_reviews.vocab.itos),type(movie_reviews.vocab.itos) )\n",
"print('stoi ', 'length ',len(movie_reviews.vocab.stoi),type(movie_reviews.vocab.stoi) )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Hint: `stoi` is an instance of the class `defaultdict`\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### In a `defaultdict`, rare words that appear fewer than three times in the corpus, and words that are not in the dictionary, are mapped to a `default value`, in this case, zero"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"0\n",
"0\n",
"0\n",
"0\n",
"0\n"
]
}
],
"source": [
"rare_words = ['acrid','a_random_made_up_nonexistant_word','acrimonious','allosteric','anodyne','antikythera']\n",
"for word in rare_words:\n",
" print(movie_reviews.vocab.stoi[word])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### What's the `token` corresponding to the `default` value?"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"xxunk\n"
]
}
],
"source": [
"print(movie_reviews.vocab.itos[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Note that `stoi` (string-to-int) is larger than `itos` (int-to-string)."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"len(stoi) = 19165\n",
"len(itos) = 6016\n",
"len(stoi) - len(itos) = 13149\n"
]
}
],
"source": [
"print(f'len(stoi) = {len(movie_reviews.vocab.stoi)}')\n",
"print(f'len(itos) = {len(movie_reviews.vocab.itos)}')\n",
"print(f'len(stoi) - len(itos) = {len(movie_reviews.vocab.stoi) - len(movie_reviews.vocab.itos)}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### This is because many words map to `unknown`. We can confirm here:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"unk = []\n",
"for word, num in movie_reviews.vocab.stoi.items():\n",
" if num==0:\n",
" unk.append(word)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13155"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(unk)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Question: why isn't len(unk) = len(stoi) - len(itos)?\n",
"Hint: remember the list of rare words we used to query `stoi` a few cells back?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Here are the first 25 words that are mapped to `unknown`"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"['xxunk',\n",
" 'bleeping',\n",
" 'pert',\n",
" 'ticky',\n",
" 'schtick',\n",
" 'whoosh',\n",
" 'banzai',\n",
" 'chill',\n",
" 'wooofff',\n",
" 'cheery',\n",
" 'superstars',\n",
" 'fashionable',\n",
" 'cruelly',\n",
" 'separating',\n",
" 'mistreat',\n",
" 'tensions',\n",
" 'religions',\n",
" 'baseness',\n",
" 'nobility',\n",
" 'puro',\n",
" 'disowned',\n",
" 'option',\n",
" 'faults',\n",
" 'dignified',\n",
" 'realisation']"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unk[:25]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Map the movie reviews into a vector space"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### There are 6016 unique tokens in the IMDb review vocabulary. Their numericalized values range from 0 to 6015"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 6016 unique tokens in the IMDb review sample vocabulary\n",
"The numericalized token values run from 0 to 6015 \n"
]
}
],
"source": [
"print(f'There are {len(movie_reviews.vocab.itos)} unique tokens in the IMDb review sample vocabulary')\n",
"print(f'The numericalized token values run from {min(movie_reviews.vocab.stoi.values())} to {max(movie_reviews.vocab.stoi.values())} ')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Each review can be mapped to a 6016-dimensional `embedding vector` whose indices correspond to the numericalized tokens, and whose values are the number of times the corresponding token appeared in the review. To do this efficiently we need to learn a bit about `Counters`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3A. Counters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A **Counter** is a useful Python object. A **Counter** applied to a list returns an ordered dictionary whose keys are the unique elements in the list, and whose values are the counts of the unique elements. Counters are from the collections module (along with OrderedDict, defaultdict, deque, and namedtuple).\n",
"Here is how Counters work:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Let's make a TokenCounter for movie reviews"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_items([(2, 1), (5, 15), (4622, 1), (25, 3), (0, 8), (867, 1), (52, 5), (3776, 1), (1800, 1), (95, 1), (37, 1), (85, 1), (191, 1), (63, 2), (936, 1), (2740, 1), (517, 1), (18, 1), (21, 3), (11, 1), (84, 1), (2418, 1), (192, 1), (88, 1), (3777, 1), (1801, 1), (127, 1), (10, 3), (269, 1), (15, 1), (273, 1), (73, 1), (26, 2), (9, 2), (1360, 1), (35, 2), (1213, 1), (1144, 1), (1145, 1), (2419, 1), (91, 1), (62, 1), (245, 1), (14, 2), (1361, 1), (1447, 1), (64, 1), (40, 1), (797, 1), (103, 1), (72, 2), (99, 1), (534, 1), (616, 1), (48, 1), (282, 1), (54, 1), (90, 1), (219, 1), (228, 1), (43, 1), (13, 1), (3778, 1), (3779, 1), (355, 1), (492, 1)])"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TokenCounter = lambda review_index : Counter((movie_reviews.train.x)[review_index].data)\n",
"TokenCounter(0).items()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The TokenCounter `keys` are the numericalized `tokens` that apper in the review"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys([2, 5, 4622, 25, 0, 867, 52, 3776, 1800, 95, 37, 85, 191, 63, 936, 2740, 517, 18, 21, 11, 84, 2418, 192, 88, 3777, 1801, 127, 10, 269, 15, 273, 73, 26, 9, 1360, 35, 1213, 1144, 1145, 2419, 91, 62, 245, 14, 1361, 1447, 64, 40, 797, 103, 72, 99, 534, 616, 48, 282, 54, 90, 219, 228, 43, 13, 3778, 3779, 355, 492])"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TokenCounter(0).keys()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The TokenCounter `values` are the `token multiplicities`, i.e the number of times each `token` appears in the review"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_values([1, 15, 1, 3, 8, 1, 5, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TokenCounter(0).values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3B. Mapping movie reviews to `embedding vectors`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Make a `count_vectorizer` function that represents a movie review as a 6016-dimensional `embedding vector`\n",
"#### The `indices` of the `embedding vector` correspond to the n6016 numericalized tokens in the vocabulary; the `values` specify how often the corresponding token appears in the review. "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"n_terms = len(movie_reviews.vocab.itos)\n",
"n_docs = len(movie_reviews.train.x)\n",
"make_token_counter = lambda review_index: Counter(movie_reviews.train.x[review_index].data)\n",
"def count_vectorizer(review_index,n_terms = n_terms,make_token_counter = make_token_counter):\n",
" # input: review index, n_terms, and tokenizer function\n",
" # output: embedding vector for the review\n",
" embedding_vector = np.zeros(n_terms) \n",
" keys = list(make_token_counter(review_index).keys())\n",
" values = list(make_token_counter(review_index).values())\n",
" embedding_vector[keys] = values\n",
" return embedding_vector\n",
"\n",
"# make the embedding vector for the first review\n",
"embedding_vector = count_vectorizer(0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Here is the `embedding vector` for the first review in the training data set"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The review is embedded in a 6016 dimensional vector\n"
]
},
{
"data": {
"text/plain": [
"array([8., 0., 1., 0., ..., 0., 0., 0., 0.])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(f'The review is embedded in a {len(embedding_vector)} dimensional vector')\n",
"embedding_vector"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Create the document-term matrix for the IMDb"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### In non-deep learning methods of NLP, we are often interested only in `which words` were used in a review, and `how often each word got used`. This is known as the `bag of words` approach, and it suggests a really simple way to store a document (in this case, a movie review). \n",
"\n",
"#### For each review we can keep track of which words were used and how often each word was used with a `vector` whose `length` is the number of tokens in the vocabulary, which we will call `n`. The `indexes` of this `vector` correspond to the `tokens` in the `IMDb vocabulary`, and the`values` of the vector are the number of times the corresponding tokens appeared in the review. For example the values stored at indexes 0, 1, 2, 3, 4 of the vector record the number of times the 5 tokens ['xxunk','xxpad','xxbos','xxeos','xxfld'] appeared in the review, respectively.\n",
"\n",
"#### Now, if our movie review database has `m` reviews, and each review is represented by a `vector` of length `n`, then vertically stacking the row vectors for all the reviews creates a matrix representation of the IMDb, which we call its `document-term matrix`. The `rows` correspond to `documents` (reviews), while the `columns` correspond to `terms` (or tokens in the vocabulary)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the previous lesson, we used [sklearn's CountVectorizer](https://github.com/scikit-learn/scikit-learn/blob/55bf5d9/sklearn/feature_extraction/text.py#L940) to generate the `vectors` that represent individual reviews. Today we will create our own (similar) version. This is for two reasons:\n",
"- to understand what sklearn is doing underneath the hood\n",
"- to create something that will work with a fastai TextList"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Form the embedding vectors for the movie_reviews in the training set and stack them vertically"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"there are 800 reviews, and 6016 unique tokens in the vocabulary\n"
]
}
],
"source": [
"# Define a function to build the full document-term matrix\n",
"print(f'there are {n_docs} reviews, and {n_terms} unique tokens in the vocabulary')\n",
"def make_full_doc_term_matrix(count_vectorizer,n_terms=n_terms,n_docs=n_docs):\n",
" \n",
" # loop through the movie reviews\n",
" for doc_index in range(n_docs):\n",
" \n",
" # make the embedding vector for the current review\n",
" embedding_vector = count_vectorizer(doc_index,n_terms) \n",
" \n",
" # append the embedding vector to the document-term matrix\n",
" if(doc_index == 0):\n",
" A = embedding_vector\n",
" else:\n",
" A = np.vstack((A,embedding_vector))\n",
" \n",
" # return the document-term matrix\n",
" return A\n",
"\n",
"# Build the full document term matrix for the movie_reviews training set\n",
"A = make_full_doc_term_matrix(count_vectorizer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Explore the `sparsity` of the document-term matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The `sparsity` of a matrix is defined as the fraction of of zero-valued elements"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Only 112413 of the 4812800 elements in the document-term matrix are nonzero\n",
"The sparsity of the document-term matrix is 0.9766429105718085\n"
]
}
],
"source": [
"NNZ = np.count_nonzero(A)\n",
"sparsity = (A.size-NNZ)/A.size\n",
"print(f'Only {NNZ} of the {A.size} elements in the document-term matrix are nonzero')\n",
"print(f'The sparsity of the document-term matrix is {sparsity}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Using matplotlib's `spy` method, we can visualize the structure of the `document-term matrix`\n",
"`spy` plots the array, indicating each non-zero value with a dot."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.spy(A, markersize=0.10, aspect = 'auto')\n",
"fig.set_size_inches(8,6)\n",
"fig.savefig('doc_term_matrix.png', dpi=800)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Several observations stand out:\n",
"1. Evidently, the document-term matrix is `sparse` ie. has a high proportion of zeros! \n",
"2. The density of the matrix increases toward the `left` edge. This makes sense because the tokens are ordered by usage frequency, with frequency increasing toward the `left`.\n",
"3. There is a perplexing pattern of curved vertical `density ripples`. If anyone has an explanation, please let me know! \n",
"\n",
"#### Next we'll see how to exploit matrix sparsity to save memory storage space, and compute time and resources.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Sparse Matrix Representation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Even though we've reduced over 19,000 unique words in our corpus of reviews down to a vocabulary of 6,000 words, that's still a lot! But reviews are generally short, a few hundred words. So most tokens don't appear in a typical review. That means that most of the entries in the document-term matrix will be zeros, and therefore ordinary matrix operations will waste a lot of compute resources multiplying and adding zeros. \n",
"\n",
"#### We want to maximize the use of space and time by storing and performing matrix operations on our document-term matrix as a **sparse matrix**. `scipy` provides tools for efficient sparse matrix representatin and operations. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Loosely speaking, matrix with a high proportion of zeros is called `sparse` (the opposite of sparse is `dense`). For sparse matrices, you can save a lot of memory by only storing the non-zero values.\n",
"\n",
"#### More specifically, a class of matrices is called **sparse** if the number of non-zero elements is proportional to the number of rows (or columns) instead of being proportional to the product rows x columns. An example is the class of diagonal matrices.\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Visualizing sparse matrix structure\n",
"\n",
"ref. https://scipy-lectures.org/advanced/scipy_sparse/introduction.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sparse matrix storage formats\n",
"\n",
"\n",
"ref. https://scipy-lectures.org/advanced/scipy_sparse/storage_schemes.html\n",
"\n",
"There are the most common sparse storage formats:\n",
"- coordinate-wise (scipy calls COO)\n",
"- compressed sparse row (CSR)\n",
"- compressed sparse column (CSC)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Definition of the Compressed Sparse Row (CSR) format\n",
"\n",
"Let's start out with a presecription for the **CSR format** (ref. https://en.wikipedia.org/wiki/Sparse_matrix)\n",
"\n",
"Given a full matrix **`A`** that has **`m`** rows, **`n`** columns, and **`N`** nonzero values, the CSR (Compressed Sparse Row) representation uses three arrays as follows:\n",
"\n",
"1. **`Val[0:N]`** contains the **values** of the **`N` non-zero elements**.\n",
"\n",
"2. **`Col[0:N]`** contains the **column indices** of the **`N` non-zero elements**. \n",
" \n",
"3. For each row **`i`** of **`A`**, **`RowPointer[i]`** contains the index in **Val** of the the first **nonzero value** in row **`i`**. If there are no nonzero values in the **ith** row, then **`RowPointer[i] = None`**. And, by convention, an extra value **`RowPointer[m] = N`** is tacked on at the end. \n",
"\n",
"Question: How many floats and ints does it take to store the matrix **`A`** in CSR format?\n",
"\n",
"Let's walk through [a few examples](http://www.mathcs.emory.edu/~cheung/Courses/561/Syllabus/3-C/sparse.html) at the Emory University website\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Store the document-term matrix in CSR format\n",
"i.e. given the `TextList` object containing the list of reviews, return the three arrays (values, column_indices, row_pointer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Scipy Implementation of sparse matrices\n",
"\n",
"From the [Scipy Sparse Matrix Documentation](https://docs.scipy.org/doc/scipy-0.18.1/reference/sparse.html)\n",
"\n",
"- To construct a matrix efficiently, use either dok_matrix or lil_matrix. The lil_matrix class supports basic slicing and fancy indexing with a similar syntax to NumPy arrays. As illustrated below, the COO format may also be used to efficiently construct matrices\n",
"- To perform manipulations such as multiplication or inversion, first convert the matrix to either CSC or CSR format.\n",
"- All conversions among the CSR, CSC, and COO formats are efficient, linear-time operations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### To really understand the CSR format, we need to be able know how to do two things:\n",
"1. Translate a regular matrix A into CSR format\n",
"2. Reconstruct a regular matrix from its CSR sparse representation\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6.1. Translate a regular matrix A into CSR format\n",
"This is done by implementing the definition of `CSR format`, given above."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"# construct the document-term matrix in CSR format\n",
"# i.e. return (values, column_indices, row_pointer)\n",
"def get_doc_term_matrix(text_list, n_terms):\n",
" \n",
" # inputs:\n",
" # text_list, a TextList object\n",
" # n_terms, the number of tokens in our IMDb vocabulary\n",
" \n",
" # output: \n",
" # the CSR format sparse representation of the document-term matrix in the form of a\n",
" # scipy.sparse.csr.csr_matrix object\n",
"\n",
" \n",
" # initialize arrays\n",
" values = []\n",
" column_indices = []\n",
" row_pointer = []\n",
" row_pointer.append(0)\n",
"\n",
" # from the TextList object\n",
" for _, doc in enumerate(text_list):\n",
" feature_counter = Counter(doc.data)\n",
" column_indices.extend(feature_counter.keys())\n",
" values.extend(feature_counter.values())\n",
" # Tack on N (number of nonzero elements in the matrix) to the end of the row_pointer array\n",
" row_pointer.append(len(values))\n",
" \n",
" return scipy.sparse.csr_matrix((values, column_indices, row_pointer),\n",
" shape=(len(row_pointer) - 1, n_terms),\n",
" dtype=int)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Get the document-term matrix in CSR format for the training data"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 129 ms\n"
]
}
],
"source": [
"%%time\n",
"train_doc_term = get_doc_term_matrix(movie_reviews.train.x, len(movie_reviews.vocab.itos))"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"scipy.sparse.csr.csr_matrix"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(train_doc_term)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(800, 6016)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_doc_term.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Get the document-term matrix in CSR format for the validation data"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 32.9 ms\n"
]
}
],
"source": [
"%%time\n",
"valid_doc_term = get_doc_term_matrix(movie_reviews.valid.x, len(movie_reviews.vocab.itos))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"scipy.sparse.csr.csr_matrix"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(valid_doc_term)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(200, 6016)"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_doc_term.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6.2 Reconstruct a regular matrix from its CSR sparse representation\n",
"#### Given a CSR format sparse matrix representation $(\\text{values},\\text{column_indices}, \\text{row_pointer})$ of a $\\text{m}\\times \\text{n}$ matrix $\\text{A}$, how can we recover $\\text{A}$?\n",
"\n",
"First create $\\text{m}\\times \\text{n}$ matrix with all zeros.\n",
"We will recover $\\text{A}$ by overwriting the entries in the zeros matrix row by row with the non-zero entries in $\\text{A}$ as follows:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"def CSR_to_full(values, column_indices, row_ptr, m,n):\n",
" A = zeros(m,n)\n",
" for row in range(n):\n",
" if row_ptr is not null:\n",
" A[row,column_indices[row_ptr[row]:row_ptr[row+1]]] = values[row_ptr[row]:row_ptr[row+1]]\n",
" return A\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 7. IMDb data exploration exercises"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The`.todense()` method converts a sparse matrix back to a regular (dense) matrix."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<200x6016 sparse matrix of type ''\n",
"\twith 27848 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_doc_term"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"matrix([[32, 0, 1, 0, ..., 1, 0, 0, 10],\n",
" [ 9, 0, 1, 0, ..., 1, 0, 0, 7],\n",
" [ 6, 0, 1, 0, ..., 0, 0, 0, 12],\n",
" [78, 0, 1, 0, ..., 0, 0, 0, 44],\n",
" ...,\n",
" [ 8, 0, 1, 0, ..., 0, 0, 0, 8],\n",
" [43, 0, 1, 0, ..., 8, 1, 0, 25],\n",
" [ 7, 0, 1, 0, ..., 1, 0, 0, 9],\n",
" [19, 0, 1, 0, ..., 2, 0, 0, 5]])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_doc_term.todense()[:10,:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Consider the second review in the validation set"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text xxbos i saw this movie once as a kid on the late - late show and fell in love with it . \n",
" \n",
" xxmaj it took 30 + years , but i recently did find it on xxup dvd - it was n't cheap , either - in a xxunk that xxunk in war movies . xxmaj we watched it last night for the first time . xxmaj the audio was good , however it was grainy and had the trailers between xxunk . xxmaj even so , it was better than i remembered it . i was also impressed at how true it was to the play . \n",
" \n",
" xxmaj the xxunk is around here xxunk . xxmaj if you 're xxunk in finding it , fire me a xxunk and i 'll see if i can get you the xxunk . xxunk"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"review = movie_reviews.valid.x[1]\n",
"review"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exercise 1:** How many times does the word \"it\" appear in this review? Confirm that the correct values is stored in the document-term matrix, for the row corresponding to this review and the column corresponding to the word \"it\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Answer 1:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# try it! \n",
"# Your code here."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exercise 2**: Confirm that the review has 144 tokens, 81 of which are distinct"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Answer 2:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<1x6016 sparse matrix of type ''\n",
"\twith 81 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_doc_term[1]"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"144"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_doc_term[1].sum()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"81"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(set(review.data))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exercise 3:** How could you convert review.data back to text (without just using review.text)?"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 2, 19, 248, 21, ..., 9, 0, 10, 0], dtype=int64)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"review.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Answer 3:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['xxbos', 'i', 'saw', 'this', 'movie', 'once', 'as', 'a', 'kid', 'on', 'the', 'late', '-', 'late', 'show', 'and', 'fell', 'in', 'love', 'with', 'it', '.', '\\n \\n ', 'xxmaj', 'it', 'took', '30', '+', 'years', ',', 'but', 'i', 'recently', 'did', 'find', 'it', 'on', 'xxup', 'dvd', '-', 'it', 'was', \"n't\", 'cheap', ',', 'either', '-', 'in', 'a', 'xxunk', 'that', 'xxunk', 'in', 'war', 'movies', '.', 'xxmaj', 'we', 'watched', 'it', 'last', 'night', 'for', 'the', 'first', 'time', '.', 'xxmaj', 'the', 'audio', 'was', 'good', ',', 'however', 'it', 'was', 'grainy', 'and', 'had', 'the', 'trailers', 'between', 'xxunk', '.', 'xxmaj', 'even', 'so', ',', 'it', 'was', 'better', 'than', 'i', 'remembered', 'it', '.', 'i', 'was', 'also', 'impressed', 'at', 'how', 'true', 'it', 'was', 'to', 'the', 'play', '.', '\\n \\n ', 'xxmaj', 'the', 'xxunk', 'is', 'around', 'here', 'xxunk', '.', 'xxmaj', 'if', 'you', \"'re\", 'xxunk', 'in', 'finding', 'it', ',', 'fire', 'me', 'a', 'xxunk', 'and', 'i', \"'ll\", 'see', 'if', 'i', 'can', 'get', 'you', 'the', 'xxunk', '.', 'xxunk']\n"
]
}
],
"source": [
"word_list = [movie_reviews.vocab.itos[a] for a in review.data]\n",
"print(word_list)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"xxbos i saw this movie once as a kid on the late - late show and fell in love with it . \n",
" \n",
" xxmaj it took 30 + years , but i recently did find it on xxup dvd - it was n't cheap , either - in a xxunk that xxunk in war movies . xxmaj we watched it last night for the first time . xxmaj the audio was good , however it was grainy and had the trailers between xxunk . xxmaj even so , it was better than i remembered it . i was also impressed at how true it was to the play . \n",
" \n",
" xxmaj the xxunk is around here xxunk . xxmaj if you 're xxunk in finding it , fire me a xxunk and i 'll see if i can get you the xxunk . xxunk\n"
]
}
],
"source": [
"reconstructed_text = ' '.join(word_list)\n",
"print(reconstructed_text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## *Video 4 material ends here.* \n",
"## *Video 5 material begins below.*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 8. What is a [Naive Bayes classifier](https://towardsdatascience.com/the-naive-bayes-classifier-e92ea9f47523)? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"#### The `bag of words model` considers a movie review as equivalent to a list of the counts of all the tokens that it contains. When you do this, you throw away the rich information that comes from the sequential arrangement of the tokens into sentences and paragraphs. \n",
"\n",
"#### Nevertheless, even if you are not allowed to read the review but are only given its representation as `token counts`, you can usually still get a pretty good sense of whether the review was good or bad. How do you do this? By mentally gauging the overall `positive` or `negative` sentiment that the collection of words conveys, right? \n",
"\n",
"#### The `Naive Bayes Classifier` is an algorithm that encodes this simple reasoning process mathematically. It is based on two important pieces of information that we can learn from the training set:\n",
"* The `class priors`, i.e. the probabilities that a randomly chosen review will be `positive`, or `negative`\n",
"* The `token likelihoods` i.e. how likely is it that a given token would appear in a `positive` or `negative` review \n",
"\n",
"#### It turns out that this is all the information we need to build a model capable of predicting fairly accurately how any given review will be classified, given its text! \n",
"\n",
"#### We shall unfold the complete explanation of the magic of the Naive Bayes Classifier in the next section. \n",
"\n",
"#### Meanwhile, In this section, we focus on how to compute the necessary information from the training data, specifically the `prior probabilities` for reviews of each class, and the `class occurrence counts` and `class likelihood ratios` for each `token` in the `vocabulary`. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8A. Class priors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### From the training data we can determine the `class priors` $p$ and $q$, which are the overall probabilities that a randomly chosen review is in the `positive`, or `negative` class, resepectively. \n",
"\n",
"#### $p=\\frac{N^{+}}{N}$ \n",
"#### and\n",
"#### $q=\\frac{N^{-}}{N}$ \n",
"\n",
"#### Here $N^{+}$ and $N^{-}$ are the numbers of `positive` and `negative` reviews, and $N$ is the total number of reviews in the training set, so that \n",
"\n",
"#### $N = N^{+} + N^{-}$, \n",
"\n",
"#### and \n",
"\n",
"#### $q = 1-p$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8B. Class `occurrence counts`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Let $C^{+}_{t}$ and $C^{-}_{t}$ be the `occurrence counts` of token $t$ in `positive` and `negative` reviews, respectively, and $N^{+}$ and $N^{-}$ be the total numbers of`positive` and `negative` reviews in the data set, respectively. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8B.1 Data exploration with class `occurrence counts`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Movie reviews classes and their integer representations"
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['__class__',\n",
" '__delattr__',\n",
" '__dict__',\n",
" '__dir__',\n",
" '__doc__',\n",
" '__eq__',\n",
" '__format__',\n",
" '__ge__',\n",
" '__getattr__',\n",
" '__getattribute__',\n",
" '__gt__',\n",
" '__hash__',\n",
" '__init__',\n",
" '__init_subclass__',\n",
" '__le__',\n",
" '__lt__',\n",
" '__module__',\n",
" '__ne__',\n",
" '__new__',\n",
" '__reduce__',\n",
" '__reduce_ex__',\n",
" '__repr__',\n",
" '__setattr__',\n",
" '__setstate__',\n",
" '__sizeof__',\n",
" '__slotnames__',\n",
" '__str__',\n",
" '__subclasshook__',\n",
" '__weakref__',\n",
" 'add_test',\n",
" 'add_test_folder',\n",
" 'databunch',\n",
" 'filter_by_func',\n",
" 'get_processors',\n",
" 'label_const',\n",
" 'label_empty',\n",
" 'label_from_df',\n",
" 'label_from_folder',\n",
" 'label_from_func',\n",
" 'label_from_list',\n",
" 'label_from_lists',\n",
" 'label_from_re',\n",
" 'lists',\n",
" 'load_empty',\n",
" 'load_state',\n",
" 'path',\n",
" 'process',\n",
" 'test',\n",
" 'train',\n",
" 'transform',\n",
" 'transform_y',\n",
" 'valid']"
]
},
"execution_count": 197,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(movie_reviews)"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 196,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"movie_reviews.y.c"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['negative', 'positive']"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"movie_reviews.y.classes"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Integer representations: positive: 1, negative: 0\n"
]
}
],
"source": [
"positive = movie_reviews.y.c2i['positive']\n",
"negative = movie_reviews.y.c2i['negative']\n",
"print(f'Integer representations: positive: {positive}, negative: {negative}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Brief names for training set document term matrix and its labels, validation labels, and vocabulary"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [],
"source": [
"x = train_doc_term\n",
"y = movie_reviews.train.y\n",
"valid_y = movie_reviews.valid.y\n",
"v = movie_reviews.vocab"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(800, 260402)"
]
},
"execution_count": 198,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The `count arrays` `C1` and `C0` list the total `occurrence counts` of the tokens in `positive` and `negative` reviews, respectively."
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"C1 = np.squeeze(np.asarray(x[y.items==positive].sum(0)))\n",
"C0 = np.squeeze(np.asarray(x[y.items==negative].sum(0)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For each vocabulary token, we are summing up how many positive reviews it is in, and how many negative reviews it is in. Here are the occurrence counts for the first 10 tokens in the vocabulary."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 6468 0 383 0 0 10267 674 57 0 5260]\n",
"[ 7153 0 417 0 0 10741 908 53 1 6150]\n"
]
}
],
"source": [
"print(C1[:10])\n",
"print(C0[:10])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8B.2 Exercise"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### We can use `C0` and `C1` to do some more data exploration!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exercise 4**: Compare how often the word \"loved\" appears in positive reviews vs. negative reviews. Do the same for the word \"hate\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Answer 4:"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The word \"love\" appears 133 and 75 times in positive and negative documents, respectively\n"
]
}
],
"source": [
"# Exercise: How often does the word \"love\" appear in neg vs. pos reviews?\n",
"ind = v.stoi['love']\n",
"pos_counts = C1[ind] \n",
"neg_counts = C0[ind] \n",
"print(f'The word \"love\" appears {pos_counts} and {neg_counts} times in positive and negative documents, respectively')"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The word \"hate\" appears 5 and 13 times in positive and negative documents, respectively\n"
]
}
],
"source": [
"# Exercise: How often does the word \"hate\" appear in neg vs. pos reviews?\n",
"ind = v.stoi['hate']\n",
"pos_counts = C1[ind] \n",
"neg_counts = C0[ind] \n",
"print(f'The word \"hate\" appears {pos_counts} and {neg_counts} times in positive and negative documents, respectively')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Let's look for an example of a positive review containing the word \"hated\""
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 15 49 304 351 393 612 695 773]\n",
"[ 1 3 10 11 ... 787 789 790 797]\n"
]
},
{
"data": {
"text/plain": [
"'xxbos xxmaj there are numerous films relating to xxup xxunk , but xxmaj mother xxmaj night is quite xxunk among them : xxmaj in this film , we are introduced to xxmaj howard xxmaj campbell ( xxmaj nolte ) , an xxmaj american living in xxmaj berlin and married to a xxmaj german , xxmaj xxunk xxmaj xxunk ( xxmaj lee ) , who decides to accept the role of a spy : xxmaj more specifically , a xxup cia agent xxmaj major xxmaj xxunk ( xxmaj goodman ) recruits xxmaj campbell who becomes a xxmaj nazi xxunk in order to enter the highest xxunk of the xxmaj hitler xxunk . xxmaj however , the deal is that the xxup us xxmaj government will never xxunk xxmaj campbell \\'s role in the war for national security reasons , and so xxmaj campbell becomes a hated figure across the xxup us . xxmaj after the war , he tries to xxunk his identity , but the past comes back and xxunk him . xxmaj his only \" friend \" is xxmaj xxunk , but even he can not do much for the xxunk of events that fall upon poor xxmaj campbell ... \\n \\n xxmaj the story is deeply touching , as we watch the tragedy of xxmaj campbell who although a great patriot , is treated by xxunk by everybody who xxunk him . xxmaj not only that , but he also gradually realizes that even the persons who are most close to him , have many xxunk of their own . xxmaj vonnegut provides us with a moving atmosphere , with xxmaj campbell \\'s despair building up and almost choking the viewer . \\n \\n xxmaj nolte plays the role of his life , in my opinion ; he is even better than in \" xxmaj xxunk \" , although in both roles he plays tragic figures who are destined to self - destruction . xxmaj xxunk xxmaj lee is also excellent , and the same can be said for the whole cast in general . \\n \\n i have n\\'t read the book , so i can not xxunk how the film compares to it . xxmaj in any case , this is something of no importance here : xxmaj my xxunk is upon the film per xxunk , and the film xxunk deserves a 9 / 10 .'"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"index = v.stoi['hated']\n",
"a = np.argwhere((x[:,index] > 0))[:,0]\n",
"print(a)\n",
"b = np.argwhere(y.items==positive)[:,0]\n",
"print(b)\n",
"c = list(set(a).intersection(set(b)))[0]\n",
"review = movie_reviews.train.x[c]\n",
"review.text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Example of a negative review with the word \"loved\""
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1 15 29 69 75 79 174 185 200 205 262 296 303 333 350 351 398 407 440 489 496 528 538 600 602 605 627 642 657\n",
" 660 700 712 729 735 755 767 785]\n",
"[ 0 2 4 5 ... 795 796 798 799]\n"
]
},
{
"data": {
"text/plain": [
"'xxbos xxmaj oh if only i could give this rubbish less than one star ! xxmaj there were two mildly amusing parts in the whole film and that is it ! one was where a line or two from the song xxmaj do n\\'t xxmaj worry , xxmaj be xxmaj happy was xxunk by the slugs and the other was where xxmaj roddy fell of the toilet roll and landed with his feet and legs apart so that everything else he landed on on the way down hit him in the xxunk . xxmaj that is it there was nothing more amusing than that , at least not for me anyway ! xxmaj xxunk is not right in saying \\' xxmaj fans of the completely terrible \" xxmaj shrek \" might enjoy , but \" xxmaj wallace & xxmaj xxunk \" fans will probably turn away in xxunk . \\' xxmaj as i loved xxmaj shrek 1 2 and 3 and i also love xxmaj wallace and xxmaj xxunk . xxmaj you see what it xxunk down to is that if an animation is done extremely well then it is definitely worth watching , this however was about as far from done well as you can possibly get ! xxmaj the continuity mistakes were too big in number . xxmaj some were pointed out by the makers of this site others were not . i wo n\\'t point out all of the others , but here are a few more to see : xxmaj when the young daughter leaves at the start of the film the catch to the cage door comes down and the hook part of it that is on the right clearly goes back around behind the round xxunk thus effectively making sure xxmaj roddy would not be able to get out and yet he does just by simply kicking at it . xxmaj at one point the ruby falls down xxmaj roddy \\'s back and gets pushed straight up into the the air by xxmaj xxunk all the while the ship is moving forwards . xxmaj in the next scene xxmaj roddy has caught it again . xxmaj this is impossible . xxmaj seeing as how the ship is moving forwards the only place when the ruby was xxunk out from under the back of xxmaj roddy \\'s shirt the only place it could have landed was in the water not in xxmaj roddy \\'s hand . xxmaj there was a third one i wanted to point out but for now i have forgotten it . \\n \\n xxmaj too many , for want of a better word , \\' jokes \\' were repeated in one way or another , there was not enough time to establish any sort of connection with any of the characters , the characters were xxunk , shallow and empty , and the whole film left you wanting xxrep 4 . wanting to watch xxunk minutes of anything else ! xxmaj paint xxunk or grass growing are two superb xxunk !'"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"index = v.stoi['loved']\n",
"a = np.argwhere((x[:,index] > 0))[:,0]\n",
"print(a)\n",
"b = np.argwhere(y.items==negative)[:,0]\n",
"print(b)\n",
"c = list(set(a).intersection(set(b)))[0]\n",
"review = movie_reviews.train.x[c]\n",
"review.text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8C. Class likelihood ratios"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Then, given the knowledge that a review is classified as `positive`, the `conditional likelihood` that a token $t$ will appear in the review is\n",
"### $ L(t|+) = \\frac{C^{+}_{t}}{N^+}$, \n",
"#### and simlarly, the `conditional likelihood` of a token appearing in a `negative` review is \n",
"### $ L(t|-) = \\frac{C^{-}_{t}}{N^-}$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8D. The `log-count ratio`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### From the class likelihood ratios, we can define a **log-count ratio** $R_{t}$ for each token $t$ as\n",
"### $ R_{t} = \\text{log} \\frac{L(t|+)} {L(t|-)}$\n",
"#### The `log-count ratio` ranks tokens by their relative affinities for positive and negative reviews\n",
"#### We observe that\n",
"* $R_{t} \\gt 0$ means `positive` reviews are more likely to contain this token \n",
"* $R_{t} \\lt 0$ means `negative` reviews are more likely to contain this token \n",
"* $R_{t} = 0$ indicates the token $t$ has equal likelihood to appear in `positive` and `negative` reviews\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 9. Building a Naive Bayes Classifier for IMDb movie reviews"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### From the `occurrence count` arrays, we can compute the `class likelihoods` and `log-count ratios` of all the tokens in the vocabulary. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9A. Compute the `class likelihoods`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### We compute slightly modified `conditional likelihoods`, by adding 1 to the numerator and denominator to insure numerically stability."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"L1 = (C1+1) / ((y.items==positive).sum() + 1)\n",
"L0 = (C0+1) / ((y.items==negative).sum() + 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9B. Compute the `log-count ratios`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The log-count ratios are"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[-0.015811 0.084839 0. 0.084839 ... 0.084839 0.084839 0.084839 0.084839]\n"
]
}
],
"source": [
"R = np.log(L1/L0)\n",
"print(R)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Data Exercise: find the vocabulary words most likely to be associated with positive and negative reviews"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Get the indices of the tokens with the highest and lowest log-count ratios"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"n_tokens = 10\n",
"highest_R = np.argpartition(R, -n_tokens)[-n_tokens:]\n",
"lowest_R = np.argpartition(R, n_tokens)[:n_tokens]"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Highest 10 log-count ratios: [2.569746 2.649788 2.649788 2.723896 2.723896 2.649788 2.792889 2.857428 2.975211 3.029278]\n",
"\n",
"Lowest 10 log-count ratios: [-2.68775 -2.554218 -2.8596 -3.134037 -2.623211 -3.093215 -2.805533 -2.748374 -2.636457 -2.554218]\n"
]
}
],
"source": [
"print(f'Highest {n_tokens} log-count ratios: {R[list(highest_R)]}\\n')\n",
"print(f'Lowest {n_tokens} log-count ratios: {R[list(lowest_R)]}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Most positive words:"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1723, 1662, 1620, 796, 1529, 1666, 1386, 1358, 1212, 1143], dtype=int64)"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"highest_R"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['sport',\n",
" 'davies',\n",
" 'jabba',\n",
" 'jimmy',\n",
" 'felix',\n",
" 'gilliam',\n",
" 'noir',\n",
" 'astaire',\n",
" 'fanfan',\n",
" 'biko']"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[v.itos[k] for k in highest_R]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### There are only two movie reviews that mention \"biko\""
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<800x1 sparse matrix of type ''\n",
"\twith 2 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"token = 'biko'\n",
"train_doc_term[:,v.stoi[token]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Which movie review has the most occurrences of 'biko'?"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"review # 515 has 14 occurrences of \"biko\"\n",
"\n",
"xxbos \" xxmaj the xxmaj true xxmaj story xxmaj of xxmaj the xxmaj friendship xxmaj that xxmaj shook xxmaj south xxmaj africa xxmaj and xxmaj xxunk xxmaj the xxmaj world . \" \n",
" \n",
" xxmaj richard xxmaj attenborough , who directed \" a xxmaj bridge xxmaj too xxmaj far \" and \" xxmaj gandhi \" , wanted to bring the story of xxmaj steve xxmaj biko to life , and the journey and trouble that xxunk xxmaj donald xxmaj woods went through in order to get his story told . xxmaj the films uses xxmaj wood 's two books for it 's information and basis - \" xxmaj biko \" and \" xxmaj asking for xxmaj trouble \" . \n",
" \n",
" xxmaj the film takes place in the late 1970 's , in xxmaj south xxmaj africa . xxmaj south xxmaj africa is in the grip of the terrible apartheid , which keeps the blacks separated from the whites and xxunk the whites as the superior race . xxmaj the blacks are forced to live in xxunk on the xxunk of the cities and xxunk , and they come under frequent xxunk by the police and the army . xxmaj we are shown a dawn xxunk on a xxunk , as xxunk and armed police force their way through the camp beating and even killing the inhabitants . xxmaj then we are introduced to xxmaj donald xxmaj woods ( xxmaj kevin xxmaj kline ) , who is the editor of a popular newspaper . xxmaj after xxunk a negative story about black xxunk xxmaj steve xxmaj biko ( xxmaj denzel xxmaj washington ) , xxmaj woods goes to meet with him . xxmaj the two are xxunk of each other at first , but they soon become good friends and xxmaj biko shows the horrors of the apartheid system from a black persons point of view to xxmaj woods . xxmaj this xxunk xxmaj woods to speak out against what 's happening around him , and makes him desperate to bring xxmaj steve xxmaj biko 's story out of the xxunk of the white man 's xxmaj south xxmaj africa and to the world . xxmaj soon , xxmaj steve xxmaj biko is arrested and is killed in prison . xxmaj now xxmaj woods and his family are daring to escape from xxmaj south xxmaj africa to xxmaj england , where xxmaj woods can xxunk his book about xxmaj steve xxmaj biko and the apartheid . \n",
" \n",
" xxmaj when i first heard of \" xxmaj cry xxmaj freedom \" , i was under the impression that it was a movie completely dedicated to the life of xxmaj steve xxmaj biko . i had never actually heard of xxmaj steve xxmaj biko before i seen this film , as the events in this film were really before my time . xxmaj but it 's more about the story of xxmaj donald xxmaj woods and his journey across the border into xxmaj xxunk as he tried to xxunk the xxmaj south xxmaj african xxunk . xxmaj woods was put on a five year type house xxunk after xxmaj steve xxmaj biko was killed . xxmaj so in order to xxunk his xxunk on xxmaj steve xxmaj biko , he had to escape . xxmaj because the xxunk would be considered xxunk in xxmaj south xxmaj africa and that could have resulted in xxmaj woods meeting a fate similar to that of xxmaj biko 's . xxmaj the real xxmaj donald xxmaj woods and his wife acted as xxunk to this film . \n",
" \n",
" xxmaj denzel xxmaj washington is only in the film for the first hour , and i was disappointed with that as i was expecting to see him for the entire movie . xxmaj but he was amazing as xxmaj steve xxmaj biko , and captured his personality from what i 've read really well and his accent sounded perfect . xxmaj his performance earned him an xxmaj oscar nomination for xxmaj best xxmaj supporting xxmaj actor . xxmaj kevin xxmaj kline delivers a excellent and thought - xxunk performance as xxmaj donald xxmaj woods , and xxmaj penelope xxmaj xxunk is excellent as his wife xxmaj xxunk . \n",
" \n",
" xxmaj filming took place in xxmaj xxunk , as needless to say problems xxunk when they tried to film it in xxmaj south xxmaj africa . xxmaj while in xxmaj south xxmaj africa , the xxmaj south xxmaj african xxunk followed the film crew everywhere , so they got the bad xxunk and they pulled out and went to xxunk xxmaj xxunk instead . xxmaj despite everything , and the fact that the apartheid did n't end ' xxunk seven years later , \" xxmaj cry xxmaj freedom \" was n't xxunk in xxmaj south xxmaj africa . xxmaj but xxunk showing the movie received bomb threats . \n",
" \n",
" xxmaj richard xxmaj attenborough brings the horrors of the apartheid to the screen with extreme force and determination . xxmaj he does n't hold back at the end of the movie when showing what was supposed to be a xxunk xxunk by students in a xxunk , turns into a massacre when police open fire on them . xxmaj the film ends with the names of all the anti - apartheid xxunk who died in prison , and the explanations for their deaths . xxmaj many had \" xxmaj no xxmaj explanation \" . xxmaj quite a few were \" xxmaj xxunk \" , which is hard to believe , and many more either fell from the top of the xxunk or were \" xxmaj suicide from xxmaj hanging \" . xxmaj no one will ever know what really happened to them , but i think it 's fair to say that none of these men died at their own hands , but at the hands of others ; or to be more xxunk , at the hands of the police . \n",
" \n",
" \" xxmaj cry xxmaj freedom \" is a must - see movie for it 's portrayal and story of xxmaj steve xxmaj biko . xxmaj it 's also a xxunk and xxunk portrayal of a beautiful land divided and in the xxunk grips of racial xxunk and violence .\n"
]
}
],
"source": [
"index = np.argmax(train_doc_term[:,v.stoi[token]])\n",
"n_times = train_doc_term[index,v.stoi[token]]\n",
"print(f'review # {index} has {n_times} occurrences of \"{token}\"\\n')\n",
"print(movie_reviews.train.x[index].text)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Most negative words:"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1345, 1545, 572, 904, 1438, 935, 1189, 1213, 301, 1544], dtype=int64)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lowest_R"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['crater',\n",
" 'soderbergh',\n",
" 'crap',\n",
" 'porn',\n",
" 'disappointment',\n",
" 'vargas',\n",
" 'naschy',\n",
" 'dog',\n",
" 'worst',\n",
" 'fuqua']"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[v.itos[k] for k in lowest_R]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### There's only one movie review that mentions \"soderbergh\""
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<800x1 sparse matrix of type ''\n",
"\twith 1 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"token = 'soderbergh'\n",
"train_doc_term[:,v.stoi[token]]"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"review # 434 has 13 occurrences of \"soderbergh\"\n",
"\n",
"xxbos xxmaj now that xxmaj che(2008 ) has finished its relatively short xxmaj australian cinema run ( extremely limited xxunk screen in xxmaj xxunk , after xxunk ) , i can xxunk join both xxunk of \" xxmaj at xxmaj the xxmaj movies \" in taking xxmaj steven xxmaj soderbergh to task . \n",
" \n",
" xxmaj it 's usually satisfying to watch a film director change his style / subject , but xxmaj soderbergh 's most recent stinker , xxmaj the xxmaj girlfriend xxmaj xxunk ) , was also missing a story , so narrative ( and editing ? ) seem to suddenly be xxmaj soderbergh 's main challenge . xxmaj strange , after xxunk years in the business . xxmaj he was probably never much good at narrative , just xxunk it well inside \" edgy \" projects . \n",
" \n",
" xxmaj none of this excuses him this present , almost diabolical failure . xxmaj as xxmaj david xxmaj xxunk xxunk , \" two parts of xxmaj che do n't ( even ) make a whole \" . \n",
" \n",
" xxmaj epic xxunk in name only , xxmaj che(2008 ) barely qualifies as a feature film ! xxmaj it certainly has no legs , xxunk as except for its xxunk ultimate resolution forced upon it by history , xxmaj soderbergh 's xxunk - long xxunk just goes nowhere . \n",
" \n",
" xxmaj even xxmaj margaret xxmaj xxunk , the more xxunk of xxmaj australia 's xxmaj at xxmaj the xxmaj movies duo , noted about xxmaj soderbergh 's xxunk waste of ( xxup xxunk digital xxunk ) : \" you 're in the woods ... xxunk in the woods ... xxunk in the woods ... \" . i too am surprised xxmaj soderbergh did n't give us another xxunk of xxup that somewhere between his xxunk two xxmaj parts , because he still left out massive xxunk of xxmaj che 's \" xxunk \" life ! \n",
" \n",
" xxmaj for a xxunk of an important but infamous historical figure , xxmaj soderbergh xxunk xxunk , if not deliberately insults , his audiences by \n",
" \n",
" 1 . never providing most of xxmaj che 's story ; \n",
" \n",
" 2 . xxunk xxunk film xxunk with mere xxunk xxunk ; \n",
" \n",
" 3 . xxunk both true xxunk and a narrative of events ; \n",
" \n",
" 4 . barely developing an idea , or a character ; \n",
" \n",
" 5 . remaining xxunk episodic ; \n",
" \n",
" 6 . xxunk proper context for scenes --- whatever we do get is xxunk in xxunk xxunk ; \n",
" \n",
" 7 . xxunk xxunk all audiences ( even xxmaj spanish - xxunk will be confused by the xxunk xxunk in xxmaj english ) ; and \n",
" \n",
" 8 . xxunk xxunk his main subject into one dimension . xxmaj why , at xxup this late stage ? xxmaj the t - shirt franchise has been a success ! \n",
" \n",
" xxmaj our sense of xxunk is surely due to xxmaj peter xxmaj xxunk and xxmaj benjamin xxunk xxmaj xxunk xxunk their screenplay solely on xxmaj xxunk 's memoirs . xxmaj so , like a poor student who has read only xxup one of his xxunk xxunk for his xxunk , xxmaj soderbergh 's product is xxunk limited in perspective . \n",
" \n",
" xxmaj the audience is held captive within the same xxunk knowledge , scenery and circumstances of the \" revolutionaries \" , but that does n't xxunk our sympathy . xxmaj instead , it xxunk on us that \" xxmaj ah , xxmaj soderbergh 's trying to xxunk his audiences the same as the xxmaj latino peasants were at the time \" . xxmaj but these are the xxup same illiterate xxmaj latino peasants who xxunk out the good doctor to his enemies . xxmaj why does xxmaj soderbergh feel the need to xxunk us with them , and keep us equally mentally captive ? xxmaj such audience xxunk must have a purpose . \n",
" \n",
" xxmaj part2 is more xxunk than xxmaj part1 , but it 's literally mind - numbing with its repetitive bush - bashing , misery of xxunk , and lack of variety or character xxunk . deltoro 's xxmaj che has no opportunity to grow as a person while he struggles to xxunk his own ill - xxunk troops . xxmaj the only xxunk is the humour as xxmaj che deals with his sometimes deeply ignorant \" revolutionaries \" , some of whom xxunk lack self - control around local peasants or food . xxmaj we certainly get no insight into what caused the conditions , nor any xxunk xxunk of their xxunk xxunk , such as it was . \n",
" \n",
" xxmaj part2 's xxunk xxunk remains xxunk episodic : again , nothing is telegraphed or xxunk . xxmaj thus even the scenes with xxmaj xxunk xxmaj xxunk ( xxmaj xxunk xxmaj xxunk ) are unexpected and disconcerting . xxmaj any xxunk events are portrayed xxunk and xxmaj latino - xxunk , with xxmaj part1 's interviews xxunk by time - xxunk xxunk between the corrupt xxmaj xxunk president ( xxmaj xxunk de xxmaj xxunk ) and xxup us xxmaj government xxunk promising xxup cia xxunk ( ! ) . \n",
" \n",
" xxmaj the rest of xxmaj part2 's \" woods \" and day - for - night blue xxunk just xxunk the audience until they 're xxunk the xxunk . \n",
" \n",
" xxmaj perhaps deltoro felt too xxunk the frustration of many non - xxmaj american xxmaj latinos about never getting a truthful , xxunk history of xxmaj che 's xxunk within their own countries . xxmaj when foreign xxunk still wo n't deliver a free press to their people -- for whatever reason -- then one can see how a popular xxmaj american indie producer might set out to xxunk the not - so - well - read ( \" i may not be able to read or write , but i 'm xxup not xxunk . xxmaj the xxmaj inspector xxmaj xxunk ) ) out to their own local xxunk . xxmaj the film 's obvious xxunk and gross over - xxunk hint very strongly that it 's aiming only at the xxunk of the less - informed xxup who xxup still xxup speak xxup little xxmaj english . xxmaj if they did , they 'd have read xxunk on the subject already , and xxunk the relevant social issues amongst themselves -- learning the lessons of history as they should . \n",
" \n",
" xxmaj such insights are precisely what societies still need -- and not just the remaining illiterate xxmaj latinos of xxmaj central and xxmaj south xxmaj america -- yet it 's what xxmaj che(2008 ) xxunk fails to deliver . xxmaj soderbergh xxunk his lead because he 's weak on narrative . i am xxunk why xxmaj xxunk deltoro deliberately chose xxmaj soderbergh for this project if he knew this . xxmaj it 's been xxunk , xxunk about xxmaj xxunk was xxunk wanted : it 's what i went to see this film for , but the director xxunk robs us of that . \n",
" \n",
" xxmaj david xxmaj xxunk , writing in xxmaj the xxmaj australian ( xxunk ) observed that while xxmaj part1 was \" uneven \" , xxmaj part2 actually \" goes rapidly downhill \" from there , \" xxunk xxmaj che 's final xxunk in xxmaj xxunk in xxunk detail \" , which \" ... feels almost unbearably slow and turgid \" . \n",
" \n",
" xxmaj che : xxmaj the xxmaj xxunk aka xxmaj part2 is certainly no xxunk for xxmaj xxunk , painting it a picture of misery and xxunk . xxmaj the entire second half is only xxunk by the aforementioned humour , and the dramatic -- yet tragic -- capture and execution of the film 's subject . \n",
" \n",
" xxmaj the rest of this xxunk cinema xxunk is just confusing , irritating misery -- xxunk , for a xxmaj soderbergh film , to be avoided at all costs . xxmaj it is bound to break the hearts of all who know even just a xxunk about the xxunk / 10 )\n"
]
}
],
"source": [
"index = np.argmax(train_doc_term[:,v.stoi[token]])\n",
"n_times = train_doc_term[index,v.stoi[token]]\n",
"print(f'review # {index} has {n_times} occurrences of \"{token}\"\\n')\n",
"print(movie_reviews.train.x[index].text)\n"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<800x1 sparse matrix of type ''\n",
"\twith 1 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_doc_term[:,v.stoi[token]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9C. Compute the prior probabilities for each class"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The prior probabilities for positive and negative classes are 0.47875 annd 0.52125\n"
]
}
],
"source": [
"p = (y.items==positive).mean()\n",
"q = (y.items==negative).mean()\n",
"print(f'The prior probabilities for positive and negative classes are {p} annd {q}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The log probability ratio is\n",
"\n",
"### $b = \\text{log} \\frac{p} {q}$ \n",
"\n",
"#### is a measure of the `bias`, or `imbalance` in the data set. \n",
"\n",
"* $b = 0$ indicates a perfectly balanced data set\n",
"* $b \\gt 0$ indicates bias towards `positive` reviews \n",
"* $b \\lt 0$ indicates bias towards `negative` reviews "
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The log probability ratio is L = -0.08505123261815539\n"
]
}
],
"source": [
"b = np.log((y.items==positive).mean() / (y.items==negative).mean())\n",
"print(f'The log probability ratio is L = {b}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### We see that the training set is slightly imbalanced toward `negative` reviews."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9D. Putting it all together: the Naive Bayes Movie Review Classifier\n",
"In this section, we'll start with a discussion of Bayes' Theorem, then we'll use it to derive the Naive Bayes Classifier. Next we'll apply the Naive Bayes classifier to our movie reviews problem. Finally we'll review the prescription for building a Naive Bayes Classifier. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9D.1 What is Bayes Theorem, and what does it have to say about IMDb movie reviews?\n",
"\n",
"Consider two events, $A$ and $B$ \n",
"Then the probability of $A$ and $B$ occurring together can be written in two ways:\n",
"$p(A,B) = p(A|B)\\cdot p(B)$\n",
"$p(A,B) = p(B|A)\\cdot p(A)$\n",
"\n",
"where $p(A|B)$ and $p(B|A)$ are conditional probabilities:\n",
"$p(A|B)$ is the probability of $A$ occurring given that $B$ has occurred,\n",
"$p(A)$ is the probability that $A$ occurs,\n",
"$p(B)$ is the probabilityt that $B$ occurs\n",
"\n",
"\n",
"$\\textbf{Bayes Theorem}$ is just the statement that the right hand sides of the above two equations are equal:\n",
"\n",
"$p(A|B) \\cdot p(B) = p(B|A) \\cdot p(A)$\n",
"\n",
"Applying $\\textbf{Bayes Theorem}$ to our IMDb movie review problem:\n",
"\n",
"We identify $A$ and $B$ as \n",
"$A \\equiv \\text{class}$, i.e. positive or negative, and \n",
"$B \\equiv \\text{tokens}$, i.e. the \"bag\" of tokens used in the review\n",
"\n",
"Then $\\textbf{Bayes Theorem}$ says\n",
"\n",
"$p(\\text{class}|\\text{tokens})\\cdot p(\\text{tokens}) = p(\\text{tokens}|\\text{class}) \\cdot p(\\text{class})$\n",
"\n",
"so that \n",
"$p(\\text{class}|\\text{tokens}) = p(\\text{tokens}|\\text{class})\\cdot \\frac{p(\\text{class})}{p(\\text{tokens})}$\n",
"\n",
"Since $p(\\text{tokens})$ is a constant, we have the proportionality \n",
"\n",
"$p(\\text{class}|\\text{tokens}) \\propto p(\\text{tokens}|\\text{class})\\cdot p(\\text{class})$\n",
"\n",
"The left hand side of the above expression is called the $\\textbf{posterior class probability}$, the probability that the review is positive (or negative), given the tokens it contains. This is exactly what we want to predict!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9D.2 The Naive Bayes Classifier\n",
"\n",
"#### Given the list of tokens in a review, we seek to predict whether the review is rated as `positive` or `negative` \n",
"\n",
"#### We can make the prediction if we know the `posterior class probabilities`.\n",
"\n",
"#### $p(\\text{class}|\\text{tokens})$,\n",
"#### where $\\text{class}$ is either `positive` or `negative`, and $\\text{tokens}$ is the list of tokens that appear in the review.\n",
"#### [Bayes' Theorem](https://en.wikipedia.org/wiki/Bayes%27_theorem) tells us that the posterior probabilities, the likelihoods and the priors are related this way:\n",
"\n",
"#### $p(\\text{class}|\\text{tokens}) \\propto p(\\text{tokens}|\\text{class})\\cdot p(\\text{class})$\n",
"\n",
"#### Now the tokens are not independent of one another. For example, 'go' often appears with 'to', so if 'go' appears in a review it is more likely that the review also contains 'to'. Nevertheless, assuming the tokens are independent allows us to simplify things, so we recklessly do it, hoping it's not too wrong!\n",
"#### $p(\\text{tokens}|\\text{class}) = \\prod_{i=1}^{n} p(t_{i}|\\text{class})$\n",
"\n",
"#### where $t_{i}$ is the $i\\text{th}$ token in the vocabulary and $n$ is the number of tokens in the vocabulary. \n",
"\n",
"#### So Bayes' theorem is\n",
"\n",
"#### $p(\\text{class}|\\text{tokens}) \\propto p(\\text{class}) \\prod_{i=1}^{n} p(t_{i}|\\text{class}) $\n",
"\n",
"#### Taking the ratio of the $\\textbf{posterior class probabilities}$ for the `positive` and `negative` classes, we have\n",
"\n",
"#### $\\frac{p(+|\\text{tokens})}{p( - |\\text{tokens})} = \\frac{p(+)}{p( - )} \\cdot \\prod_{i=1}^{n} \\frac {p(t_{i}|+)} {p(t_{i}| - )} = \\frac{p}{q} \\cdot \\prod_{i=1}^{n} \\frac {L(t_{i}|+)} {L(t_{i}| - )}$\n",
"#### since likelihoods are proportional to probabilities.\n",
"#### Taking the log of both sides converts this to a `linear` problem:\n",
"#### $\\text{log} \\frac{p(+|\\text{tokens})}{p( - |\\text{tokens})} = \\text{log}\\frac{p}{q} + \\sum_{i=1}^{n} \\text{log} \\frac {L(t_{i}|+)} {L(t_{i}| - )} = b + \\sum_{i=1}^{n} R_{t_{i}}$\n",
"\n",
"#### The first term on the right-hand side is the `bias`, and the second term is the dot product of the *binarized* embedding vector and the log-count ratios\n",
"\n",
"#### If the left-hand side is greater than or equal to zero, we predict the review is `positive`, else we predict the review is `negative`. \n",
"\n",
"#### We can re-write the last equation in matrix form to generate a $m \\times 1$ boolean column vector $\\textbf{preds}$ of review predictions:\n",
"\n",
"#### $\\textbf{preds} = \\textbf{W} \\cdot \\textbf{R} + \\textbf{b}$\n",
"#### where \n",
"\n",
"* $\\textbf{preds} \\equiv \\text{log} \\frac{p(+|\\text{tokens})}{p( - |\\text{tokens})}$\n",
"* $\\textbf{W}$ is the $m\\times n$ `binarized document-term matrix`, whose rows are the binarized embedding vectors for the movie reviews\n",
"* $\\textbf{R}$ is the $n\\times 1$ vector of `log-count ratios` for the tokens, and \n",
"* $\\textbf{b}$ is a $n\\times 1$ vector whose entries are the bias $b$\n",
"\n",
"\n",
"#### The Naive Bayes model consists of the log-counts vector $\\textbf{R}$ and the bias $\\textbf{b}$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9E. Implement our Naive Bayes Movie Review classifier\n",
"#### and use it to predict labels for the training and validation sets of the IMDb_sample data."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The prediction accuracy for the training set is 0.9\n"
]
}
],
"source": [
"W = train_doc_term.sign()\n",
"preds_train = (W @ R + b) > 0\n",
"train_accuracy = (preds_train == y.items).mean()\n",
"print(f'The prediction accuracy for the training set is {train_accuracy}')"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The prediction accuracy for the validation set is 0.68\n"
]
}
],
"source": [
"W = valid_doc_term.sign()\n",
"preds_valid = (W @ R + b) > 0\n",
"valid_accuracy = (preds_valid == valid_y.items).mean()\n",
"print(f'The prediction accuracy for the validation set is {valid_accuracy}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9F. Summary: A recipe for the Naive Bayes Classifier\n",
"#### Here is a summary of our procedure for predicting labels with the Naive Bayes Classifier, starting with the training set `x` and the training labels `y`\n",
"\n",
"\n",
"#### 1. Compute the token count vectors\n",
"> C0 = np.squeeze(np.asarray(x[y.items==negative].sum(0))) \n",
"> C1 = np.squeeze(np.asarray(x[y.items==positive].sum(0))) \n",
"\n",
"#### 2. Compute the token class likelihood vectors\n",
"> L0 = (C0+1) / ((y.items==negative).sum() + 1) \n",
"> L1 = (C1+1) / ((y.items==positive).sum() + 1) \n",
"\n",
"#### 3. Compute the log-count ratios vector\n",
"> R = np.log(L1/L0)\n",
"\n",
"#### 4. Compute the bias term\n",
"> b = np.log((y.items==positive).mean() / (y.items==negative).mean())\n",
"\n",
"#### 5. The Naive Bayes model consists of the log-counts vector $\\textbf{R}$ and the bias $\\textbf{b}$\n",
"#### 6. Predict the movie review labels from a linear transformation of the log-count ratios vector:\n",
"> preds = (W @ R + b) > 0, \n",
"> where the weights matrix W = valid_doc_term.sign() is the binarized `valid_doc_term matrix` whose rows are the binarized embedding vectors for the movie reviews for which you want to predict ratings.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 10. Working with the full IMDb data set"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have our approach working on a smaller sample of the data, we can try using it on the full dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 10A. Download the data"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/data_clas.pkl'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/data_lm.pkl'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/finetuned.pth'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/finetuned_enc.pth'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/imdb.vocab'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/ld.pkl'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/ll_clas.pkl'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/ll_lm.pkl'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/models'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/pretrained'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/README'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/test'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/tmp_clas'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/tmp_lm'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/train'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/unsup'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/vocab_lm.pkl')]"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"path = untar_data(URLs.IMDB)\n",
"path.ls()"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/train/labeledBow.feat'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/train/neg'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/train/pos'),\n",
" WindowsPath('C:/Users/cross-entropy/.fastai/data/imdb/train/unsupBow.feat')]"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(path/'train').ls()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 10B. Preprocess the data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Attempt to split and label the data fails most of the time, throwing a `BrokenProcessPool` error; we apply a `brute force` approach, trying repeatedly until we succeed. Takes 10 minutes if it goes on the first try."
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"failure count is 9\n",
"\n",
"Wall time: 13min 4s\n"
]
}
],
"source": [
"%%time\n",
"# throws `BrokenProcessPool' Error sometimes. Keep trying `till it works!\n",
"count = 0\n",
"error = True\n",
"while error:\n",
" try: \n",
" # Preprocessing steps\n",
" reviews_full = (TextList.from_folder(path)\n",
" # Make a `TextList` object that is a list of `WindowsPath` objects, \n",
" # each of which contains the full path to one of the data files.\n",
" .split_by_folder(valid='test')\n",
" # Generate a `LabelLists` object that splits files by training and validation folders\n",
" # Note: .label_from_folder in next line causes the `BrokenProcessPool` error\n",
" .label_from_folder(classes=['neg', 'pos']))\n",
" # Create a `CategoryLists` object which contains the data and\n",
" # its labels that are derived from folder names\n",
" error = False\n",
" print(f'failure count is {count}\\n') \n",
" except: # catch *all* exceptions\n",
" # accumulate failure count\n",
" count = count + 1\n",
" print(f'failure count is {count}')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 10C. Create document-term matrices for training and validation sets. \n",
"#### This takes about ~4 sec per matrix"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 3.72 s\n"
]
}
],
"source": [
"%%time\n",
"valid_doc_term = get_doc_term_matrix(reviews_full.valid.x, len(reviews_full.vocab.itos))"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 3.78 s\n"
]
}
],
"source": [
"%%time\n",
"train_doc_term = get_doc_term_matrix(reviews_full.train.x, len(reviews_full.vocab.itos))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 10D. Save the data\n",
"When storing data like this, always make sure it's included in your `.gitignore` file"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
"scipy.sparse.save_npz(\"train_doc_term.npz\", train_doc_term)"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"scipy.sparse.save_npz(\"valid_doc_term.npz\", valid_doc_term)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"with open('reviews_full.pickle', 'wb') as handle:\n",
" pickle.dump(reviews_full, handle, protocol=pickle.HIGHEST_PROTOCOL)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### In the future, we'll just be able to load our data:"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"train_doc_term = scipy.sparse.load_npz(\"train_doc_term.npz\")\n",
"valid_doc_term = scipy.sparse.load_npz(\"valid_doc_term.npz\")"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
"with open('reviews_full.pickle', 'rb') as handle:\n",
" pickle.load(handle)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 11. Understanding Fastai's API$^\\dagger$ for text data sets \n",
"$^\\dagger$API $\\equiv$ Application Programming Interface"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### reviews_full is a `LabelLists` object, which contains `LabelList` objects `train`, `valid` and potentially `test`"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fastai.data_block.LabelLists"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(reviews_full)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fastai.data_block.LabelList"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(reviews_full.valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### reviews_full also contains the `vocab` object though it is not shown with the dir() command. This is an error."
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"print(reviews_full.vocab)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### We will store the `vocabulary` in a variable `full_vocab`"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [],
"source": [
"full_vocab = reviews_full.vocab"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Recall that a `vocab` object has a method `itos` which returns a list of tokens"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"['bad',\n",
" 'people',\n",
" 'will',\n",
" 'other',\n",
" 'also',\n",
" 'into',\n",
" 'first',\n",
" 'because',\n",
" 'great',\n",
" 'how']"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_vocab.itos[100:110]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A LabelList object contains a `TextList` object `x` and a `CategoryList` object `y` "
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LabelList (25000 items)\n",
"x: TextList\n",
"xxbos xxmaj once again xxmaj mr. xxmaj costner has dragged out a movie for far longer than necessary . xxmaj aside from the terrific sea rescue sequences , of which there are very few i just did not care about any of the characters . xxmaj most of us have ghosts in the closet , and xxmaj costner 's character are realized early on , and then forgotten until much later , by which time i did not care . xxmaj the character we should really care about is a very cocky , overconfident xxmaj ashton xxmaj kutcher . xxmaj the problem is he comes off as kid who thinks he 's better than anyone else around him and shows no signs of a cluttered closet . xxmaj his only obstacle appears to be winning over xxmaj costner . xxmaj finally when we are well past the half way point of this stinker , xxmaj costner tells us all about xxmaj kutcher 's ghosts . xxmaj we are told why xxmaj kutcher is driven to be the best with no prior inkling or foreshadowing . xxmaj no magic here , it was all i could do to keep from turning it off an hour in .,xxbos xxmaj this is an example of why the majority of action films are the same . xxmaj generic and boring , there 's really nothing worth watching here . a complete waste of the then barely - tapped talents of xxmaj ice - t and xxmaj ice xxmaj cube , who 've each proven many times over that they are capable of acting , and acting well . xxmaj do n't bother with this one , go see xxmaj new xxmaj jack xxmaj city , xxmaj ricochet or watch xxmaj new xxmaj york xxmaj undercover for xxmaj ice - t , or xxmaj boyz n the xxmaj hood , xxmaj higher xxmaj learning or xxmaj friday for xxmaj ice xxmaj cube and see the real deal . xxmaj ice - t 's horribly cliched dialogue alone makes this film grate at the teeth , and i 'm still wondering what the heck xxmaj bill xxmaj paxton was doing in this film ? xxmaj and why the heck does he always play the exact same character ? xxmaj from xxmaj aliens onward , every film i 've seen with xxmaj bill xxmaj paxton has him playing the exact same irritating character , and at least in xxmaj aliens his character died , which made it somewhat gratifying ... \n",
" \n",
" xxmaj overall , this is second - rate action trash . xxmaj there are countless better films to see , and if you really want to see this one , watch xxmaj judgement xxmaj night , which is practically a carbon copy but has better acting and a better script . xxmaj the only thing that made this at all worth watching was a decent hand on the camera - the cinematography was almost refreshing , which comes close to making up for the horrible film itself - but not quite . 4 / 10 .,xxbos xxmaj first of all i hate those moronic rappers , who could'nt act if they had a gun pressed against their foreheads . xxmaj all they do is curse and shoot each other and acting like xxunk version of gangsters . \n",
" \n",
" xxmaj the movie does n't take more than five minutes to explain what is going on before we 're already at the warehouse xxmaj there is not a single sympathetic character in this movie , except for the homeless guy , who is also the only one with half a brain . \n",
" \n",
" xxmaj bill xxmaj paxton and xxmaj william xxmaj sadler are both hill xxunk and xxmaj xxunk character is just as much a villain as the gangsters . i did'nt like him right from the start . \n",
" \n",
" xxmaj the movie is filled with pointless violence and xxmaj walter xxmaj hills specialty : people falling through windows with glass flying everywhere . xxmaj there is pretty much no plot and it is a big problem when you root for no - one . xxmaj everybody dies , except from xxmaj paxton and the homeless guy and everybody get what they deserve . \n",
" \n",
" xxmaj the only two black people that can act is the homeless guy and the junkie but they 're actors by profession , not annoying ugly brain dead rappers . \n",
" \n",
" xxmaj stay away from this crap and watch 48 hours 1 and 2 instead . xxmaj at lest they have characters you care about , a sense of humor and nothing but real actors in the cast .,xxbos xxmaj not even the xxmaj beatles could write songs everyone liked , and although xxmaj walter xxmaj hill is no mop - top he 's second to none when it comes to thought provoking action movies . xxmaj the nineties came and social platforms were changing in music and film , the emergence of the xxmaj rapper turned movie star was in full swing , the acting took a back seat to each man 's overpowering regional accent and transparent acting . xxmaj this was one of the many ice - t movies i saw as a kid and loved , only to watch them later and cringe . xxmaj bill xxmaj paxton and xxmaj william xxmaj sadler are firemen with basic lives until a burning building tenant about to go up in flames hands over a map with gold implications . i hand it to xxmaj walter for quickly and neatly setting up the main characters and location . xxmaj but i fault everyone involved for turning out xxmaj lame - o performances . xxmaj ice - t and cube must have been red hot at this time , and while i 've enjoyed both their careers as rappers , in my opinion they fell flat in this movie . xxmaj it 's about ninety minutes of one guy ridiculously turning his back on the other guy to the point you find yourself locked in multiple states of disbelief . xxmaj now this is a movie , its not a documentary so i wo nt waste my time recounting all the stupid plot twists in this movie , but there were many , and they led nowhere . i got the feeling watching this that everyone on set was xxunk of confused and just playing things off the cuff . xxmaj there are two things i still enjoy about it , one involves a scene with a needle and the other is xxmaj sadler 's huge 45 pistol . xxmaj bottom line this movie is like domino 's pizza . xxmaj yeah ill eat it if i 'm hungry and i do n't feel like cooking , xxmaj but i 'm well aware it tastes like crap . 3 stars , meh .,xxbos xxmaj brass pictures ( movies is not a fitting word for them ) really are somewhat brassy . xxmaj their alluring visual qualities are reminiscent of expensive high class xxup tv commercials . xxmaj but unfortunately xxmaj brass pictures are feature films with the pretense of wanting to entertain viewers for over two hours ! xxmaj in this they fail miserably , their undeniable , but rather soft and flabby than steamy , erotic qualities non withstanding . \n",
" \n",
" xxmaj xxunk ' 45 is a remake of a film by xxmaj luchino xxmaj visconti with the same title and xxmaj alida xxmaj valli and xxmaj farley xxmaj granger in the lead . xxmaj the original tells a story of senseless love and lust in and around xxmaj venice during the xxmaj italian wars of independence . xxmaj brass moved the action from the 19th into the 20th century , 1945 to be exact , so there are xxmaj mussolini xxunk , men in black shirts , xxmaj german uniforms or the tattered garb of the xxunk . xxmaj but it is just window dressing , the historic context is completely negligible . \n",
" \n",
" xxmaj anna xxmaj xxunk plays the attractive aristocratic woman who falls for the amoral xxup ss guy who always puts on too much lipstick . xxmaj she is an attractive , versatile , well trained xxmaj italian actress and clearly above the material . xxmaj her wide range of facial expressions ( xxunk boredom , loathing , delight , fear , hate ... and ecstasy ) are the best reason to watch this picture and worth two stars . xxmaj she endures this basically trashy stuff with an astonishing amount of dignity . i wish some really good parts come along for her . xxmaj she really deserves it .\n",
"y: CategoryList\n",
"neg,neg,neg,neg,neg\n",
"Path: C:\\Users\\cross-entropy\\.fastai\\data\\imdb"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A `TextList` object is a list of `Text` objects containing the reviews as items"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fastai.text.data.Text"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(reviews_full.valid.x[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A `Text` object has properties \n",
"#### `text`, which is a `str` containing the review text:"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"xxbos xxmaj once again xxmaj mr. xxmaj costner has dragged out a movie for far longer than necessary . xxmaj aside from the terrific sea rescue sequences , of which there are very few i just did not care about any of the characters . xxmaj most of us have ghosts in the closet , and xxmaj costner 's character are realized early on , and then forgotten until much later , by which time i did not care . xxmaj the character we should really care about is a very cocky , overconfident xxmaj ashton xxmaj kutcher . xxmaj the problem is he comes off as kid who thinks he 's better than anyone else around him and shows no signs of a cluttered closet . xxmaj his only obstacle appears to be winning over xxmaj costner . xxmaj finally when we are well past the half way point of this stinker , xxmaj costner tells us all about xxmaj kutcher 's ghosts . xxmaj we are told why xxmaj kutcher is driven to be the best with no prior inkling or foreshadowing . xxmaj no magic here , it was all i could do to keep from turning it off an hour in .\""
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.x[0].text"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### and `data`, which is an array of integers representing the tokens in the review:"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 2, 5, 303, 192, ..., 50, 555, 18, 10], dtype=int64)"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.x[0].data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A `Text` object also has a method `.items` which returns the integer array representations for all the reviews"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([array([ 2, 5, 303, 192, ..., 50, 555, 18, 10], dtype=int64),\n",
" array([ 2, 5, 20, 16, ..., 236, 126, 182, 10], dtype=int64),\n",
" array([ 2, 5, 106, 14, ..., 18, 9, 197, 10], dtype=int64),\n",
" array([ 2, 5, 38, 77, ..., 399, 11, 23500, 10], dtype=int64), ...,\n",
" array([ 2, 5, 279, 19, ..., 32312, 78, 608, 10], dtype=int64),\n",
" array([ 2, 5, 53, 9, ..., 51, 336, 56, 10], dtype=int64),\n",
" array([ 2, 5, 20, 30, ..., 44, 1161, 5947, 10], dtype=int64),\n",
" array([ 2, 19, 161, 130, ..., 78, 127, 3208, 10], dtype=int64)], dtype=object)"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.x.items"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Review labels are stored as a `CategoryList` object"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fastai.data_block.CategoryList"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(reviews_full.valid.y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A `CategoryList` object is a list of `Category` objects"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fastai.core.Category"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(reviews_full.valid.y[0])"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Category neg"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A `Category` object also has a method `.items` which returns an array of integers labels for all the reviews"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, 0, ..., 1, 1, 1, 1], dtype=int64)"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y.items"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The label of the first review seems right"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Category neg"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Names of classes"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['neg', 'pos']"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y.classes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Number of classes"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y.c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The classes have both integer rand string representations:"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'neg': 0, 'pos': 1}"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y.c2i"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y[0].data"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'neg'"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reviews_full.valid.y[0].obj"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The training and validation data sets each have 25000 samples"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(25000, 25000)"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(reviews_full.train), len(reviews_full.valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 12. The Naive Bayes classifier with the full IMDb dataset"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [],
"source": [
"x=train_doc_term\n",
"y=reviews_full.train.y\n",
"valid_y = reviews_full.valid.y.items"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<25000x38464 sparse matrix of type ''\n",
"\twith 3716501 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"positive = y.c2i['pos']\n",
"negative = y.c2i['neg']"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [],
"source": [
"C0 = np.squeeze(np.asarray(x[y.items==negative].sum(0)))\n",
"C1 = np.squeeze(np.asarray(x[y.items==positive].sum(0)))"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([26553, 0, 12500, 0, ..., 0, 0, 0, 0], dtype=int32)"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"C0"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([28399, 0, 12500, 0, ..., 0, 0, 0, 0], dtype=int32)"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"C1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 12A. Data exploration: log-count ratios"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Token likelihoods conditioned on class"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"L1 = (C1+1) / ((y.items==positive).sum() + 1)\n",
"L0 = (C0+1) / ((y.items==negative).sum() + 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### log-count ratios"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [],
"source": [
"R = np.log(L1/L0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Examples of log-count ratios for a few words\n",
"Check that log-count ratios are negative for words with `negative` sentiment and positive for words with `positive` sentiment! "
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.7133498878774648"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R[full_vocab.stoi['hated']]"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.1563661500586044"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R[full_vocab.stoi['loved']]"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.4418327522790391"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R[full_vocab.stoi['liked']]"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-2.2826243504315076"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R[full_vocab.stoi['worst']]"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7225576052173609"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R[full_vocab.stoi['best']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Since we have equal numbers of positive and negative reviews in this data set, the `bias` $b$ is 0."
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The bias term b is 0.0\n"
]
}
],
"source": [
"b = np.log((y.items==positive).mean() / (y.items==negative).mean())\n",
"print(f'The bias term b is {b}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 12B. Predictions of the Naive Bayes Classifier for the full IMDb data set.\n",
"#### We get much better accuracy this time, because of the larger training set."
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation accuracy is 0.83292 for the full data set\n"
]
}
],
"source": [
"# predict labels for the validation data\n",
"W = valid_doc_term.sign()\n",
"preds = (W @ R + b) > 0\n",
"valid_accuracy = (preds == valid_y).mean()\n",
"print(f'Validation accuracy is {valid_accuracy} for the full data set')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 13. The Logistic Regression classifier with the full IMBb data set"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### With the `sci-kit learn` library, we can fit logistic a regression model where the features are the unigrams. Here $C$ is a regularization parameter."
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Using the full `document-term matrix`:"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation accuracy is 0.88328 using the full doc-term matrix\n"
]
}
],
"source": [
"m = LogisticRegression(C=0.1, dual=False,solver = 'liblinear')\n",
"# 'liblinear' and 'newton-cg' solvers both get 0.88328 accuracy\n",
"# 'sag', 'saga', and 'lbfgs' don't converge\n",
"m.fit(train_doc_term, y.items.astype(int))\n",
"preds = m.predict(valid_doc_term)\n",
"valid_accuracy = (preds==valid_y).mean()\n",
"print(f'Validation accuracy is {valid_accuracy} using the full doc-term matrix')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Using the binarized `document-term` matrix gets a slightly higher accuracy:"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Validation accuracy is 0.88532 using the binarized doc-term matrix\n"
]
}
],
"source": [
"m = LogisticRegression(C=0.1, dual=False,solver = 'liblinear')\n",
"m.fit(train_doc_term.sign(), y.items.astype(int))\n",
"preds = m.predict(valid_doc_term.sign())\n",
"valid_accuracy = (preds==valid_y).mean()\n",
"print(f'Validation accuracy is {valid_accuracy} using the binarized doc-term matrix')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 14. `Trigram` representation of the `IMDb_sample`: preprocessing"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Our next model is a version of logistic regression with Naive Bayes features extended to include bigrams and trigrams as well as unigrams, described [here](https://www.aclweb.org/anthology/P12-2018). For every document we compute binarized features as described above, but this time we use bigrams and trigrams too. Each feature is a log-count ratio. A logistic regression model is then trained to predict sentiment. Because of the much larger number of features, we will return to the smaller `IMDb_sample` data set."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### What are `ngrams`?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### An `n-gram` is a contiguous sequence of n items (where the items can be characters, syllables, or words). A `1-gram` is a `unigram`, a `2-gram` is a `bigram`, and a `3-gram` is a `trigram`.\n",
"\n",
"#### Here, we are referring to sequences of words. So examples of bigrams include \"the dog\", \"said that\", and \"can't you\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 14A. Get the IMDb_sample"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [],
"source": [
"path = untar_data(URLs.IMDB_SAMPLE)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Again we find that accessing the `TextList` API *sometimes* (about 50% of the time) throws a `BrokenProcessPool` Error. This is puzzling, I don't know why it happens. But usually works on 1st or 2nd try."
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"failure count is 0\n",
"\n",
"Wall time: 14.9 s\n"
]
}
],
"source": [
"%%time\n",
"# throws `BrokenProcessPool' Error sometimes. Keep trying `till it works!\n",
"\n",
"count = 0\n",
"error = True\n",
"while error:\n",
" try: \n",
" # Preprocessing steps\n",
" movie_reviews = (TextList.from_csv(path, 'texts.csv', cols='text')\n",
" .split_from_df(col=2)\n",
" .label_from_df(cols=0))\n",
"\n",
" error = False\n",
" print(f'failure count is {count}\\n') \n",
" except: # catch *all* exceptions\n",
" # accumulate failure count\n",
" count = count + 1\n",
" print(f'failure count is {count}')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### IMDb_sample vocabulary"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"IMDb_sample vocabulary has 6016 tokens\n"
]
}
],
"source": [
"vocab_sample = movie_reviews.vocab.itos\n",
"vocab_len = len(vocab_sample)\n",
"print(f'IMDb_sample vocabulary has {vocab_len} tokens')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 14B. Create the `ngram-doc matrix` for the training data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Just as the `doc-term matrix` encodes the `token` features, the `ngram-doc matrix` encodes the `ngram` features."
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [],
"source": [
"min_n=1\n",
"max_n=3\n",
"\n",
"j_indices = []\n",
"indptr = []\n",
"values = []\n",
"indptr.append(0)\n",
"num_tokens = vocab_len\n",
"\n",
"itongram = dict()\n",
"ngramtoi = dict()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### We will iterate through the sequences of words to create our n-grams. This takes several minutes:"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 2min 53s\n"
]
}
],
"source": [
"%%time\n",
"for i, doc in enumerate(movie_reviews.train.x):\n",
" feature_counter = Counter(doc.data)\n",
" j_indices.extend(feature_counter.keys())\n",
" values.extend(feature_counter.values())\n",
" this_doc_ngrams = list()\n",
"\n",
" m = 0\n",
" for n in range(min_n, max_n + 1):\n",
" for k in range(vocab_len - n + 1):\n",
" ngram = doc.data[k: k + n]\n",
" if str(ngram) not in ngramtoi:\n",
" if len(ngram)==1:\n",
" num = ngram[0]\n",
" ngramtoi[str(ngram)] = num\n",
" itongram[num] = ngram\n",
" else:\n",
" ngramtoi[str(ngram)] = num_tokens\n",
" itongram[num_tokens] = ngram\n",
" num_tokens += 1\n",
" this_doc_ngrams.append(ngramtoi[str(ngram)])\n",
" m += 1\n",
"\n",
" ngram_counter = Counter(this_doc_ngrams)\n",
" j_indices.extend(ngram_counter.keys())\n",
" values.extend(ngram_counter.values())\n",
" indptr.append(len(j_indices))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Using dictionaries to convert between indices and strings (in this case, for n-grams) is a common and useful approach! Here, we have created `itongram` (index to n-gram) and `ngramtoi` (n-gram to index) dictionaries. This takes a few minutes..."
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 161 ms\n"
]
}
],
"source": [
"%%time\n",
"train_ngram_doc_matrix = scipy.sparse.csr_matrix((values, j_indices, indptr),\n",
" shape=(len(indptr) - 1, len(ngramtoi)),\n",
" dtype=int)"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<800x260402 sparse matrix of type ''\n",
"\twith 678912 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_ngram_doc_matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 14C. Examine some ngrams in the training data"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(260402, 260402)"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(ngramtoi), len(itongram)"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([125, 340, 10], dtype=int64)"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"itongram[20005]"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"20005"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ngramtoi[str(itongram[20005])]"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('never', 'mind', '.')"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_sample[125],vocab_sample[340],vocab_sample[10], "
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([42, 49], dtype=int64)"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"itongram[100000]"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('have', 'an')"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_sample[42], vocab_sample[49]"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 38, 862], dtype=int64)"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"itongram[100010]"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('are', 'within')"
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_sample[38], vocab_sample[862]"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([867, 52, 5], dtype=int64)"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"itongram[6116]"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('believable', '!', 'xxmaj')"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_sample[867], vocab_sample[52], vocab_sample[5]"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3776, 5, 1800], dtype=int64)"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"itongram[6119]"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('parallel', 'xxmaj', 'ryan')"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_sample[3376], vocab_sample[5], vocab_sample[1800]"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 1240, 0], dtype=int64)"
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"itongram[80000]"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('xxunk', 'involving', 'xxunk')"
]
},
"execution_count": 147,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab_sample[0], vocab_sample[1240], vocab_sample[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 14D. Create the `ngram-doc matrix` for the validation data"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 40.8 s\n"
]
}
],
"source": [
"%%time\n",
"j_indices = []\n",
"indptr = []\n",
"values = []\n",
"indptr.append(0)\n",
"\n",
"for i, doc in enumerate(movie_reviews.valid.x):\n",
" feature_counter = Counter(doc.data)\n",
" j_indices.extend(feature_counter.keys())\n",
" values.extend(feature_counter.values())\n",
" this_doc_ngrams = list()\n",
"\n",
" m = 0\n",
" for n in range(min_n, max_n + 1):\n",
" for k in range(vocab_len - n + 1):\n",
" ngram = doc.data[k: k + n]\n",
" if str(ngram) in ngramtoi:\n",
" this_doc_ngrams.append(ngramtoi[str(ngram)])\n",
" m += 1\n",
"\n",
" ngram_counter = Counter(this_doc_ngrams)\n",
" j_indices.extend(ngram_counter.keys())\n",
" values.extend(ngram_counter.values())\n",
" indptr.append(len(j_indices))"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 37.9 ms\n"
]
}
],
"source": [
"%%time\n",
"valid_ngram_doc_matrix = scipy.sparse.csr_matrix((values, j_indices, indptr),\n",
" shape=(len(indptr) - 1, len(ngramtoi)),\n",
" dtype=int)"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<200x260402 sparse matrix of type ''\n",
"\twith 121597 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_ngram_doc_matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 14E. Save the `ngram` data so we won't have to spend the time to generate it again"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [],
"source": [
"scipy.sparse.save_npz(\"train_ngram_matrix.npz\", train_ngram_doc_matrix)\n",
"scipy.sparse.save_npz(\"valid_ngram_matrix.npz\", valid_ngram_doc_matrix)"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [],
"source": [
"with open('itongram.pickle', 'wb') as handle:\n",
" pickle.dump(itongram, handle, protocol=pickle.HIGHEST_PROTOCOL)\n",
" \n",
"with open('ngramtoi.pickle', 'wb') as handle:\n",
" pickle.dump(ngramtoi, handle, protocol=pickle.HIGHEST_PROTOCOL)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"### 14F. Load the `ngram` data"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"train_ngram_doc_matrix = scipy.sparse.load_npz(\"train_ngram_matrix.npz\")\n",
"valid_ngram_doc_matrix = scipy.sparse.load_npz(\"valid_ngram_matrix.npz\")"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {
"hidden": true
},
"outputs": [],
"source": [
"with open('itongram.pickle', 'rb') as handle:\n",
" b = pickle.load(handle)\n",
" \n",
"with open('ngramtoi.pickle', 'rb') as handle:\n",
" b = pickle.load(handle)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 15. A Naive Bayes IMDb classifier using Trigrams instead of Tokens"
]
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<800x260402 sparse matrix of type ''\n",
"\twith 678912 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 155,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x=train_ngram_doc_matrix\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 260402 1-gram, 2-gram, and 3-gram features in the IMDb_sample vocabulary\n"
]
}
],
"source": [
"k = x.shape[1]\n",
"print(f'There are {k} 1-gram, 2-gram, and 3-gram features in the IMDb_sample vocabulary')"
]
},
{
"cell_type": "code",
"execution_count": 157,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(800,)"
]
},
"execution_count": 157,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y=movie_reviews.train.y\n",
"y.items\n",
"y.items.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Numerical label representation"
]
},
{
"cell_type": "code",
"execution_count": 158,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"positive and negative review labels are represented numerically by 1 and 0\n"
]
}
],
"source": [
"positive = y.c2i['positive']\n",
"negative = y.c2i['negative']\n",
"print(f'positive and negative review labels are represented numerically by {positive} and {negative}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Boolean indicator tells whether or not a training label is positive"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(200, 1)"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_labels = [label == positive for label in movie_reviews.valid.y.items]\n",
"valid_labels=np.array(valid_labels)[:,np.newaxis]\n",
"valid_labels.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Boolean indicators for `positive` and `negative` reviews in the training set"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [],
"source": [
"pos = (y.items == positive)\n",
"neg = (y.items == negative)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 15A. Naive Bayes with Trigrams"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The input is the full `ngram_doc_matrix`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Token `occurrence count` vectors\n",
"The kernel dies if I use the sparse matrix x here, so converting x to a dense matrix"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [],
"source": [
"C0 = np.squeeze(x.todense()[neg].sum(0))\n",
"C1 = np.squeeze(x.todense()[pos].sum(0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Token `class likelihood` vectors"
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {},
"outputs": [],
"source": [
"L0 = (C0+1) / (neg.sum() + 1)\n",
"L1 = (C1+1) / (pos.sum() + 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### `log-count ratio` column vector"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [],
"source": [
"R = np.log(L1/L0).reshape((-1,1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### bias"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.47875, 0.52125)"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(y.items==positive).mean(), (y.items==negative).mean()"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.08505123261815539\n"
]
}
],
"source": [
"b = np.log((y.items==positive).mean() / (y.items==negative).mean())\n",
"print(b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The input is the `ngram_doc_matrix`"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {},
"outputs": [],
"source": [
"W = valid_ngram_doc_matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Label predictions with the full ngram_doc_matrix"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {},
"outputs": [],
"source": [
"preds = W @ R + b\n",
"preds = preds > 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Accuracy is much better than with the unigram model"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy for Naive Bayes with the full trigrams Model = 0.76\n"
]
}
],
"source": [
"accuracy = (preds == valid_labels).mean()\n",
"print(f'Accuracy for Naive Bayes with the full trigrams Model = {accuracy}' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 15B. Binarized Naive Bayes with Trigrams"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### The input data is the binarized `n_gram_doc_matrix`"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<800x260402 sparse matrix of type ''\n",
"\twith 566499 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = train_ngram_doc_matrix.sign()\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Token `occurrence count` vectors\n",
"The kernel dies if I use the sparse matrix x here, so converting x to a dense matrix"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {},
"outputs": [],
"source": [
"C0 = np.squeeze(x.todense()[neg].sum(0))\n",
"C1 = np.squeeze(x.todense()[pos].sum(0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Token `class likelihood` vectors"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [],
"source": [
"L1 = (C1+1) / ((y.items==positive).sum() + 1)\n",
"L0 = (C0+1) / ((y.items==negative).sum() + 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### `log-count ratio` column vector"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-0.005675]\n",
" [ 0.084839]\n",
" [ 0. ]\n",
" [ 0.084839]\n",
" ...\n",
" [-0.608308]\n",
" [-0.608308]\n",
" [-0.608308]\n",
" [-0.608308]]\n"
]
}
],
"source": [
"R = np.log(L1/L0).reshape((-1,1))\n",
"print(R)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Input to the model is the binarized `ngram_doc_matrix`"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {},
"outputs": [],
"source": [
"W = valid_ngram_doc_matrix.sign()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Label predictions with the binarized ngram_doc_matrix"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {},
"outputs": [],
"source": [
"preds = W @ R + b\n",
"preds = preds>0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Accuracy is still much better than with unigram model, but this time a bit worse with the binarized model"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy for Binarized Naive Bayes with Trigrams Model = 0.735\n"
]
}
],
"source": [
"accuracy = (preds==valid_labels).mean()\n",
"print(f'Accuracy for Binarized Naive Bayes with Trigrams Model = {accuracy}' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 16. A Logistic Regression IMDb classifier using Trigrams"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Here we fit `regularized` logistic regression where the features are the trigrams."
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.feature_extraction.text import CountVectorizer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 16A. Use `CountVectorizer` to create the `train_ngram_doc` matrix"
]
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {},
"outputs": [],
"source": [
"veczr = CountVectorizer(ngram_range=(1,3), preprocessor=noop, tokenizer=noop, max_features=800000)"
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {},
"outputs": [],
"source": [
"train_docs = movie_reviews.train.x\n",
"train_words = [[movie_reviews.vocab.itos[o] for o in doc.data] for doc in train_docs]"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [],
"source": [
"valid_docs = movie_reviews.valid.x\n",
"valid_words = [[movie_reviews.vocab.itos[o] for o in doc.data] for doc in valid_docs]"
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 1.35 s\n"
]
},
{
"data": {
"text/plain": [
"<800x260401 sparse matrix of type ''\n",
"\twith 565699 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"train_ngram_doc_matrix_veczr = veczr.fit_transform(train_words)\n",
"train_ngram_doc_matrix_veczr"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<200x260401 sparse matrix of type ''\n",
"\twith 93549 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valid_ngram_doc_matrix_veczr = veczr.transform(valid_words)\n",
"valid_ngram_doc_matrix_veczr"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [],
"source": [
"vocab = veczr.get_feature_names()"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['the running man',\n",
" 'the rural',\n",
" 'the rural xxmaj',\n",
" 'the sad',\n",
" 'the sad recognition']"
]
},
"execution_count": 183,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vocab[200000:200005]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Binarized trigram counts"
]
},
{
"cell_type": "code",
"execution_count": 184,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy = 0.83 for Logistic Regression, with binarized trigram counts from `CountVectorizer`\n"
]
}
],
"source": [
"# fit model\n",
"m = LogisticRegression(C=0.1, dual=False, solver = 'liblinear')\n",
"m.fit(train_ngram_doc_matrix_veczr.sign(), y.items);\n",
"\n",
"# get predictions\n",
"preds = m.predict(valid_ngram_doc_matrix_veczr.sign())\n",
"valid_labels = [label == positive for label in movie_reviews.valid.y.items]\n",
"\n",
"# check accuracy\n",
"accuracy = (preds==valid_labels).mean()\n",
"print(f'Accuracy = {accuracy} for Logistic Regression, with binarized trigram counts from `CountVectorizer`' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Full trigram counts\n",
"Performance is worse with full trigram counts."
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy = 0.78 for Logistic Regression, with full trigram counts from `CountVectorizer`\n"
]
}
],
"source": [
"m = LogisticRegression(C=0.1, dual=False, solver = 'liblinear')\n",
"m.fit(train_ngram_doc_matrix_veczr, y.items);\n",
"\n",
"preds = m.predict(valid_ngram_doc_matrix_veczr)\n",
"accuracy =(preds==valid_labels).mean()\n",
"print(f'Accuracy = {accuracy} for Logistic Regression, with full trigram counts from `CountVectorizer`' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 16B. This time, use `our` ngrams to create the `train_ngram_doc` matrix"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(800, 260402)"
]
},
"execution_count": 186,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_ngram_doc_matrix.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Fit a model to the binarized trigram counts"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy = 0.83 for Logistic Regression, with our binarized trigram counts\n"
]
}
],
"source": [
"m2=None\n",
"m2 = LogisticRegression(C=0.1, dual=False, solver = 'liblinear')\n",
"m2.fit(train_ngram_doc_matrix.sign(), y.items)\n",
"\n",
"preds = m2.predict(valid_ngram_doc_matrix.sign())\n",
"accuracy = (preds==valid_labels).mean()\n",
"print(f'Accuracy = {accuracy} for Logistic Regression, with our binarized trigram counts' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Fit a model to the full trigram counts\n",
"Performance is again worse with full trigram counts."
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy = 0.795 for Not-Binarized Logistic Regression, with our Trigrams\n"
]
}
],
"source": [
"m2 = LogisticRegression(C=0.1, dual=False,solver='liblinear')\n",
"m2.fit(train_ngram_doc_matrix, y.items)\n",
"preds = m2.predict(valid_ngram_doc_matrix)\n",
"accuracy = (preds==valid_labels).mean()\n",
"print(f'Accuracy = {accuracy} for Not-Binarized Logistic Regression, with our Trigrams' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 16C. Logistic Regression with the log-count ratio gives a slightly better result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Compute the $\\text{log-count ratio}, \\textbf{R}$ and the $\\text{bias}, \\textbf{b}$"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {},
"outputs": [],
"source": [
"x=train_ngram_doc_matrix.sign()\n",
"valid_x=valid_ngram_doc_matrix.sign()"
]
},
{
"cell_type": "code",
"execution_count": 190,
"metadata": {},
"outputs": [],
"source": [
"C0 = np.squeeze(x.todense()[neg].sum(axis=0))\n",
"C1 = np.squeeze(x.todense()[pos].sum(axis=0))"
]
},
{
"cell_type": "code",
"execution_count": 191,
"metadata": {},
"outputs": [],
"source": [
"L1 = (C1+1) / ((pos).sum() + 1)\n",
"L0 = (C0+1) / ((neg).sum() + 1)"
]
},
{
"cell_type": "code",
"execution_count": 192,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1, 260402)"
]
},
"execution_count": 192,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"R = np.log(L1/L0)\n",
"R.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Here we fit regularized logistic regression where the features are the log-count ratios for the trigrams':"
]
},
{
"cell_type": "code",
"execution_count": 193,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(800, 260402)\n"
]
}
],
"source": [
"R_tile = np.tile(R,[x.shape[0],1])\n",
"print(R_tile.shape)"
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy = 0.835 for Logistic Regression, with trigram log-count ratios\n"
]
}
],
"source": [
"# The next line causes the kernel to die?\n",
"# x_nb = x.multiply(R)\n",
"# As a workaround, use the full matrices\n",
"x_nb = np.multiply(x.todense(),R_tile)\n",
"m = LogisticRegression(dual=False, C=0.1,solver='liblinear')\n",
"m.fit(x_nb, y.items);\n",
"\n",
"# why does valid_x.multiply(R) work but x.multiply(R) does not?\n",
"valid_x_nb = valid_x.multiply(R) \n",
"preds = m.predict(valid_x_nb)\n",
"\n",
"accuracy = (preds==valid_labels).mean()\n",
"print(f'Accuracy = {accuracy} for Logistic Regression, with trigram log-count ratios' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 17. Summary of movie review sentiment classifier results"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"