Ramesh572 commited on
Commit
9c86d9a
Β·
1 Parent(s): 2a7b995

Upload reviewsentiment-analysis.ipynb

Browse files
Files changed (1) hide show
  1. reviewsentiment-analysis.ipynb +305 -0
reviewsentiment-analysis.ipynb ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 25,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "\n",
10
+ "import tensorflow as tf\n",
11
+ "import opendatasets as od\n",
12
+ "import numpy as np\n",
13
+ "from tensorflow.keras import layers\n",
14
+ "from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline\n",
15
+ "\n",
16
+ "tf.get_logger().setLevel('ERROR')\n",
17
+ "tokenizer = AutoTokenizer.from_pretrained(\"blanchefort/rubert-base-cased-sentiment-rurewiews\")"
18
+ ]
19
+ },
20
+ {
21
+ "cell_type": "code",
22
+ "execution_count": 26,
23
+ "metadata": {},
24
+ "outputs": [],
25
+ "source": [
26
+ "model = AutoModelForSequenceClassification.from_pretrained(\"blanchefort/rubert-base-cased-sentiment-rurewiews\")"
27
+ ]
28
+ },
29
+ {
30
+ "cell_type": "code",
31
+ "execution_count": 27,
32
+ "metadata": {},
33
+ "outputs": [],
34
+ "source": [
35
+ "pipe = pipeline(\"text-classification\", model=\"blanchefort/rubert-base-cased-sentiment-rurewiews\")"
36
+ ]
37
+ },
38
+ {
39
+ "cell_type": "code",
40
+ "execution_count": 28,
41
+ "metadata": {},
42
+ "outputs": [
43
+ {
44
+ "data": {
45
+ "text/plain": [
46
+ "[{'label': 'NEUTRAL', 'score': 0.5040543079376221}]"
47
+ ]
48
+ },
49
+ "execution_count": 28,
50
+ "metadata": {},
51
+ "output_type": "execute_result"
52
+ }
53
+ ],
54
+ "source": [
55
+ "pipe(\"Product is ok ok sounds also good but I am not feeling like 525 watts and weight also very less 525 watts means atleast 8kg or 10kg will be there and in paper they mentioned 5 modes are different on speaker what they given modes are different totally confused with this product\")"
56
+ ]
57
+ },
58
+ {
59
+ "cell_type": "code",
60
+ "execution_count": 29,
61
+ "metadata": {},
62
+ "outputs": [
63
+ {
64
+ "name": "stdout",
65
+ "output_type": "stream",
66
+ "text": [
67
+ "Skipping, found downloaded files in \"restaurent_review\\reviews\" (use force=True to force download)\n"
68
+ ]
69
+ }
70
+ ],
71
+ "source": [
72
+ "import gradio as gr\n",
73
+ "import pandas as pd\n",
74
+ "import opendatasets as od\n",
75
+ "\n",
76
+ "od.download_kaggle_dataset('vigneshwarsofficial/reviews', data_dir='restaurent_review')\n",
77
+ "prediction_data = pd.read_csv('restaurent_review/reviews/Restaurant_Reviews.tsv', delimiter='\\t')\n",
78
+ "\n",
79
+ "prediction_data.pop(\"Liked\")\n",
80
+ "\n",
81
+ "data = list(prediction_data[\"Review\"])\n",
82
+ "results = pipe(data)\n"
83
+ ]
84
+ },
85
+ {
86
+ "cell_type": "code",
87
+ "execution_count": 30,
88
+ "metadata": {},
89
+ "outputs": [
90
+ {
91
+ "data": {
92
+ "text/plain": [
93
+ "['Wow... Loved this place.',\n",
94
+ " 'Crust is not good.',\n",
95
+ " 'Not tasty and the texture was just nasty.',\n",
96
+ " 'Stopped by during the late May bank holiday off Rick Steve recommendation and loved it.',\n",
97
+ " 'The selection on the menu was great and so were the prices.']"
98
+ ]
99
+ },
100
+ "execution_count": 30,
101
+ "metadata": {},
102
+ "output_type": "execute_result"
103
+ }
104
+ ],
105
+ "source": [
106
+ "data[:5]"
107
+ ]
108
+ },
109
+ {
110
+ "cell_type": "code",
111
+ "execution_count": 31,
112
+ "metadata": {},
113
+ "outputs": [
114
+ {
115
+ "data": {
116
+ "text/html": [
117
+ "<div>\n",
118
+ "<style scoped>\n",
119
+ " .dataframe tbody tr th:only-of-type {\n",
120
+ " vertical-align: middle;\n",
121
+ " }\n",
122
+ "\n",
123
+ " .dataframe tbody tr th {\n",
124
+ " vertical-align: top;\n",
125
+ " }\n",
126
+ "\n",
127
+ " .dataframe thead th {\n",
128
+ " text-align: right;\n",
129
+ " }\n",
130
+ "</style>\n",
131
+ "<table border=\"1\" class=\"dataframe\">\n",
132
+ " <thead>\n",
133
+ " <tr style=\"text-align: right;\">\n",
134
+ " <th></th>\n",
135
+ " <th>count</th>\n",
136
+ " <th>sentiment</th>\n",
137
+ " </tr>\n",
138
+ " </thead>\n",
139
+ " <tbody>\n",
140
+ " <tr>\n",
141
+ " <th>0</th>\n",
142
+ " <td>283</td>\n",
143
+ " <td>Positive</td>\n",
144
+ " </tr>\n",
145
+ " <tr>\n",
146
+ " <th>1</th>\n",
147
+ " <td>419</td>\n",
148
+ " <td>Negative</td>\n",
149
+ " </tr>\n",
150
+ " <tr>\n",
151
+ " <th>2</th>\n",
152
+ " <td>298</td>\n",
153
+ " <td>Neutral</td>\n",
154
+ " </tr>\n",
155
+ " </tbody>\n",
156
+ "</table>\n",
157
+ "</div>"
158
+ ],
159
+ "text/plain": [
160
+ " count sentiment\n",
161
+ "0 283 Positive\n",
162
+ "1 419 Negative\n",
163
+ "2 298 Neutral"
164
+ ]
165
+ },
166
+ "execution_count": 31,
167
+ "metadata": {},
168
+ "output_type": "execute_result"
169
+ }
170
+ ],
171
+ "source": [
172
+ "positive_counter = 0 \n",
173
+ "negative_counter = 0\n",
174
+ "neutral_counter = 0\n",
175
+ "for x in results:\n",
176
+ " if x['label'] == 'POSITIVE':\n",
177
+ " positive_counter = positive_counter + 1\n",
178
+ " elif x['label'] == 'NEGATIVE':\n",
179
+ " negative_counter = negative_counter + 1\n",
180
+ " else:\n",
181
+ " neutral_counter = neutral_counter + 1\n",
182
+ "\n",
183
+ "result_data = pd.DataFrame({\n",
184
+ " 'count': [positive_counter, negative_counter, neutral_counter],\n",
185
+ " 'sentiment': ['Positive', 'Negative', 'Neutral']\n",
186
+ "})\n",
187
+ "\n",
188
+ "result_data"
189
+ ]
190
+ },
191
+ {
192
+ "cell_type": "code",
193
+ "execution_count": 32,
194
+ "metadata": {},
195
+ "outputs": [
196
+ {
197
+ "name": "stdout",
198
+ "output_type": "stream",
199
+ "text": [
200
+ "Running on local URL: http://127.0.0.1:7866\n",
201
+ "Running on public URL: https://af39480688d32c192a.gradio.live\n",
202
+ "\n",
203
+ "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n"
204
+ ]
205
+ },
206
+ {
207
+ "data": {
208
+ "text/html": [
209
+ "<div><iframe src=\"https://af39480688d32c192a.gradio.live\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
210
+ ],
211
+ "text/plain": [
212
+ "<IPython.core.display.HTML object>"
213
+ ]
214
+ },
215
+ "metadata": {},
216
+ "output_type": "display_data"
217
+ },
218
+ {
219
+ "data": {
220
+ "text/plain": []
221
+ },
222
+ "execution_count": 32,
223
+ "metadata": {},
224
+ "output_type": "execute_result"
225
+ }
226
+ ],
227
+ "source": [
228
+ "single_input_demo = gr.Interface.from_pipeline(pipe, title=\"Sentiment Analysis\")\n",
229
+ "single_input_demo.launch(share=True)"
230
+ ]
231
+ },
232
+ {
233
+ "cell_type": "code",
234
+ "execution_count": 33,
235
+ "metadata": {},
236
+ "outputs": [
237
+ {
238
+ "name": "stdout",
239
+ "output_type": "stream",
240
+ "text": [
241
+ "Running on local URL: http://127.0.0.1:7867\n",
242
+ "Running on public URL: https://4ce90a546387218f07.gradio.live\n",
243
+ "\n",
244
+ "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n"
245
+ ]
246
+ },
247
+ {
248
+ "data": {
249
+ "text/html": [
250
+ "<div><iframe src=\"https://4ce90a546387218f07.gradio.live\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
251
+ ],
252
+ "text/plain": [
253
+ "<IPython.core.display.HTML object>"
254
+ ]
255
+ },
256
+ "metadata": {},
257
+ "output_type": "display_data"
258
+ },
259
+ {
260
+ "data": {
261
+ "text/plain": []
262
+ },
263
+ "execution_count": 33,
264
+ "metadata": {},
265
+ "output_type": "execute_result"
266
+ }
267
+ ],
268
+ "source": [
269
+ "import plotly.express as plt\n",
270
+ "\n",
271
+ "def plotly_plot(): \n",
272
+ " p = plt.bar(result_data, x='sentiment', y='count', title='Restaurent Review Analysis', color=\"count\")\n",
273
+ " return p\n",
274
+ "\n",
275
+ "# show the results\n",
276
+ "outputs = gr.Plot()\n",
277
+ "\n",
278
+ "demo = gr.Interface(fn=plotly_plot, inputs=None, outputs=outputs, title=\"Restaurant Customer Review Sentiment Analysis\")\n",
279
+ "\n",
280
+ "demo.launch(share=True)"
281
+ ]
282
+ }
283
+ ],
284
+ "metadata": {
285
+ "kernelspec": {
286
+ "display_name": "Python 3",
287
+ "language": "python",
288
+ "name": "python3"
289
+ },
290
+ "language_info": {
291
+ "codemirror_mode": {
292
+ "name": "ipython",
293
+ "version": 3
294
+ },
295
+ "file_extension": ".py",
296
+ "mimetype": "text/x-python",
297
+ "name": "python",
298
+ "nbconvert_exporter": "python",
299
+ "pygments_lexer": "ipython3",
300
+ "version": "3.10.6"
301
+ }
302
+ },
303
+ "nbformat": 4,
304
+ "nbformat_minor": 2
305
+ }