├── README.md
└── Mining_Online_Reviews_using_Topic_Modeling_(LDA).ipynb
/README.md:
--------------------------------------------------------------------------------
1 | # Mining Online Reviews using Topic Modeling (LDA)
2 |
--------------------------------------------------------------------------------
/Mining_Online_Reviews_using_Topic_Modeling_(LDA).ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Mining Online Reviews using Topic Modeling (LDA)",
7 | "version": "0.3.2",
8 | "provenance": [],
9 | "collapsed_sections": []
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | }
15 | },
16 | "cells": [
17 | {
18 | "metadata": {
19 | "id": "U32BHTBUq7D6",
20 | "colab_type": "code",
21 | "colab": {
22 | "base_uri": "https://localhost:8080/",
23 | "height": 1063
24 | },
25 | "outputId": "6f2ba14c-1484-4a32-e02e-0cc4106fed82"
26 | },
27 | "cell_type": "code",
28 | "source": [
29 | "!pip install PyDrive\n",
30 | "!pip install gensim\n",
31 | "!pip install pyldavis\n",
32 | "!python -m spacy download en"
33 | ],
34 | "execution_count": 84,
35 | "outputs": [
36 | {
37 | "output_type": "stream",
38 | "text": [
39 | "Requirement already satisfied: PyDrive in /usr/local/lib/python3.6/dist-packages (1.3.1)\n",
40 | "Requirement already satisfied: google-api-python-client>=1.2 in /usr/local/lib/python3.6/dist-packages (from PyDrive) (1.6.7)\n",
41 | "Requirement already satisfied: oauth2client>=4.0.0 in /usr/local/lib/python3.6/dist-packages (from PyDrive) (4.1.3)\n",
42 | "Requirement already satisfied: PyYAML>=3.0 in /usr/local/lib/python3.6/dist-packages (from PyDrive) (3.13)\n",
43 | "Requirement already satisfied: six<2dev,>=1.6.1 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client>=1.2->PyDrive) (1.11.0)\n",
44 | "Requirement already satisfied: uritemplate<4dev,>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client>=1.2->PyDrive) (3.0.0)\n",
45 | "Requirement already satisfied: httplib2<1dev,>=0.9.2 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client>=1.2->PyDrive) (0.11.3)\n",
46 | "Requirement already satisfied: pyasn1-modules>=0.0.5 in /usr/local/lib/python3.6/dist-packages (from oauth2client>=4.0.0->PyDrive) (0.2.2)\n",
47 | "Requirement already satisfied: pyasn1>=0.1.7 in /usr/local/lib/python3.6/dist-packages (from oauth2client>=4.0.0->PyDrive) (0.4.4)\n",
48 | "Requirement already satisfied: rsa>=3.1.4 in /usr/local/lib/python3.6/dist-packages (from oauth2client>=4.0.0->PyDrive) (4.0)\n",
49 | "Requirement already satisfied: gensim in /usr/local/lib/python3.6/dist-packages (3.6.0)\n",
50 | "Requirement already satisfied: six>=1.5.0 in /usr/local/lib/python3.6/dist-packages (from gensim) (1.11.0)\n",
51 | "Requirement already satisfied: numpy>=1.11.3 in /usr/local/lib/python3.6/dist-packages (from gensim) (1.14.6)\n",
52 | "Requirement already satisfied: smart-open>=1.2.1 in /usr/local/lib/python3.6/dist-packages (from gensim) (1.7.1)\n",
53 | "Requirement already satisfied: scipy>=0.18.1 in /usr/local/lib/python3.6/dist-packages (from gensim) (0.19.1)\n",
54 | "Requirement already satisfied: bz2file in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim) (0.98)\n",
55 | "Requirement already satisfied: boto3 in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim) (1.9.23)\n",
56 | "Requirement already satisfied: boto>=2.32 in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim) (2.49.0)\n",
57 | "Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from smart-open>=1.2.1->gensim) (2.18.4)\n",
58 | "Requirement already satisfied: botocore<1.13.0,>=1.12.23 in /usr/local/lib/python3.6/dist-packages (from boto3->smart-open>=1.2.1->gensim) (1.12.23)\n",
59 | "Requirement already satisfied: s3transfer<0.2.0,>=0.1.10 in /usr/local/lib/python3.6/dist-packages (from boto3->smart-open>=1.2.1->gensim) (0.1.13)\n",
60 | "Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python3.6/dist-packages (from boto3->smart-open>=1.2.1->gensim) (0.9.3)\n",
61 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests->smart-open>=1.2.1->gensim) (2018.8.24)\n",
62 | "Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests->smart-open>=1.2.1->gensim) (1.22)\n",
63 | "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->smart-open>=1.2.1->gensim) (3.0.4)\n",
64 | "Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->smart-open>=1.2.1->gensim) (2.6)\n",
65 | "Requirement already satisfied: docutils>=0.10 in /usr/local/lib/python3.6/dist-packages (from botocore<1.13.0,>=1.12.23->boto3->smart-open>=1.2.1->gensim) (0.14)\n",
66 | "Requirement already satisfied: python-dateutil<3.0.0,>=2.1; python_version >= \"2.7\" in /usr/local/lib/python3.6/dist-packages (from botocore<1.13.0,>=1.12.23->boto3->smart-open>=1.2.1->gensim) (2.5.3)\n",
67 | "Requirement already satisfied: pyldavis in /usr/local/lib/python3.6/dist-packages (2.1.2)\n",
68 | "Requirement already satisfied: pytest in /usr/local/lib/python3.6/dist-packages (from pyldavis) (3.8.2)\n",
69 | "Requirement already satisfied: numpy>=1.9.2 in /usr/local/lib/python3.6/dist-packages (from pyldavis) (1.14.6)\n",
70 | "Requirement already satisfied: pandas>=0.17.0 in /usr/local/lib/python3.6/dist-packages (from pyldavis) (0.22.0)\n",
71 | "Requirement already satisfied: joblib>=0.8.4 in /usr/local/lib/python3.6/dist-packages (from pyldavis) (0.12.5)\n",
72 | "Requirement already satisfied: jinja2>=2.7.2 in /usr/local/lib/python3.6/dist-packages (from pyldavis) (2.10)\n",
73 | "Requirement already satisfied: future in /usr/local/lib/python3.6/dist-packages (from pyldavis) (0.16.0)\n",
74 | "Requirement already satisfied: wheel>=0.23.0 in /usr/local/lib/python3.6/dist-packages (from pyldavis) (0.32.1)\n",
75 | "Requirement already satisfied: funcy in /usr/local/lib/python3.6/dist-packages (from pyldavis) (1.11)\n",
76 | "Requirement already satisfied: numexpr in /usr/local/lib/python3.6/dist-packages (from pyldavis) (2.6.8)\n",
77 | "Requirement already satisfied: scipy>=0.18.0 in /usr/local/lib/python3.6/dist-packages (from pyldavis) (0.19.1)\n",
78 | "Requirement already satisfied: pluggy>=0.7 in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (0.7.1)\n",
79 | "Requirement already satisfied: py>=1.5.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (1.7.0)\n",
80 | "Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (1.11.0)\n",
81 | "Requirement already satisfied: atomicwrites>=1.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (1.2.1)\n",
82 | "Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (39.1.0)\n",
83 | "Requirement already satisfied: more-itertools>=4.0.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (4.3.0)\n",
84 | "Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.6/dist-packages (from pytest->pyldavis) (18.2.0)\n",
85 | "Requirement already satisfied: python-dateutil>=2 in /usr/local/lib/python3.6/dist-packages (from pandas>=0.17.0->pyldavis) (2.5.3)\n",
86 | "Requirement already satisfied: pytz>=2011k in /usr/local/lib/python3.6/dist-packages (from pandas>=0.17.0->pyldavis) (2018.5)\n",
87 | "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.6/dist-packages (from jinja2>=2.7.2->pyldavis) (1.0)\n",
88 | "Requirement already satisfied: en_core_web_sm==2.0.0 from https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz#egg=en_core_web_sm==2.0.0 in /usr/local/lib/python3.6/dist-packages (2.0.0)\n",
89 | "\n",
90 | "\u001b[93m Linking successful\u001b[0m\n",
91 | " /usr/local/lib/python3.6/dist-packages/en_core_web_sm -->\n",
92 | " /usr/local/lib/python3.6/dist-packages/spacy/data/en\n",
93 | "\n",
94 | " You can now load the model via spacy.load('en')\n",
95 | "\n"
96 | ],
97 | "name": "stdout"
98 | }
99 | ]
100 | },
101 | {
102 | "metadata": {
103 | "id": "z3LQhDUitB_I",
104 | "colab_type": "code",
105 | "colab": {
106 | "base_uri": "https://localhost:8080/",
107 | "height": 71
108 | },
109 | "outputId": "be88b89d-e4fe-4371-fb8b-c9c030169fe9"
110 | },
111 | "cell_type": "code",
112 | "source": [
113 | "import os\n",
114 | "from pydrive.auth import GoogleAuth\n",
115 | "from pydrive.drive import GoogleDrive\n",
116 | "from google.colab import auth\n",
117 | "from oauth2client.client import GoogleCredentials\n",
118 | "import nltk\n",
119 | "from nltk import FreqDist\n",
120 | "nltk.download('stopwords')"
121 | ],
122 | "execution_count": 85,
123 | "outputs": [
124 | {
125 | "output_type": "stream",
126 | "text": [
127 | "[nltk_data] Downloading package stopwords to /root/nltk_data...\n",
128 | "[nltk_data] Package stopwords is already up-to-date!\n"
129 | ],
130 | "name": "stdout"
131 | },
132 | {
133 | "output_type": "execute_result",
134 | "data": {
135 | "text/plain": [
136 | "True"
137 | ]
138 | },
139 | "metadata": {
140 | "tags": []
141 | },
142 | "execution_count": 85
143 | }
144 | ]
145 | },
146 | {
147 | "metadata": {
148 | "id": "UVOx_UHJtHlf",
149 | "colab_type": "code",
150 | "colab": {}
151 | },
152 | "cell_type": "code",
153 | "source": [
154 | "auth.authenticate_user()\n",
155 | "gauth = GoogleAuth()\n",
156 | "gauth.credentials = GoogleCredentials.get_application_default()\n",
157 | "drive = GoogleDrive(gauth)"
158 | ],
159 | "execution_count": 0,
160 | "outputs": []
161 | },
162 | {
163 | "metadata": {
164 | "id": "OKXm0rrnt1j4",
165 | "colab_type": "code",
166 | "colab": {}
167 | },
168 | "cell_type": "code",
169 | "source": [
170 | "download = drive.CreateFile({'id': '1-a2dbUDDHsmkWOXoDYvgvCa8WBkEMzbr'})"
171 | ],
172 | "execution_count": 0,
173 | "outputs": []
174 | },
175 | {
176 | "metadata": {
177 | "id": "TeAxx6Btuf-m",
178 | "colab_type": "code",
179 | "colab": {
180 | "base_uri": "https://localhost:8080/",
181 | "height": 35
182 | },
183 | "outputId": "dbcf73e3-661b-40fd-a475-d57b4bd36df4"
184 | },
185 | "cell_type": "code",
186 | "source": [
187 | "ls"
188 | ],
189 | "execution_count": 88,
190 | "outputs": [
191 | {
192 | "output_type": "stream",
193 | "text": [
194 | "adc.json automotive_rev_json.gz \u001b[0m\u001b[01;34msample_data\u001b[0m/\n"
195 | ],
196 | "name": "stdout"
197 | }
198 | ]
199 | },
200 | {
201 | "metadata": {
202 | "id": "1mR48mvAuYqP",
203 | "colab_type": "code",
204 | "colab": {}
205 | },
206 | "cell_type": "code",
207 | "source": [
208 | "download.GetContentFile('automotive_rev_json.gz')"
209 | ],
210 | "execution_count": 0,
211 | "outputs": []
212 | },
213 | {
214 | "metadata": {
215 | "id": "v7ftghxl_SzE",
216 | "colab_type": "code",
217 | "colab": {}
218 | },
219 | "cell_type": "code",
220 | "source": [
221 | "import pandas as pd\n",
222 | "pd.set_option(\"display.max_colwidth\", 200)\n",
223 | "import numpy as np\n",
224 | "import json\n",
225 | "import re\n",
226 | "import gzip\n",
227 | "import spacy\n",
228 | "\n",
229 | "import gensim\n",
230 | "from gensim import corpora\n",
231 | "\n",
232 | "import pyLDAvis\n",
233 | "import pyLDAvis.gensim\n",
234 | "import matplotlib.pyplot as plt\n",
235 | "import seaborn as sns\n",
236 | "%matplotlib inline"
237 | ],
238 | "execution_count": 0,
239 | "outputs": []
240 | },
241 | {
242 | "metadata": {
243 | "id": "k-_gLizownvx",
244 | "colab_type": "code",
245 | "colab": {}
246 | },
247 | "cell_type": "code",
248 | "source": [
249 | "def parse(path):\n",
250 | " g = gzip.open(path, 'rb')\n",
251 | " for l in g:\n",
252 | " yield eval(l)\n",
253 | " \n",
254 | "def getDF(path):\n",
255 | " i = 0\n",
256 | " df = {}\n",
257 | " for d in parse(path):\n",
258 | " df[i] = d\n",
259 | " i += 1\n",
260 | " return pd.DataFrame.from_dict(df, orient='index')"
261 | ],
262 | "execution_count": 0,
263 | "outputs": []
264 | },
265 | {
266 | "metadata": {
267 | "id": "FPle7KMpCVuc",
268 | "colab_type": "code",
269 | "colab": {
270 | "base_uri": "https://localhost:8080/",
271 | "height": 35
272 | },
273 | "outputId": "0e836477-df77-4f96-8df5-3319afddfb50"
274 | },
275 | "cell_type": "code",
276 | "source": [
277 | "df = getDF('automotive_rev_json.gz')\n",
278 | "df.shape"
279 | ],
280 | "execution_count": 92,
281 | "outputs": [
282 | {
283 | "output_type": "execute_result",
284 | "data": {
285 | "text/plain": [
286 | "(20473, 9)"
287 | ]
288 | },
289 | "metadata": {
290 | "tags": []
291 | },
292 | "execution_count": 92
293 | }
294 | ]
295 | },
296 | {
297 | "metadata": {
298 | "id": "17zMP_rlEnCo",
299 | "colab_type": "code",
300 | "colab": {
301 | "base_uri": "https://localhost:8080/",
302 | "height": 459
303 | },
304 | "outputId": "7f4dcd45-133b-49a5-b5fe-7f85e8d741b6"
305 | },
306 | "cell_type": "code",
307 | "source": [
308 | "df.head()"
309 | ],
310 | "execution_count": 93,
311 | "outputs": [
312 | {
313 | "output_type": "execute_result",
314 | "data": {
315 | "text/html": [
316 | "
\n",
317 | "\n",
330 | "
\n",
331 | " \n",
332 | " \n",
333 | " \n",
334 | " reviewerID \n",
335 | " asin \n",
336 | " reviewerName \n",
337 | " helpful \n",
338 | " reviewText \n",
339 | " overall \n",
340 | " summary \n",
341 | " unixReviewTime \n",
342 | " reviewTime \n",
343 | " \n",
344 | " \n",
345 | " \n",
346 | " \n",
347 | " 0 \n",
348 | " A3F73SC1LY51OO \n",
349 | " B00002243X \n",
350 | " Alan Montgomery \n",
351 | " [4, 4] \n",
352 | " I needed a set of jumper cables for my new car and these had good reviews and were at a good price. They have been used a few times already and do what they are supposed to - no complaints there.... \n",
353 | " 5.0 \n",
354 | " Work Well - Should Have Bought Longer Ones \n",
355 | " 1313539200 \n",
356 | " 08 17, 2011 \n",
357 | " \n",
358 | " \n",
359 | " 1 \n",
360 | " A20S66SKYXULG2 \n",
361 | " B00002243X \n",
362 | " alphonse \n",
363 | " [1, 1] \n",
364 | " These long cables work fine for my truck, but the quality seems a little on the shabby side. For the money I was not expecting 200 dollar snap-on jumper cables but these seem more like what you wo... \n",
365 | " 4.0 \n",
366 | " Okay long cables \n",
367 | " 1315094400 \n",
368 | " 09 4, 2011 \n",
369 | " \n",
370 | " \n",
371 | " 2 \n",
372 | " A2I8LFSN2IS5EO \n",
373 | " B00002243X \n",
374 | " Chris \n",
375 | " [0, 0] \n",
376 | " Can't comment much on these since they have not yet been used (I will come back and update my review is I find any issues after first use) ... but they are built solid, nice tough big hard clamps ... \n",
377 | " 5.0 \n",
378 | " Looks and feels heavy Duty \n",
379 | " 1374710400 \n",
380 | " 07 25, 2013 \n",
381 | " \n",
382 | " \n",
383 | " 3 \n",
384 | " A3GT2EWQSO45ZG \n",
385 | " B00002243X \n",
386 | " DeusEx \n",
387 | " [19, 19] \n",
388 | " I absolutley love Amazon!!! For the price of a set of cheap Booster/Jumper Cables in a brick and morter store, you can buy extra long and heavy duty jumpers! First off, don't be the person that ... \n",
389 | " 5.0 \n",
390 | " Excellent choice for Jumper Cables!!! \n",
391 | " 1292889600 \n",
392 | " 12 21, 2010 \n",
393 | " \n",
394 | " \n",
395 | " 4 \n",
396 | " A3ESWJPAVRPWB4 \n",
397 | " B00002243X \n",
398 | " E. Hernandez \n",
399 | " [0, 0] \n",
400 | " I purchased the 12' feet long cable set and they arrived in a retail cardboard box with handle, which could be used as a storage and carrying case for these cables, although I will not need to sto... \n",
401 | " 5.0 \n",
402 | " Excellent, High Quality Starter Cables \n",
403 | " 1341360000 \n",
404 | " 07 4, 2012 \n",
405 | " \n",
406 | " \n",
407 | "
\n",
408 | "
"
409 | ],
410 | "text/plain": [
411 | " reviewerID asin reviewerName helpful \\\n",
412 | "0 A3F73SC1LY51OO B00002243X Alan Montgomery [4, 4] \n",
413 | "1 A20S66SKYXULG2 B00002243X alphonse [1, 1] \n",
414 | "2 A2I8LFSN2IS5EO B00002243X Chris [0, 0] \n",
415 | "3 A3GT2EWQSO45ZG B00002243X DeusEx [19, 19] \n",
416 | "4 A3ESWJPAVRPWB4 B00002243X E. Hernandez [0, 0] \n",
417 | "\n",
418 | " reviewText \\\n",
419 | "0 I needed a set of jumper cables for my new car and these had good reviews and were at a good price. They have been used a few times already and do what they are supposed to - no complaints there.... \n",
420 | "1 These long cables work fine for my truck, but the quality seems a little on the shabby side. For the money I was not expecting 200 dollar snap-on jumper cables but these seem more like what you wo... \n",
421 | "2 Can't comment much on these since they have not yet been used (I will come back and update my review is I find any issues after first use) ... but they are built solid, nice tough big hard clamps ... \n",
422 | "3 I absolutley love Amazon!!! For the price of a set of cheap Booster/Jumper Cables in a brick and morter store, you can buy extra long and heavy duty jumpers! First off, don't be the person that ... \n",
423 | "4 I purchased the 12' feet long cable set and they arrived in a retail cardboard box with handle, which could be used as a storage and carrying case for these cables, although I will not need to sto... \n",
424 | "\n",
425 | " overall summary unixReviewTime \\\n",
426 | "0 5.0 Work Well - Should Have Bought Longer Ones 1313539200 \n",
427 | "1 4.0 Okay long cables 1315094400 \n",
428 | "2 5.0 Looks and feels heavy Duty 1374710400 \n",
429 | "3 5.0 Excellent choice for Jumper Cables!!! 1292889600 \n",
430 | "4 5.0 Excellent, High Quality Starter Cables 1341360000 \n",
431 | "\n",
432 | " reviewTime \n",
433 | "0 08 17, 2011 \n",
434 | "1 09 4, 2011 \n",
435 | "2 07 25, 2013 \n",
436 | "3 12 21, 2010 \n",
437 | "4 07 4, 2012 "
438 | ]
439 | },
440 | "metadata": {
441 | "tags": []
442 | },
443 | "execution_count": 93
444 | }
445 | ]
446 | },
447 | {
448 | "metadata": {
449 | "id": "jjLyeSxg41OQ",
450 | "colab_type": "code",
451 | "colab": {}
452 | },
453 | "cell_type": "code",
454 | "source": [
455 | "def freq_words(x, terms = 30):\n",
456 | " all_words = ' '.join([text for text in x])\n",
457 | " all_words = all_words.split()\n",
458 | " \n",
459 | " fdist = FreqDist(all_words)\n",
460 | " words_df = pd.DataFrame({'word':list(fdist.keys()), 'count':list(fdist.values())})\n",
461 | " \n",
462 | " # selecting top 20 most frequent words\n",
463 | " d = words_df.nlargest(columns=\"count\", n = terms) \n",
464 | " plt.figure(figsize=(20,5))\n",
465 | " ax = sns.barplot(data=d, x= \"word\", y = \"count\")\n",
466 | " ax.set(ylabel = 'Count')\n",
467 | " plt.show()"
468 | ],
469 | "execution_count": 0,
470 | "outputs": []
471 | },
472 | {
473 | "metadata": {
474 | "id": "pennLlyl5Whp",
475 | "colab_type": "code",
476 | "colab": {
477 | "base_uri": "https://localhost:8080/",
478 | "height": 426
479 | },
480 | "outputId": "057ab4de-0c87-4d9a-edf8-7a4bbc7e8949"
481 | },
482 | "cell_type": "code",
483 | "source": [
484 | "freq_words(df['reviewText'])"
485 | ],
486 | "execution_count": 95,
487 | "outputs": [
488 | {
489 | "output_type": "stream",
490 | "text": [
491 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:342: DeprecationWarning: pandas.core.common.is_categorical_dtype is deprecated. import from the public API: pandas.api.types.is_categorical_dtype instead\n",
492 | " elif is_categorical(y):\n",
493 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:1428: FutureWarning: remove_na is deprecated and is a private function. Do not use.\n",
494 | " stat_data = remove_na(group_data)\n"
495 | ],
496 | "name": "stderr"
497 | },
498 | {
499 | "output_type": "display_data",
500 | "data": {
501 | "image/png": "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\nV5IkSRovahsgXJIkSZIkSc8+9mySJKkif3HrRxpZ7gWv+4dGlitJkiQNxrBJkqRnsGOW/Usjyz1/\n1vGNLFeSJEnN8zI6SZIkSZIkVcawSZIkSZIkSZUxbJIkSZIkSVJlDJskSZIkSZJUGQcIlyRJHXfs\n0nM7vszzZs/v+DIlSZKejezZJEmSJEmSpMrYs0mSJAk49uZLG1nueXsd0chyJUmS6mLPJkmSJEmS\nJFXGnk2SJEldav5NVzay3HP3flMjy5UkSc8M9mySJEmSJElSZQybJEmSJEmSVBnDJkmSJEmSJFXG\nsEmSJEmSJEmVcYBwSZIkjdpxN32rkeV+ae/9GlmuJEkaO3s2SZIkSZIkqTKGTZIkSZIkSaqMYZMk\nSZIkSZIqY9gkSZIkSZKkytQ6QHhEvBK4AvhMZn4+Il4MXAhMAO4Hjs7MNRFxFLAQWA+cnZnnRMRE\n4DxgR2AdMD8zfxIRuwJnAv3AnZm5oM7XIEmSJEmSpNGrLWyKiEnA54DrWyafApyRmV+NiE8Ax0XE\nBcCJwGuB3wErIuJy4GDgkcw8KiL2B04DjgBOB47PzBURcXFEHJiZ19T1OiRJktTd3nnTLY0s94t7\nz2xkuZIkdbs6L6NbA7wBWNkybQ5wZXn7KmBfYHdgRWY+mplPALcAM4G5wOVl2yXAzIjYEtg5M1e0\nzUOSJEmSJEldoLaeTZn5JPBkRLROnpSZa8rbDwI7ANOBvpY2m03PzPUR0V9OWzVI2yFNnbo1vb0T\nNtzvG6ZtnaZNmzzkYw92sI5Ww9W0cshH6jVcTQAPdaiOViPVdG+H6mg3Ul1NsKbRsabR68a6rGl0\nrGn0urEuaxqdbqxJkqRuUOuYTSPoqWD6UG03WLXq8VEXVKe+vtVNl7AZaxqdbqwJurMuaxodaxq9\nbqzLmkbHmkavG+uyptEZqaZ33XxHhyrZ6Oy9dh328f998087VMmm/nWvnRtZriSpPsN96dLpsOmx\niNiqvFxuBkUHmpUUPZYGzABua5l+RzlYeA/FoOLbt7VtqhOOJEmSpKfp1GWPNLLcv5+1bSPLlaRn\ng06HTUuAecBF5f/XAsuBL0bEtsCTFOM1LQSeBxwOXEcxWPgNmbk2Iu6JiFmZuQw4lGIQckmSJEmq\nxGXLmrk64i2ztm5kuZJUtTp/je41wKeBnYC1EXEYcBRwXkS8G/g5cH4ZIH2EIlTqB07OzEcj4lJg\n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\n",
502 | "text/plain": [
503 | ""
504 | ]
505 | },
506 | "metadata": {
507 | "tags": []
508 | }
509 | }
510 | ]
511 | },
512 | {
513 | "metadata": {
514 | "id": "jUc1_gTcLfYt",
515 | "colab_type": "code",
516 | "colab": {}
517 | },
518 | "cell_type": "code",
519 | "source": [
520 | "# replace \"n't\" with \" not\"\n",
521 | "df['reviewText'] = df['reviewText'].str.replace(\"n\\'t\", \" not\")\n",
522 | "\n",
523 | "# remove unwanted characters, numbers and symbols\n",
524 | "df['reviewText'] = df['reviewText'].str.replace(\"[^a-zA-Z#]\", \" \")"
525 | ],
526 | "execution_count": 0,
527 | "outputs": []
528 | },
529 | {
530 | "metadata": {
531 | "id": "wUUY2XIj6dF_",
532 | "colab_type": "code",
533 | "colab": {
534 | "base_uri": "https://localhost:8080/",
535 | "height": 426
536 | },
537 | "outputId": "1af3a5d2-8890-4de1-fc54-9a67f5581a40"
538 | },
539 | "cell_type": "code",
540 | "source": [
541 | "freq_words(df['reviewText'])"
542 | ],
543 | "execution_count": 97,
544 | "outputs": [
545 | {
546 | "output_type": "stream",
547 | "text": [
548 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:342: DeprecationWarning: pandas.core.common.is_categorical_dtype is deprecated. import from the public API: pandas.api.types.is_categorical_dtype instead\n",
549 | " elif is_categorical(y):\n",
550 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:1428: FutureWarning: remove_na is deprecated and is a private function. Do not use.\n",
551 | " stat_data = remove_na(group_data)\n"
552 | ],
553 | "name": "stderr"
554 | },
555 | {
556 | "output_type": "display_data",
557 | "data": {
558 | "image/png": "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\n",
559 | "text/plain": [
560 | ""
561 | ]
562 | },
563 | "metadata": {
564 | "tags": []
565 | }
566 | }
567 | ]
568 | },
569 | {
570 | "metadata": {
571 | "id": "nshGCS0WGLlQ",
572 | "colab_type": "code",
573 | "colab": {}
574 | },
575 | "cell_type": "code",
576 | "source": [
577 | "from nltk.corpus import stopwords\n",
578 | "stop_words = stopwords.words('english')"
579 | ],
580 | "execution_count": 0,
581 | "outputs": []
582 | },
583 | {
584 | "metadata": {
585 | "id": "B8MogVp8vC6l",
586 | "colab_type": "code",
587 | "colab": {}
588 | },
589 | "cell_type": "code",
590 | "source": [
591 | "# function to remove stopwords\n",
592 | "def remove_stopwords(rev):\n",
593 | " rev_new = \" \".join([i for i in rev if i not in stop_words])\n",
594 | " return rev_new"
595 | ],
596 | "execution_count": 0,
597 | "outputs": []
598 | },
599 | {
600 | "metadata": {
601 | "id": "KYxtiTbOwULK",
602 | "colab_type": "code",
603 | "colab": {}
604 | },
605 | "cell_type": "code",
606 | "source": [
607 | "# remove short words (length < 3)\n",
608 | "df['reviewText'] = df['reviewText'].apply(lambda x: ' '.join([w for w in x.split() if len(w)>2]))\n",
609 | "\n",
610 | "# remove stopwords from the text\n",
611 | "reviews = [remove_stopwords(r.split()) for r in df['reviewText']]\n",
612 | "\n",
613 | "# make entire text lowercase\n",
614 | "reviews = [r.lower() for r in reviews]"
615 | ],
616 | "execution_count": 0,
617 | "outputs": []
618 | },
619 | {
620 | "metadata": {
621 | "id": "9eSP1Ruj9fdT",
622 | "colab_type": "code",
623 | "colab": {
624 | "base_uri": "https://localhost:8080/",
625 | "height": 426
626 | },
627 | "outputId": "1bfc8f92-c390-4d1c-cfa3-ed6b9982271f"
628 | },
629 | "cell_type": "code",
630 | "source": [
631 | "freq_words(reviews, 35)"
632 | ],
633 | "execution_count": 101,
634 | "outputs": [
635 | {
636 | "output_type": "stream",
637 | "text": [
638 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:342: DeprecationWarning: pandas.core.common.is_categorical_dtype is deprecated. import from the public API: pandas.api.types.is_categorical_dtype instead\n",
639 | " elif is_categorical(y):\n",
640 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:1428: FutureWarning: remove_na is deprecated and is a private function. Do not use.\n",
641 | " stat_data = remove_na(group_data)\n"
642 | ],
643 | "name": "stderr"
644 | },
645 | {
646 | "output_type": "display_data",
647 | "data": {
648 | "image/png": "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\nj38/yVXXp0hXcLckc002tdb+orX2yTmFW+s5128mmemF/SyPv938mFqT3eAaa+Z1cr0stAlj1NuN\n4xRpl/fy9Ib9c0l+tqr+Mcmtkrywtfbaqjo4yZ8nuSTJfyV5fGvt4rGCDyMCbtNa+8Ph273PJ3lF\neiXenOS9rbU/n2U5qmrPJK9PctMkP03vgF+eZO8k10jypNbav1TVfyZ5f5JzWmvPHynucUl+PsnV\nkjwryd8leVWS+w/L7p7kxxPr7ZnkWa21j+5o/Gx/338jyW2S3CXJnyX5SZLvJXlEa+2SHQ1eVV9K\ncuskG5Kcl+Sw1tqnq+pDST6RftK/Ocm7Wmt/s6PxhpjXSXJikr3S9+XjkxyTrXXr2+n7f3MW7ZvW\n2oer6pFJ/nhY7yfp9XVHYl86PD4nyeuSvCb9hO+yJL/VWvtWVf1BkiPTE+Tvb609N33fXbuqvtxa\nO27NH0hyQFV9urX2qxPlvHGSd6bXwV/MGo674bi+V5JrJ/m5JC9K8n8mtvX1SV47bOvmJI9rrX29\nql6S5M5J2vBchm9xT2yt/dPwbduRrbWjq+ppw+eyOcmfJPnVJLetqne01n5zUXm2V9fuNaz6rtba\nX06LmeQ5E++3pnqwI+3d8Pybktw4yZkribedskyrj4+eEvdFSX65qv6utfa/djDsy5P8WlVtTvJ7\n6dv/5PTj4HZJnp++L34lyR+11t5VVb+Z5A+GdT7dWvuDtQSuqj2yqB1NP6ael+Ti9Hrx4PTP423p\nx/3Vkvxu+r4+rrX2kaq6WpIvJKnW2qUrjL2W+ndxkusnee/E+7wgyY+SvCHJG9PbiY1JHtla++a8\ny9Fa+7MVbv/RSQ5JcoMh/p+mn8DdKskjkrx8oQ0aRlUcmWRLejuxR5JvJnnM8Ha3qap/SnLzJE9u\nrX1wmdA3q6r3px8zL0pyUZInpX9u/9Fa++1srZPPSvKQDO1qkn/K9Pb4P5P8a5JTkzy0tXbwUO4/\nTXJBa+0ly3wO104/hi8/t5h47p5Z1M8muWGmtJPLbO9ScY9Ocu8kP5vkg0nuk4m+tap+LskJw+p7\nJnlMa+2ri95mj6r6apLbttYurKoDk/zB4rZ2mfgrafe+kX7O8bIkZyW5fZKbpJ9z/OvQP9wlyX8k\nqfTP/xsr+AgW14P/zDLtXPq54EKdeFF637xP+rH2pNba51ZzPjhs/0FJ9h3K/cIkX15chtbaxVX1\n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\n5W1/ttaHmRrxvHupNucTSa5XVZ9IH1G175TX/lqSvx/iPyq9j0qSrw77clXlWOZ8ZMEVrgVaa6/I\n7M6/b5Dkh6217w193kcmnvvX1tqPW2sXZumL5R211PXHPKz0WnNH+91ker//gST3GhLtP22tfSdL\n17WvtNa+21rbnJ782F6fs5zFbcCCaX3dUv3PSizu9xbOqZPl+5FZ18mVtIEL7cVd0pM5v1hV+6T3\nrxetIMYtszUpdfIy6y3XFy9lTf2f2+i2NZkx3pD+Dcd3hm/VZmXLxOM9k6S19sSqukV65vvk9G+b\nZ1mOy3LF5ONThniPqqpfTf8WbcFotxCmb/vkQbswVH7afnh+a+3NI8ZebHHMy7XWThiGPD8oyXur\n6sjW2pdGiHlyeiO6V/pw0WPST0ieleSgtui+9qq62wgxN6R/xkn//JfaBxumLN8y8dpk9QnrxbEX\nXDzx/1GtjyhKklTVTdPnUviV1odurvi2vTX6dpJHDcPqd/T4n/x8NqRv88K2Tn7uk5/5tM93mzYi\n2x6z23Nypte1Zw//L1goy7SYk9uy1nqw5vauqv5oB+JOs7g+Xpz+re7iuAfsYJztuXSJxwtt32eG\nEQ47apt2tKq+luS+rbUvDnU+rbWzq+q26Sc/T6yqO7XWjq2qD6d/u3rrtvr5PU7O6urfQnkXHJB+\n69CRSd7YWvv8UMZ7JnlBVb22tfaGeZdjBfEmLbWfF9veMb5kXzXFlkV/vzl9VNZ3q9+Kt5xt2uOJ\n5ZPv94/ptzaupH9e8txiWj+b6e3kWl08/HvflL71dUk+1Fp75RB36uTArd8+tl9V3SH9NsSfrjD2\ndtu92nZS6MX7eXG7u3jfrjR+0kc6HDq5YJl27uL0b/KnHfOrOR+c3J7rZXob/9T0kWwvWLR8ctvn\n9UX5WOf/J2d6m/PN9Pb0kNbaJVV14ZTX/jj9trvL99+wn9ZyHr7c+ciCaW3OrM6/l6vPqx29sxZL\nnfvOw4qvNXew302m9/t3Th9JeoP09jtZuq4t3hc7kvxbqu9aqt5N639WYrIubcgV8x3LnePOuk6u\npA3cO33U68b025fvlZ7YWfb2uQkLx/ZkvGnbutx1/lRr7f+MbOo2Z4nEW2vtvCQZbm9JVT2pqv7H\nyPF/mK23AByUnuV+VmvtS60PYT43w7DhGZbjzPShtak+P8szsvW++N/I7CZNPDP9gmZhnpzN6bez\nLHZGelY/VfUzVfXnI8Vfct9PqqpnJrmk9VsL3pL+LdsOa619Of2e4uu01i5I/3b1QemNymFVdY2q\n2lBVf1vj/WLDV7N1+P2907/h2lJbb9M7JH2o97R98/30+nnd4ZuW1d7Oszj2Ymekb3+q6m5V9fD0\nzvCcIdF0u/RRHQudxSwS5s9IH+Xy7BGO/ztX1R5VdYP0b9Anv4m8/PPN1s+8Jbn9sM9vmuRmw/OL\n24ikD80/sKo2VtUNq2phsump7foyde3rQzk3VtXG9G9d/22JmAt2pB7sSHvXMtSfqrpL+m0AO2La\nsTAt7ph1bbXv1ZLcsrb+YtJzq2qto62mtaPXSfKt6kPjD0ty1aq6e5K7t9Y+nD7Ue+EzOiF9SPrJ\nqw28hvq32PvS51l45lDfH5o+B8G70o/ZFd1SNHY5Vrj52/PDJDccjvv9kizcvjfZLx877JfVWmiD\n9k3f7nOGRNON0z+zxW3p5ONp7fEVtH7bz7np34S/YwXluUGWOLdYop+d1k7uiM9ket96gyRfHZIa\nD8zy5zxvS59/ZTWjDFbS7l17O+/x1WztH26Z1Y1wnKwH10iyeTvt3FL14FZVNcaPJSzV1p6R5P5V\ndZWqunpVvXRY//K2P1vrwxiW2ubRzv+XaXO+keS/hkTTA9LnBFt8PH42wzxyVfXQqjp81Vu41XLn\nIwuucC1QfZThrM6/v5/k+lW1z3AMHrqd9cc+51vp9cdY1nqtueZ+dzBt/30qvX29b/pop2TcurZa\n0/q67fY/y1jc3l065Rpn2jnuPOvk1H0+jKhK+ujHL6bf6vvE9BFZK/Gl9POXpN8OmAzbWn3+rjsN\ny5bsixdZvI2r7v8km7ovpg/he9ESzz8uyeuq6rT0CtlGjv+RJFV9GN0t0ivgvlX1L1X10fThlufO\nuBxvSbJ39aH1T0mvoL9fPaN+RpL9quqYEeNNxt2jqj42PF7qFyreluTC6sON35utw8t31Pb2/YJv\nJTmpqk5Kv7ViuQlZV+uc9G+4kv5ZH9D6JHgvTp+A9VPpoy3G+sWG45McPNS3G6Zf2D8+yZuGZXum\n74tt9s0wjPY56cmwE7OKycGXiT3pOenDfU9NH2nwyfSG9sKq+nj68M1XpQ/l/9f0eVX+cJVlWInn\nJ7l3Vd0+O3bcfSP91pCPpk8IPPmNybPSbwP6aPpEjM9urX0uyb+nb/fz0rc96Scbf1hVH0yfSDCt\nTwp7QnodeVf6vd9J8m9VtdStDdPq2unpk0eekn5cvbr1iZa3iblgB+vBjrR3H0gfwn9KkoemD0Hf\nEcdn2/o4Le7Z6UmYt+9gvGRrm7OioeittR+nt8nvH46B66cPZV+Lae3oy9OHrx+X5K/Sv4H/UZI/\nHT6XN6Tfs5/W2mfSv41b6zw1q6l/2xgSG89On1j5y+nzyH10Ytl6lGMMC5Oznpne9iwkuZ6d5PFD\nfb9ZVn6yOelL6W3QR9JPWP+5qs4c3vuv0vu+Lya5XVW9KFdsV5+TbdvjaU5M/4b0ghWU5w1ZdG6R\nrd9wT+tnt2knV77p21qmb31V+i1OH0jv7w6pPmH5NG9Nn2R5NZMkr7TdW67sn06v92ektwlfyMrn\nL5qsB3+a7bdzk3Xipem3cpyW5NXpn90YtilDa+0T6fX8k0Oczwzr/lmSv6o+6e+Yo+tPSXJiVd06\n/WL+9PSLsCXLuMY427Q56f32zYfj+xfSb0l5Rfq2P62qHpE+H93/GdY5OtMT4Cv1jSx9PrJg8bXA\n6zOj8+/Wb1d+3vB+b0pPACxXn09L8pIRkyArvf4Yy5quNUfod7fZf8PopU+kJ0AXJt0es66t1rS+\n7jlZWf8zzeL2bto1zuI2efM61Mml2pd/TZ/eZEt6P3WXrPyW5ROS3GH43BYSli9L3/fvSB+ZnUzp\ni5e4zp/sC5I19H8btmxZzShcYFdXfcTMLVprH6o+lPa5rbW5/NT1esaet5r49aH1LgvTXZnq4xiq\n6peS/F1rbS0jbNhNVdXrkxzfWltLMmyXM5yQH9Ba26HE1xriXi19kts3VL/V4ktJbtZWP2EwVzI7\n6/lI9VtWP9paO7f6LbTPHRKODPS787U71cma+JW9Ed9z1f2fOZvgyuf89Gz2s9K/UV78y3u7a2xY\nTH1coap6QvovsTxmvcvCzqGqrp4+GuTMK1Gi6e/Tf0nqQfOO3Vq7qKruUFW/lz4q5ZkSTezirpHk\no1X1o/Rf0NolL+pnRb+7LtTJJay1/zOyCQAAAIDRmLMJAAAAgNFINgEAAAAwGskmAAAAAEYj2QQA\nsIupqtOr6tD1LgcAwDSSTQAAAACMZuN6FwAAYHdWVV9P8iuttR9U1duS/Ki1dkxV7ZfkpCRvSXK/\nJJck+XyS30uyf5L3Jvn3YdmLh/X2TfKfSa4+9w0BAFghI5sAAGbrI0kOqqoNSW6Y5OeH5Ycl+V6S\nI5Ic3Fo7OD2Z9PDh+VsmeW5r7c+TPDLJT1prd07yx0luM8fyAwCsimQTAMBs/XOSuyb55SRfSvLd\nqrpxerLpw0lOaa1dMqx7cpI7DI/Pba214fEvJzk9SVprZw/vAwCwU5JsAgCYrZOSHJieXDolyWlJ\nDklypyQ/XbTuhiRbhscXL1q+eeLvPWZSUgCAEUg2AQDMUGvt++nnXPdJH7l0apKHJDk7yaeSHFZV\new6rHz4sW+wLSe6cJMOoqJptqQEA1k6yCQBg9k5OckBr7az0Sb/vnOTDrbUz0if+Pq2qPp7kv5K8\necrrT0hyg6o6Lcnzk/zLXEoNALAGG7Zs2bL9tQAAAABgBYxsAgAAAGA0kk0AAAAAjEayCQAAAIDR\nSDYBAAAAMBrJJgAAAABGI9kEAAAAwGgkmwAAAAAYjWQTAAAAAKP5/zwZV6a9rh0rAAAAAElFTkSu\nQmCC\n",
649 | "text/plain": [
650 | ""
651 | ]
652 | },
653 | "metadata": {
654 | "tags": []
655 | }
656 | }
657 | ]
658 | },
659 | {
660 | "metadata": {
661 | "id": "x3MUTshKDvC4",
662 | "colab_type": "code",
663 | "colab": {}
664 | },
665 | "cell_type": "code",
666 | "source": [
667 | "nlp = spacy.load('en', disable=['parser', 'ner'])"
668 | ],
669 | "execution_count": 0,
670 | "outputs": []
671 | },
672 | {
673 | "metadata": {
674 | "id": "jZ6TkR4w_kwq",
675 | "colab_type": "code",
676 | "colab": {}
677 | },
678 | "cell_type": "code",
679 | "source": [
680 | "def lemmatization(texts, tags=['NOUN', 'ADJ']):\n",
681 | " output = []\n",
682 | " for sent in texts:\n",
683 | " doc = nlp(\" \".join(sent)) \n",
684 | " output.append([token.lemma_ for token in doc if token.pos_ in tags])\n",
685 | " return output"
686 | ],
687 | "execution_count": 0,
688 | "outputs": []
689 | },
690 | {
691 | "metadata": {
692 | "id": "A_r_uxa3Icq0",
693 | "colab_type": "code",
694 | "colab": {}
695 | },
696 | "cell_type": "code",
697 | "source": [
698 | "tokenized_reviews = pd.Series(reviews).apply(lambda x: x.split())\n",
699 | "print(tokenized_reviews[1])"
700 | ],
701 | "execution_count": 0,
702 | "outputs": []
703 | },
704 | {
705 | "metadata": {
706 | "id": "OKGHMX01NlBa",
707 | "colab_type": "code",
708 | "colab": {
709 | "base_uri": "https://localhost:8080/",
710 | "height": 73
711 | },
712 | "outputId": "74723838-835d-4ecc-dc02-6aa7d3b11811"
713 | },
714 | "cell_type": "code",
715 | "source": [
716 | "print(tokenized_reviews[1])\n",
717 | "len(tokenized_reviews[1])"
718 | ],
719 | "execution_count": 105,
720 | "outputs": [
721 | {
722 | "output_type": "stream",
723 | "text": [
724 | "['these', 'long', 'cables', 'work', 'fine', 'truck', 'quality', 'seems', 'little', 'shabby', 'side', 'for', 'money', 'expecting', 'dollar', 'snap', 'jumper', 'cables', 'seem', 'like', 'would', 'see', 'chinese', 'knock', 'shop', 'like', 'harbor', 'freight', 'bucks']\n"
725 | ],
726 | "name": "stdout"
727 | },
728 | {
729 | "output_type": "execute_result",
730 | "data": {
731 | "text/plain": [
732 | "29"
733 | ]
734 | },
735 | "metadata": {
736 | "tags": []
737 | },
738 | "execution_count": 105
739 | }
740 | ]
741 | },
742 | {
743 | "metadata": {
744 | "id": "tRUfUgkD_k24",
745 | "colab_type": "code",
746 | "colab": {}
747 | },
748 | "cell_type": "code",
749 | "source": [
750 | "reviews_2 = lemmatization(tokenized_reviews)\n",
751 | "print(reviews_2[1])"
752 | ],
753 | "execution_count": 0,
754 | "outputs": []
755 | },
756 | {
757 | "metadata": {
758 | "id": "3Iw8zFgu_lC3",
759 | "colab_type": "code",
760 | "colab": {
761 | "base_uri": "https://localhost:8080/",
762 | "height": 73
763 | },
764 | "outputId": "a04236f4-0f32-4551-9621-9f69fa439b85"
765 | },
766 | "cell_type": "code",
767 | "source": [
768 | "print(reviews_2[1])\n",
769 | "len(reviews_2[1])"
770 | ],
771 | "execution_count": 107,
772 | "outputs": [
773 | {
774 | "output_type": "stream",
775 | "text": [
776 | "['long', 'cable', 'fine', 'truck', 'quality', 'little', 'shabby', 'side', 'money', 'dollar', 'jumper', 'cable', 'chinese', 'shop', 'harbor', 'freight', 'buck']\n"
777 | ],
778 | "name": "stdout"
779 | },
780 | {
781 | "output_type": "execute_result",
782 | "data": {
783 | "text/plain": [
784 | "17"
785 | ]
786 | },
787 | "metadata": {
788 | "tags": []
789 | },
790 | "execution_count": 107
791 | }
792 | ]
793 | },
794 | {
795 | "metadata": {
796 | "id": "4xggnZ-u_lHd",
797 | "colab_type": "code",
798 | "colab": {
799 | "base_uri": "https://localhost:8080/",
800 | "height": 251
801 | },
802 | "outputId": "0bd6f14e-acbe-4fe6-969c-4480a90640c6"
803 | },
804 | "cell_type": "code",
805 | "source": [
806 | "set(tokenized_reviews[1]) - set(reviews_2[1])"
807 | ],
808 | "execution_count": 108,
809 | "outputs": [
810 | {
811 | "output_type": "execute_result",
812 | "data": {
813 | "text/plain": [
814 | "{'bucks',\n",
815 | " 'cables',\n",
816 | " 'expecting',\n",
817 | " 'for',\n",
818 | " 'knock',\n",
819 | " 'like',\n",
820 | " 'see',\n",
821 | " 'seem',\n",
822 | " 'seems',\n",
823 | " 'snap',\n",
824 | " 'these',\n",
825 | " 'work',\n",
826 | " 'would'}"
827 | ]
828 | },
829 | "metadata": {
830 | "tags": []
831 | },
832 | "execution_count": 108
833 | }
834 | ]
835 | },
836 | {
837 | "metadata": {
838 | "id": "aZ9ZPfO-CEmD",
839 | "colab_type": "code",
840 | "colab": {}
841 | },
842 | "cell_type": "code",
843 | "source": [
844 | "reviews_3 = []\n",
845 | "for i in range(len(reviews_2)):\n",
846 | " reviews_3.append(' '.join(reviews_2[i]))\n",
847 | " \n",
848 | "df['reviews'] = reviews_3"
849 | ],
850 | "execution_count": 0,
851 | "outputs": []
852 | },
853 | {
854 | "metadata": {
855 | "id": "Zyj9zVQqCY6R",
856 | "colab_type": "code",
857 | "colab": {
858 | "base_uri": "https://localhost:8080/",
859 | "height": 426
860 | },
861 | "outputId": "a71332fc-e6bf-4581-e3f8-4fb081bbb8f1"
862 | },
863 | "cell_type": "code",
864 | "source": [
865 | "freq_words(df['reviews'], 35)"
866 | ],
867 | "execution_count": 111,
868 | "outputs": [
869 | {
870 | "output_type": "stream",
871 | "text": [
872 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:342: DeprecationWarning: pandas.core.common.is_categorical_dtype is deprecated. import from the public API: pandas.api.types.is_categorical_dtype instead\n",
873 | " elif is_categorical(y):\n",
874 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:1428: FutureWarning: remove_na is deprecated and is a private function. Do not use.\n",
875 | " stat_data = remove_na(group_data)\n"
876 | ],
877 | "name": "stderr"
878 | },
879 | {
880 | "output_type": "display_data",
881 | "data": {
882 | "image/png": "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\n",
883 | "text/plain": [
884 | ""
885 | ]
886 | },
887 | "metadata": {
888 | "tags": []
889 | }
890 | }
891 | ]
892 | },
893 | {
894 | "metadata": {
895 | "id": "FBtKwstViu_h",
896 | "colab_type": "code",
897 | "colab": {}
898 | },
899 | "cell_type": "code",
900 | "source": [
901 | "# Create the term dictionary of our corpus, where every unique term is assigned an index\n",
902 | "dictionary = corpora.Dictionary(reviews_2)"
903 | ],
904 | "execution_count": 0,
905 | "outputs": []
906 | },
907 | {
908 | "metadata": {
909 | "id": "rDoMrZfkiu-c",
910 | "colab_type": "code",
911 | "colab": {}
912 | },
913 | "cell_type": "code",
914 | "source": [
915 | "# Convert list of reviews (reviews_2) into a Document Term Matrix using the dictionary prepared above.\n",
916 | "doc_term_matrix = [dictionary.doc2bow(rev) for rev in reviews_2]"
917 | ],
918 | "execution_count": 0,
919 | "outputs": []
920 | },
921 | {
922 | "metadata": {
923 | "id": "X6JSF612qkm1",
924 | "colab_type": "code",
925 | "colab": {}
926 | },
927 | "cell_type": "code",
928 | "source": [
929 | "# Creating the object for LDA model using gensim library\n",
930 | "LDA = gensim.models.ldamodel.LdaModel"
931 | ],
932 | "execution_count": 0,
933 | "outputs": []
934 | },
935 | {
936 | "metadata": {
937 | "id": "U8MLxPhRiuh6",
938 | "colab_type": "code",
939 | "colab": {}
940 | },
941 | "cell_type": "code",
942 | "source": [
943 | "# Build LDA model\n",
944 | "lda_model = LDA(corpus=doc_term_matrix,\n",
945 | " id2word=dictionary,\n",
946 | " num_topics=7, \n",
947 | " random_state=100,\n",
948 | " chunksize=1000,\n",
949 | " passes=50)"
950 | ],
951 | "execution_count": 0,
952 | "outputs": []
953 | },
954 | {
955 | "metadata": {
956 | "id": "TB5lGOR3iucK",
957 | "colab_type": "code",
958 | "colab": {
959 | "base_uri": "https://localhost:8080/",
960 | "height": 289
961 | },
962 | "outputId": "a6c66aa2-34c9-4b80-bc56-601eed395193"
963 | },
964 | "cell_type": "code",
965 | "source": [
966 | "lda_model.print_topics()"
967 | ],
968 | "execution_count": 119,
969 | "outputs": [
970 | {
971 | "output_type": "execute_result",
972 | "data": {
973 | "text/plain": [
974 | "[(0,\n",
975 | " '0.030*\"car\" + 0.026*\"oil\" + 0.020*\"filter\" + 0.018*\"engine\" + 0.016*\"device\" + 0.013*\"code\" + 0.012*\"vehicle\" + 0.011*\"app\" + 0.011*\"change\" + 0.008*\"bosch\"'),\n",
976 | " (1,\n",
977 | " '0.017*\"easy\" + 0.014*\"install\" + 0.014*\"door\" + 0.013*\"tape\" + 0.013*\"jeep\" + 0.011*\"front\" + 0.011*\"mat\" + 0.010*\"side\" + 0.010*\"headlight\" + 0.008*\"fit\"'),\n",
978 | " (2,\n",
979 | " '0.054*\"blade\" + 0.045*\"wiper\" + 0.019*\"windshield\" + 0.014*\"rain\" + 0.012*\"snow\" + 0.012*\"good\" + 0.011*\"year\" + 0.011*\"old\" + 0.011*\"car\" + 0.009*\"time\"'),\n",
980 | " (3,\n",
981 | " '0.044*\"car\" + 0.024*\"towel\" + 0.020*\"product\" + 0.018*\"clean\" + 0.017*\"good\" + 0.016*\"wax\" + 0.014*\"water\" + 0.013*\"use\" + 0.011*\"time\" + 0.011*\"wash\"'),\n",
982 | " (4,\n",
983 | " '0.051*\"light\" + 0.039*\"battery\" + 0.021*\"bulb\" + 0.019*\"power\" + 0.018*\"car\" + 0.014*\"bright\" + 0.013*\"unit\" + 0.011*\"charger\" + 0.010*\"phone\" + 0.010*\"charge\"'),\n",
984 | " (5,\n",
985 | " '0.022*\"tire\" + 0.015*\"hose\" + 0.013*\"use\" + 0.012*\"good\" + 0.010*\"easy\" + 0.010*\"pressure\" + 0.009*\"small\" + 0.009*\"trailer\" + 0.008*\"nice\" + 0.008*\"water\"'),\n",
986 | " (6,\n",
987 | " '0.048*\"product\" + 0.038*\"good\" + 0.027*\"price\" + 0.020*\"great\" + 0.020*\"leather\" + 0.019*\"quality\" + 0.010*\"work\" + 0.010*\"review\" + 0.009*\"amazon\" + 0.009*\"worth\"')]"
988 | ]
989 | },
990 | "metadata": {
991 | "tags": []
992 | },
993 | "execution_count": 119
994 | }
995 | ]
996 | },
997 | {
998 | "metadata": {
999 | "id": "4nRZyKPDCauL",
1000 | "colab_type": "code",
1001 | "colab": {
1002 | "base_uri": "https://localhost:8080/",
1003 | "height": 860
1004 | },
1005 | "outputId": "b0ef59ff-5204-4ea1-80c9-f100cc9bf1cb"
1006 | },
1007 | "cell_type": "code",
1008 | "source": [
1009 | "# Visualize the topics\n",
1010 | "pyLDAvis.enable_notebook()\n",
1011 | "vis = pyLDAvis.gensim.prepare(lda_model, doc_term_matrix, dictionary)\n",
1012 | "vis"
1013 | ],
1014 | "execution_count": 120,
1015 | "outputs": [
1016 | {
1017 | "output_type": "execute_result",
1018 | "data": {
1019 | "text/html": [
1020 | "\n",
1021 | " \n",
1022 | "\n",
1023 | "\n",
1024 | "
\n",
1025 | ""
1061 | ],
1062 | "text/plain": [
1063 | "PreparedData(topic_coordinates= Freq cluster topics x y\n",
1064 | "topic \n",
1065 | "3 21.143177 1 1 -0.023091 0.141023\n",
1066 | "5 18.369776 1 2 0.096649 0.048498\n",
1067 | "6 15.248682 1 3 -0.107528 0.202428\n",
1068 | "4 14.674014 1 4 -0.112982 -0.163065\n",
1069 | "0 11.917589 1 5 -0.154058 -0.131336\n",
1070 | "1 9.814881 1 6 0.285191 -0.062285\n",
1071 | "2 8.831884 1 7 0.015820 -0.035264, topic_info= Category Freq Term Total loglift logprob\n",
1072 | "term \n",
1073 | "319 Default 6340.000000 product 6340.000000 30.0000 30.0000\n",
1074 | "147 Default 4672.000000 light 4672.000000 29.0000 29.0000\n",
1075 | "952 Default 2615.000000 blade 2615.000000 28.0000 28.0000\n",
1076 | "39 Default 3131.000000 battery 3131.000000 27.0000 27.0000\n",
1077 | "928 Default 2179.000000 wiper 2179.000000 26.0000 26.0000\n",
1078 | "2 Default 9494.000000 car 9494.000000 25.0000 25.0000\n",
1079 | "529 Default 2742.000000 towel 2742.000000 24.0000 24.0000\n",
1080 | "17 Default 2242.000000 price 2242.000000 23.0000 23.0000\n",
1081 | "336 Default 2251.000000 tire 2251.000000 22.0000 22.0000\n",
1082 | "168 Default 1721.000000 oil 1721.000000 21.0000 21.0000\n",
1083 | "2584 Default 1670.000000 bulb 1670.000000 20.0000 20.0000\n",
1084 | "1316 Default 1703.000000 leather 1703.000000 19.0000 19.0000\n",
1085 | "525 Default 1810.000000 wax 1810.000000 18.0000 18.0000\n",
1086 | "32 Default 1980.000000 quality 1980.000000 17.0000 17.0000\n",
1087 | "62 Default 1610.000000 power 1610.000000 16.0000 16.0000\n",
1088 | "963 Default 1270.000000 filter 1270.000000 15.0000 15.0000\n",
1089 | "95 Default 2326.000000 clean 2326.000000 14.0000 14.0000\n",
1090 | "117 Default 1147.000000 engine 1147.000000 13.0000 13.0000\n",
1091 | "725 Default 1511.000000 hose 1511.000000 12.0000 12.0000\n",
1092 | "927 Default 938.000000 windshield 938.000000 11.0000 11.0000\n",
1093 | "1272 Default 1133.000000 bright 1133.000000 10.0000 10.0000\n",
1094 | "524 Default 2705.000000 water 2705.000000 9.0000 9.0000\n",
1095 | "757 Default 1380.000000 device 1380.000000 8.0000 8.0000\n",
1096 | "550 Default 1238.000000 wash 1238.000000 7.0000 7.0000\n",
1097 | "730 Default 1228.000000 unit 1228.000000 6.0000 6.0000\n",
1098 | "643 Default 1153.000000 paint 1153.000000 5.0000 5.0000\n",
1099 | "1187 Default 907.000000 charger 907.000000 4.0000 4.0000\n",
1100 | "723 Default 814.000000 code 814.000000 3.0000 3.0000\n",
1101 | "475 Default 955.000000 install 955.000000 2.0000 2.0000\n",
1102 | "962 Default 730.000000 door 730.000000 1.0000 1.0000\n",
1103 | "... ... ... ... ... ... ...\n",
1104 | "1185 Topic7 424.670807 winter 505.461731 2.2526 -4.7314\n",
1105 | "1012 Topic7 127.780693 vision 150.216125 2.2650 -5.9324\n",
1106 | "936 Topic7 259.161133 weather 392.846741 2.0108 -5.2253\n",
1107 | "534 Topic7 260.354858 original 446.545654 1.8873 -5.2207\n",
1108 | "340 Topic7 222.457581 cold 362.730499 1.9379 -5.3780\n",
1109 | "624 Topic7 152.985733 summer 225.406784 2.0392 -5.7524\n",
1110 | "820 Topic7 340.229797 window 780.110474 1.5970 -4.9531\n",
1111 | "261 Topic7 533.777405 old 1689.711670 1.2745 -4.5028\n",
1112 | "924 Topic7 311.730774 glass 722.981567 1.5856 -5.0406\n",
1113 | "1235 Topic7 239.638931 replacement 477.028687 1.7384 -5.3036\n",
1114 | "382 Topic7 328.168640 month 885.292664 1.4344 -4.9892\n",
1115 | "35 Topic7 438.155579 side 1477.705811 1.2111 -4.7002\n",
1116 | "538 Topic7 338.859558 clear 967.822327 1.3773 -4.9571\n",
1117 | "274 Topic7 545.789856 year 2317.310059 0.9809 -4.4805\n",
1118 | "141 Topic7 380.857422 last 1383.743652 1.1367 -4.8403\n",
1119 | "15 Topic7 435.130188 new 2132.450439 0.8374 -4.7071\n",
1120 | "262 Topic7 310.272888 one 1103.637939 1.1579 -5.0453\n",
1121 | "1025 Topic7 169.302109 style 302.441956 1.8466 -5.6510\n",
1122 | "622 Topic7 168.188354 streak 300.242065 1.8473 -5.6576\n",
1123 | "7 Topic7 557.692505 good 8126.021484 -0.2522 -4.4589\n",
1124 | "21 Topic7 441.052765 time 4586.766602 0.0850 -4.6936\n",
1125 | "495 Topic7 200.997726 design 500.037354 1.5154 -5.4794\n",
1126 | "2 Topic7 520.210632 car 9494.460938 -0.4774 -4.5285\n",
1127 | "290 Topic7 207.020477 driver 627.395142 1.3180 -5.4499\n",
1128 | "111 Topic7 319.139709 easy 3532.182373 0.0228 -5.0171\n",
1129 | "223 Topic7 287.590637 work 3309.058838 -0.0161 -5.1212\n",
1130 | "169 Topic7 234.091522 part 1395.900269 0.6412 -5.3270\n",
1131 | "475 Topic7 220.578003 install 955.325806 0.9610 -5.3865\n",
1132 | "47 Topic7 230.257477 day 1421.293457 0.6067 -5.3435\n",
1133 | "13 Topic7 233.346039 long 1771.797119 0.3996 -5.3302\n",
1134 | "\n",
1135 | "[437 rows x 6 columns], token_table= Topic Freq Term\n",
1136 | "term \n",
1137 | "8001 7 0.997643 acdelco\n",
1138 | "2796 4 0.684772 adapter\n",
1139 | "2796 7 0.313786 adapter\n",
1140 | "2088 6 0.998052 adhesive\n",
1141 | "509 2 0.662911 air\n",
1142 | "509 5 0.336860 air\n",
1143 | "1686 3 0.988734 alot\n",
1144 | "84 3 0.837086 amazon\n",
1145 | "84 4 0.057651 amazon\n",
1146 | "84 5 0.071487 amazon\n",
1147 | "84 7 0.032284 amazon\n",
1148 | "85 4 0.997211 amp\n",
1149 | "6281 7 0.997189 anco\n",
1150 | "6891 5 0.998472 app\n",
1151 | "607 1 0.466526 area\n",
1152 | "607 2 0.105107 area\n",
1153 | "607 3 0.040567 area\n",
1154 | "607 6 0.300568 area\n",
1155 | "607 7 0.086667 area\n",
1156 | "1578 7 0.996823 arm\n",
1157 | "2031 7 0.984294 audible\n",
1158 | "88 1 0.089456 auto\n",
1159 | "88 3 0.745469 auto\n",
1160 | "88 4 0.042864 auto\n",
1161 | "88 5 0.121139 auto\n",
1162 | "2878 4 0.101143 automatic\n",
1163 | "2878 5 0.898529 automatic\n",
1164 | "2010 6 0.993560 backing\n",
1165 | "38 2 0.983468 bag\n",
1166 | "38 4 0.015130 bag\n",
1167 | "... ... ... ...\n",
1168 | "927 7 0.999305 windshield\n",
1169 | "1185 4 0.158271 winter\n",
1170 | "1185 7 0.840815 winter\n",
1171 | "535 1 0.841607 wipe\n",
1172 | "535 7 0.156974 wipe\n",
1173 | "928 7 0.999651 wiper\n",
1174 | "80 4 0.998232 wire\n",
1175 | "2600 4 0.998173 wiring\n",
1176 | "223 1 0.168628 work\n",
1177 | "223 2 0.223024 work\n",
1178 | "223 3 0.262310 work\n",
1179 | "223 4 0.098215 work\n",
1180 | "223 5 0.059231 work\n",
1181 | "223 6 0.101842 work\n",
1182 | "223 7 0.087034 work\n",
1183 | "225 1 0.079150 worth\n",
1184 | "225 2 0.049201 worth\n",
1185 | "225 3 0.759412 worth\n",
1186 | "225 4 0.032088 worth\n",
1187 | "225 5 0.080220 worth\n",
1188 | "2367 6 0.989773 wrangler\n",
1189 | "2129 2 0.996307 wrap\n",
1190 | "2597 3 0.997510 wrench\n",
1191 | "274 1 0.248133 year\n",
1192 | "274 2 0.035386 year\n",
1193 | "274 3 0.223535 year\n",
1194 | "274 4 0.126871 year\n",
1195 | "274 5 0.130755 year\n",
1196 | "274 7 0.235618 year\n",
1197 | "16268 5 0.996310 zubie\n",
1198 | "\n",
1199 | "[725 rows x 3 columns], R=30, lambda_step=0.01, plot_opts={'xlab': 'PC1', 'ylab': 'PC2'}, topic_order=[4, 6, 7, 5, 1, 2, 3])"
1200 | ]
1201 | },
1202 | "metadata": {
1203 | "tags": []
1204 | },
1205 | "execution_count": 120
1206 | }
1207 | ]
1208 | },
1209 | {
1210 | "metadata": {
1211 | "id": "2Krd9ndB1S-0",
1212 | "colab_type": "code",
1213 | "colab": {}
1214 | },
1215 | "cell_type": "code",
1216 | "source": [
1217 | "# Print the Keyword in the 10 topics\n",
1218 | "lda_model.print_topics()"
1219 | ],
1220 | "execution_count": 0,
1221 | "outputs": []
1222 | },
1223 | {
1224 | "metadata": {
1225 | "id": "QQk4i7FQC6V_",
1226 | "colab_type": "code",
1227 | "colab": {}
1228 | },
1229 | "cell_type": "code",
1230 | "source": [
1231 | ""
1232 | ],
1233 | "execution_count": 0,
1234 | "outputs": []
1235 | }
1236 | ]
1237 | }
--------------------------------------------------------------------------------