MON3EMPASHA commited on
Commit
f19f2e1
·
verified ·
1 Parent(s): 747e79c

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ IMDB[[:space:]]Dataset.csv filter=lfs diff=lfs merge=lfs -text
IMDB Dataset.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dfc447764f82be365fa9c2beef4e8df89d3919e3da95f5088004797d79695aa2
3
+ size 66212309
huggingface_deploy.py ADDED
@@ -0,0 +1,380 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import joblib
4
+ from transformers import pipeline
5
+ import torch
6
+
7
+ def create_huggingface_config():
8
+ """Create Hugging Face model card and configuration"""
9
+
10
+ # Create model card
11
+ model_card = """---
12
+ language: en
13
+ tags:
14
+ - sentiment-analysis
15
+ - text-classification
16
+ - nltk
17
+ - scikit-learn
18
+ license: mit
19
+ ---
20
+
21
+ # IMDb Sentiment Analysis Model
22
+
23
+ This model analyzes the sentiment of IMDb movie reviews to classify them as positive or negative.
24
+
25
+ ## Model Details
26
+
27
+ - **Model Type**: Ensemble of Logistic Regression and Naive Bayes
28
+ - **Vectorizer**: TF-IDF with 5000 features
29
+ - **Accuracy**:
30
+ - Logistic Regression: ~88.47%
31
+ - Naive Bayes: ~85.2%
32
+
33
+ ## Usage
34
+
35
+ ```python
36
+ from transformers import pipeline
37
+
38
+ # Load the model
39
+ classifier = pipeline("text-classification", model="your-username/imdb-sentiment")
40
+
41
+ # Make predictions
42
+ result = classifier("This movie was absolutely fantastic!")
43
+ print(result)
44
+ ```
45
+
46
+ ## Training Data
47
+
48
+ The model was trained on the IMDb dataset containing 50,000 movie reviews with binary sentiment labels.
49
+
50
+ ## Preprocessing
51
+
52
+ 1. Text lowercase conversion
53
+ 2. Special character removal
54
+ 3. Tokenization using NLTK
55
+ 4. Stopword removal
56
+ 5. Lemmatization using WordNet
57
+
58
+ ## Model Architecture
59
+
60
+ - **Feature Extraction**: TF-IDF Vectorizer (5000 features)
61
+ - **Classification**:
62
+ - Logistic Regression with L2 regularization
63
+ - Multinomial Naive Bayes
64
+
65
+ ## Performance
66
+
67
+ - **Logistic Regression**: 88.47% accuracy
68
+ - **Naive Bayes**: 85.2% accuracy
69
+ - **Ensemble**: Improved robustness and confidence
70
+
71
+ ## Citation
72
+
73
+ If you use this model in your research, please cite:
74
+
75
+ ```bibtex
76
+ @misc{imdb-sentiment-analysis,
77
+ author = {Your Name},
78
+ title = {IMDb Sentiment Analysis Model},
79
+ year = {2024},
80
+ publisher = {Hugging Face},
81
+ url = {https://huggingface.co/your-username/imdb-sentiment}
82
+ }
83
+ ```
84
+ """
85
+
86
+ with open("README.md", "w") as f:
87
+ f.write(model_card)
88
+
89
+ # Create .gitattributes
90
+ gitattributes = """*.pkl filter=lfs diff=lfs merge=lfs -text
91
+ *.joblib filter=lfs diff=lfs merge=lfs -text
92
+ *.json filter=lfs diff=lfs merge=lfs -text
93
+ """
94
+
95
+ with open(".gitattributes", "w") as f:
96
+ f.write(gitattributes)
97
+
98
+ print("Created Hugging Face configuration files")
99
+
100
+ def create_kaggle_notebook():
101
+ """Create a Kaggle notebook for model deployment"""
102
+
103
+ notebook_code = '''{
104
+ "cells": [
105
+ {
106
+ "cell_type": "markdown",
107
+ "metadata": {},
108
+ "source": [
109
+ "# IMDb Sentiment Analysis Model Deployment\\n",
110
+ "\\n",
111
+ "This notebook demonstrates how to use the trained sentiment analysis model for IMDb reviews.\\n",
112
+ "\\n",
113
+ "## Model Details\\n",
114
+ "- **Logistic Regression Accuracy**: ~88.47%\\n",
115
+ "- **Naive Bayes Accuracy**: ~85.2%\\n",
116
+ "- **Vectorizer**: TF-IDF with 5000 features\\n",
117
+ "- **Preprocessing**: Lowercase, tokenization, stopword removal, lemmatization"
118
+ ]
119
+ },
120
+ {
121
+ "cell_type": "code",
122
+ "execution_count": null,
123
+ "metadata": {},
124
+ "outputs": [],
125
+ "source": [
126
+ "# Install required packages\\n",
127
+ "!pip install nltk scikit-learn joblib pandas numpy"
128
+ ]
129
+ },
130
+ {
131
+ "cell_type": "code",
132
+ "execution_count": null,
133
+ "metadata": {},
134
+ "outputs": [],
135
+ "source": [
136
+ "import joblib\\n",
137
+ "import json\\n",
138
+ "import re\\n",
139
+ "import nltk\\n",
140
+ "from nltk.corpus import stopwords\\n",
141
+ "from nltk.tokenize import word_tokenize\\n",
142
+ "from nltk.stem import WordNetLemmatizer\\n",
143
+ "import pandas as pd\\n",
144
+ "import numpy as np\\n",
145
+ "\\n",
146
+ "# Download NLTK resources\\n",
147
+ "nltk.download('punkt')\\n",
148
+ "nltk.download('stopwords')\\n",
149
+ "nltk.download('wordnet')"
150
+ ]
151
+ },
152
+ {
153
+ "cell_type": "code",
154
+ "execution_count": null,
155
+ "metadata": {},
156
+ "outputs": [],
157
+ "source": [
158
+ "class SentimentAnalyzer:\\n",
159
+ " def __init__(self, model_dir=\\"saved_models\\"):\\n",
160
+ " # Load models\\n",
161
+ " self.vectorizer = joblib.load(f\\"{model_dir}/tfidf_vectorizer.pkl\\")\\n",
162
+ " self.lr_model = joblib.load(f\\"{model_dir}/logistic_regression_model.pkl\\")\\n",
163
+ " self.nb_model = joblib.load(f\\"{model_dir}/naive_bayes_model.pkl\\")\\n",
164
+ " \\n",
165
+ " # Load metadata\\n",
166
+ " with open(f\\"{model_dir}/model_metadata.json\\", \\"r\\") as f:\\n",
167
+ " self.metadata = json.load(f)\\n",
168
+ " \\n",
169
+ " def preprocess_text(self, text):\\n",
170
+ " # Lowercase\\n",
171
+ " text = text.lower()\\n",
172
+ " # Remove special characters and digits\\n",
173
+ " text = re.sub(r\\"[^a-zA-Z\\\\s]\\", \\"\\", text)\\n",
174
+ " # Tokenize\\n",
175
+ " tokens = word_tokenize(text)\\n",
176
+ " # Remove stopwords\\n",
177
+ " stop_words = set(stopwords.words(\\"english\\"))\\n",
178
+ " tokens = [word for word in tokens if word not in stop_words]\\n",
179
+ " # Lemmatize\\n",
180
+ " lemmatizer = WordNetLemmatizer()\\n",
181
+ " tokens = [lemmatizer.lemmatize(word) for word in tokens]\\n",
182
+ " # Join tokens back to string\\n",
183
+ " return \\" \\".join(tokens)\\n",
184
+ " \\n",
185
+ " def predict(self, text, model_type=\\"both\\"):\\n",
186
+ " # Preprocess text\\n",
187
+ " cleaned_text = self.preprocess_text(text)\\n",
188
+ " \\n",
189
+ " # Vectorize\\n",
190
+ " text_vector = self.vectorizer.transform([cleaned_text])\\n",
191
+ " \\n",
192
+ " results = {}\\n",
193
+ " \\n",
194
+ " if model_type in [\\"lr\\", \\"both\\"]:\\n",
195
+ " lr_pred = self.lr_model.predict(text_vector)[0]\\n",
196
+ " lr_prob = self.lr_model.predict_proba(text_vector)[0]\\n",
197
+ " results[\\"logistic_regression\\"] = {\\n",
198
+ " \\"prediction\\": \\"positive\\" if lr_pred == 1 else \\"negative\\",\\n",
199
+ " \\"confidence\\": float(max(lr_prob)),\\n",
200
+ " \\"probabilities\\": {\\n",
201
+ " \\"negative\\": float(lr_prob[0]),\\n",
202
+ " \\"positive\\": float(lr_prob[1])\\n",
203
+ " }\\n",
204
+ " }\\n",
205
+ " \\n",
206
+ " if model_type in [\\"nb\\", \\"both\\"]:\\n",
207
+ " nb_pred = self.nb_model.predict(text_vector)[0]\\n",
208
+ " nb_prob = self.nb_model.predict_proba(text_vector)[0]\\n",
209
+ " results[\\"naive_bayes\\"] = {\\n",
210
+ " \\"prediction\\": \\"positive\\" if nb_pred == 1 else \\"negative\\",\\n",
211
+ " \\"confidence\\": float(max(nb_prob)),\\n",
212
+ " \\"probabilities\\": {\\n",
213
+ " \\"negative\\": float(nb_prob[0]),\\n",
214
+ " \\"positive\\": float(nb_prob[1])\\n",
215
+ " }\\n",
216
+ " }\\n",
217
+ " \\n",
218
+ " return results"
219
+ ]
220
+ },
221
+ {
222
+ "cell_type": "code",
223
+ "execution_count": null,
224
+ "metadata": {},
225
+ "outputs": [],
226
+ "source": [
227
+ "# Initialize analyzer\\n",
228
+ "analyzer = SentimentAnalyzer()\\n",
229
+ "\\n",
230
+ "print(\\"Model loaded successfully!\\")\\n",
231
+ "print(f\\"Logistic Regression Accuracy: {analyzer.metadata['lr_accuracy']:.2%}\\")\\n",
232
+ "print(f\\"Naive Bayes Accuracy: {analyzer.metadata['nb_accuracy']:.2%}\\")"
233
+ ]
234
+ },
235
+ {
236
+ "cell_type": "code",
237
+ "execution_count": null,
238
+ "metadata": {},
239
+ "outputs": [],
240
+ "source": [
241
+ "# Test with sample reviews\\n",
242
+ "test_reviews = [\\n",
243
+ " \\"This movie was absolutely fantastic! I loved every minute of it.\\",\\n",
244
+ " \\"Terrible film, waste of time. Don\\"t watch it.\\",\\n",
245
+ " \\"It was okay, nothing special but not bad either.\\",\\n",
246
+ " \\"Amazing performance by the actors, great storyline!\\",\\n",
247
+ " \\"Boring and predictable plot, poor acting.\\"\\n",
248
+ "]\\n",
249
+ "\\n",
250
+ "for review in test_reviews:\\n",
251
+ " print(f\\"\\nReview: {review}\\")\\n",
252
+ " results = analyzer.predict(review)\\n",
253
+ " for model, result in results.items():\\n",
254
+ " print(f\\"{model}: {result['prediction']} (confidence: {result['confidence']:.2f})\\")"
255
+ ]
256
+ },
257
+ {
258
+ "cell_type": "code",
259
+ "execution_count": null,
260
+ "metadata": {},
261
+ "outputs": [],
262
+ "source": [
263
+ "# Interactive prediction\\n",
264
+ "def predict_sentiment(review):\\n",
265
+ " results = analyzer.predict(review)\\n",
266
+ " print(f\\"Review: {review}\\")\\n",
267
+ " print(\\"Results:\\")\\n",
268
+ " for model, result in results.items():\\n",
269
+ " print(f\\" {model}: {result['prediction']} (confidence: {result['confidence']:.2%})\\")\\n",
270
+ " return results\\n",
271
+ "\\n",
272
+ "# Example usage\\n",
273
+ "# predict_sentiment(\\"Your review here\\")"
274
+ ]
275
+ }
276
+ ],
277
+ "metadata": {
278
+ "kernelspec": {
279
+ "display_name": "Python 3",
280
+ "language": "python",
281
+ "name": "python3"
282
+ },
283
+ "language_info": {
284
+ "codemirror_mode": {
285
+ "name": "ipython",
286
+ "version": 3
287
+ },
288
+ "file_extension": ".py",
289
+ "mimetype": "text/x-python",
290
+ "name": "python",
291
+ "nbconvert_exporter": "python",
292
+ "pygments_lexer": "ipython3",
293
+ "version": "3.8.5"
294
+ }
295
+ },
296
+ "nbformat": 4,
297
+ "nbformat_minor": 4
298
+ }'''
299
+
300
+ with open("kaggle_notebook.ipynb", "w") as f:
301
+ f.write(notebook_code)
302
+
303
+ print("Created Kaggle notebook")
304
+
305
+ def create_dockerfile():
306
+ """Create Dockerfile for containerized deployment"""
307
+
308
+ dockerfile = '''FROM python:3.9-slim
309
+
310
+ WORKDIR /app
311
+
312
+ # Install system dependencies
313
+ RUN apt-get update && apt-get install -y \\
314
+ gcc \\
315
+ && rm -rf /var/lib/apt/lists/*
316
+
317
+ # Copy requirements and install Python dependencies
318
+ COPY requirements.txt .
319
+ RUN pip install --no-cache-dir -r requirements.txt
320
+
321
+ # Download NLTK data
322
+ RUN python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords'); nltk.download('wordnet')"
323
+
324
+ # Copy model files
325
+ COPY saved_models/ ./saved_models/
326
+ COPY inference.py .
327
+ COPY streamlit_deployment.py .
328
+
329
+ # Expose port
330
+ EXPOSE 8501
331
+
332
+ # Run Streamlit app
333
+ CMD ["streamlit", "run", "streamlit_deployment.py", "--server.port=8501", "--server.address=0.0.0.0"]'''
334
+
335
+ with open("Dockerfile", "w") as f:
336
+ f.write(dockerfile)
337
+
338
+ print("Created Dockerfile")
339
+
340
+ def create_docker_compose():
341
+ """Create docker-compose.yml for easy deployment"""
342
+
343
+ compose = '''version: '3.8'
344
+
345
+ services:
346
+ sentiment-analysis:
347
+ build: .
348
+ ports:
349
+ - "8501:8501"
350
+ volumes:
351
+ - ./saved_models:/app/saved_models
352
+ environment:
353
+ - STREAMLIT_SERVER_PORT=8501
354
+ - STREAMLIT_SERVER_ADDRESS=0.0.0.0'''
355
+
356
+ with open("docker-compose.yml", "w") as f:
357
+ f.write(compose)
358
+
359
+ print("Created docker-compose.yml")
360
+
361
+ if __name__ == "__main__":
362
+ print("Creating deployment configurations...")
363
+
364
+ # Check if models exist
365
+ if not os.path.exists("saved_models"):
366
+ print("❌ Models not found! Please run 'python train_and_save_model.py' first.")
367
+ exit(1)
368
+
369
+ # Create deployment files
370
+ create_huggingface_config()
371
+ create_kaggle_notebook()
372
+ create_dockerfile()
373
+ create_docker_compose()
374
+
375
+ print("\n✅ Deployment files created!")
376
+ print("\n📋 Next steps:")
377
+ print("1. For Hugging Face: Upload the entire directory to HF Hub")
378
+ print("2. For Kaggle: Upload kaggle_notebook.ipynb to Kaggle")
379
+ print("3. For Docker: Run 'docker-compose up'")
380
+ print("4. For Streamlit Cloud: Push to GitHub and connect to Streamlit Cloud")
saved_models/logistic_regression_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cca354003e9bd826f219453b1236120370d116d198233804f7b3bb5456673f1a
3
+ size 40863
saved_models/model_metadata.json ADDED
@@ -0,0 +1,5016 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "vectorizer_features": [
3
+ "aaron",
4
+ "abandoned",
5
+ "abc",
6
+ "ability",
7
+ "able",
8
+ "aboutbr",
9
+ "abrupt",
10
+ "absence",
11
+ "absent",
12
+ "absolute",
13
+ "absolutely",
14
+ "absurd",
15
+ "absurdity",
16
+ "abuse",
17
+ "abused",
18
+ "abusive",
19
+ "abysmal",
20
+ "academy",
21
+ "accent",
22
+ "accept",
23
+ "acceptable",
24
+ "accepted",
25
+ "access",
26
+ "accident",
27
+ "accidentally",
28
+ "acclaimed",
29
+ "accompanied",
30
+ "accomplished",
31
+ "according",
32
+ "account",
33
+ "accuracy",
34
+ "accurate",
35
+ "accurately",
36
+ "accused",
37
+ "achieve",
38
+ "achieved",
39
+ "achievement",
40
+ "acid",
41
+ "across",
42
+ "act",
43
+ "acted",
44
+ "acting",
45
+ "action",
46
+ "active",
47
+ "activity",
48
+ "actor",
49
+ "actress",
50
+ "actual",
51
+ "actually",
52
+ "ad",
53
+ "adam",
54
+ "adaptation",
55
+ "adapted",
56
+ "add",
57
+ "added",
58
+ "addict",
59
+ "addiction",
60
+ "adding",
61
+ "addition",
62
+ "additional",
63
+ "address",
64
+ "adequate",
65
+ "admire",
66
+ "admit",
67
+ "admittedly",
68
+ "adolescent",
69
+ "adopted",
70
+ "adorable",
71
+ "adult",
72
+ "advance",
73
+ "advanced",
74
+ "advantage",
75
+ "adventure",
76
+ "advertising",
77
+ "advice",
78
+ "advise",
79
+ "affair",
80
+ "affect",
81
+ "affected",
82
+ "affection",
83
+ "afford",
84
+ "aforementioned",
85
+ "afraid",
86
+ "africa",
87
+ "african",
88
+ "afternoon",
89
+ "afterwards",
90
+ "againbr",
91
+ "age",
92
+ "aged",
93
+ "agency",
94
+ "agenda",
95
+ "agent",
96
+ "aging",
97
+ "ago",
98
+ "agree",
99
+ "agreed",
100
+ "agrees",
101
+ "ah",
102
+ "ahead",
103
+ "aid",
104
+ "aim",
105
+ "aimed",
106
+ "aint",
107
+ "air",
108
+ "aired",
109
+ "airplane",
110
+ "airport",
111
+ "aka",
112
+ "al",
113
+ "ala",
114
+ "alan",
115
+ "albeit",
116
+ "albert",
117
+ "album",
118
+ "alcohol",
119
+ "alcoholic",
120
+ "alert",
121
+ "alex",
122
+ "alexander",
123
+ "alfred",
124
+ "ali",
125
+ "alice",
126
+ "alien",
127
+ "alike",
128
+ "alive",
129
+ "allbr",
130
+ "allen",
131
+ "alley",
132
+ "allow",
133
+ "allowed",
134
+ "allowing",
135
+ "allows",
136
+ "alltime",
137
+ "ally",
138
+ "almost",
139
+ "alone",
140
+ "along",
141
+ "alongside",
142
+ "already",
143
+ "alright",
144
+ "also",
145
+ "alternate",
146
+ "alternative",
147
+ "although",
148
+ "altman",
149
+ "altogether",
150
+ "always",
151
+ "amanda",
152
+ "amateur",
153
+ "amateurish",
154
+ "amazed",
155
+ "amazing",
156
+ "amazingly",
157
+ "ambiguous",
158
+ "ambition",
159
+ "ambitious",
160
+ "america",
161
+ "american",
162
+ "among",
163
+ "amongst",
164
+ "amount",
165
+ "amused",
166
+ "amusing",
167
+ "amy",
168
+ "analysis",
169
+ "ancient",
170
+ "anderson",
171
+ "andor",
172
+ "andre",
173
+ "andrew",
174
+ "andy",
175
+ "angel",
176
+ "angela",
177
+ "angeles",
178
+ "anger",
179
+ "angle",
180
+ "angry",
181
+ "animal",
182
+ "animated",
183
+ "animation",
184
+ "anime",
185
+ "ann",
186
+ "anna",
187
+ "anne",
188
+ "annie",
189
+ "annoyed",
190
+ "annoying",
191
+ "another",
192
+ "answer",
193
+ "ant",
194
+ "anthony",
195
+ "antic",
196
+ "antonio",
197
+ "anybody",
198
+ "anymore",
199
+ "anyone",
200
+ "anyones",
201
+ "anything",
202
+ "anyway",
203
+ "anywaybr",
204
+ "anyways",
205
+ "anywhere",
206
+ "apart",
207
+ "apartment",
208
+ "ape",
209
+ "apocalypse",
210
+ "appalling",
211
+ "apparent",
212
+ "apparently",
213
+ "appeal",
214
+ "appealing",
215
+ "appear",
216
+ "appearance",
217
+ "appeared",
218
+ "appearing",
219
+ "appears",
220
+ "appreciate",
221
+ "appreciated",
222
+ "appreciation",
223
+ "approach",
224
+ "appropriate",
225
+ "appropriately",
226
+ "april",
227
+ "arab",
228
+ "arc",
229
+ "area",
230
+ "arent",
231
+ "argento",
232
+ "arguably",
233
+ "argue",
234
+ "argument",
235
+ "arm",
236
+ "armed",
237
+ "army",
238
+ "arnold",
239
+ "around",
240
+ "arrested",
241
+ "arrival",
242
+ "arrive",
243
+ "arrived",
244
+ "arrives",
245
+ "arrogant",
246
+ "art",
247
+ "arthur",
248
+ "artificial",
249
+ "artist",
250
+ "artistic",
251
+ "as",
252
+ "ashamed",
253
+ "asian",
254
+ "aside",
255
+ "ask",
256
+ "asked",
257
+ "asking",
258
+ "asks",
259
+ "asleep",
260
+ "aspect",
261
+ "assassin",
262
+ "assassination",
263
+ "assault",
264
+ "assigned",
265
+ "assistant",
266
+ "associate",
267
+ "associated",
268
+ "assume",
269
+ "assumed",
270
+ "assuming",
271
+ "astaire",
272
+ "astonishing",
273
+ "astronaut",
274
+ "asylum",
275
+ "atlantis",
276
+ "atmosphere",
277
+ "atmospheric",
278
+ "atrocious",
279
+ "atrocity",
280
+ "attached",
281
+ "attack",
282
+ "attacked",
283
+ "attempt",
284
+ "attempted",
285
+ "attempting",
286
+ "attention",
287
+ "attitude",
288
+ "attorney",
289
+ "attracted",
290
+ "attraction",
291
+ "attractive",
292
+ "audience",
293
+ "audio",
294
+ "audition",
295
+ "aunt",
296
+ "aussie",
297
+ "austen",
298
+ "austin",
299
+ "australia",
300
+ "australian",
301
+ "authentic",
302
+ "author",
303
+ "authority",
304
+ "available",
305
+ "average",
306
+ "avoid",
307
+ "avoided",
308
+ "awake",
309
+ "award",
310
+ "aware",
311
+ "away",
312
+ "awaybr",
313
+ "awe",
314
+ "awesome",
315
+ "awful",
316
+ "awfully",
317
+ "awhile",
318
+ "awkward",
319
+ "babe",
320
+ "baby",
321
+ "back",
322
+ "backdrop",
323
+ "background",
324
+ "bad",
325
+ "badbr",
326
+ "baddie",
327
+ "badly",
328
+ "bag",
329
+ "baker",
330
+ "balance",
331
+ "baldwin",
332
+ "ball",
333
+ "ballet",
334
+ "bam",
335
+ "banal",
336
+ "band",
337
+ "bang",
338
+ "bank",
339
+ "banned",
340
+ "bar",
341
+ "barbara",
342
+ "bare",
343
+ "barely",
344
+ "bargain",
345
+ "barker",
346
+ "barney",
347
+ "barrel",
348
+ "barry",
349
+ "barrymore",
350
+ "base",
351
+ "baseball",
352
+ "based",
353
+ "basement",
354
+ "basic",
355
+ "basically",
356
+ "basis",
357
+ "bat",
358
+ "bates",
359
+ "bath",
360
+ "bathroom",
361
+ "batman",
362
+ "battle",
363
+ "bay",
364
+ "bbc",
365
+ "beach",
366
+ "bean",
367
+ "bear",
368
+ "beast",
369
+ "beat",
370
+ "beaten",
371
+ "beating",
372
+ "beautiful",
373
+ "beautifully",
374
+ "beauty",
375
+ "bebr",
376
+ "became",
377
+ "become",
378
+ "becomes",
379
+ "becoming",
380
+ "bed",
381
+ "bedroom",
382
+ "beer",
383
+ "began",
384
+ "begin",
385
+ "beginning",
386
+ "behave",
387
+ "behavior",
388
+ "behaviour",
389
+ "behind",
390
+ "being",
391
+ "bela",
392
+ "belief",
393
+ "believable",
394
+ "believe",
395
+ "believed",
396
+ "believing",
397
+ "bell",
398
+ "belong",
399
+ "belongs",
400
+ "beloved",
401
+ "belt",
402
+ "ben",
403
+ "beneath",
404
+ "benefit",
405
+ "bergman",
406
+ "berlin",
407
+ "bernard",
408
+ "besides",
409
+ "best",
410
+ "bet",
411
+ "betrayal",
412
+ "bette",
413
+ "better",
414
+ "betterbr",
415
+ "bettie",
416
+ "betty",
417
+ "beverly",
418
+ "beware",
419
+ "beyond",
420
+ "biased",
421
+ "bible",
422
+ "big",
423
+ "bigger",
424
+ "biggest",
425
+ "bike",
426
+ "bill",
427
+ "billy",
428
+ "bin",
429
+ "biography",
430
+ "bird",
431
+ "birth",
432
+ "birthday",
433
+ "bit",
434
+ "bite",
435
+ "bitter",
436
+ "bizarre",
437
+ "black",
438
+ "blade",
439
+ "blah",
440
+ "blair",
441
+ "blake",
442
+ "blame",
443
+ "bland",
444
+ "blank",
445
+ "blast",
446
+ "blatant",
447
+ "bleak",
448
+ "blend",
449
+ "blew",
450
+ "blind",
451
+ "blob",
452
+ "block",
453
+ "blockbuster",
454
+ "blond",
455
+ "blonde",
456
+ "blood",
457
+ "bloody",
458
+ "blow",
459
+ "blowing",
460
+ "blown",
461
+ "blue",
462
+ "bmovie",
463
+ "bo",
464
+ "board",
465
+ "boast",
466
+ "boat",
467
+ "bob",
468
+ "bobby",
469
+ "body",
470
+ "bogart",
471
+ "bold",
472
+ "boll",
473
+ "bollywood",
474
+ "bomb",
475
+ "bond",
476
+ "bone",
477
+ "bonus",
478
+ "boob",
479
+ "book",
480
+ "boom",
481
+ "boot",
482
+ "border",
483
+ "bore",
484
+ "bored",
485
+ "boredom",
486
+ "boring",
487
+ "boris",
488
+ "born",
489
+ "borrowed",
490
+ "bos",
491
+ "bother",
492
+ "bothered",
493
+ "bottle",
494
+ "bottom",
495
+ "bought",
496
+ "bound",
497
+ "bourne",
498
+ "box",
499
+ "boxing",
500
+ "boy",
501
+ "boyfriend",
502
+ "br",
503
+ "brad",
504
+ "brady",
505
+ "brain",
506
+ "branagh",
507
+ "brand",
508
+ "brando",
509
+ "brave",
510
+ "bravo",
511
+ "brazil",
512
+ "break",
513
+ "breaking",
514
+ "breast",
515
+ "breath",
516
+ "breathtaking",
517
+ "brian",
518
+ "bride",
519
+ "bridge",
520
+ "brief",
521
+ "briefly",
522
+ "bright",
523
+ "brilliance",
524
+ "brilliant",
525
+ "brilliantly",
526
+ "bring",
527
+ "bringing",
528
+ "brings",
529
+ "britain",
530
+ "british",
531
+ "broad",
532
+ "broadcast",
533
+ "broadway",
534
+ "broke",
535
+ "broken",
536
+ "bronson",
537
+ "brook",
538
+ "brooklyn",
539
+ "brother",
540
+ "brought",
541
+ "brown",
542
+ "bruce",
543
+ "bruno",
544
+ "brutal",
545
+ "brutality",
546
+ "brutally",
547
+ "buck",
548
+ "bud",
549
+ "buddy",
550
+ "budget",
551
+ "buff",
552
+ "bug",
553
+ "build",
554
+ "building",
555
+ "built",
556
+ "bull",
557
+ "bullet",
558
+ "bullock",
559
+ "bully",
560
+ "bumbling",
561
+ "bunch",
562
+ "bunny",
563
+ "buried",
564
+ "burn",
565
+ "burned",
566
+ "burning",
567
+ "burst",
568
+ "burt",
569
+ "burton",
570
+ "bus",
571
+ "bush",
572
+ "business",
573
+ "businessman",
574
+ "buster",
575
+ "busy",
576
+ "butcher",
577
+ "butler",
578
+ "butt",
579
+ "button",
580
+ "buy",
581
+ "buying",
582
+ "cabin",
583
+ "cable",
584
+ "cage",
585
+ "cagney",
586
+ "caine",
587
+ "cake",
588
+ "california",
589
+ "call",
590
+ "called",
591
+ "calling",
592
+ "calm",
593
+ "came",
594
+ "cameo",
595
+ "camera",
596
+ "camerawork",
597
+ "cameron",
598
+ "camp",
599
+ "campaign",
600
+ "campbell",
601
+ "campy",
602
+ "canada",
603
+ "canadian",
604
+ "cancer",
605
+ "candidate",
606
+ "candy",
607
+ "cannibal",
608
+ "cannon",
609
+ "cant",
610
+ "capable",
611
+ "capital",
612
+ "captain",
613
+ "captivating",
614
+ "capture",
615
+ "captured",
616
+ "capturing",
617
+ "car",
618
+ "card",
619
+ "cardboard",
620
+ "care",
621
+ "cared",
622
+ "career",
623
+ "careful",
624
+ "carefully",
625
+ "caricature",
626
+ "caring",
627
+ "carl",
628
+ "carlos",
629
+ "carmen",
630
+ "carol",
631
+ "carpenter",
632
+ "carradine",
633
+ "carrey",
634
+ "carrie",
635
+ "carried",
636
+ "carry",
637
+ "carrying",
638
+ "carter",
639
+ "cartoon",
640
+ "cary",
641
+ "case",
642
+ "cash",
643
+ "cassavetes",
644
+ "cast",
645
+ "casting",
646
+ "castle",
647
+ "casual",
648
+ "cat",
649
+ "catch",
650
+ "catching",
651
+ "catchy",
652
+ "category",
653
+ "catherine",
654
+ "catholic",
655
+ "caught",
656
+ "cause",
657
+ "caused",
658
+ "causing",
659
+ "cave",
660
+ "cd",
661
+ "celebrity",
662
+ "cell",
663
+ "celluloid",
664
+ "cent",
665
+ "center",
666
+ "central",
667
+ "centre",
668
+ "century",
669
+ "certain",
670
+ "certainly",
671
+ "cg",
672
+ "cgi",
673
+ "chain",
674
+ "chainsaw",
675
+ "chair",
676
+ "challenge",
677
+ "challenged",
678
+ "challenging",
679
+ "champion",
680
+ "championship",
681
+ "chan",
682
+ "chance",
683
+ "change",
684
+ "changed",
685
+ "changing",
686
+ "channel",
687
+ "chaos",
688
+ "chaplin",
689
+ "chapter",
690
+ "character",
691
+ "characterbr",
692
+ "characteristic",
693
+ "characterization",
694
+ "charactersbr",
695
+ "charge",
696
+ "charisma",
697
+ "charismatic",
698
+ "charles",
699
+ "charlie",
700
+ "charlotte",
701
+ "charm",
702
+ "charming",
703
+ "chase",
704
+ "chased",
705
+ "chasing",
706
+ "che",
707
+ "cheap",
708
+ "cheat",
709
+ "cheated",
710
+ "cheating",
711
+ "check",
712
+ "checked",
713
+ "checking",
714
+ "cheek",
715
+ "cheer",
716
+ "cheese",
717
+ "cheesy",
718
+ "chemistry",
719
+ "chess",
720
+ "chest",
721
+ "chicago",
722
+ "chick",
723
+ "chicken",
724
+ "chief",
725
+ "child",
726
+ "childhood",
727
+ "childish",
728
+ "childrens",
729
+ "chill",
730
+ "chilling",
731
+ "china",
732
+ "chinese",
733
+ "chip",
734
+ "choice",
735
+ "choose",
736
+ "chooses",
737
+ "chop",
738
+ "choppy",
739
+ "choreographed",
740
+ "choreography",
741
+ "chorus",
742
+ "chose",
743
+ "chosen",
744
+ "chris",
745
+ "christ",
746
+ "christian",
747
+ "christie",
748
+ "christina",
749
+ "christmas",
750
+ "christopher",
751
+ "chuck",
752
+ "chuckle",
753
+ "church",
754
+ "cia",
755
+ "cigarette",
756
+ "cinderella",
757
+ "cinema",
758
+ "cinematic",
759
+ "cinematographer",
760
+ "cinematography",
761
+ "circle",
762
+ "circumstance",
763
+ "circus",
764
+ "citizen",
765
+ "city",
766
+ "civil",
767
+ "civilian",
768
+ "civilization",
769
+ "claim",
770
+ "claimed",
771
+ "claire",
772
+ "clark",
773
+ "class",
774
+ "classic",
775
+ "classical",
776
+ "claude",
777
+ "clean",
778
+ "clear",
779
+ "clearly",
780
+ "clerk",
781
+ "clever",
782
+ "cleverly",
783
+ "clich",
784
+ "clichd",
785
+ "cliche",
786
+ "clichs",
787
+ "client",
788
+ "cliff",
789
+ "climactic",
790
+ "climax",
791
+ "climb",
792
+ "clint",
793
+ "clip",
794
+ "clone",
795
+ "close",
796
+ "closed",
797
+ "closely",
798
+ "closer",
799
+ "closest",
800
+ "closet",
801
+ "closeup",
802
+ "closing",
803
+ "clothes",
804
+ "clothing",
805
+ "cloud",
806
+ "clown",
807
+ "club",
808
+ "clue",
809
+ "clueless",
810
+ "clumsy",
811
+ "co",
812
+ "coach",
813
+ "coast",
814
+ "coat",
815
+ "code",
816
+ "coffee",
817
+ "coherent",
818
+ "coincidence",
819
+ "cold",
820
+ "cole",
821
+ "colin",
822
+ "colleague",
823
+ "collect",
824
+ "collection",
825
+ "college",
826
+ "colonel",
827
+ "color",
828
+ "colorful",
829
+ "colour",
830
+ "columbo",
831
+ "combat",
832
+ "combination",
833
+ "combine",
834
+ "combined",
835
+ "come",
836
+ "comedian",
837
+ "comedic",
838
+ "comedy",
839
+ "comfort",
840
+ "comfortable",
841
+ "comic",
842
+ "comical",
843
+ "coming",
844
+ "command",
845
+ "commander",
846
+ "comment",
847
+ "commentary",
848
+ "commented",
849
+ "commercial",
850
+ "commit",
851
+ "committed",
852
+ "common",
853
+ "communist",
854
+ "community",
855
+ "companion",
856
+ "company",
857
+ "compare",
858
+ "compared",
859
+ "comparing",
860
+ "comparison",
861
+ "compassion",
862
+ "compelled",
863
+ "compelling",
864
+ "competent",
865
+ "competition",
866
+ "complain",
867
+ "complaining",
868
+ "complaint",
869
+ "complete",
870
+ "completed",
871
+ "completely",
872
+ "complex",
873
+ "complexity",
874
+ "complicated",
875
+ "compliment",
876
+ "composed",
877
+ "composer",
878
+ "composition",
879
+ "computer",
880
+ "con",
881
+ "conan",
882
+ "conceived",
883
+ "concentrate",
884
+ "concept",
885
+ "concern",
886
+ "concerned",
887
+ "concerning",
888
+ "concert",
889
+ "conclusion",
890
+ "condition",
891
+ "confess",
892
+ "confidence",
893
+ "conflict",
894
+ "confrontation",
895
+ "confused",
896
+ "confusing",
897
+ "confusion",
898
+ "connect",
899
+ "connected",
900
+ "connection",
901
+ "connery",
902
+ "conrad",
903
+ "conscience",
904
+ "consequence",
905
+ "conservative",
906
+ "consider",
907
+ "considerable",
908
+ "considered",
909
+ "considering",
910
+ "consistent",
911
+ "consistently",
912
+ "consists",
913
+ "conspiracy",
914
+ "constant",
915
+ "constantly",
916
+ "constructed",
917
+ "construction",
918
+ "contact",
919
+ "contain",
920
+ "contained",
921
+ "containing",
922
+ "contains",
923
+ "contemporary",
924
+ "content",
925
+ "contest",
926
+ "contestant",
927
+ "context",
928
+ "continue",
929
+ "continued",
930
+ "continues",
931
+ "continuity",
932
+ "contract",
933
+ "contrary",
934
+ "contrast",
935
+ "contribution",
936
+ "contrived",
937
+ "control",
938
+ "controlled",
939
+ "controversial",
940
+ "convention",
941
+ "conventional",
942
+ "conversation",
943
+ "convey",
944
+ "convict",
945
+ "conviction",
946
+ "convince",
947
+ "convinced",
948
+ "convincing",
949
+ "convincingly",
950
+ "convoluted",
951
+ "cook",
952
+ "cool",
953
+ "cooper",
954
+ "cop",
955
+ "cope",
956
+ "copy",
957
+ "core",
958
+ "corner",
959
+ "corny",
960
+ "corporate",
961
+ "corporation",
962
+ "corps",
963
+ "corpse",
964
+ "correct",
965
+ "correctly",
966
+ "corrupt",
967
+ "corruption",
968
+ "cost",
969
+ "costar",
970
+ "costume",
971
+ "couch",
972
+ "could",
973
+ "couldnt",
974
+ "couldve",
975
+ "count",
976
+ "counterpart",
977
+ "countless",
978
+ "country",
979
+ "countryside",
980
+ "couple",
981
+ "courage",
982
+ "course",
983
+ "court",
984
+ "cousin",
985
+ "cover",
986
+ "covered",
987
+ "cow",
988
+ "cowboy",
989
+ "cox",
990
+ "crack",
991
+ "craft",
992
+ "crafted",
993
+ "craig",
994
+ "crap",
995
+ "crappy",
996
+ "crash",
997
+ "craven",
998
+ "crawford",
999
+ "crazy",
1000
+ "cream",
1001
+ "create",
1002
+ "created",
1003
+ "creates",
1004
+ "creating",
1005
+ "creation",
1006
+ "creative",
1007
+ "creativity",
1008
+ "creator",
1009
+ "creature",
1010
+ "credibility",
1011
+ "credible",
1012
+ "credit",
1013
+ "credited",
1014
+ "creep",
1015
+ "creepy",
1016
+ "crew",
1017
+ "cried",
1018
+ "crime",
1019
+ "criminal",
1020
+ "cringe",
1021
+ "crisis",
1022
+ "crisp",
1023
+ "critic",
1024
+ "critical",
1025
+ "criticism",
1026
+ "critter",
1027
+ "crocodile",
1028
+ "crook",
1029
+ "cross",
1030
+ "crossing",
1031
+ "crowd",
1032
+ "crucial",
1033
+ "crude",
1034
+ "cruel",
1035
+ "cruelty",
1036
+ "cruise",
1037
+ "crush",
1038
+ "cry",
1039
+ "crystal",
1040
+ "cuba",
1041
+ "cube",
1042
+ "cue",
1043
+ "cult",
1044
+ "cultural",
1045
+ "culture",
1046
+ "cup",
1047
+ "cure",
1048
+ "curiosity",
1049
+ "curious",
1050
+ "current",
1051
+ "currently",
1052
+ "curse",
1053
+ "curtis",
1054
+ "cusack",
1055
+ "custer",
1056
+ "cut",
1057
+ "cute",
1058
+ "cutting",
1059
+ "cyborg",
1060
+ "cynical",
1061
+ "da",
1062
+ "dad",
1063
+ "daddy",
1064
+ "daily",
1065
+ "dalton",
1066
+ "damage",
1067
+ "dame",
1068
+ "damme",
1069
+ "damn",
1070
+ "damned",
1071
+ "dan",
1072
+ "dance",
1073
+ "dancer",
1074
+ "dancing",
1075
+ "dane",
1076
+ "danger",
1077
+ "dangerous",
1078
+ "daniel",
1079
+ "danny",
1080
+ "dare",
1081
+ "daring",
1082
+ "dark",
1083
+ "darker",
1084
+ "darkness",
1085
+ "darn",
1086
+ "date",
1087
+ "dated",
1088
+ "dating",
1089
+ "daughter",
1090
+ "dave",
1091
+ "david",
1092
+ "davis",
1093
+ "davy",
1094
+ "dawn",
1095
+ "dawson",
1096
+ "day",
1097
+ "daybr",
1098
+ "de",
1099
+ "dead",
1100
+ "deadly",
1101
+ "deaf",
1102
+ "deal",
1103
+ "dealer",
1104
+ "dealing",
1105
+ "dealt",
1106
+ "dean",
1107
+ "dear",
1108
+ "death",
1109
+ "debate",
1110
+ "debut",
1111
+ "decade",
1112
+ "decent",
1113
+ "decide",
1114
+ "decided",
1115
+ "decides",
1116
+ "decision",
1117
+ "dedicated",
1118
+ "dee",
1119
+ "deed",
1120
+ "deep",
1121
+ "deeper",
1122
+ "deeply",
1123
+ "defeat",
1124
+ "defend",
1125
+ "defense",
1126
+ "defined",
1127
+ "definite",
1128
+ "definitely",
1129
+ "definition",
1130
+ "degree",
1131
+ "deliberately",
1132
+ "delicate",
1133
+ "delight",
1134
+ "delightful",
1135
+ "deliver",
1136
+ "delivered",
1137
+ "delivering",
1138
+ "delivers",
1139
+ "delivery",
1140
+ "demand",
1141
+ "demented",
1142
+ "demise",
1143
+ "demon",
1144
+ "demonstrates",
1145
+ "dennis",
1146
+ "dentist",
1147
+ "denzel",
1148
+ "department",
1149
+ "depicted",
1150
+ "depicting",
1151
+ "depiction",
1152
+ "depicts",
1153
+ "depressed",
1154
+ "depressing",
1155
+ "depression",
1156
+ "depth",
1157
+ "deranged",
1158
+ "derek",
1159
+ "derivative",
1160
+ "descent",
1161
+ "describe",
1162
+ "described",
1163
+ "describes",
1164
+ "describing",
1165
+ "description",
1166
+ "desert",
1167
+ "deserted",
1168
+ "deserve",
1169
+ "deserved",
1170
+ "deserves",
1171
+ "design",
1172
+ "designed",
1173
+ "designer",
1174
+ "desire",
1175
+ "desired",
1176
+ "despair",
1177
+ "desperate",
1178
+ "desperately",
1179
+ "desperation",
1180
+ "despite",
1181
+ "destiny",
1182
+ "destroy",
1183
+ "destroyed",
1184
+ "destroying",
1185
+ "destroys",
1186
+ "destruction",
1187
+ "detail",
1188
+ "detailed",
1189
+ "detective",
1190
+ "determined",
1191
+ "develop",
1192
+ "developed",
1193
+ "developing",
1194
+ "development",
1195
+ "develops",
1196
+ "device",
1197
+ "devil",
1198
+ "devoid",
1199
+ "devoted",
1200
+ "dialog",
1201
+ "dialogue",
1202
+ "diamond",
1203
+ "diana",
1204
+ "diane",
1205
+ "dick",
1206
+ "dickens",
1207
+ "didnt",
1208
+ "die",
1209
+ "died",
1210
+ "diehard",
1211
+ "difference",
1212
+ "different",
1213
+ "differently",
1214
+ "difficult",
1215
+ "difficulty",
1216
+ "dig",
1217
+ "digital",
1218
+ "dignity",
1219
+ "dilemma",
1220
+ "dimension",
1221
+ "dimensional",
1222
+ "dinner",
1223
+ "dinosaur",
1224
+ "dire",
1225
+ "direct",
1226
+ "directed",
1227
+ "directing",
1228
+ "direction",
1229
+ "directly",
1230
+ "director",
1231
+ "directorial",
1232
+ "directs",
1233
+ "dirt",
1234
+ "dirty",
1235
+ "disagree",
1236
+ "disappear",
1237
+ "disappeared",
1238
+ "disappears",
1239
+ "disappoint",
1240
+ "disappointed",
1241
+ "disappointing",
1242
+ "disappointment",
1243
+ "disaster",
1244
+ "disbelief",
1245
+ "disc",
1246
+ "discover",
1247
+ "discovered",
1248
+ "discovering",
1249
+ "discovers",
1250
+ "discovery",
1251
+ "discus",
1252
+ "discussion",
1253
+ "disease",
1254
+ "disguise",
1255
+ "disgusting",
1256
+ "disjointed",
1257
+ "dislike",
1258
+ "disliked",
1259
+ "disney",
1260
+ "display",
1261
+ "displayed",
1262
+ "distance",
1263
+ "distant",
1264
+ "distinct",
1265
+ "distracting",
1266
+ "distribution",
1267
+ "disturbed",
1268
+ "disturbing",
1269
+ "divine",
1270
+ "divorce",
1271
+ "doc",
1272
+ "doctor",
1273
+ "document",
1274
+ "documentary",
1275
+ "doesnt",
1276
+ "dog",
1277
+ "doll",
1278
+ "dollar",
1279
+ "domestic",
1280
+ "donald",
1281
+ "done",
1282
+ "donna",
1283
+ "dont",
1284
+ "doom",
1285
+ "doomed",
1286
+ "door",
1287
+ "dorothy",
1288
+ "double",
1289
+ "doubt",
1290
+ "doug",
1291
+ "douglas",
1292
+ "downhill",
1293
+ "downright",
1294
+ "dozen",
1295
+ "dr",
1296
+ "dracula",
1297
+ "drag",
1298
+ "dragged",
1299
+ "dragon",
1300
+ "drake",
1301
+ "drama",
1302
+ "dramatic",
1303
+ "draw",
1304
+ "drawing",
1305
+ "drawn",
1306
+ "dreadful",
1307
+ "dream",
1308
+ "dreary",
1309
+ "dress",
1310
+ "dressed",
1311
+ "drew",
1312
+ "drink",
1313
+ "drinking",
1314
+ "drive",
1315
+ "drivel",
1316
+ "driven",
1317
+ "driver",
1318
+ "driving",
1319
+ "drop",
1320
+ "dropped",
1321
+ "drove",
1322
+ "drug",
1323
+ "drunk",
1324
+ "drunken",
1325
+ "dry",
1326
+ "dubbed",
1327
+ "dubbing",
1328
+ "duck",
1329
+ "dud",
1330
+ "dude",
1331
+ "due",
1332
+ "duke",
1333
+ "dull",
1334
+ "dumb",
1335
+ "dump",
1336
+ "duo",
1337
+ "dust",
1338
+ "dutch",
1339
+ "duty",
1340
+ "dvd",
1341
+ "dy",
1342
+ "dying",
1343
+ "dylan",
1344
+ "dynamic",
1345
+ "dysfunctional",
1346
+ "eager",
1347
+ "ear",
1348
+ "earl",
1349
+ "earlier",
1350
+ "early",
1351
+ "earned",
1352
+ "earth",
1353
+ "ease",
1354
+ "easier",
1355
+ "easily",
1356
+ "east",
1357
+ "eastern",
1358
+ "eastwood",
1359
+ "easy",
1360
+ "eat",
1361
+ "eaten",
1362
+ "eating",
1363
+ "eats",
1364
+ "eccentric",
1365
+ "echo",
1366
+ "ed",
1367
+ "eddie",
1368
+ "edgar",
1369
+ "edge",
1370
+ "edgy",
1371
+ "edited",
1372
+ "editing",
1373
+ "edition",
1374
+ "editor",
1375
+ "education",
1376
+ "educational",
1377
+ "edward",
1378
+ "eerie",
1379
+ "effect",
1380
+ "effective",
1381
+ "effectively",
1382
+ "effort",
1383
+ "eg",
1384
+ "egg",
1385
+ "ego",
1386
+ "egyptian",
1387
+ "eight",
1388
+ "eighty",
1389
+ "either",
1390
+ "eitherbr",
1391
+ "el",
1392
+ "elaborate",
1393
+ "elderly",
1394
+ "electric",
1395
+ "elegant",
1396
+ "element",
1397
+ "elephant",
1398
+ "elevator",
1399
+ "elizabeth",
1400
+ "ellen",
1401
+ "else",
1402
+ "elsewhere",
1403
+ "elvis",
1404
+ "em",
1405
+ "embarrassed",
1406
+ "embarrassing",
1407
+ "embarrassment",
1408
+ "embrace",
1409
+ "emily",
1410
+ "emma",
1411
+ "emotion",
1412
+ "emotional",
1413
+ "emotionally",
1414
+ "empathy",
1415
+ "emperor",
1416
+ "emphasis",
1417
+ "empire",
1418
+ "employee",
1419
+ "empty",
1420
+ "encounter",
1421
+ "encourage",
1422
+ "end",
1423
+ "endbr",
1424
+ "endearing",
1425
+ "ended",
1426
+ "ending",
1427
+ "endless",
1428
+ "endure",
1429
+ "enemy",
1430
+ "energy",
1431
+ "engage",
1432
+ "engaged",
1433
+ "engaging",
1434
+ "england",
1435
+ "english",
1436
+ "enjoy",
1437
+ "enjoyable",
1438
+ "enjoyed",
1439
+ "enjoying",
1440
+ "enjoyment",
1441
+ "enjoys",
1442
+ "enormous",
1443
+ "enough",
1444
+ "ensemble",
1445
+ "ensues",
1446
+ "enter",
1447
+ "enterprise",
1448
+ "enters",
1449
+ "entertain",
1450
+ "entertained",
1451
+ "entertaining",
1452
+ "entertainment",
1453
+ "enthusiasm",
1454
+ "entire",
1455
+ "entirely",
1456
+ "entitled",
1457
+ "entry",
1458
+ "environment",
1459
+ "epic",
1460
+ "episode",
1461
+ "equal",
1462
+ "equally",
1463
+ "equipment",
1464
+ "equivalent",
1465
+ "era",
1466
+ "eric",
1467
+ "erika",
1468
+ "ernest",
1469
+ "erotic",
1470
+ "error",
1471
+ "escape",
1472
+ "escaped",
1473
+ "especially",
1474
+ "essence",
1475
+ "essential",
1476
+ "essentially",
1477
+ "established",
1478
+ "estate",
1479
+ "et",
1480
+ "etc",
1481
+ "etcbr",
1482
+ "eugene",
1483
+ "europe",
1484
+ "european",
1485
+ "eva",
1486
+ "eve",
1487
+ "even",
1488
+ "evening",
1489
+ "event",
1490
+ "eventually",
1491
+ "ever",
1492
+ "every",
1493
+ "everybody",
1494
+ "everyday",
1495
+ "everyone",
1496
+ "everyones",
1497
+ "everything",
1498
+ "everywhere",
1499
+ "evidence",
1500
+ "evident",
1501
+ "evil",
1502
+ "evolution",
1503
+ "ex",
1504
+ "exact",
1505
+ "exactly",
1506
+ "exaggerated",
1507
+ "example",
1508
+ "excellent",
1509
+ "except",
1510
+ "exception",
1511
+ "exceptional",
1512
+ "exceptionally",
1513
+ "excess",
1514
+ "excessive",
1515
+ "exchange",
1516
+ "excited",
1517
+ "excitement",
1518
+ "exciting",
1519
+ "excuse",
1520
+ "executed",
1521
+ "execution",
1522
+ "executive",
1523
+ "exercise",
1524
+ "exist",
1525
+ "existed",
1526
+ "existence",
1527
+ "exists",
1528
+ "exorcist",
1529
+ "exotic",
1530
+ "expect",
1531
+ "expectation",
1532
+ "expected",
1533
+ "expecting",
1534
+ "expensive",
1535
+ "experience",
1536
+ "experienced",
1537
+ "experiment",
1538
+ "experimental",
1539
+ "expert",
1540
+ "explain",
1541
+ "explained",
1542
+ "explaining",
1543
+ "explains",
1544
+ "explanation",
1545
+ "explicit",
1546
+ "exploit",
1547
+ "exploitation",
1548
+ "exploration",
1549
+ "explore",
1550
+ "explored",
1551
+ "explores",
1552
+ "exploring",
1553
+ "explosion",
1554
+ "explosive",
1555
+ "expose",
1556
+ "exposed",
1557
+ "exposition",
1558
+ "exposure",
1559
+ "express",
1560
+ "expressed",
1561
+ "expression",
1562
+ "extended",
1563
+ "extent",
1564
+ "exterior",
1565
+ "extra",
1566
+ "extraordinary",
1567
+ "extreme",
1568
+ "extremely",
1569
+ "eye",
1570
+ "fabulous",
1571
+ "face",
1572
+ "faced",
1573
+ "facial",
1574
+ "facing",
1575
+ "fact",
1576
+ "factor",
1577
+ "factory",
1578
+ "fade",
1579
+ "fail",
1580
+ "failed",
1581
+ "failing",
1582
+ "fails",
1583
+ "failure",
1584
+ "fair",
1585
+ "fairly",
1586
+ "fairy",
1587
+ "faith",
1588
+ "faithful",
1589
+ "fake",
1590
+ "falk",
1591
+ "fall",
1592
+ "fallen",
1593
+ "falling",
1594
+ "false",
1595
+ "fame",
1596
+ "familiar",
1597
+ "family",
1598
+ "famous",
1599
+ "fan",
1600
+ "fanatic",
1601
+ "fancy",
1602
+ "fantastic",
1603
+ "fantasy",
1604
+ "far",
1605
+ "farce",
1606
+ "fare",
1607
+ "farm",
1608
+ "farmer",
1609
+ "fascinated",
1610
+ "fascinating",
1611
+ "fascination",
1612
+ "fashion",
1613
+ "fashioned",
1614
+ "fast",
1615
+ "faster",
1616
+ "fat",
1617
+ "fatal",
1618
+ "fate",
1619
+ "father",
1620
+ "fault",
1621
+ "favor",
1622
+ "favorite",
1623
+ "favour",
1624
+ "favourite",
1625
+ "fay",
1626
+ "fbi",
1627
+ "fear",
1628
+ "feast",
1629
+ "feat",
1630
+ "feature",
1631
+ "featured",
1632
+ "featuring",
1633
+ "fed",
1634
+ "feed",
1635
+ "feel",
1636
+ "feelgood",
1637
+ "feeling",
1638
+ "felix",
1639
+ "fell",
1640
+ "fellow",
1641
+ "felt",
1642
+ "female",
1643
+ "feminist",
1644
+ "femme",
1645
+ "fest",
1646
+ "festival",
1647
+ "fever",
1648
+ "fi",
1649
+ "fiance",
1650
+ "fiction",
1651
+ "fictional",
1652
+ "field",
1653
+ "fifteen",
1654
+ "fifth",
1655
+ "fifty",
1656
+ "fight",
1657
+ "fighter",
1658
+ "fighting",
1659
+ "figure",
1660
+ "figured",
1661
+ "file",
1662
+ "fill",
1663
+ "filled",
1664
+ "filler",
1665
+ "filling",
1666
+ "film",
1667
+ "filmbr",
1668
+ "filmed",
1669
+ "filming",
1670
+ "filmmaker",
1671
+ "filmmaking",
1672
+ "filmsbr",
1673
+ "final",
1674
+ "finale",
1675
+ "finally",
1676
+ "financial",
1677
+ "find",
1678
+ "finding",
1679
+ "fine",
1680
+ "finest",
1681
+ "finger",
1682
+ "finish",
1683
+ "finished",
1684
+ "fire",
1685
+ "fired",
1686
+ "firm",
1687
+ "firmly",
1688
+ "first",
1689
+ "firstly",
1690
+ "fish",
1691
+ "fisher",
1692
+ "fist",
1693
+ "fit",
1694
+ "fitting",
1695
+ "five",
1696
+ "fix",
1697
+ "flair",
1698
+ "flame",
1699
+ "flash",
1700
+ "flashback",
1701
+ "flat",
1702
+ "flaw",
1703
+ "flawed",
1704
+ "flawless",
1705
+ "flesh",
1706
+ "flick",
1707
+ "flight",
1708
+ "floating",
1709
+ "floor",
1710
+ "flop",
1711
+ "florida",
1712
+ "flow",
1713
+ "flower",
1714
+ "fly",
1715
+ "flying",
1716
+ "flynn",
1717
+ "focus",
1718
+ "focused",
1719
+ "focusing",
1720
+ "folk",
1721
+ "follow",
1722
+ "followed",
1723
+ "following",
1724
+ "follows",
1725
+ "fond",
1726
+ "fonda",
1727
+ "food",
1728
+ "fool",
1729
+ "fooled",
1730
+ "foot",
1731
+ "footage",
1732
+ "football",
1733
+ "forbidden",
1734
+ "force",
1735
+ "forced",
1736
+ "forcing",
1737
+ "ford",
1738
+ "foreign",
1739
+ "forest",
1740
+ "forever",
1741
+ "forget",
1742
+ "forgettable",
1743
+ "forgive",
1744
+ "forgot",
1745
+ "forgotten",
1746
+ "form",
1747
+ "format",
1748
+ "former",
1749
+ "formula",
1750
+ "formulaic",
1751
+ "forth",
1752
+ "fortunately",
1753
+ "fortune",
1754
+ "forty",
1755
+ "forward",
1756
+ "foster",
1757
+ "fought",
1758
+ "foul",
1759
+ "found",
1760
+ "four",
1761
+ "fourth",
1762
+ "fox",
1763
+ "foxx",
1764
+ "frame",
1765
+ "france",
1766
+ "franchise",
1767
+ "francis",
1768
+ "francisco",
1769
+ "franco",
1770
+ "frank",
1771
+ "frankenstein",
1772
+ "frankie",
1773
+ "frankly",
1774
+ "freak",
1775
+ "fred",
1776
+ "freddy",
1777
+ "free",
1778
+ "freedom",
1779
+ "freeman",
1780
+ "french",
1781
+ "frequent",
1782
+ "frequently",
1783
+ "fresh",
1784
+ "friday",
1785
+ "friend",
1786
+ "friendly",
1787
+ "friendship",
1788
+ "frightened",
1789
+ "frightening",
1790
+ "front",
1791
+ "frost",
1792
+ "frustrated",
1793
+ "frustrating",
1794
+ "frustration",
1795
+ "fu",
1796
+ "fulci",
1797
+ "full",
1798
+ "fully",
1799
+ "fun",
1800
+ "funbr",
1801
+ "function",
1802
+ "funeral",
1803
+ "funnier",
1804
+ "funniest",
1805
+ "funny",
1806
+ "funnybr",
1807
+ "furthermore",
1808
+ "future",
1809
+ "futuristic",
1810
+ "fx",
1811
+ "gabriel",
1812
+ "gadget",
1813
+ "gag",
1814
+ "gain",
1815
+ "gal",
1816
+ "game",
1817
+ "gang",
1818
+ "gangster",
1819
+ "gap",
1820
+ "garbage",
1821
+ "garbo",
1822
+ "garden",
1823
+ "garfield",
1824
+ "gary",
1825
+ "gas",
1826
+ "gate",
1827
+ "gather",
1828
+ "gave",
1829
+ "gay",
1830
+ "geek",
1831
+ "gem",
1832
+ "gender",
1833
+ "gene",
1834
+ "general",
1835
+ "generally",
1836
+ "generated",
1837
+ "generation",
1838
+ "generic",
1839
+ "generous",
1840
+ "genius",
1841
+ "genre",
1842
+ "gentle",
1843
+ "gentleman",
1844
+ "genuine",
1845
+ "genuinely",
1846
+ "george",
1847
+ "gere",
1848
+ "german",
1849
+ "germany",
1850
+ "gesture",
1851
+ "get",
1852
+ "getting",
1853
+ "ghost",
1854
+ "giallo",
1855
+ "giant",
1856
+ "gift",
1857
+ "gifted",
1858
+ "gimmick",
1859
+ "girl",
1860
+ "girlfriend",
1861
+ "give",
1862
+ "given",
1863
+ "giving",
1864
+ "glad",
1865
+ "glance",
1866
+ "glass",
1867
+ "glenn",
1868
+ "glimpse",
1869
+ "global",
1870
+ "globe",
1871
+ "gloria",
1872
+ "glorious",
1873
+ "glory",
1874
+ "glover",
1875
+ "go",
1876
+ "goal",
1877
+ "god",
1878
+ "godfather",
1879
+ "godzilla",
1880
+ "going",
1881
+ "gold",
1882
+ "golden",
1883
+ "golf",
1884
+ "gon",
1885
+ "gone",
1886
+ "good",
1887
+ "goodbr",
1888
+ "goodbye",
1889
+ "goodness",
1890
+ "goofy",
1891
+ "gordon",
1892
+ "gore",
1893
+ "gorgeous",
1894
+ "gory",
1895
+ "got",
1896
+ "gothic",
1897
+ "gotten",
1898
+ "government",
1899
+ "grab",
1900
+ "grace",
1901
+ "grade",
1902
+ "gradually",
1903
+ "graham",
1904
+ "grainy",
1905
+ "grand",
1906
+ "grandfather",
1907
+ "grandmother",
1908
+ "grant",
1909
+ "granted",
1910
+ "graphic",
1911
+ "grasp",
1912
+ "gratuitous",
1913
+ "grave",
1914
+ "gray",
1915
+ "great",
1916
+ "greater",
1917
+ "greatest",
1918
+ "greatly",
1919
+ "greatness",
1920
+ "greed",
1921
+ "greedy",
1922
+ "greek",
1923
+ "green",
1924
+ "greg",
1925
+ "gregory",
1926
+ "grew",
1927
+ "grey",
1928
+ "griffith",
1929
+ "grim",
1930
+ "grip",
1931
+ "gripping",
1932
+ "gritty",
1933
+ "gross",
1934
+ "grotesque",
1935
+ "ground",
1936
+ "group",
1937
+ "grow",
1938
+ "growing",
1939
+ "grown",
1940
+ "grows",
1941
+ "grudge",
1942
+ "gruesome",
1943
+ "gu",
1944
+ "guarantee",
1945
+ "guard",
1946
+ "guess",
1947
+ "guessed",
1948
+ "guessing",
1949
+ "guest",
1950
+ "guide",
1951
+ "guilt",
1952
+ "guilty",
1953
+ "guitar",
1954
+ "gun",
1955
+ "gut",
1956
+ "guy",
1957
+ "gypsy",
1958
+ "ha",
1959
+ "habit",
1960
+ "hack",
1961
+ "hackneyed",
1962
+ "hadnt",
1963
+ "hair",
1964
+ "hal",
1965
+ "half",
1966
+ "halfway",
1967
+ "hall",
1968
+ "halloween",
1969
+ "ham",
1970
+ "hamilton",
1971
+ "hamlet",
1972
+ "hammer",
1973
+ "han",
1974
+ "hand",
1975
+ "handed",
1976
+ "handful",
1977
+ "handle",
1978
+ "handled",
1979
+ "handsome",
1980
+ "hang",
1981
+ "hanging",
1982
+ "hank",
1983
+ "happen",
1984
+ "happened",
1985
+ "happening",
1986
+ "happens",
1987
+ "happily",
1988
+ "happiness",
1989
+ "happy",
1990
+ "hard",
1991
+ "hardcore",
1992
+ "harder",
1993
+ "hardly",
1994
+ "hardy",
1995
+ "harm",
1996
+ "harmless",
1997
+ "harold",
1998
+ "harris",
1999
+ "harrison",
2000
+ "harry",
2001
+ "harsh",
2002
+ "hart",
2003
+ "hartley",
2004
+ "harvey",
2005
+ "hasnt",
2006
+ "hat",
2007
+ "hate",
2008
+ "hated",
2009
+ "hatred",
2010
+ "haunt",
2011
+ "haunted",
2012
+ "haunting",
2013
+ "havent",
2014
+ "hawk",
2015
+ "hbo",
2016
+ "he",
2017
+ "head",
2018
+ "headed",
2019
+ "heading",
2020
+ "health",
2021
+ "hear",
2022
+ "heard",
2023
+ "hearing",
2024
+ "hears",
2025
+ "heart",
2026
+ "heartbreaking",
2027
+ "heartfelt",
2028
+ "heartwarming",
2029
+ "heat",
2030
+ "heaven",
2031
+ "heavily",
2032
+ "heavy",
2033
+ "heck",
2034
+ "hed",
2035
+ "heel",
2036
+ "height",
2037
+ "heist",
2038
+ "held",
2039
+ "helen",
2040
+ "helicopter",
2041
+ "hell",
2042
+ "hello",
2043
+ "help",
2044
+ "helped",
2045
+ "helping",
2046
+ "hence",
2047
+ "henchman",
2048
+ "henry",
2049
+ "herbr",
2050
+ "here",
2051
+ "herebr",
2052
+ "hero",
2053
+ "heroic",
2054
+ "heroine",
2055
+ "hey",
2056
+ "hidden",
2057
+ "hide",
2058
+ "hideous",
2059
+ "hiding",
2060
+ "high",
2061
+ "higher",
2062
+ "highest",
2063
+ "highlight",
2064
+ "highly",
2065
+ "hilarious",
2066
+ "hilariously",
2067
+ "hill",
2068
+ "himbr",
2069
+ "hindi",
2070
+ "hint",
2071
+ "hip",
2072
+ "hippie",
2073
+ "hippy",
2074
+ "hire",
2075
+ "hired",
2076
+ "historical",
2077
+ "historically",
2078
+ "history",
2079
+ "hit",
2080
+ "hitch",
2081
+ "hitchcock",
2082
+ "hitler",
2083
+ "hitman",
2084
+ "hitting",
2085
+ "hoffman",
2086
+ "hogan",
2087
+ "hokey",
2088
+ "hold",
2089
+ "holding",
2090
+ "hole",
2091
+ "holiday",
2092
+ "hollow",
2093
+ "holly",
2094
+ "hollywood",
2095
+ "holmes",
2096
+ "holocaust",
2097
+ "holy",
2098
+ "homage",
2099
+ "home",
2100
+ "homeless",
2101
+ "homer",
2102
+ "homosexual",
2103
+ "honest",
2104
+ "honestly",
2105
+ "honesty",
2106
+ "hong",
2107
+ "honor",
2108
+ "hood",
2109
+ "hook",
2110
+ "hooked",
2111
+ "hooker",
2112
+ "hope",
2113
+ "hoped",
2114
+ "hopefully",
2115
+ "hopeless",
2116
+ "hopelessly",
2117
+ "hoping",
2118
+ "hopper",
2119
+ "horrendous",
2120
+ "horrible",
2121
+ "horribly",
2122
+ "horrid",
2123
+ "horrific",
2124
+ "horrifying",
2125
+ "horror",
2126
+ "horse",
2127
+ "hospital",
2128
+ "host",
2129
+ "hostage",
2130
+ "hot",
2131
+ "hotel",
2132
+ "hour",
2133
+ "house",
2134
+ "household",
2135
+ "housewife",
2136
+ "howard",
2137
+ "however",
2138
+ "hudson",
2139
+ "huge",
2140
+ "hugh",
2141
+ "hughes",
2142
+ "huh",
2143
+ "human",
2144
+ "humanity",
2145
+ "humble",
2146
+ "humor",
2147
+ "humorous",
2148
+ "humour",
2149
+ "hundred",
2150
+ "hung",
2151
+ "hungry",
2152
+ "hunt",
2153
+ "hunter",
2154
+ "hunting",
2155
+ "hurt",
2156
+ "husband",
2157
+ "huston",
2158
+ "hype",
2159
+ "hysterical",
2160
+ "ian",
2161
+ "ice",
2162
+ "icon",
2163
+ "id",
2164
+ "idea",
2165
+ "ideal",
2166
+ "identify",
2167
+ "identity",
2168
+ "idiot",
2169
+ "idiotic",
2170
+ "ie",
2171
+ "ignorance",
2172
+ "ignorant",
2173
+ "ignore",
2174
+ "ignored",
2175
+ "ii",
2176
+ "iii",
2177
+ "ill",
2178
+ "illegal",
2179
+ "illness",
2180
+ "illogical",
2181
+ "im",
2182
+ "image",
2183
+ "imagery",
2184
+ "imagination",
2185
+ "imaginative",
2186
+ "imagine",
2187
+ "imagined",
2188
+ "imdb",
2189
+ "imitation",
2190
+ "immediate",
2191
+ "immediately",
2192
+ "immensely",
2193
+ "immigrant",
2194
+ "impact",
2195
+ "implausible",
2196
+ "importance",
2197
+ "important",
2198
+ "importantly",
2199
+ "impossible",
2200
+ "impress",
2201
+ "impressed",
2202
+ "impression",
2203
+ "impressive",
2204
+ "improve",
2205
+ "improved",
2206
+ "improvement",
2207
+ "inability",
2208
+ "inaccurate",
2209
+ "inane",
2210
+ "inappropriate",
2211
+ "inbr",
2212
+ "incident",
2213
+ "incidentally",
2214
+ "include",
2215
+ "included",
2216
+ "includes",
2217
+ "including",
2218
+ "incoherent",
2219
+ "incompetent",
2220
+ "incomprehensible",
2221
+ "inconsistent",
2222
+ "increasingly",
2223
+ "incredible",
2224
+ "incredibly",
2225
+ "indeed",
2226
+ "independent",
2227
+ "india",
2228
+ "indian",
2229
+ "indie",
2230
+ "individual",
2231
+ "industry",
2232
+ "inept",
2233
+ "inevitable",
2234
+ "inevitably",
2235
+ "inexplicably",
2236
+ "infamous",
2237
+ "inferior",
2238
+ "influence",
2239
+ "influenced",
2240
+ "information",
2241
+ "ingredient",
2242
+ "initial",
2243
+ "initially",
2244
+ "injured",
2245
+ "injury",
2246
+ "inmate",
2247
+ "inner",
2248
+ "innocence",
2249
+ "innocent",
2250
+ "innovative",
2251
+ "insane",
2252
+ "insanity",
2253
+ "inside",
2254
+ "insight",
2255
+ "inspector",
2256
+ "inspiration",
2257
+ "inspire",
2258
+ "inspired",
2259
+ "inspiring",
2260
+ "installment",
2261
+ "instance",
2262
+ "instant",
2263
+ "instantly",
2264
+ "instead",
2265
+ "instinct",
2266
+ "institution",
2267
+ "insult",
2268
+ "insulting",
2269
+ "integrity",
2270
+ "intellectual",
2271
+ "intelligence",
2272
+ "intelligent",
2273
+ "intended",
2274
+ "intense",
2275
+ "intensity",
2276
+ "intent",
2277
+ "intention",
2278
+ "intentionally",
2279
+ "interaction",
2280
+ "interest",
2281
+ "interested",
2282
+ "interesting",
2283
+ "interestingly",
2284
+ "interior",
2285
+ "international",
2286
+ "internet",
2287
+ "interpretation",
2288
+ "interview",
2289
+ "intimate",
2290
+ "intrigue",
2291
+ "intrigued",
2292
+ "intriguing",
2293
+ "introduce",
2294
+ "introduced",
2295
+ "introduces",
2296
+ "introduction",
2297
+ "invasion",
2298
+ "invented",
2299
+ "inventive",
2300
+ "investigate",
2301
+ "investigating",
2302
+ "investigation",
2303
+ "invisible",
2304
+ "invite",
2305
+ "invited",
2306
+ "involve",
2307
+ "involved",
2308
+ "involvement",
2309
+ "involves",
2310
+ "involving",
2311
+ "iq",
2312
+ "iraq",
2313
+ "ireland",
2314
+ "irene",
2315
+ "irish",
2316
+ "iron",
2317
+ "ironic",
2318
+ "ironically",
2319
+ "irony",
2320
+ "irrelevant",
2321
+ "irritating",
2322
+ "isbr",
2323
+ "island",
2324
+ "isnt",
2325
+ "isolated",
2326
+ "issue",
2327
+ "italian",
2328
+ "italy",
2329
+ "itbr",
2330
+ "item",
2331
+ "itll",
2332
+ "ive",
2333
+ "jack",
2334
+ "jackass",
2335
+ "jacket",
2336
+ "jackie",
2337
+ "jackson",
2338
+ "jail",
2339
+ "jake",
2340
+ "james",
2341
+ "jamie",
2342
+ "jane",
2343
+ "japan",
2344
+ "japanese",
2345
+ "jason",
2346
+ "jaw",
2347
+ "jay",
2348
+ "jazz",
2349
+ "jealous",
2350
+ "jealousy",
2351
+ "jean",
2352
+ "jeff",
2353
+ "jeffrey",
2354
+ "jennifer",
2355
+ "jenny",
2356
+ "jeremy",
2357
+ "jerk",
2358
+ "jerry",
2359
+ "jesse",
2360
+ "jessica",
2361
+ "jesus",
2362
+ "jet",
2363
+ "jew",
2364
+ "jewel",
2365
+ "jewish",
2366
+ "jim",
2367
+ "jimmy",
2368
+ "joan",
2369
+ "job",
2370
+ "joe",
2371
+ "joel",
2372
+ "joey",
2373
+ "john",
2374
+ "johnny",
2375
+ "johnson",
2376
+ "join",
2377
+ "joined",
2378
+ "joke",
2379
+ "jon",
2380
+ "jonathan",
2381
+ "jones",
2382
+ "jordan",
2383
+ "joseph",
2384
+ "josh",
2385
+ "journalist",
2386
+ "journey",
2387
+ "joy",
2388
+ "jr",
2389
+ "judge",
2390
+ "judging",
2391
+ "judgment",
2392
+ "judy",
2393
+ "julia",
2394
+ "julian",
2395
+ "julie",
2396
+ "juliet",
2397
+ "july",
2398
+ "jump",
2399
+ "jumped",
2400
+ "jumping",
2401
+ "june",
2402
+ "jungle",
2403
+ "junior",
2404
+ "junk",
2405
+ "justice",
2406
+ "justify",
2407
+ "justin",
2408
+ "juvenile",
2409
+ "kane",
2410
+ "karate",
2411
+ "karen",
2412
+ "karloff",
2413
+ "kate",
2414
+ "kathy",
2415
+ "keaton",
2416
+ "keep",
2417
+ "keeping",
2418
+ "keith",
2419
+ "kelly",
2420
+ "ken",
2421
+ "kennedy",
2422
+ "kenneth",
2423
+ "kept",
2424
+ "kevin",
2425
+ "key",
2426
+ "khan",
2427
+ "kick",
2428
+ "kicked",
2429
+ "kicking",
2430
+ "kid",
2431
+ "kidding",
2432
+ "kidnapped",
2433
+ "kill",
2434
+ "killed",
2435
+ "killer",
2436
+ "killing",
2437
+ "kim",
2438
+ "kind",
2439
+ "kinda",
2440
+ "king",
2441
+ "kingdom",
2442
+ "kirk",
2443
+ "kiss",
2444
+ "kissing",
2445
+ "kitchen",
2446
+ "kitty",
2447
+ "knew",
2448
+ "knife",
2449
+ "knight",
2450
+ "knock",
2451
+ "knocked",
2452
+ "know",
2453
+ "knowing",
2454
+ "knowledge",
2455
+ "known",
2456
+ "kong",
2457
+ "korean",
2458
+ "kramer",
2459
+ "kubrick",
2460
+ "kudos",
2461
+ "kung",
2462
+ "kurt",
2463
+ "kyle",
2464
+ "la",
2465
+ "lab",
2466
+ "label",
2467
+ "labor",
2468
+ "lack",
2469
+ "lacked",
2470
+ "lacking",
2471
+ "lackluster",
2472
+ "lady",
2473
+ "laid",
2474
+ "lake",
2475
+ "lame",
2476
+ "lance",
2477
+ "land",
2478
+ "landing",
2479
+ "landscape",
2480
+ "lane",
2481
+ "language",
2482
+ "large",
2483
+ "largely",
2484
+ "larger",
2485
+ "larry",
2486
+ "last",
2487
+ "lasted",
2488
+ "late",
2489
+ "lately",
2490
+ "later",
2491
+ "latest",
2492
+ "latin",
2493
+ "latter",
2494
+ "laugh",
2495
+ "laughable",
2496
+ "laughably",
2497
+ "laughed",
2498
+ "laughing",
2499
+ "laughter",
2500
+ "laura",
2501
+ "laurel",
2502
+ "lauren",
2503
+ "law",
2504
+ "lawrence",
2505
+ "lawyer",
2506
+ "lay",
2507
+ "layer",
2508
+ "lazy",
2509
+ "le",
2510
+ "lead",
2511
+ "leader",
2512
+ "leading",
2513
+ "leaf",
2514
+ "league",
2515
+ "leap",
2516
+ "learn",
2517
+ "learned",
2518
+ "learning",
2519
+ "learns",
2520
+ "least",
2521
+ "leave",
2522
+ "leaving",
2523
+ "led",
2524
+ "lee",
2525
+ "left",
2526
+ "leg",
2527
+ "legacy",
2528
+ "legal",
2529
+ "legend",
2530
+ "legendary",
2531
+ "leigh",
2532
+ "lemmon",
2533
+ "length",
2534
+ "lengthy",
2535
+ "leo",
2536
+ "leonard",
2537
+ "lesbian",
2538
+ "leslie",
2539
+ "less",
2540
+ "lesser",
2541
+ "lesson",
2542
+ "let",
2543
+ "letter",
2544
+ "letting",
2545
+ "level",
2546
+ "lewis",
2547
+ "li",
2548
+ "liberal",
2549
+ "liberty",
2550
+ "library",
2551
+ "lie",
2552
+ "life",
2553
+ "lifebr",
2554
+ "lifeless",
2555
+ "lifestyle",
2556
+ "lifetime",
2557
+ "lift",
2558
+ "lifted",
2559
+ "light",
2560
+ "lighthearted",
2561
+ "lighting",
2562
+ "likable",
2563
+ "like",
2564
+ "liked",
2565
+ "likely",
2566
+ "likewise",
2567
+ "liking",
2568
+ "lily",
2569
+ "limit",
2570
+ "limited",
2571
+ "lincoln",
2572
+ "linda",
2573
+ "line",
2574
+ "liner",
2575
+ "link",
2576
+ "lion",
2577
+ "lip",
2578
+ "lisa",
2579
+ "list",
2580
+ "listed",
2581
+ "listen",
2582
+ "listening",
2583
+ "lit",
2584
+ "literally",
2585
+ "literary",
2586
+ "literature",
2587
+ "little",
2588
+ "live",
2589
+ "lived",
2590
+ "lively",
2591
+ "living",
2592
+ "lloyd",
2593
+ "load",
2594
+ "loaded",
2595
+ "local",
2596
+ "located",
2597
+ "location",
2598
+ "lock",
2599
+ "locked",
2600
+ "logic",
2601
+ "logical",
2602
+ "lol",
2603
+ "london",
2604
+ "lone",
2605
+ "loneliness",
2606
+ "lonely",
2607
+ "long",
2608
+ "longer",
2609
+ "look",
2610
+ "looked",
2611
+ "looking",
2612
+ "loose",
2613
+ "loosely",
2614
+ "lord",
2615
+ "los",
2616
+ "lose",
2617
+ "loser",
2618
+ "loses",
2619
+ "losing",
2620
+ "loss",
2621
+ "lost",
2622
+ "lot",
2623
+ "lou",
2624
+ "loud",
2625
+ "louis",
2626
+ "lousy",
2627
+ "lovable",
2628
+ "love",
2629
+ "loved",
2630
+ "lovely",
2631
+ "lover",
2632
+ "loving",
2633
+ "low",
2634
+ "lowbudget",
2635
+ "lower",
2636
+ "lowest",
2637
+ "loyal",
2638
+ "loyalty",
2639
+ "lucas",
2640
+ "luck",
2641
+ "luckily",
2642
+ "lucky",
2643
+ "lucy",
2644
+ "ludicrous",
2645
+ "lugosi",
2646
+ "luke",
2647
+ "lust",
2648
+ "lying",
2649
+ "lynch",
2650
+ "lyric",
2651
+ "macbeth",
2652
+ "machine",
2653
+ "macy",
2654
+ "mad",
2655
+ "made",
2656
+ "madebr",
2657
+ "madefortv",
2658
+ "madness",
2659
+ "madonna",
2660
+ "mafia",
2661
+ "magazine",
2662
+ "maggie",
2663
+ "magic",
2664
+ "magical",
2665
+ "magnificent",
2666
+ "maid",
2667
+ "mail",
2668
+ "main",
2669
+ "mainly",
2670
+ "mainstream",
2671
+ "maintain",
2672
+ "major",
2673
+ "majority",
2674
+ "make",
2675
+ "maker",
2676
+ "makeup",
2677
+ "making",
2678
+ "male",
2679
+ "man",
2680
+ "manage",
2681
+ "managed",
2682
+ "manager",
2683
+ "manages",
2684
+ "manhattan",
2685
+ "maniac",
2686
+ "manipulative",
2687
+ "mankind",
2688
+ "mann",
2689
+ "manner",
2690
+ "mansion",
2691
+ "many",
2692
+ "map",
2693
+ "mar",
2694
+ "march",
2695
+ "margaret",
2696
+ "maria",
2697
+ "marie",
2698
+ "marine",
2699
+ "mario",
2700
+ "marion",
2701
+ "mark",
2702
+ "market",
2703
+ "marketing",
2704
+ "marriage",
2705
+ "married",
2706
+ "marry",
2707
+ "marshall",
2708
+ "martha",
2709
+ "martial",
2710
+ "martin",
2711
+ "marty",
2712
+ "marvel",
2713
+ "marvelous",
2714
+ "mary",
2715
+ "mask",
2716
+ "mason",
2717
+ "mass",
2718
+ "massacre",
2719
+ "massive",
2720
+ "master",
2721
+ "masterful",
2722
+ "masterpiece",
2723
+ "match",
2724
+ "mate",
2725
+ "material",
2726
+ "matrix",
2727
+ "matt",
2728
+ "matter",
2729
+ "matthau",
2730
+ "matthew",
2731
+ "mature",
2732
+ "max",
2733
+ "may",
2734
+ "maybe",
2735
+ "mayhem",
2736
+ "mayor",
2737
+ "meal",
2738
+ "mean",
2739
+ "meaning",
2740
+ "meaningful",
2741
+ "meaningless",
2742
+ "meant",
2743
+ "meanwhile",
2744
+ "measure",
2745
+ "meat",
2746
+ "mebr",
2747
+ "medical",
2748
+ "mediocre",
2749
+ "medium",
2750
+ "meet",
2751
+ "meeting",
2752
+ "meg",
2753
+ "mel",
2754
+ "melodrama",
2755
+ "melodramatic",
2756
+ "member",
2757
+ "memorable",
2758
+ "memory",
2759
+ "men",
2760
+ "menace",
2761
+ "menacing",
2762
+ "mental",
2763
+ "mentally",
2764
+ "mention",
2765
+ "mentioned",
2766
+ "mentioning",
2767
+ "mere",
2768
+ "merely",
2769
+ "merit",
2770
+ "meryl",
2771
+ "mess",
2772
+ "message",
2773
+ "messed",
2774
+ "met",
2775
+ "metal",
2776
+ "metaphor",
2777
+ "method",
2778
+ "mexican",
2779
+ "mexico",
2780
+ "mgm",
2781
+ "michael",
2782
+ "michelle",
2783
+ "mickey",
2784
+ "mid",
2785
+ "middle",
2786
+ "middleaged",
2787
+ "midnight",
2788
+ "might",
2789
+ "mighty",
2790
+ "mike",
2791
+ "mild",
2792
+ "mildly",
2793
+ "mile",
2794
+ "military",
2795
+ "milk",
2796
+ "mill",
2797
+ "miller",
2798
+ "million",
2799
+ "milo",
2800
+ "min",
2801
+ "mind",
2802
+ "mindless",
2803
+ "mine",
2804
+ "mini",
2805
+ "minimal",
2806
+ "minimum",
2807
+ "miniseries",
2808
+ "minister",
2809
+ "minor",
2810
+ "minority",
2811
+ "minus",
2812
+ "minute",
2813
+ "minutesbr",
2814
+ "miracle",
2815
+ "mirror",
2816
+ "miscast",
2817
+ "miserable",
2818
+ "miserably",
2819
+ "misery",
2820
+ "misleading",
2821
+ "miss",
2822
+ "missed",
2823
+ "missile",
2824
+ "missing",
2825
+ "mission",
2826
+ "mistake",
2827
+ "mistaken",
2828
+ "mistress",
2829
+ "mitchell",
2830
+ "mitchum",
2831
+ "mix",
2832
+ "mixed",
2833
+ "mixture",
2834
+ "mm",
2835
+ "mob",
2836
+ "mobster",
2837
+ "mode",
2838
+ "model",
2839
+ "modern",
2840
+ "modest",
2841
+ "molly",
2842
+ "mom",
2843
+ "moment",
2844
+ "money",
2845
+ "monk",
2846
+ "monkey",
2847
+ "monologue",
2848
+ "monster",
2849
+ "montage",
2850
+ "montgomery",
2851
+ "month",
2852
+ "monty",
2853
+ "mood",
2854
+ "moody",
2855
+ "moon",
2856
+ "moore",
2857
+ "moral",
2858
+ "morality",
2859
+ "morebr",
2860
+ "moreover",
2861
+ "morgan",
2862
+ "mormon",
2863
+ "morning",
2864
+ "moron",
2865
+ "moronic",
2866
+ "morris",
2867
+ "mostly",
2868
+ "mother",
2869
+ "motif",
2870
+ "motion",
2871
+ "motivation",
2872
+ "motorcycle",
2873
+ "mountain",
2874
+ "mouse",
2875
+ "mouth",
2876
+ "move",
2877
+ "moved",
2878
+ "movement",
2879
+ "movie",
2880
+ "moviebr",
2881
+ "moviegoer",
2882
+ "moviesbr",
2883
+ "moving",
2884
+ "mr",
2885
+ "mstk",
2886
+ "mtv",
2887
+ "much",
2888
+ "muchbr",
2889
+ "muddled",
2890
+ "multiple",
2891
+ "mummy",
2892
+ "mundane",
2893
+ "muppet",
2894
+ "muppets",
2895
+ "murder",
2896
+ "murdered",
2897
+ "murderer",
2898
+ "murdering",
2899
+ "murderous",
2900
+ "murphy",
2901
+ "murray",
2902
+ "museum",
2903
+ "music",
2904
+ "musical",
2905
+ "musician",
2906
+ "muslim",
2907
+ "must",
2908
+ "mustsee",
2909
+ "mutant",
2910
+ "mute",
2911
+ "myers",
2912
+ "mysterious",
2913
+ "mystery",
2914
+ "myth",
2915
+ "na",
2916
+ "nail",
2917
+ "naive",
2918
+ "naked",
2919
+ "name",
2920
+ "named",
2921
+ "namely",
2922
+ "nancy",
2923
+ "narration",
2924
+ "narrative",
2925
+ "narrator",
2926
+ "nasty",
2927
+ "natalie",
2928
+ "nation",
2929
+ "national",
2930
+ "native",
2931
+ "natural",
2932
+ "naturally",
2933
+ "nature",
2934
+ "navy",
2935
+ "nazi",
2936
+ "nbc",
2937
+ "nd",
2938
+ "near",
2939
+ "nearby",
2940
+ "nearly",
2941
+ "neat",
2942
+ "necessarily",
2943
+ "necessary",
2944
+ "neck",
2945
+ "ned",
2946
+ "need",
2947
+ "needed",
2948
+ "needless",
2949
+ "negative",
2950
+ "neighbor",
2951
+ "neighborhood",
2952
+ "neil",
2953
+ "neither",
2954
+ "nelson",
2955
+ "nemesis",
2956
+ "nephew",
2957
+ "nerd",
2958
+ "nerve",
2959
+ "nervous",
2960
+ "net",
2961
+ "network",
2962
+ "never",
2963
+ "nevertheless",
2964
+ "new",
2965
+ "newcomer",
2966
+ "newly",
2967
+ "newman",
2968
+ "news",
2969
+ "newspaper",
2970
+ "next",
2971
+ "nice",
2972
+ "nicely",
2973
+ "nicholas",
2974
+ "nicholson",
2975
+ "nick",
2976
+ "nicole",
2977
+ "niece",
2978
+ "night",
2979
+ "nightclub",
2980
+ "nightmare",
2981
+ "nine",
2982
+ "ninety",
2983
+ "ninja",
2984
+ "niro",
2985
+ "noble",
2986
+ "nobody",
2987
+ "nod",
2988
+ "noir",
2989
+ "noise",
2990
+ "nominated",
2991
+ "nomination",
2992
+ "non",
2993
+ "none",
2994
+ "nonetheless",
2995
+ "nonexistent",
2996
+ "nonsense",
2997
+ "nonsensical",
2998
+ "nonstop",
2999
+ "noone",
3000
+ "normal",
3001
+ "normally",
3002
+ "norman",
3003
+ "norris",
3004
+ "north",
3005
+ "northern",
3006
+ "nose",
3007
+ "nostalgia",
3008
+ "nostalgic",
3009
+ "notable",
3010
+ "notably",
3011
+ "notbr",
3012
+ "notch",
3013
+ "note",
3014
+ "noted",
3015
+ "nothing",
3016
+ "notice",
3017
+ "noticed",
3018
+ "notion",
3019
+ "notorious",
3020
+ "novel",
3021
+ "nowadays",
3022
+ "nowbr",
3023
+ "nowhere",
3024
+ "nuance",
3025
+ "nuclear",
3026
+ "nude",
3027
+ "nudity",
3028
+ "number",
3029
+ "numerous",
3030
+ "nun",
3031
+ "nurse",
3032
+ "nut",
3033
+ "nyc",
3034
+ "object",
3035
+ "objective",
3036
+ "obligatory",
3037
+ "obnoxious",
3038
+ "obscure",
3039
+ "observation",
3040
+ "obsessed",
3041
+ "obsession",
3042
+ "obvious",
3043
+ "obviously",
3044
+ "occasion",
3045
+ "occasional",
3046
+ "occasionally",
3047
+ "occur",
3048
+ "occurred",
3049
+ "occurs",
3050
+ "ocean",
3051
+ "odd",
3052
+ "oddly",
3053
+ "odds",
3054
+ "odyssey",
3055
+ "offbr",
3056
+ "offended",
3057
+ "offensive",
3058
+ "offer",
3059
+ "offered",
3060
+ "offering",
3061
+ "office",
3062
+ "officer",
3063
+ "official",
3064
+ "often",
3065
+ "oh",
3066
+ "oil",
3067
+ "ok",
3068
+ "okay",
3069
+ "old",
3070
+ "older",
3071
+ "oliver",
3072
+ "olivia",
3073
+ "olivier",
3074
+ "onbr",
3075
+ "one",
3076
+ "onebr",
3077
+ "onedimensional",
3078
+ "oneliners",
3079
+ "online",
3080
+ "onscreen",
3081
+ "onto",
3082
+ "open",
3083
+ "opened",
3084
+ "opening",
3085
+ "opera",
3086
+ "operation",
3087
+ "opinion",
3088
+ "opportunity",
3089
+ "opposed",
3090
+ "opposite",
3091
+ "option",
3092
+ "orange",
3093
+ "order",
3094
+ "ordered",
3095
+ "ordinary",
3096
+ "origin",
3097
+ "original",
3098
+ "originality",
3099
+ "originally",
3100
+ "oscar",
3101
+ "otherbr",
3102
+ "others",
3103
+ "otherwise",
3104
+ "ought",
3105
+ "outbr",
3106
+ "outcome",
3107
+ "outer",
3108
+ "outfit",
3109
+ "outing",
3110
+ "outrageous",
3111
+ "outside",
3112
+ "outstanding",
3113
+ "overacting",
3114
+ "overall",
3115
+ "overcome",
3116
+ "overdone",
3117
+ "overlong",
3118
+ "overlook",
3119
+ "overlooked",
3120
+ "overly",
3121
+ "overrated",
3122
+ "overthetop",
3123
+ "overwhelming",
3124
+ "owen",
3125
+ "owned",
3126
+ "owner",
3127
+ "owns",
3128
+ "oz",
3129
+ "pace",
3130
+ "paced",
3131
+ "pacing",
3132
+ "pacino",
3133
+ "pack",
3134
+ "package",
3135
+ "packed",
3136
+ "page",
3137
+ "paid",
3138
+ "pain",
3139
+ "painful",
3140
+ "painfully",
3141
+ "paint",
3142
+ "painted",
3143
+ "painter",
3144
+ "painting",
3145
+ "pair",
3146
+ "pal",
3147
+ "pale",
3148
+ "pan",
3149
+ "panic",
3150
+ "pant",
3151
+ "paper",
3152
+ "par",
3153
+ "parade",
3154
+ "paradise",
3155
+ "parallel",
3156
+ "paranoia",
3157
+ "parent",
3158
+ "paris",
3159
+ "park",
3160
+ "parker",
3161
+ "parody",
3162
+ "part",
3163
+ "particular",
3164
+ "particularly",
3165
+ "partly",
3166
+ "partner",
3167
+ "party",
3168
+ "pas",
3169
+ "pass",
3170
+ "passable",
3171
+ "passage",
3172
+ "passed",
3173
+ "passenger",
3174
+ "passing",
3175
+ "passion",
3176
+ "passionate",
3177
+ "past",
3178
+ "pat",
3179
+ "path",
3180
+ "pathetic",
3181
+ "patience",
3182
+ "patient",
3183
+ "patricia",
3184
+ "patrick",
3185
+ "pattern",
3186
+ "paul",
3187
+ "pause",
3188
+ "pay",
3189
+ "paying",
3190
+ "peace",
3191
+ "peak",
3192
+ "pearl",
3193
+ "penguin",
3194
+ "penn",
3195
+ "penny",
3196
+ "people",
3197
+ "peoplebr",
3198
+ "per",
3199
+ "perception",
3200
+ "perfect",
3201
+ "perfection",
3202
+ "perfectly",
3203
+ "perform",
3204
+ "performance",
3205
+ "performed",
3206
+ "performer",
3207
+ "performing",
3208
+ "performs",
3209
+ "perhaps",
3210
+ "period",
3211
+ "perry",
3212
+ "person",
3213
+ "persona",
3214
+ "personal",
3215
+ "personality",
3216
+ "personally",
3217
+ "perspective",
3218
+ "pet",
3219
+ "pete",
3220
+ "peter",
3221
+ "petty",
3222
+ "pg",
3223
+ "phantom",
3224
+ "phenomenon",
3225
+ "phil",
3226
+ "philip",
3227
+ "phillips",
3228
+ "philosophical",
3229
+ "philosophy",
3230
+ "phone",
3231
+ "phony",
3232
+ "photo",
3233
+ "photograph",
3234
+ "photographed",
3235
+ "photographer",
3236
+ "photography",
3237
+ "phrase",
3238
+ "physical",
3239
+ "physically",
3240
+ "piano",
3241
+ "pick",
3242
+ "picked",
3243
+ "picking",
3244
+ "picture",
3245
+ "pie",
3246
+ "piece",
3247
+ "pig",
3248
+ "pile",
3249
+ "pilot",
3250
+ "pink",
3251
+ "pirate",
3252
+ "pit",
3253
+ "pitch",
3254
+ "pitiful",
3255
+ "pitt",
3256
+ "pity",
3257
+ "place",
3258
+ "placed",
3259
+ "plague",
3260
+ "plain",
3261
+ "plan",
3262
+ "plane",
3263
+ "planet",
3264
+ "planned",
3265
+ "planning",
3266
+ "plant",
3267
+ "plastic",
3268
+ "plausible",
3269
+ "play",
3270
+ "playboy",
3271
+ "played",
3272
+ "player",
3273
+ "playing",
3274
+ "pleasant",
3275
+ "pleasantly",
3276
+ "please",
3277
+ "pleased",
3278
+ "pleasure",
3279
+ "plenty",
3280
+ "plight",
3281
+ "plot",
3282
+ "plotbr",
3283
+ "plus",
3284
+ "poem",
3285
+ "poetic",
3286
+ "poetry",
3287
+ "poignant",
3288
+ "point",
3289
+ "pointed",
3290
+ "pointless",
3291
+ "poison",
3292
+ "police",
3293
+ "policeman",
3294
+ "polish",
3295
+ "polished",
3296
+ "political",
3297
+ "politically",
3298
+ "politician",
3299
+ "politics",
3300
+ "pool",
3301
+ "poor",
3302
+ "poorly",
3303
+ "pop",
3304
+ "popcorn",
3305
+ "popular",
3306
+ "popularity",
3307
+ "population",
3308
+ "porn",
3309
+ "porno",
3310
+ "portion",
3311
+ "portrait",
3312
+ "portray",
3313
+ "portrayal",
3314
+ "portrayed",
3315
+ "portraying",
3316
+ "portrays",
3317
+ "pose",
3318
+ "position",
3319
+ "positive",
3320
+ "positively",
3321
+ "possessed",
3322
+ "possession",
3323
+ "possibility",
3324
+ "possible",
3325
+ "possibly",
3326
+ "post",
3327
+ "posted",
3328
+ "poster",
3329
+ "pot",
3330
+ "potential",
3331
+ "potentially",
3332
+ "pound",
3333
+ "poverty",
3334
+ "powell",
3335
+ "power",
3336
+ "powerful",
3337
+ "practically",
3338
+ "practice",
3339
+ "praise",
3340
+ "prank",
3341
+ "precious",
3342
+ "precisely",
3343
+ "predator",
3344
+ "predecessor",
3345
+ "predictable",
3346
+ "prefer",
3347
+ "pregnant",
3348
+ "prejudice",
3349
+ "premiere",
3350
+ "premise",
3351
+ "prepare",
3352
+ "prepared",
3353
+ "presence",
3354
+ "present",
3355
+ "presentation",
3356
+ "presented",
3357
+ "presenting",
3358
+ "president",
3359
+ "press",
3360
+ "pressure",
3361
+ "presumably",
3362
+ "pretend",
3363
+ "pretending",
3364
+ "pretentious",
3365
+ "pretty",
3366
+ "prevent",
3367
+ "preview",
3368
+ "previous",
3369
+ "previously",
3370
+ "prey",
3371
+ "price",
3372
+ "priceless",
3373
+ "pride",
3374
+ "priest",
3375
+ "primarily",
3376
+ "primary",
3377
+ "prime",
3378
+ "primitive",
3379
+ "prince",
3380
+ "princess",
3381
+ "principal",
3382
+ "principle",
3383
+ "print",
3384
+ "prior",
3385
+ "prison",
3386
+ "prisoner",
3387
+ "private",
3388
+ "prize",
3389
+ "pro",
3390
+ "probably",
3391
+ "problem",
3392
+ "proceeding",
3393
+ "proceeds",
3394
+ "process",
3395
+ "produce",
3396
+ "produced",
3397
+ "producer",
3398
+ "producing",
3399
+ "product",
3400
+ "production",
3401
+ "prof",
3402
+ "profanity",
3403
+ "professional",
3404
+ "professor",
3405
+ "profound",
3406
+ "program",
3407
+ "programme",
3408
+ "progress",
3409
+ "project",
3410
+ "prom",
3411
+ "prominent",
3412
+ "promise",
3413
+ "promised",
3414
+ "promising",
3415
+ "proof",
3416
+ "prop",
3417
+ "propaganda",
3418
+ "proper",
3419
+ "properly",
3420
+ "property",
3421
+ "prostitute",
3422
+ "protagonist",
3423
+ "protect",
3424
+ "proud",
3425
+ "prove",
3426
+ "proved",
3427
+ "provide",
3428
+ "provided",
3429
+ "provides",
3430
+ "providing",
3431
+ "provoking",
3432
+ "psychiatrist",
3433
+ "psychic",
3434
+ "psycho",
3435
+ "psychological",
3436
+ "psychopath",
3437
+ "psychotic",
3438
+ "public",
3439
+ "pull",
3440
+ "pulled",
3441
+ "pulling",
3442
+ "pulp",
3443
+ "pun",
3444
+ "punch",
3445
+ "punishment",
3446
+ "punk",
3447
+ "puppet",
3448
+ "purchase",
3449
+ "purchased",
3450
+ "pure",
3451
+ "purely",
3452
+ "purple",
3453
+ "purpose",
3454
+ "pursuit",
3455
+ "push",
3456
+ "pushed",
3457
+ "pushing",
3458
+ "put",
3459
+ "putting",
3460
+ "puzzle",
3461
+ "quaid",
3462
+ "quality",
3463
+ "quarter",
3464
+ "queen",
3465
+ "quest",
3466
+ "question",
3467
+ "questionable",
3468
+ "quick",
3469
+ "quickly",
3470
+ "quiet",
3471
+ "quietly",
3472
+ "quinn",
3473
+ "quirky",
3474
+ "quit",
3475
+ "quite",
3476
+ "quote",
3477
+ "rabbit",
3478
+ "race",
3479
+ "rachel",
3480
+ "racial",
3481
+ "racism",
3482
+ "racist",
3483
+ "radio",
3484
+ "rage",
3485
+ "rain",
3486
+ "raise",
3487
+ "raised",
3488
+ "raising",
3489
+ "ralph",
3490
+ "ran",
3491
+ "random",
3492
+ "randomly",
3493
+ "randy",
3494
+ "range",
3495
+ "ranger",
3496
+ "rank",
3497
+ "rap",
3498
+ "rape",
3499
+ "raped",
3500
+ "rare",
3501
+ "rarely",
3502
+ "rat",
3503
+ "rate",
3504
+ "rated",
3505
+ "rather",
3506
+ "rating",
3507
+ "raw",
3508
+ "ray",
3509
+ "raymond",
3510
+ "rd",
3511
+ "reach",
3512
+ "reached",
3513
+ "reaching",
3514
+ "react",
3515
+ "reaction",
3516
+ "read",
3517
+ "reader",
3518
+ "reading",
3519
+ "ready",
3520
+ "real",
3521
+ "realise",
3522
+ "realised",
3523
+ "realism",
3524
+ "realistic",
3525
+ "reality",
3526
+ "realize",
3527
+ "realized",
3528
+ "realizes",
3529
+ "realizing",
3530
+ "reallife",
3531
+ "really",
3532
+ "realm",
3533
+ "reason",
3534
+ "reasonable",
3535
+ "reasonably",
3536
+ "rebel",
3537
+ "recall",
3538
+ "receive",
3539
+ "received",
3540
+ "receives",
3541
+ "recent",
3542
+ "recently",
3543
+ "recognition",
3544
+ "recognize",
3545
+ "recognized",
3546
+ "recommend",
3547
+ "recommendation",
3548
+ "recommended",
3549
+ "record",
3550
+ "recorded",
3551
+ "recording",
3552
+ "recycled",
3553
+ "red",
3554
+ "redeeming",
3555
+ "redemption",
3556
+ "redneck",
3557
+ "reduced",
3558
+ "reed",
3559
+ "reef",
3560
+ "reel",
3561
+ "refer",
3562
+ "reference",
3563
+ "referred",
3564
+ "reflect",
3565
+ "reflection",
3566
+ "refreshing",
3567
+ "refuse",
3568
+ "refused",
3569
+ "regard",
3570
+ "regarded",
3571
+ "regarding",
3572
+ "regardless",
3573
+ "region",
3574
+ "regret",
3575
+ "regular",
3576
+ "reign",
3577
+ "reject",
3578
+ "rejected",
3579
+ "relate",
3580
+ "related",
3581
+ "relation",
3582
+ "relationship",
3583
+ "relative",
3584
+ "relatively",
3585
+ "relax",
3586
+ "release",
3587
+ "released",
3588
+ "relevant",
3589
+ "relief",
3590
+ "relies",
3591
+ "religion",
3592
+ "religious",
3593
+ "rely",
3594
+ "remade",
3595
+ "remain",
3596
+ "remained",
3597
+ "remaining",
3598
+ "remains",
3599
+ "remake",
3600
+ "remark",
3601
+ "remarkable",
3602
+ "remarkably",
3603
+ "remember",
3604
+ "remembered",
3605
+ "remind",
3606
+ "reminded",
3607
+ "reminds",
3608
+ "reminiscent",
3609
+ "remote",
3610
+ "remotely",
3611
+ "remove",
3612
+ "removed",
3613
+ "rendered",
3614
+ "rendition",
3615
+ "rent",
3616
+ "rental",
3617
+ "rented",
3618
+ "renting",
3619
+ "repeat",
3620
+ "repeated",
3621
+ "repeatedly",
3622
+ "repeating",
3623
+ "repetitive",
3624
+ "replace",
3625
+ "replaced",
3626
+ "reply",
3627
+ "report",
3628
+ "reporter",
3629
+ "represent",
3630
+ "representation",
3631
+ "represented",
3632
+ "represents",
3633
+ "reputation",
3634
+ "require",
3635
+ "required",
3636
+ "requires",
3637
+ "rerun",
3638
+ "rescue",
3639
+ "research",
3640
+ "resemblance",
3641
+ "resemble",
3642
+ "resembles",
3643
+ "resident",
3644
+ "resist",
3645
+ "resolution",
3646
+ "resort",
3647
+ "resource",
3648
+ "respect",
3649
+ "respectable",
3650
+ "respected",
3651
+ "respective",
3652
+ "response",
3653
+ "responsibility",
3654
+ "responsible",
3655
+ "rest",
3656
+ "restaurant",
3657
+ "restored",
3658
+ "result",
3659
+ "resulting",
3660
+ "retarded",
3661
+ "retired",
3662
+ "return",
3663
+ "returned",
3664
+ "returning",
3665
+ "reunion",
3666
+ "reveal",
3667
+ "revealed",
3668
+ "revealing",
3669
+ "reveals",
3670
+ "revelation",
3671
+ "revenge",
3672
+ "review",
3673
+ "reviewer",
3674
+ "revolution",
3675
+ "revolutionary",
3676
+ "revolves",
3677
+ "reward",
3678
+ "rex",
3679
+ "reynolds",
3680
+ "rhythm",
3681
+ "rich",
3682
+ "richard",
3683
+ "richards",
3684
+ "rick",
3685
+ "rid",
3686
+ "ride",
3687
+ "rider",
3688
+ "ridiculous",
3689
+ "ridiculously",
3690
+ "riding",
3691
+ "rifle",
3692
+ "right",
3693
+ "rightbr",
3694
+ "ring",
3695
+ "riot",
3696
+ "rip",
3697
+ "ripoff",
3698
+ "ripped",
3699
+ "rise",
3700
+ "rising",
3701
+ "risk",
3702
+ "rita",
3703
+ "ritter",
3704
+ "ritual",
3705
+ "rival",
3706
+ "river",
3707
+ "riveting",
3708
+ "road",
3709
+ "rob",
3710
+ "robber",
3711
+ "robbery",
3712
+ "robbins",
3713
+ "robert",
3714
+ "robin",
3715
+ "robinson",
3716
+ "robot",
3717
+ "rochester",
3718
+ "rock",
3719
+ "rocket",
3720
+ "rocky",
3721
+ "rod",
3722
+ "roger",
3723
+ "rogers",
3724
+ "role",
3725
+ "roll",
3726
+ "rolled",
3727
+ "rolling",
3728
+ "roman",
3729
+ "romance",
3730
+ "romantic",
3731
+ "rome",
3732
+ "romp",
3733
+ "ron",
3734
+ "ronald",
3735
+ "roof",
3736
+ "room",
3737
+ "roommate",
3738
+ "root",
3739
+ "rope",
3740
+ "rose",
3741
+ "ross",
3742
+ "rotten",
3743
+ "rough",
3744
+ "round",
3745
+ "route",
3746
+ "routine",
3747
+ "row",
3748
+ "roy",
3749
+ "royal",
3750
+ "rubber",
3751
+ "rubbish",
3752
+ "ruby",
3753
+ "rude",
3754
+ "ruin",
3755
+ "ruined",
3756
+ "rule",
3757
+ "run",
3758
+ "runner",
3759
+ "running",
3760
+ "rupert",
3761
+ "rural",
3762
+ "rush",
3763
+ "rushed",
3764
+ "russell",
3765
+ "russia",
3766
+ "russian",
3767
+ "ruth",
3768
+ "ruthless",
3769
+ "ryan",
3770
+ "sacrifice",
3771
+ "sad",
3772
+ "sadistic",
3773
+ "sadly",
3774
+ "sadness",
3775
+ "safe",
3776
+ "safety",
3777
+ "saga",
3778
+ "said",
3779
+ "sailor",
3780
+ "saint",
3781
+ "sake",
3782
+ "sale",
3783
+ "sally",
3784
+ "salman",
3785
+ "sam",
3786
+ "samuel",
3787
+ "samurai",
3788
+ "san",
3789
+ "sand",
3790
+ "sandler",
3791
+ "sandra",
3792
+ "santa",
3793
+ "sappy",
3794
+ "sarah",
3795
+ "sarandon",
3796
+ "sat",
3797
+ "satan",
3798
+ "satire",
3799
+ "satisfied",
3800
+ "satisfy",
3801
+ "satisfying",
3802
+ "saturday",
3803
+ "savage",
3804
+ "save",
3805
+ "saved",
3806
+ "saving",
3807
+ "saw",
3808
+ "say",
3809
+ "saying",
3810
+ "sbr",
3811
+ "scale",
3812
+ "scare",
3813
+ "scarecrow",
3814
+ "scared",
3815
+ "scarlett",
3816
+ "scary",
3817
+ "scenario",
3818
+ "scene",
3819
+ "scenebr",
3820
+ "scenery",
3821
+ "scenesbr",
3822
+ "scheme",
3823
+ "school",
3824
+ "science",
3825
+ "scientific",
3826
+ "scientist",
3827
+ "scifi",
3828
+ "scope",
3829
+ "score",
3830
+ "scott",
3831
+ "scottish",
3832
+ "scratch",
3833
+ "scream",
3834
+ "screaming",
3835
+ "screen",
3836
+ "screenbr",
3837
+ "screening",
3838
+ "screenplay",
3839
+ "screenwriter",
3840
+ "screw",
3841
+ "script",
3842
+ "scripted",
3843
+ "scriptwriter",
3844
+ "sea",
3845
+ "seagal",
3846
+ "sean",
3847
+ "search",
3848
+ "searching",
3849
+ "season",
3850
+ "seat",
3851
+ "second",
3852
+ "secondary",
3853
+ "secondly",
3854
+ "secret",
3855
+ "secretary",
3856
+ "secretly",
3857
+ "section",
3858
+ "security",
3859
+ "see",
3860
+ "seed",
3861
+ "seeing",
3862
+ "seek",
3863
+ "seeking",
3864
+ "seem",
3865
+ "seemed",
3866
+ "seemingly",
3867
+ "seems",
3868
+ "seen",
3869
+ "seenbr",
3870
+ "segment",
3871
+ "seldom",
3872
+ "selection",
3873
+ "self",
3874
+ "selfish",
3875
+ "sell",
3876
+ "seller",
3877
+ "selling",
3878
+ "send",
3879
+ "sending",
3880
+ "sends",
3881
+ "sens",
3882
+ "sense",
3883
+ "senseless",
3884
+ "sensibility",
3885
+ "sensitive",
3886
+ "sent",
3887
+ "sentence",
3888
+ "sentiment",
3889
+ "sentimental",
3890
+ "separate",
3891
+ "sequel",
3892
+ "sequence",
3893
+ "serf",
3894
+ "sergeant",
3895
+ "serial",
3896
+ "series",
3897
+ "seriesbr",
3898
+ "serious",
3899
+ "seriously",
3900
+ "servant",
3901
+ "serve",
3902
+ "served",
3903
+ "service",
3904
+ "serving",
3905
+ "session",
3906
+ "set",
3907
+ "setting",
3908
+ "settle",
3909
+ "setup",
3910
+ "seven",
3911
+ "seventy",
3912
+ "several",
3913
+ "severe",
3914
+ "severely",
3915
+ "sex",
3916
+ "sexual",
3917
+ "sexuality",
3918
+ "sexually",
3919
+ "sexy",
3920
+ "shade",
3921
+ "shadow",
3922
+ "shake",
3923
+ "shakespeare",
3924
+ "shall",
3925
+ "shallow",
3926
+ "shame",
3927
+ "shape",
3928
+ "share",
3929
+ "shared",
3930
+ "shark",
3931
+ "sharp",
3932
+ "shaw",
3933
+ "shed",
3934
+ "sheen",
3935
+ "sheer",
3936
+ "shelf",
3937
+ "shell",
3938
+ "sheriff",
3939
+ "shes",
3940
+ "shift",
3941
+ "shine",
3942
+ "shining",
3943
+ "ship",
3944
+ "shirley",
3945
+ "shirt",
3946
+ "shock",
3947
+ "shocked",
3948
+ "shocking",
3949
+ "shoddy",
3950
+ "shoe",
3951
+ "shoot",
3952
+ "shooting",
3953
+ "shootout",
3954
+ "shop",
3955
+ "shore",
3956
+ "short",
3957
+ "shortcoming",
3958
+ "shortly",
3959
+ "shot",
3960
+ "shoulder",
3961
+ "shouldnt",
3962
+ "shouldve",
3963
+ "shout",
3964
+ "shouting",
3965
+ "show",
3966
+ "showbr",
3967
+ "showcase",
3968
+ "showdown",
3969
+ "showed",
3970
+ "shower",
3971
+ "showing",
3972
+ "shown",
3973
+ "shut",
3974
+ "shy",
3975
+ "sibling",
3976
+ "sick",
3977
+ "side",
3978
+ "sidekick",
3979
+ "sidney",
3980
+ "sight",
3981
+ "sign",
3982
+ "signed",
3983
+ "significance",
3984
+ "significant",
3985
+ "silence",
3986
+ "silent",
3987
+ "silliness",
3988
+ "silly",
3989
+ "silver",
3990
+ "similar",
3991
+ "similarity",
3992
+ "similarly",
3993
+ "simmons",
3994
+ "simon",
3995
+ "simple",
3996
+ "simplicity",
3997
+ "simplistic",
3998
+ "simply",
3999
+ "simpson",
4000
+ "simultaneously",
4001
+ "sin",
4002
+ "sinatra",
4003
+ "since",
4004
+ "sincere",
4005
+ "sing",
4006
+ "singer",
4007
+ "singing",
4008
+ "single",
4009
+ "sings",
4010
+ "sinister",
4011
+ "sink",
4012
+ "sir",
4013
+ "sister",
4014
+ "sit",
4015
+ "sitcom",
4016
+ "site",
4017
+ "sits",
4018
+ "sitting",
4019
+ "situation",
4020
+ "six",
4021
+ "sixty",
4022
+ "size",
4023
+ "skeleton",
4024
+ "sketch",
4025
+ "skill",
4026
+ "skin",
4027
+ "skip",
4028
+ "skit",
4029
+ "skull",
4030
+ "sky",
4031
+ "slap",
4032
+ "slapstick",
4033
+ "slasher",
4034
+ "slaughter",
4035
+ "slave",
4036
+ "sleaze",
4037
+ "sleazy",
4038
+ "sleep",
4039
+ "sleeping",
4040
+ "slice",
4041
+ "slick",
4042
+ "slight",
4043
+ "slightest",
4044
+ "slightly",
4045
+ "slip",
4046
+ "sloppy",
4047
+ "slow",
4048
+ "slowly",
4049
+ "small",
4050
+ "smaller",
4051
+ "smart",
4052
+ "smell",
4053
+ "smile",
4054
+ "smiling",
4055
+ "smith",
4056
+ "smoke",
4057
+ "smoking",
4058
+ "smooth",
4059
+ "snake",
4060
+ "sneak",
4061
+ "snipe",
4062
+ "snow",
4063
+ "snowman",
4064
+ "soap",
4065
+ "socalled",
4066
+ "soccer",
4067
+ "social",
4068
+ "society",
4069
+ "soft",
4070
+ "softcore",
4071
+ "sold",
4072
+ "soldier",
4073
+ "sole",
4074
+ "solely",
4075
+ "solid",
4076
+ "solo",
4077
+ "solution",
4078
+ "solve",
4079
+ "somebody",
4080
+ "someday",
4081
+ "somehow",
4082
+ "someone",
4083
+ "something",
4084
+ "sometime",
4085
+ "sometimes",
4086
+ "somewhat",
4087
+ "somewhere",
4088
+ "son",
4089
+ "song",
4090
+ "soon",
4091
+ "sophisticated",
4092
+ "soprano",
4093
+ "sorry",
4094
+ "sort",
4095
+ "soul",
4096
+ "sound",
4097
+ "sounded",
4098
+ "sounding",
4099
+ "soundtrack",
4100
+ "source",
4101
+ "south",
4102
+ "southern",
4103
+ "soviet",
4104
+ "space",
4105
+ "spaceship",
4106
+ "spacey",
4107
+ "spade",
4108
+ "spaghetti",
4109
+ "spain",
4110
+ "span",
4111
+ "spanish",
4112
+ "spare",
4113
+ "spark",
4114
+ "speak",
4115
+ "speaking",
4116
+ "speaks",
4117
+ "special",
4118
+ "specially",
4119
+ "specie",
4120
+ "specific",
4121
+ "specifically",
4122
+ "spectacle",
4123
+ "spectacular",
4124
+ "speech",
4125
+ "speed",
4126
+ "spell",
4127
+ "spend",
4128
+ "spending",
4129
+ "spends",
4130
+ "spent",
4131
+ "spider",
4132
+ "spielberg",
4133
+ "spike",
4134
+ "spin",
4135
+ "spiral",
4136
+ "spirit",
4137
+ "spirited",
4138
+ "spiritual",
4139
+ "spite",
4140
+ "splatter",
4141
+ "splendid",
4142
+ "split",
4143
+ "spock",
4144
+ "spoil",
4145
+ "spoiled",
4146
+ "spoiler",
4147
+ "spoilersbr",
4148
+ "spoke",
4149
+ "spoken",
4150
+ "spoof",
4151
+ "spooky",
4152
+ "sport",
4153
+ "spot",
4154
+ "spread",
4155
+ "spring",
4156
+ "spy",
4157
+ "squad",
4158
+ "square",
4159
+ "st",
4160
+ "stab",
4161
+ "staff",
4162
+ "stage",
4163
+ "staged",
4164
+ "stake",
4165
+ "stale",
4166
+ "stan",
4167
+ "stand",
4168
+ "standard",
4169
+ "standing",
4170
+ "standout",
4171
+ "standup",
4172
+ "stanley",
4173
+ "stanwyck",
4174
+ "star",
4175
+ "stare",
4176
+ "staring",
4177
+ "stark",
4178
+ "starred",
4179
+ "starring",
4180
+ "start",
4181
+ "started",
4182
+ "starting",
4183
+ "state",
4184
+ "stated",
4185
+ "statement",
4186
+ "static",
4187
+ "station",
4188
+ "statue",
4189
+ "status",
4190
+ "stay",
4191
+ "stayed",
4192
+ "staying",
4193
+ "steal",
4194
+ "stealing",
4195
+ "steel",
4196
+ "stellar",
4197
+ "step",
4198
+ "stephen",
4199
+ "stereotype",
4200
+ "stereotypical",
4201
+ "steve",
4202
+ "steven",
4203
+ "stevens",
4204
+ "stewart",
4205
+ "stick",
4206
+ "stiff",
4207
+ "still",
4208
+ "stiller",
4209
+ "stilted",
4210
+ "stink",
4211
+ "stinker",
4212
+ "stock",
4213
+ "stole",
4214
+ "stolen",
4215
+ "stomach",
4216
+ "stone",
4217
+ "stood",
4218
+ "stooge",
4219
+ "stop",
4220
+ "stopped",
4221
+ "store",
4222
+ "storm",
4223
+ "story",
4224
+ "storybr",
4225
+ "storyline",
4226
+ "storytelling",
4227
+ "straight",
4228
+ "straightforward",
4229
+ "stranded",
4230
+ "strange",
4231
+ "strangely",
4232
+ "stranger",
4233
+ "streep",
4234
+ "street",
4235
+ "streisand",
4236
+ "strength",
4237
+ "stress",
4238
+ "stretch",
4239
+ "strictly",
4240
+ "strike",
4241
+ "striking",
4242
+ "string",
4243
+ "strip",
4244
+ "stroke",
4245
+ "strong",
4246
+ "stronger",
4247
+ "strongest",
4248
+ "strongly",
4249
+ "struck",
4250
+ "structure",
4251
+ "struggle",
4252
+ "struggling",
4253
+ "stuart",
4254
+ "stuck",
4255
+ "student",
4256
+ "studio",
4257
+ "study",
4258
+ "studying",
4259
+ "stuff",
4260
+ "stumble",
4261
+ "stumbled",
4262
+ "stunned",
4263
+ "stunning",
4264
+ "stunt",
4265
+ "stupid",
4266
+ "stupidity",
4267
+ "style",
4268
+ "stylish",
4269
+ "sub",
4270
+ "subject",
4271
+ "subjected",
4272
+ "subpar",
4273
+ "subplot",
4274
+ "subplots",
4275
+ "subsequent",
4276
+ "substance",
4277
+ "subtitle",
4278
+ "subtle",
4279
+ "subtlety",
4280
+ "succeed",
4281
+ "succeeded",
4282
+ "succeeds",
4283
+ "success",
4284
+ "successful",
4285
+ "successfully",
4286
+ "suck",
4287
+ "sucked",
4288
+ "sudden",
4289
+ "suddenly",
4290
+ "sue",
4291
+ "suffer",
4292
+ "suffered",
4293
+ "suffering",
4294
+ "suffers",
4295
+ "suffice",
4296
+ "suggest",
4297
+ "suggested",
4298
+ "suggestion",
4299
+ "suggests",
4300
+ "suicide",
4301
+ "suit",
4302
+ "suitable",
4303
+ "suited",
4304
+ "sullivan",
4305
+ "sum",
4306
+ "summary",
4307
+ "summer",
4308
+ "sun",
4309
+ "sunday",
4310
+ "sung",
4311
+ "sunny",
4312
+ "sunshine",
4313
+ "super",
4314
+ "superb",
4315
+ "superbly",
4316
+ "superficial",
4317
+ "superhero",
4318
+ "superior",
4319
+ "superman",
4320
+ "supernatural",
4321
+ "supply",
4322
+ "support",
4323
+ "supported",
4324
+ "supporting",
4325
+ "suppose",
4326
+ "supposed",
4327
+ "supposedly",
4328
+ "sure",
4329
+ "surely",
4330
+ "surface",
4331
+ "surfing",
4332
+ "surgery",
4333
+ "surprise",
4334
+ "surprised",
4335
+ "surprising",
4336
+ "surprisingly",
4337
+ "surreal",
4338
+ "surround",
4339
+ "surrounded",
4340
+ "surrounding",
4341
+ "survival",
4342
+ "survive",
4343
+ "survived",
4344
+ "surviving",
4345
+ "survivor",
4346
+ "susan",
4347
+ "suspect",
4348
+ "suspend",
4349
+ "suspense",
4350
+ "suspenseful",
4351
+ "suspension",
4352
+ "suspicion",
4353
+ "suspicious",
4354
+ "sutherland",
4355
+ "swear",
4356
+ "swedish",
4357
+ "sweet",
4358
+ "swim",
4359
+ "swimming",
4360
+ "swing",
4361
+ "switch",
4362
+ "sword",
4363
+ "symbol",
4364
+ "symbolic",
4365
+ "symbolism",
4366
+ "sympathetic",
4367
+ "sympathy",
4368
+ "synopsis",
4369
+ "system",
4370
+ "ta",
4371
+ "table",
4372
+ "tacky",
4373
+ "tactic",
4374
+ "tad",
4375
+ "tag",
4376
+ "tail",
4377
+ "take",
4378
+ "taken",
4379
+ "taking",
4380
+ "tale",
4381
+ "talent",
4382
+ "talented",
4383
+ "talk",
4384
+ "talked",
4385
+ "talking",
4386
+ "tall",
4387
+ "tame",
4388
+ "tank",
4389
+ "tap",
4390
+ "tape",
4391
+ "tarantino",
4392
+ "target",
4393
+ "tarzan",
4394
+ "task",
4395
+ "taste",
4396
+ "tasteless",
4397
+ "taught",
4398
+ "taxi",
4399
+ "taylor",
4400
+ "tea",
4401
+ "teach",
4402
+ "teacher",
4403
+ "teaching",
4404
+ "team",
4405
+ "tear",
4406
+ "technical",
4407
+ "technically",
4408
+ "technique",
4409
+ "technology",
4410
+ "ted",
4411
+ "tedious",
4412
+ "teen",
4413
+ "teenage",
4414
+ "teenager",
4415
+ "teeth",
4416
+ "television",
4417
+ "tell",
4418
+ "telling",
4419
+ "temple",
4420
+ "ten",
4421
+ "tend",
4422
+ "tendency",
4423
+ "tender",
4424
+ "tends",
4425
+ "tense",
4426
+ "tension",
4427
+ "term",
4428
+ "terrible",
4429
+ "terribly",
4430
+ "terrific",
4431
+ "terrifying",
4432
+ "territory",
4433
+ "terror",
4434
+ "terrorist",
4435
+ "terry",
4436
+ "test",
4437
+ "testament",
4438
+ "texas",
4439
+ "text",
4440
+ "th",
4441
+ "thank",
4442
+ "thankfully",
4443
+ "thanks",
4444
+ "thatbr",
4445
+ "thats",
4446
+ "theater",
4447
+ "theatre",
4448
+ "theatrical",
4449
+ "thembr",
4450
+ "theme",
4451
+ "theory",
4452
+ "there",
4453
+ "therebr",
4454
+ "therefore",
4455
+ "theyd",
4456
+ "theyll",
4457
+ "theyre",
4458
+ "theyve",
4459
+ "thick",
4460
+ "thief",
4461
+ "thin",
4462
+ "thing",
4463
+ "thingbr",
4464
+ "think",
4465
+ "thinking",
4466
+ "third",
4467
+ "thirty",
4468
+ "thisbr",
4469
+ "thomas",
4470
+ "thompson",
4471
+ "thoroughly",
4472
+ "though",
4473
+ "thought",
4474
+ "thoughtful",
4475
+ "thoughtprovoking",
4476
+ "thousand",
4477
+ "thread",
4478
+ "threat",
4479
+ "threatening",
4480
+ "threatens",
4481
+ "three",
4482
+ "threw",
4483
+ "thrill",
4484
+ "thriller",
4485
+ "thrilling",
4486
+ "throat",
4487
+ "throughout",
4488
+ "throw",
4489
+ "throwing",
4490
+ "thrown",
4491
+ "thru",
4492
+ "thug",
4493
+ "thumb",
4494
+ "thus",
4495
+ "ticket",
4496
+ "tie",
4497
+ "tied",
4498
+ "tiger",
4499
+ "tight",
4500
+ "till",
4501
+ "tim",
4502
+ "time",
4503
+ "timebr",
4504
+ "timeless",
4505
+ "timesbr",
4506
+ "timing",
4507
+ "timothy",
4508
+ "tiny",
4509
+ "tip",
4510
+ "tired",
4511
+ "tiresome",
4512
+ "titanic",
4513
+ "title",
4514
+ "titled",
4515
+ "tobr",
4516
+ "today",
4517
+ "todd",
4518
+ "together",
4519
+ "toilet",
4520
+ "told",
4521
+ "tom",
4522
+ "tomato",
4523
+ "tommy",
4524
+ "tomorrow",
4525
+ "ton",
4526
+ "tone",
4527
+ "tongue",
4528
+ "tonight",
4529
+ "tony",
4530
+ "toobr",
4531
+ "took",
4532
+ "tool",
4533
+ "top",
4534
+ "topic",
4535
+ "topless",
4536
+ "topnotch",
4537
+ "torn",
4538
+ "torture",
4539
+ "tortured",
4540
+ "total",
4541
+ "totally",
4542
+ "touch",
4543
+ "touched",
4544
+ "touching",
4545
+ "tough",
4546
+ "tour",
4547
+ "tourist",
4548
+ "toward",
4549
+ "towards",
4550
+ "tower",
4551
+ "town",
4552
+ "toy",
4553
+ "trace",
4554
+ "track",
4555
+ "tracking",
4556
+ "tracy",
4557
+ "trade",
4558
+ "trademark",
4559
+ "tradition",
4560
+ "traditional",
4561
+ "traffic",
4562
+ "tragedy",
4563
+ "tragic",
4564
+ "trail",
4565
+ "trailer",
4566
+ "train",
4567
+ "trained",
4568
+ "training",
4569
+ "trait",
4570
+ "tramp",
4571
+ "transfer",
4572
+ "transformation",
4573
+ "transformed",
4574
+ "transition",
4575
+ "translation",
4576
+ "trap",
4577
+ "trapped",
4578
+ "trash",
4579
+ "trashy",
4580
+ "travel",
4581
+ "traveling",
4582
+ "travesty",
4583
+ "treasure",
4584
+ "treat",
4585
+ "treated",
4586
+ "treatment",
4587
+ "tree",
4588
+ "trek",
4589
+ "tremendous",
4590
+ "trend",
4591
+ "trial",
4592
+ "triangle",
4593
+ "tribe",
4594
+ "tribute",
4595
+ "trick",
4596
+ "tried",
4597
+ "trilogy",
4598
+ "trio",
4599
+ "trip",
4600
+ "tripe",
4601
+ "trite",
4602
+ "triumph",
4603
+ "troma",
4604
+ "troop",
4605
+ "trouble",
4606
+ "troubled",
4607
+ "truck",
4608
+ "true",
4609
+ "truly",
4610
+ "trust",
4611
+ "truth",
4612
+ "try",
4613
+ "trying",
4614
+ "tube",
4615
+ "tune",
4616
+ "tunnel",
4617
+ "turkey",
4618
+ "turkish",
4619
+ "turn",
4620
+ "turned",
4621
+ "turner",
4622
+ "turning",
4623
+ "tv",
4624
+ "twelve",
4625
+ "twenty",
4626
+ "twice",
4627
+ "twilight",
4628
+ "twin",
4629
+ "twist",
4630
+ "twisted",
4631
+ "two",
4632
+ "tyler",
4633
+ "type",
4634
+ "typical",
4635
+ "typically",
4636
+ "ugly",
4637
+ "uk",
4638
+ "ultimate",
4639
+ "ultimately",
4640
+ "unable",
4641
+ "unaware",
4642
+ "unbearable",
4643
+ "unbelievable",
4644
+ "unbelievably",
4645
+ "uncle",
4646
+ "uncomfortable",
4647
+ "unconvincing",
4648
+ "undead",
4649
+ "underground",
4650
+ "underlying",
4651
+ "underneath",
4652
+ "underrated",
4653
+ "understand",
4654
+ "understandable",
4655
+ "understanding",
4656
+ "understated",
4657
+ "understood",
4658
+ "underwater",
4659
+ "underworld",
4660
+ "undoubtedly",
4661
+ "uneven",
4662
+ "unexpected",
4663
+ "unexpectedly",
4664
+ "unfair",
4665
+ "unfold",
4666
+ "unfolds",
4667
+ "unforgettable",
4668
+ "unfortunate",
4669
+ "unfortunately",
4670
+ "unfunny",
4671
+ "unhappy",
4672
+ "uniform",
4673
+ "uninspired",
4674
+ "unintentional",
4675
+ "unintentionally",
4676
+ "uninteresting",
4677
+ "union",
4678
+ "unique",
4679
+ "unit",
4680
+ "united",
4681
+ "universal",
4682
+ "universe",
4683
+ "university",
4684
+ "unknown",
4685
+ "unless",
4686
+ "unlikable",
4687
+ "unlike",
4688
+ "unlikeable",
4689
+ "unlikely",
4690
+ "unnecessary",
4691
+ "unoriginal",
4692
+ "unpleasant",
4693
+ "unpredictable",
4694
+ "unreal",
4695
+ "unrealistic",
4696
+ "unseen",
4697
+ "unsettling",
4698
+ "unusual",
4699
+ "unwatchable",
4700
+ "upbr",
4701
+ "uplifting",
4702
+ "upon",
4703
+ "upper",
4704
+ "ups",
4705
+ "upset",
4706
+ "urban",
4707
+ "urge",
4708
+ "us",
4709
+ "usa",
4710
+ "use",
4711
+ "used",
4712
+ "useful",
4713
+ "useless",
4714
+ "user",
4715
+ "using",
4716
+ "usual",
4717
+ "usually",
4718
+ "utter",
4719
+ "utterly",
4720
+ "uwe",
4721
+ "vacation",
4722
+ "vague",
4723
+ "vaguely",
4724
+ "valentine",
4725
+ "valley",
4726
+ "valuable",
4727
+ "value",
4728
+ "vampire",
4729
+ "van",
4730
+ "variation",
4731
+ "variety",
4732
+ "various",
4733
+ "vast",
4734
+ "vega",
4735
+ "vehicle",
4736
+ "vein",
4737
+ "velvet",
4738
+ "vengeance",
4739
+ "venice",
4740
+ "venture",
4741
+ "version",
4742
+ "versus",
4743
+ "veteran",
4744
+ "vhs",
4745
+ "via",
4746
+ "vice",
4747
+ "vicious",
4748
+ "victim",
4749
+ "victor",
4750
+ "victoria",
4751
+ "victory",
4752
+ "video",
4753
+ "vietnam",
4754
+ "view",
4755
+ "viewed",
4756
+ "viewer",
4757
+ "viewing",
4758
+ "viewpoint",
4759
+ "village",
4760
+ "villain",
4761
+ "vince",
4762
+ "vincent",
4763
+ "violence",
4764
+ "violent",
4765
+ "virgin",
4766
+ "virginia",
4767
+ "virtual",
4768
+ "virtually",
4769
+ "virus",
4770
+ "visible",
4771
+ "vision",
4772
+ "visit",
4773
+ "visiting",
4774
+ "visual",
4775
+ "visually",
4776
+ "visuals",
4777
+ "vivid",
4778
+ "vocal",
4779
+ "voice",
4780
+ "voiced",
4781
+ "voiceover",
4782
+ "voight",
4783
+ "volume",
4784
+ "von",
4785
+ "vote",
4786
+ "voyage",
4787
+ "vulnerable",
4788
+ "wacky",
4789
+ "wagner",
4790
+ "wagon",
4791
+ "wait",
4792
+ "waited",
4793
+ "waiting",
4794
+ "wake",
4795
+ "walk",
4796
+ "walked",
4797
+ "walken",
4798
+ "walker",
4799
+ "walking",
4800
+ "wall",
4801
+ "wallace",
4802
+ "walter",
4803
+ "wan",
4804
+ "wandering",
4805
+ "wannabe",
4806
+ "want",
4807
+ "wanted",
4808
+ "wanting",
4809
+ "war",
4810
+ "ward",
4811
+ "wardrobe",
4812
+ "warm",
4813
+ "warmth",
4814
+ "warn",
4815
+ "warned",
4816
+ "warner",
4817
+ "warning",
4818
+ "warren",
4819
+ "warrior",
4820
+ "wasbr",
4821
+ "washington",
4822
+ "wasnt",
4823
+ "waste",
4824
+ "wasted",
4825
+ "wasting",
4826
+ "watch",
4827
+ "watchable",
4828
+ "watchbr",
4829
+ "watched",
4830
+ "watching",
4831
+ "water",
4832
+ "watson",
4833
+ "wave",
4834
+ "wax",
4835
+ "way",
4836
+ "waybr",
4837
+ "wayne",
4838
+ "weak",
4839
+ "weakest",
4840
+ "weakness",
4841
+ "wealth",
4842
+ "wealthy",
4843
+ "weapon",
4844
+ "wear",
4845
+ "wearing",
4846
+ "weather",
4847
+ "web",
4848
+ "website",
4849
+ "wed",
4850
+ "wedding",
4851
+ "week",
4852
+ "weekend",
4853
+ "weight",
4854
+ "weird",
4855
+ "welcome",
4856
+ "well",
4857
+ "wellbr",
4858
+ "welles",
4859
+ "wellknown",
4860
+ "went",
4861
+ "werent",
4862
+ "werewolf",
4863
+ "wes",
4864
+ "west",
4865
+ "western",
4866
+ "wet",
4867
+ "weve",
4868
+ "whale",
4869
+ "whatever",
4870
+ "whats",
4871
+ "whatsoever",
4872
+ "wheel",
4873
+ "whenever",
4874
+ "whereas",
4875
+ "wheres",
4876
+ "whether",
4877
+ "whilst",
4878
+ "white",
4879
+ "who",
4880
+ "whoever",
4881
+ "whole",
4882
+ "wholly",
4883
+ "whore",
4884
+ "whose",
4885
+ "wicked",
4886
+ "wide",
4887
+ "widely",
4888
+ "widescreen",
4889
+ "widmark",
4890
+ "widow",
4891
+ "wife",
4892
+ "wig",
4893
+ "wild",
4894
+ "wilder",
4895
+ "wildly",
4896
+ "william",
4897
+ "williams",
4898
+ "willie",
4899
+ "willing",
4900
+ "willis",
4901
+ "wilson",
4902
+ "win",
4903
+ "wind",
4904
+ "window",
4905
+ "wine",
4906
+ "wing",
4907
+ "winner",
4908
+ "winning",
4909
+ "winter",
4910
+ "wire",
4911
+ "wisdom",
4912
+ "wise",
4913
+ "wish",
4914
+ "wished",
4915
+ "wishing",
4916
+ "wit",
4917
+ "witch",
4918
+ "withbr",
4919
+ "within",
4920
+ "without",
4921
+ "witness",
4922
+ "witnessed",
4923
+ "witty",
4924
+ "wizard",
4925
+ "wolf",
4926
+ "woman",
4927
+ "womens",
4928
+ "wonder",
4929
+ "wondered",
4930
+ "wonderful",
4931
+ "wonderfully",
4932
+ "wondering",
4933
+ "wong",
4934
+ "wont",
4935
+ "woo",
4936
+ "wood",
4937
+ "wooden",
4938
+ "woody",
4939
+ "word",
4940
+ "wore",
4941
+ "work",
4942
+ "workbr",
4943
+ "worked",
4944
+ "worker",
4945
+ "working",
4946
+ "world",
4947
+ "worldbr",
4948
+ "worn",
4949
+ "worried",
4950
+ "worry",
4951
+ "worse",
4952
+ "worst",
4953
+ "worth",
4954
+ "worthless",
4955
+ "worthwhile",
4956
+ "worthy",
4957
+ "would",
4958
+ "wouldbe",
4959
+ "wouldnt",
4960
+ "wouldve",
4961
+ "wound",
4962
+ "wounded",
4963
+ "wow",
4964
+ "wrap",
4965
+ "wrapped",
4966
+ "wreck",
4967
+ "wrestling",
4968
+ "write",
4969
+ "writer",
4970
+ "writerdirector",
4971
+ "writes",
4972
+ "writing",
4973
+ "written",
4974
+ "wrong",
4975
+ "wrongbr",
4976
+ "wrote",
4977
+ "ww",
4978
+ "wwii",
4979
+ "ya",
4980
+ "yard",
4981
+ "yeah",
4982
+ "year",
4983
+ "yearold",
4984
+ "yearsbr",
4985
+ "yell",
4986
+ "yelling",
4987
+ "yellow",
4988
+ "yes",
4989
+ "yesterday",
4990
+ "yet",
4991
+ "york",
4992
+ "youbr",
4993
+ "youd",
4994
+ "youll",
4995
+ "young",
4996
+ "younger",
4997
+ "youre",
4998
+ "youth",
4999
+ "youve",
5000
+ "zero",
5001
+ "zombie",
5002
+ "zone"
5003
+ ],
5004
+ "max_features": 5000,
5005
+ "lr_accuracy": 0.8847,
5006
+ "nb_accuracy": 0.852,
5007
+ "training_samples": 40000,
5008
+ "test_samples": 10000,
5009
+ "preprocessing_steps": [
5010
+ "lowercase",
5011
+ "remove_special_chars",
5012
+ "tokenization",
5013
+ "stopword_removal",
5014
+ "lemmatization"
5015
+ ]
5016
+ }
saved_models/naive_bayes_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d65976fbe5f21a55075052bf62de3fb4e5e9d21c4bb8b8e1fd068a8c966698af
3
+ size 160791
saved_models/tfidf_vectorizer.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0ed2a0971c34fdaf9405735f42068e7c219cf0c87acc564f1a8da43d928b4fe6
3
+ size 183223
sentiment_analysis.py ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import nltk
3
+ import re
4
+ from nltk.corpus import stopwords
5
+ from nltk.tokenize import word_tokenize
6
+ from nltk.stem import WordNetLemmatizer
7
+ from sklearn.feature_extraction.text import TfidfVectorizer
8
+ from sklearn.model_selection import train_test_split
9
+ from sklearn.linear_model import LogisticRegression
10
+ from sklearn.naive_bayes import MultinomialNB
11
+ from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
12
+ import matplotlib.pyplot as plt
13
+ import seaborn as sns
14
+ import streamlit as st
15
+ from collections import Counter
16
+
17
+ # Download NLTK resources (run once)
18
+ try:
19
+ nltk.download('punkt')
20
+ nltk.download('stopwords')
21
+ nltk.download('wordnet')
22
+ nltk.download('punkt_tab')
23
+ except Exception as e:
24
+ print(f"Warning: Could not download NLTK data: {e}")
25
+ print("Please run: import nltk; nltk.download('all') in Python console")
26
+
27
+ # 1. Text Preprocessing Function
28
+ def preprocess_text(text):
29
+ # Lowercase
30
+ text = text.lower()
31
+ # Remove special characters and digits
32
+ text = re.sub(r'[^a-zA-Z\s]', '', text)
33
+ # Tokenize
34
+ tokens = word_tokenize(text)
35
+ # Remove stopwords
36
+ stop_words = set(stopwords.words('english'))
37
+ tokens = [word for word in tokens if word not in stop_words]
38
+ # Lemmatize
39
+ lemmatizer = WordNetLemmatizer()
40
+ tokens = [lemmatizer.lemmatize(word) for word in tokens]
41
+ # Join tokens back to string
42
+ return ' '.join(tokens)
43
+
44
+ # 2. Load and Preprocess Dataset
45
+ def load_and_preprocess_data(file_path="IMDB Dataset.csv"):
46
+ try:
47
+ df = pd.read_csv(file_path)
48
+ except FileNotFoundError:
49
+ print(f"Error: Could not find file '{file_path}'")
50
+ print("Please make sure the CSV file is in the same directory as this script.")
51
+ return None
52
+ # Apply preprocessing to reviews
53
+ df['cleaned_review'] = df['review'].apply(preprocess_text)
54
+ # Convert sentiment to binary (1 for positive, 0 for negative)
55
+ df['sentiment'] = df['sentiment'].replace({'positive': 1, 'negative': 0})
56
+ return df
57
+
58
+ # 3. Train and Evaluate Models
59
+ def train_and_evaluate(df):
60
+ # Convert text to TF-IDF features
61
+ vectorizer = TfidfVectorizer(max_features=5000)
62
+ X = vectorizer.fit_transform(df['cleaned_review'])
63
+ y = df['sentiment']
64
+
65
+ # Split data
66
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
67
+
68
+ # Logistic Regression
69
+ lr_model = LogisticRegression(max_iter=1000)
70
+ lr_model.fit(X_train, y_train)
71
+ lr_predictions = lr_model.predict(X_test)
72
+ lr_accuracy = accuracy_score(y_test, lr_predictions)
73
+ print("Logistic Regression Accuracy:", lr_accuracy)
74
+ print("Logistic Regression Classification Report:\n", classification_report(y_test, lr_predictions))
75
+
76
+ # Naive Bayes
77
+ nb_model = MultinomialNB()
78
+ nb_model.fit(X_train, y_train)
79
+ nb_predictions = nb_model.predict(X_test)
80
+ nb_accuracy = accuracy_score(y_test, nb_predictions)
81
+ print("Naive Bayes Accuracy:", nb_accuracy)
82
+ print("Naive Bayes Classification Report:\n", classification_report(y_test, nb_predictions))
83
+
84
+ return vectorizer, lr_model, nb_model, X_test, y_test
85
+
86
+ # 4. Visualize Frequent Words
87
+ def visualize_frequent_words(df):
88
+ # Separate positive and negative reviews
89
+ positive_reviews = df[df['sentiment'] == 1]['cleaned_review']
90
+ negative_reviews = df[df['sentiment'] == 0]['cleaned_review']
91
+
92
+ # Count words
93
+ positive_words = ' '.join(positive_reviews).split()
94
+ negative_words = ' '.join(negative_reviews).split()
95
+
96
+ # Get top 10 words
97
+ positive_freq = Counter(positive_words).most_common(10)
98
+ negative_freq = Counter(negative_words).most_common(10)
99
+
100
+ # Plot
101
+ plt.figure(figsize=(12, 5))
102
+
103
+ plt.subplot(1, 2, 1)
104
+ sns.barplot(x=[count for word, count in positive_freq], y=[word for word, count in positive_freq])
105
+ plt.title('Top 10 Positive Words')
106
+
107
+ plt.subplot(1, 2, 2)
108
+ sns.barplot(x=[count for word, count in negative_freq], y=[word for word, count in negative_freq])
109
+ plt.title('Top 10 Negative Words')
110
+
111
+ plt.tight_layout()
112
+ plt.savefig('word_frequency.png')
113
+ plt.close()
114
+
115
+ # 5. Streamlit App for Model Deployment
116
+ def run_streamlit_app(vectorizer, lr_model, nb_model):
117
+ st.title("IMDb Review Sentiment Analysis")
118
+ st.write("Enter a movie review to predict its sentiment (positive or negative).")
119
+
120
+ # Text input
121
+ user_input = st.text_area("Enter your review:", "")
122
+
123
+ if st.button("Predict Sentiment"):
124
+ if user_input:
125
+ # Preprocess input
126
+ cleaned_input = preprocess_text(user_input)
127
+ input_vector = vectorizer.transform([cleaned_input])
128
+
129
+ # Predict with both models
130
+ lr_prediction = lr_model.predict(input_vector)[0]
131
+ lr_prob = lr_model.predict_proba(input_vector)[0]
132
+ nb_prediction = nb_model.predict(input_vector)[0]
133
+ nb_prob = nb_model.predict_proba(input_vector)[0]
134
+
135
+ # Display results
136
+ st.write("### Logistic Regression Prediction")
137
+ st.write(f"Sentiment: {'Positive' if lr_prediction == 1 else 'Negative'}")
138
+ st.write(f"Confidence: {max(lr_prob):.2f}")
139
+
140
+ st.write("### Naive Bayes Prediction")
141
+ st.write(f"Sentiment: {'Positive' if nb_prediction == 1 else 'Negative'}")
142
+ st.write(f"Confidence: {max(nb_prob):.2f}")
143
+ else:
144
+ st.write("Please enter a review.")
145
+
146
+ # Main execution
147
+ if __name__ == "__main__":
148
+ file_path = "IMDB Dataset.csv"
149
+ df = load_and_preprocess_data(file_path)
150
+
151
+ if df is not None:
152
+ # Train and evaluate models
153
+ vectorizer, lr_model, nb_model, X_test, y_test = train_and_evaluate(df)
154
+
155
+ # Visualize frequent words
156
+ visualize_frequent_words(df)
157
+
158
+ # Run Streamlit app
159
+ run_streamlit_app(vectorizer, lr_model, nb_model)
160
+ else:
161
+ print("Exiting due to data loading error.")
streamlit_app.py ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import nltk
3
+ import re
4
+ from nltk.corpus import stopwords
5
+ from nltk.tokenize import word_tokenize
6
+ from nltk.stem import WordNetLemmatizer
7
+ from sklearn.feature_extraction.text import TfidfVectorizer
8
+ from sklearn.model_selection import train_test_split
9
+ from sklearn.linear_model import LogisticRegression
10
+ from sklearn.naive_bayes import MultinomialNB
11
+ from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
12
+ import matplotlib.pyplot as plt
13
+ import seaborn as sns
14
+ import streamlit as st
15
+ from collections import Counter
16
+ import pickle
17
+ import os
18
+
19
+ # Download NLTK resources
20
+ try:
21
+ nltk.download('punkt')
22
+ nltk.download('stopwords')
23
+ nltk.download('wordnet')
24
+ nltk.download('punkt_tab')
25
+ except Exception as e:
26
+ st.error(f"Could not download NLTK data: {e}")
27
+
28
+ # Text Preprocessing Function
29
+ def preprocess_text(text):
30
+ # Lowercase
31
+ text = text.lower()
32
+ # Remove special characters and digits
33
+ text = re.sub(r'[^a-zA-Z\s]', '', text)
34
+ # Tokenize
35
+ tokens = word_tokenize(text)
36
+ # Remove stopwords
37
+ stop_words = set(stopwords.words('english'))
38
+ tokens = [word for word in tokens if word not in stop_words]
39
+ # Lemmatize
40
+ lemmatizer = WordNetLemmatizer()
41
+ tokens = [lemmatizer.lemmatize(word) for word in tokens]
42
+ # Join tokens back to string
43
+ return ' '.join(tokens)
44
+
45
+ # Load and Preprocess Dataset
46
+ def load_and_preprocess_data(file_path="IMDB Dataset.csv"):
47
+ try:
48
+ df = pd.read_csv(file_path)
49
+ # Apply preprocessing to reviews
50
+ df['cleaned_review'] = df['review'].apply(preprocess_text)
51
+ # Convert sentiment to binary (1 for positive, 0 for negative)
52
+ df['sentiment'] = df['sentiment'].replace({'positive': 1, 'negative': 0})
53
+ return df
54
+ except FileNotFoundError:
55
+ st.error(f"Could not find file '{file_path}'")
56
+ return None
57
+
58
+ # Train Models
59
+ def train_models(df):
60
+ # Convert text to TF-IDF features
61
+ vectorizer = TfidfVectorizer(max_features=5000)
62
+ X = vectorizer.fit_transform(df['cleaned_review'])
63
+ y = df['sentiment']
64
+
65
+ # Split data
66
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
67
+
68
+ # Logistic Regression
69
+ lr_model = LogisticRegression(max_iter=1000)
70
+ lr_model.fit(X_train, y_train)
71
+ lr_predictions = lr_model.predict(X_test)
72
+ lr_accuracy = accuracy_score(y_test, lr_predictions)
73
+
74
+ # Naive Bayes
75
+ nb_model = MultinomialNB()
76
+ nb_model.fit(X_train, y_train)
77
+ nb_predictions = nb_model.predict(X_test)
78
+ nb_accuracy = accuracy_score(y_test, nb_predictions)
79
+
80
+ return vectorizer, lr_model, nb_model, lr_accuracy, nb_accuracy
81
+
82
+ # Streamlit App
83
+ def main():
84
+ st.title("IMDb Review Sentiment Analysis")
85
+ st.write("This app analyzes movie reviews to predict whether they are positive or negative.")
86
+
87
+ # Load data and train models
88
+ with st.spinner("Loading data and training models..."):
89
+ df = load_and_preprocess_data()
90
+ if df is not None:
91
+ vectorizer, lr_model, nb_model, lr_accuracy, nb_accuracy = train_models(df)
92
+ st.success("Models trained successfully!")
93
+
94
+ # Display model accuracies
95
+ col1, col2 = st.columns(2)
96
+ with col1:
97
+ st.metric("Logistic Regression Accuracy", f"{lr_accuracy:.2%}")
98
+ with col2:
99
+ st.metric("Naive Bayes Accuracy", f"{nb_accuracy:.2%}")
100
+
101
+ # Text input for prediction
102
+ st.subheader("Predict Sentiment")
103
+ user_input = st.text_area("Enter a movie review:", height=150)
104
+
105
+ if st.button("Predict Sentiment"):
106
+ if user_input:
107
+ # Preprocess input
108
+ cleaned_input = preprocess_text(user_input)
109
+ input_vector = vectorizer.transform([cleaned_input])
110
+
111
+ # Predict with both models
112
+ lr_prediction = lr_model.predict(input_vector)[0]
113
+ lr_prob = lr_model.predict_proba(input_vector)[0]
114
+ nb_prediction = nb_model.predict(input_vector)[0]
115
+ nb_prob = nb_model.predict_proba(input_vector)[0]
116
+
117
+ # Display results
118
+ col1, col2 = st.columns(2)
119
+
120
+ with col1:
121
+ st.subheader("Logistic Regression")
122
+ if lr_prediction == 1:
123
+ st.success("Positive Sentiment")
124
+ else:
125
+ st.error("Negative Sentiment")
126
+ st.write(f"Confidence: {max(lr_prob):.2%}")
127
+
128
+ with col2:
129
+ st.subheader("Naive Bayes")
130
+ if nb_prediction == 1:
131
+ st.success("Positive Sentiment")
132
+ else:
133
+ st.error("Negative Sentiment")
134
+ st.write(f"Confidence: {max(nb_prob):.2%}")
135
+ else:
136
+ st.warning("Please enter a review.")
137
+ else:
138
+ st.error("Failed to load data. Please check if 'IMDB Dataset.csv' is in the same directory.")
139
+
140
+ if __name__ == "__main__":
141
+ main()
train_and_save_model.py ADDED
@@ -0,0 +1,316 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import nltk
3
+ import re
4
+ import pickle
5
+ import joblib
6
+ import json
7
+ from nltk.corpus import stopwords
8
+ from nltk.tokenize import word_tokenize
9
+ from nltk.stem import WordNetLemmatizer
10
+ from sklearn.feature_extraction.text import TfidfVectorizer
11
+ from sklearn.model_selection import train_test_split
12
+ from sklearn.linear_model import LogisticRegression
13
+ from sklearn.naive_bayes import MultinomialNB
14
+ from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
15
+ import matplotlib.pyplot as plt
16
+ import seaborn as sns
17
+ from collections import Counter
18
+ import os
19
+
20
+ # Download NLTK resources
21
+ try:
22
+ nltk.download('punkt')
23
+ nltk.download('stopwords')
24
+ nltk.download('wordnet')
25
+ nltk.download('punkt_tab')
26
+ except Exception as e:
27
+ print(f"Warning: Could not download NLTK data: {e}")
28
+
29
+ # Text Preprocessing Function
30
+ def preprocess_text(text):
31
+ # Lowercase
32
+ text = text.lower()
33
+ # Remove special characters and digits
34
+ text = re.sub(r'[^a-zA-Z\s]', '', text)
35
+ # Tokenize
36
+ tokens = word_tokenize(text)
37
+ # Remove stopwords
38
+ stop_words = set(stopwords.words('english'))
39
+ tokens = [word for word in tokens if word not in stop_words]
40
+ # Lemmatize
41
+ lemmatizer = WordNetLemmatizer()
42
+ tokens = [lemmatizer.lemmatize(word) for word in tokens]
43
+ # Join tokens back to string
44
+ return ' '.join(tokens)
45
+
46
+ # Load and Preprocess Dataset
47
+ def load_and_preprocess_data(file_path="IMDB Dataset.csv"):
48
+ try:
49
+ df = pd.read_csv(file_path)
50
+ print(f"Loaded {len(df)} reviews")
51
+ # Apply preprocessing to reviews
52
+ print("Preprocessing reviews...")
53
+ df['cleaned_review'] = df['review'].apply(preprocess_text)
54
+ # Convert sentiment to binary (1 for positive, 0 for negative)
55
+ df['sentiment'] = df['sentiment'].replace({'positive': 1, 'negative': 0})
56
+ return df
57
+ except FileNotFoundError:
58
+ print(f"Error: Could not find file '{file_path}'")
59
+ return None
60
+
61
+ # Train Models and Save
62
+ def train_and_save_models(df, model_dir="saved_models"):
63
+ # Create model directory
64
+ os.makedirs(model_dir, exist_ok=True)
65
+
66
+ # Convert text to TF-IDF features
67
+ print("Vectorizing text data...")
68
+ vectorizer = TfidfVectorizer(max_features=5000)
69
+ X = vectorizer.fit_transform(df['cleaned_review'])
70
+ y = df['sentiment']
71
+
72
+ # Split data
73
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
74
+
75
+ # Train Logistic Regression
76
+ print("Training Logistic Regression...")
77
+ lr_model = LogisticRegression(max_iter=1000, random_state=42)
78
+ lr_model.fit(X_train, y_train)
79
+ lr_predictions = lr_model.predict(X_test)
80
+ lr_accuracy = accuracy_score(y_test, lr_predictions)
81
+
82
+ # Train Naive Bayes
83
+ print("Training Naive Bayes...")
84
+ nb_model = MultinomialNB()
85
+ nb_model.fit(X_train, y_train)
86
+ nb_predictions = nb_model.predict(X_test)
87
+ nb_accuracy = accuracy_score(y_test, nb_predictions)
88
+
89
+ # Save models
90
+ print("Saving models...")
91
+
92
+ # Save vectorizer
93
+ joblib.dump(vectorizer, os.path.join(model_dir, 'tfidf_vectorizer.pkl'))
94
+
95
+ # Save Logistic Regression model
96
+ joblib.dump(lr_model, os.path.join(model_dir, 'logistic_regression_model.pkl'))
97
+
98
+ # Save Naive Bayes model
99
+ joblib.dump(nb_model, os.path.join(model_dir, 'naive_bayes_model.pkl'))
100
+
101
+ # Save model metadata
102
+ metadata = {
103
+ 'vectorizer_features': vectorizer.get_feature_names_out().tolist(),
104
+ 'max_features': 5000,
105
+ 'lr_accuracy': float(lr_accuracy),
106
+ 'nb_accuracy': float(nb_accuracy),
107
+ 'training_samples': X_train.shape[0],
108
+ 'test_samples': X_test.shape[0],
109
+ 'preprocessing_steps': [
110
+ 'lowercase',
111
+ 'remove_special_chars',
112
+ 'tokenization',
113
+ 'stopword_removal',
114
+ 'lemmatization'
115
+ ]
116
+ }
117
+
118
+ with open(os.path.join(model_dir, 'model_metadata.json'), 'w') as f:
119
+ json.dump(metadata, f, indent=2)
120
+
121
+ # Print results
122
+ print("\n" + "="*50)
123
+ print("MODEL TRAINING RESULTS")
124
+ print("="*50)
125
+ print(f"Logistic Regression Accuracy: {lr_accuracy:.4f}")
126
+ print(f"Naive Bayes Accuracy: {nb_accuracy:.4f}")
127
+ print(f"Models saved to: {model_dir}/")
128
+ print("="*50)
129
+
130
+ return vectorizer, lr_model, nb_model, lr_accuracy, nb_accuracy
131
+
132
+ # Create inference script
133
+ def create_inference_script():
134
+ inference_code = '''import joblib
135
+ import json
136
+ import re
137
+ import nltk
138
+ from nltk.corpus import stopwords
139
+ from nltk.tokenize import word_tokenize
140
+ from nltk.stem import WordNetLemmatizer
141
+
142
+ # Download NLTK resources
143
+ try:
144
+ nltk.download('punkt')
145
+ nltk.download('stopwords')
146
+ nltk.download('wordnet')
147
+ except:
148
+ pass
149
+
150
+ class SentimentAnalyzer:
151
+ def __init__(self, model_dir="saved_models"):
152
+ # Load models
153
+ self.vectorizer = joblib.load(f"{model_dir}/tfidf_vectorizer.pkl")
154
+ self.lr_model = joblib.load(f"{model_dir}/logistic_regression_model.pkl")
155
+ self.nb_model = joblib.load(f"{model_dir}/naive_bayes_model.pkl")
156
+
157
+ # Load metadata
158
+ with open(f"{model_dir}/model_metadata.json", 'r') as f:
159
+ self.metadata = json.load(f)
160
+
161
+ def preprocess_text(self, text):
162
+ # Lowercase
163
+ text = text.lower()
164
+ # Remove special characters and digits
165
+ text = re.sub(r'[^a-zA-Z\\s]', '', text)
166
+ # Tokenize
167
+ tokens = word_tokenize(text)
168
+ # Remove stopwords
169
+ stop_words = set(stopwords.words('english'))
170
+ tokens = [word for word in tokens if word not in stop_words]
171
+ # Lemmatize
172
+ lemmatizer = WordNetLemmatizer()
173
+ tokens = [lemmatizer.lemmatize(word) for word in tokens]
174
+ # Join tokens back to string
175
+ return ' '.join(tokens)
176
+
177
+ def predict(self, text, model_type='both'):
178
+ # Preprocess text
179
+ cleaned_text = self.preprocess_text(text)
180
+
181
+ # Vectorize
182
+ text_vector = self.vectorizer.transform([cleaned_text])
183
+
184
+ results = {}
185
+
186
+ if model_type in ['lr', 'both']:
187
+ lr_pred = self.lr_model.predict(text_vector)[0]
188
+ lr_prob = self.lr_model.predict_proba(text_vector)[0]
189
+ results['logistic_regression'] = {
190
+ 'prediction': 'positive' if lr_pred == 1 else 'negative',
191
+ 'confidence': float(max(lr_prob)),
192
+ 'probabilities': {
193
+ 'negative': float(lr_prob[0]),
194
+ 'positive': float(lr_prob[1])
195
+ }
196
+ }
197
+
198
+ if model_type in ['nb', 'both']:
199
+ nb_pred = self.nb_model.predict(text_vector)[0]
200
+ nb_prob = self.nb_model.predict_proba(text_vector)[0]
201
+ results['naive_bayes'] = {
202
+ 'prediction': 'positive' if nb_pred == 1 else 'negative',
203
+ 'confidence': float(max(nb_prob)),
204
+ 'probabilities': {
205
+ 'negative': float(nb_prob[0]),
206
+ 'positive': float(nb_prob[1])
207
+ }
208
+ }
209
+
210
+ return results
211
+
212
+ # Example usage
213
+ if __name__ == "__main__":
214
+ analyzer = SentimentAnalyzer()
215
+
216
+ # Test with sample reviews
217
+ test_reviews = [
218
+ "This movie was absolutely fantastic! I loved every minute of it.",
219
+ "Terrible film, waste of time. Don't watch it.",
220
+ "It was okay, nothing special but not bad either."
221
+ ]
222
+
223
+ for review in test_reviews:
224
+ print(f"\\nReview: {review}")
225
+ results = analyzer.predict(review)
226
+ for model, result in results.items():
227
+ print(f"{model}: {result['prediction']} (confidence: {result['confidence']:.2f})")
228
+ '''
229
+
230
+ with open('inference.py', 'w') as f:
231
+ f.write(inference_code)
232
+
233
+ print("Created inference.py for model deployment")
234
+
235
+ # Create requirements.txt
236
+ def create_requirements():
237
+ requirements = '''pandas>=1.3.0
238
+ nltk>=3.6
239
+ scikit-learn>=1.0.0
240
+ joblib>=1.1.0
241
+ numpy>=1.21.0
242
+ streamlit>=1.0.0
243
+ matplotlib>=3.5.0
244
+ seaborn>=0.11.0'''
245
+
246
+ with open('requirements.txt', 'w') as f:
247
+ f.write(requirements)
248
+
249
+ print("Created requirements.txt")
250
+
251
+ # Create README
252
+ def create_readme():
253
+ readme = '''# IMDb Sentiment Analysis Model
254
+
255
+ This repository contains a trained sentiment analysis model for IMDb movie reviews.
256
+
257
+ ## Model Performance
258
+ - Logistic Regression: ~88.47% accuracy
259
+ - Naive Bayes: ~85.2% accuracy
260
+
261
+ ## Files
262
+ - `saved_models/`: Directory containing trained models
263
+ - `inference.py`: Script for making predictions
264
+ - `train_and_save_model.py`: Script to train and save models
265
+ - `requirements.txt`: Python dependencies
266
+
267
+ ## Usage
268
+
269
+ ### Load and Use the Model
270
+ ```python
271
+ from inference import SentimentAnalyzer
272
+
273
+ # Initialize analyzer
274
+ analyzer = SentimentAnalyzer()
275
+
276
+ # Make prediction
277
+ result = analyzer.predict("This movie was amazing!")
278
+ print(result)
279
+ ```
280
+
281
+ ### Deploy on Streamlit
282
+ ```bash
283
+ streamlit run streamlit_deployment.py
284
+ ```
285
+
286
+ ## Model Details
287
+ - **Vectorizer**: TF-IDF with 5000 features
288
+ - **Preprocessing**: Lowercase, special char removal, tokenization, stopword removal, lemmatization
289
+ - **Models**: Logistic Regression and Naive Bayes
290
+ '''
291
+
292
+ with open('README.md', 'w') as f:
293
+ f.write(readme)
294
+
295
+ print("Created README.md")
296
+
297
+ if __name__ == "__main__":
298
+ print("Training and saving sentiment analysis models...")
299
+
300
+ # Load data
301
+ df = load_and_preprocess_data()
302
+
303
+ if df is not None:
304
+ # Train and save models
305
+ train_and_save_models(df)
306
+
307
+ # Create deployment files
308
+ create_inference_script()
309
+ create_requirements()
310
+ create_readme()
311
+
312
+ print("\n✅ Model training and saving completed!")
313
+ print("📁 Models saved in 'saved_models/' directory")
314
+ print("🚀 Ready for deployment on Hugging Face, Kaggle, or other platforms")
315
+ else:
316
+ print("❌ Failed to load data. Please check if 'IMDB Dataset.csv' exists.")
word_frequency.png ADDED