File size: 17,700 Bytes
56d3539
 
 
 
 
 
be6be7b
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
56d3539
be6be7b
56d3539
be6be7b
 
 
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
56d3539
be6be7b
 
 
 
 
56d3539
be6be7b
 
56d3539
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
import gradio as gr
from utils import T5Generator


# Preprocessing function that modifies the user input.
def preprocess_input(user_input):
    bos_instruction_id = """Definition: The output will be the aspects (both implicit and explicit) and the aspect's sentiment polarity. In cases where there are no aspects the output should be noaspectterm:none.
            Examples:
            1.
            
            input: The hotel was beautiful, with friendly staff and a delicious breakfast buffet. However, the Wi-Fi was slow, the bathroom wasn't clean, and the room had a weird smell.
            output: hotel\:positive, staff\:positive, breakfast buffet\:positive, Wi-Fi\:negative, bathroom\:negative, room smell\:negative
            
            2.
            
            input: This coat looks stylish and fits perfectly. The fabric feels high-quality, and the color is vibrant. But the buttons fall off easily, and it's not warm enough for winter.
            output: style\:positive, fit\:positive, fabric\:positive, color\:positive, buttons\:negative, warmth\:negative
            
            3.
            
            input: The online course was affordable and the instructor explained topics clearly. However, the video quality was poor, the quizzes were too simple, and the pacing was inconsistent.
            output: cost\:positive, instructor clarity\:positive, video quality\:negative, quizzes\:negative, pacing\:negative
            
            4.
            
            input: My experience with this bank has been mostly good. The mobile app is user-friendly, staff are polite, and transactions are smooth. But the customer support takes too long to respond, and hidden fees are frustrating.
            output: mobile app\:positive, staff\:positive, transactions\:positive, customer support\:negative, hidden fees\:negative
            
            5.
            
            input: I enjoyed the plot and the character development in this novel. The writing style was smooth, and the dialogue felt real. But the ending was disappointing and the pacing was uneven in the middle chapters.
            output: plot\:positive, character development\:positive, writing style\:positive, dialogue\:positive, ending\:negative, pacing\:negative
            
            6.
            
            input: The doctor was kind and explained everything well. The clinic was clean, and the staff was professional. But the waiting time was too long, and I felt rushed during the consultation.
            output: doctor\:positive, clinic cleanliness\:positive, staff professionalism\:positive, waiting time\:negative, consultation time\:negative
            
            7.
            
            input: The sound quality of these headphones is amazing, and the battery lasts long. The design is sleek, and the noise cancellation works well. But they’re uncomfortable after long use and overpriced.
            output: sound quality\:positive, battery life\:positive, design\:positive, noise cancellation\:positive, comfort\:negative, price\:negative
            
            8.
            
            input: This vacuum cleaner has strong suction power and is easy to maneuver. It’s lightweight and the attachments are useful. However, it's very loud and the dustbin fills up quickly.
            output: suction power\:positive, maneuverability\:positive, weight\:positive, attachments\:positive, noise\:negative, dustbin size\:negative
            
            9.
            
            input: The recipe was easy to follow, and the dish turned out flavorful. The ingredients were accessible, and the cooking time was just right. But the portion size was small and cleanup took a while.
            output: instructions\:positive, taste\:positive, ingredients\:positive, cooking time\:positive, portion size\:negative, cleanup\:negative
            
            10.
            
            input: This gym is well-equipped and spacious. The trainers are knowledgeable and the membership is reasonably priced. However, the showers are often dirty and there’s limited parking.
            output: equipment\:positive, space\:positive, trainers\:positive, price\:positive, showers\:negative, parking\:negative
            
            11.
            
            input: The flight was on time, and the in-flight entertainment was great. Seats were clean and staff were courteous. But the legroom was terrible and the food was tasteless.
            output: punctuality\:positive, entertainment\:positive, cleanliness\:positive, staff\:positive, legroom\:negative, food\:negative
            
            12.
            
            input: The mobile phone's camera is sharp, the screen is vibrant, and the battery life is impressive. However, the device heats up quickly and the UI is cluttered.
            output: camera\:positive, screen\:positive, battery\:positive, heating\:negative, UI\:negative
            
            13.
            
            input: The tour guide was informative, and the destinations were breathtaking. The transportation was comfortable and well organized. But meals were mediocre and the schedule was too packed.
            output: guide\:positive, destinations\:positive, transportation\:positive, meals\:negative, schedule\:negative
            
            14.
            
            input: The jeans fit perfectly, are very comfortable, and the material feels premium. However, the dye runs in the wash and delivery took too long.
            output: fit\:positive, comfort\:positive, material\:positive, dye quality\:negative, delivery\:negative
            
            15.
            
            input: This smartwatch tracks fitness accurately, has a responsive touch screen, and looks stylish. But syncing with the phone is inconsistent and charging takes too long.
            output: fitness tracking\:positive, touchscreen\:positive, design\:positive, syncing\:negative, charging\:negative
            
            16.
            
            input: The therapist was compassionate and helpful. Sessions were structured and impactful. However, the cost was high, and appointment availability was limited.
            output: therapist\:positive, session structure\:positive, impact\:positive, cost\:negative, appointment availability\:negative
            
            17.
            
            input: The gaming console runs smoothly and the graphics are top-notch. The game library is vast, and loading times are short. But the controllers feel cheap and it's very bulky.
            output: performance\:positive, graphics\:positive, game library\:positive, loading time\:positive, controller quality\:negative, size\:negative
            
            18.
            
            input: This online store has a great variety of products and fast delivery. Prices are competitive and the website is easy to navigate. But the return process is tedious and customer support is unhelpful.
            output: product variety\:positive, delivery\:positive, pricing\:positive, website UX\:positive, return process\:negative, customer support\:negative
            
            19.
            
            input: The air conditioner cools quickly, has a quiet mode, and looks modern. But the installation service was poor and the remote is hard to use.
            output: cooling\:positive, noise\:positive, design\:positive, installation\:negative, remote\:negative
            
            20.
            
            input: The blender is powerful, easy to clean, and comes with useful attachments. But it's very noisy and the lid is hard to remove.
            output: power\:positive, cleaning\:positive, attachments\:positive, noise\:negative, lid\:negative
            
            21.
            
            input: The drama had amazing cinematography and a compelling storyline. The acting was strong and the soundtrack was fitting. But the pacing was off and the ending felt rushed.
            output: cinematography\:positive, storyline\:positive, acting\:positive, soundtrack\:positive, pacing\:negative, ending\:negative
            
            22.
            
            input: The mattress is very comfortable and supports my back well. It’s breathable and has no chemical smell. However, delivery was delayed and the warranty terms are confusing.
            output: comfort\:positive, support\:positive, breathability\:positive, smell\:positive, delivery\:negative, warranty\:negative
            
            23.
            
            input: The mobile app is intuitive and has many features. Login is quick and data syncs well. However, it crashes often and has annoying ads.
            output: usability\:positive, features\:positive, login\:positive, sync\:positive, stability\:negative, ads\:negative
            
            24.
            
            input: The watch looks elegant, keeps time perfectly, and feels solid. But the strap is uncomfortable and it scratches too easily.
            output: design\:positive, accuracy\:positive, build\:positive, strap comfort\:negative, durability\:negative
            
            25.
            
            input: The refrigerator is spacious and energy-efficient. It’s quiet and cools evenly. But the freezer section is small and the shelves feel flimsy.
            output: capacity\:positive, efficiency\:positive, noise\:positive, cooling\:positive, freezer\:negative, shelf quality\:negative
            
            26.
            
            input: The coffee maker brews quickly and the coffee is hot. The design is sleek, and it's easy to clean. However, it leaks when brewing and is louder than expected.
            output: brewing time\:positive, coffee temperature\:positive, design\:positive, cleaning\:positive, leakage\:negative, noise\:negative
            
            27.
            
            input: The sports shoes are comfortable, durable, and stylish. The grip is excellent, and they are lightweight. But the stitching came undone after a few uses, and the price is too high.
            output: comfort\:positive, durability\:positive, style\:positive, grip\:positive, stitching\:negative, price\:negative
            
            28.
            
            input: The smartwatch tracks steps accurately and has a great battery life. It's sleek and easy to use. But the heart rate monitor is inaccurate and the band is uncomfortable.
            output: step tracking\:positive, battery life\:positive, design\:positive, ease of use\:positive, heart rate monitor\:negative, band comfort\:negative
            
            29.
            
            input: The pizza crust was crispy, and the toppings were fresh. The sauce was flavorful, and the cheese was perfectly melted. However, it was too greasy and the delivery was late.
            output: crust\:positive, toppings\:positive, sauce\:positive, cheese\:positive, grease\:negative, delivery time\:negative
            
            30.
            
            input: The tablet has a sharp display and the interface is responsive. It’s lightweight and portable. But the battery drains too quickly, and the camera quality is poor.
            output: display\:positive, interface\:positive, portability\:positive, battery life\:negative, camera\:negative
            
            31.
            
            input: The hotel room had a great view and was spacious. The bed was comfortable, and the bathroom was well-equipped. However, the room service was slow, and the TV had limited channels.
            output: view\:positive, space\:positive, bed\:positive, bathroom\:positive, room service\:negative, TV channels\:negative
            
            32.
            
            input: The coffee shop has a cozy atmosphere and friendly staff. The coffee was great, and the pastries were fresh. However, the seating was uncomfortable and the place was too noisy.
            output: atmosphere\:positive, staff\:positive, coffee\:positive, pastries\:positive, seating\:negative, noise\:negative
            
            33.
            
            input: The museum had a variety of exhibits and was well-maintained. The staff was informative, and the layout was easy to navigate. However, the entrance fee was too high, and the gift shop had limited items.
            output: exhibits\:positive, maintenance\:positive, staff\:positive, layout\:positive, entrance fee\:negative, gift shop\:negative
            
            34.
            
            input: The restaurant's ambiance was elegant, and the staff was attentive. The appetizers were great, and the main course was delicious. However, the portions were small, and the dessert was disappointing.
            output: ambiance\:positive, staff\:positive, appetizers\:positive, main course\:positive, portion size\:negative, dessert\:negative
            
            35.
            
            input: The online customer support was quick and efficient. The website was easy to navigate, and the checkout process was smooth. However, the product packaging was damaged, and the shipping took longer than expected.
            output: customer support\:positive, website\:positive, checkout\:positive, packaging\:negative, shipping\:negative
            
            36.
            
            input: The book was an interesting read, with great character development and a unique storyline. However, the pacing was slow, and the ending was predictable.
            output: character development\:positive, storyline\:positive, pacing\:negative, ending\:negative
            
            37.
            
            input: The video game has great graphics and a compelling story. The gameplay mechanics are smooth, and the sound design is immersive. However, there are frequent bugs, and the loading time is long.
            output: graphics\:positive, story\:positive, gameplay\:positive, sound design\:positive, bugs\:negative, loading time\:negative
            
            38.
            
            input: The skincare product is gentle on my skin and leaves it feeling smooth. The scent is pleasant

            38. input: The battery life is amazing and the screen is crystal clear.
               output: battery life:positive, screen:positive
            
            40. input: The receptionist was rude, but the room was clean.
               output: receptionist:negative, room:positive
            
            41. input: This shirt fits well but the fabric feels cheap.
               output: fit:positive, fabric:negative
            
            42. input: The plot of the book was a bit slow but very emotional.
               output: plot:negative, emotional content:positive
            
            43. input: The Wi-Fi in the hotel barely worked and the bathroom was dirty.
               output: Wi-Fi:negative, bathroom:negative
            
            44. input: Their customer support team responded quickly and solved my problem.
               output: customer support:positive, response time:positive
            
            45. input: I like the color and design, but the stitching came loose after one wash.
               output: color:positive, design:positive, stitching:negative
            
            46. input: The professor explains concepts very clearly but gives very tough exams.
               output: explanations:positive, exams:negative
            
            47. input: The application interface is clean and intuitive, but it crashes too often.
                output: interface:positive, usability:positive, stability:negative
            
            48. input: The museum had a good collection, but the lighting was poor.
                output: collection:positive, lighting:negative
            
            49. input: The speaker has good bass but lacks clarity at high volumes.
                output: bass:positive, clarity:negative
            
            50. input: Parking was easy, but getting out took forever due to traffic.
                output: parking:positive, traffic:negative
                
            51. input: The gameplay is addictive but the graphics are outdated.
                output: gameplay:positive, graphics:negative
            
  
            Now complete the following example-
            input: """
    eos_instruction = ' \noutput:'
    # Append and prepend the text to the user's input.
    modified_input = bos_instruction_id + user_input + eos_instruction
    return modified_input


# Assuming you have a function `model_predict` that takes the processed text and returns a prediction.
def model_predict(processed_text):
    # Here you would include the logic to make a prediction based on the processed_text.
    # This example simply returns the processed text.
    # tokenize input
    input_ids = t5_exp.tokenizer(processed_text, return_tensors="pt").input_ids
    # generate output
    outputs = t5_exp.model.generate(input_ids, max_length=128)
    return t5_exp.tokenizer.decode(outputs[0], skip_special_tokens=True)


# Create T5 model object along with instructions
model_checkpoint = "Homeskills/mt_instruct_absa"
t5_exp = T5Generator(model_checkpoint)

iface = gr.Interface(fn=lambda x: model_predict(preprocess_input(x)),
                     inputs=[gr.Textbox(label="Input review text here")],
                     outputs=gr.Textbox(label="Extracted aspects & sentiment"),
                     title="Aspect-Based Sentiment Analysis (ABSA)",
                     description="This app will take a sample review segment as input and return the extracted aspects and the corresponding sentiments.",
                     )
iface.launch()