Spaces:
Runtime error
Runtime error
feat: update visualization
Browse files
app.py
CHANGED
@@ -1,14 +1,13 @@
|
|
|
|
1 |
import json
|
2 |
from functools import partial
|
3 |
-
from typing import Callable, Dict
|
4 |
import transformers
|
5 |
from transformers import (
|
6 |
AutoModelForSequenceClassification,
|
7 |
AutoTokenizer,
|
8 |
pipeline
|
9 |
)
|
10 |
-
|
11 |
-
|
12 |
import pythainlp
|
13 |
from pprint import pprint
|
14 |
from itertools import chain
|
@@ -16,33 +15,67 @@ from itertools import chain
|
|
16 |
import gradio as gr
|
17 |
|
18 |
|
19 |
-
tokenizer=AutoTokenizer.from_pretrained(
|
20 |
'airesearch/wangchanberta-base-att-spm-uncased',
|
21 |
-
revision='finetuned@wisesight_sentiment-v1.1'
|
22 |
)
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
#pipeline
|
25 |
text_cls_pipeline = pipeline(task='sentiment-analysis',
|
26 |
-
|
27 |
-
|
28 |
-
revision ='finetuned@wisesight_sentiment-v1.1')
|
29 |
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
def classify_text(text: str):
|
32 |
-
|
|
|
33 |
print(f'results:\n {results}')
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
36 |
return json.dumps(results, ensure_ascii=False, indent=4), html_text
|
37 |
|
38 |
|
39 |
demo = gr.Interface(fn=classify_text,
|
40 |
inputs=gr.Textbox(lines=5, placeholder='Input text in Thai', label='Input text'),
|
41 |
examples=[
|
42 |
-
['
|
43 |
['ฟอร์ด บุกตลาด อีวี ในอินเดีย #prachachat #ตลาดรถยนต์'],
|
44 |
['สั่งไป2 เมนู คือมัชฉะลาเต้ร้อน กับ ไอศครีมชาเขียว มัชฉะลาเต้ร้อน รสชาเขียวเข้มข้น หอม มัน แต่ไม่กลมกล่อม มันจืดแบบจืดสนิท ส่วนไอศครีมชาเขียว ทานแล้วรสมันออกใบไม้ๆมากกว่าชาเขียว แล้วก็หวานไป โดยรวมแล้วเฉยมากก ดีแค่รสชาเขียวเข้ม มีน้ำเปล่าบริการฟรี'],
|
45 |
-
['
|
46 |
],
|
47 |
|
48 |
outputs=[gr.Textbox(), gr.HTML()])
|
|
|
1 |
+
from cProfile import label
|
2 |
import json
|
3 |
from functools import partial
|
4 |
+
from typing import Callable, Dict, List
|
5 |
import transformers
|
6 |
from transformers import (
|
7 |
AutoModelForSequenceClassification,
|
8 |
AutoTokenizer,
|
9 |
pipeline
|
10 |
)
|
|
|
|
|
11 |
import pythainlp
|
12 |
from pprint import pprint
|
13 |
from itertools import chain
|
|
|
15 |
import gradio as gr
|
16 |
|
17 |
|
18 |
+
tokenizer = AutoTokenizer.from_pretrained(
|
19 |
'airesearch/wangchanberta-base-att-spm-uncased',
|
20 |
+
# revision='finetuned@wisesight_sentiment-v1.1'
|
21 |
)
|
22 |
|
23 |
+
model = AutoModelForSequenceClassification.from_pretrained(
|
24 |
+
'airesearch/wangchanberta-base-att-spm-uncased',
|
25 |
+
revision='finetuned@wisesight_sentiment-v1.1',
|
26 |
+
)
|
27 |
+
model.config.return_all_scores = True
|
28 |
+
LABEL_MAPPING = {
|
29 |
+
'pos': '🤗 Positive:',
|
30 |
+
'neu': '😐 Neutral:',
|
31 |
+
'neg': '😡 Negative:',
|
32 |
+
'q': '🤔 Quesiton:',
|
33 |
+
}
|
34 |
+
CSS_PROGRESS_BAR_MAPPING = {
|
35 |
+
'pos':'w3-green',
|
36 |
+
'neu': 'w3-light-blue',
|
37 |
+
'neg': 'w3-red',
|
38 |
+
'q': 'w3-blue',
|
39 |
+
}
|
40 |
+
LABEL_MAPPING_REVERSED = {v:k for k,v in LABEL_MAPPING.items() }
|
41 |
#pipeline
|
42 |
text_cls_pipeline = pipeline(task='sentiment-analysis',
|
43 |
+
tokenizer=tokenizer,
|
44 |
+
model=model)
|
|
|
45 |
|
46 |
+
css_text = """<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">"""
|
47 |
+
def render_html(items: List[Dict]):
|
48 |
+
html_text = ''
|
49 |
+
for item in items:
|
50 |
|
51 |
+
label, score = item['label'], item['score']
|
52 |
+
label_id = LABEL_MAPPING_REVERSED[label]
|
53 |
+
|
54 |
+
progress_bar_class_text = CSS_PROGRESS_BAR_MAPPING[label_id]
|
55 |
+
|
56 |
+
html_text += f'<span>{label.replace(" ", " ")} {(score*100):8.2f}%<span>' + \
|
57 |
+
f'<div class="w3-light-grey w3-round"><div class="{progress_bar_class_text} w3-round" style="height:19px;width:{round(score*100,2)}%"></div></div><div style="height:8px;"></div>'
|
58 |
+
|
59 |
+
return '<div class="w3-container">' + html_text + '</div>'
|
60 |
def classify_text(text: str):
|
61 |
+
text = text.replace(' ', '<_>')
|
62 |
+
results = text_cls_pipeline(text)[0]
|
63 |
print(f'results:\n {results}')
|
64 |
+
for i, result in enumerate(results):
|
65 |
+
results[i]['label'] = LABEL_MAPPING[result['label']]
|
66 |
+
results[i]['score'] = float(round(float(result['score']), 4))
|
67 |
+
html_text = css_text + render_html(results)
|
68 |
+
print(html_text)
|
69 |
return json.dumps(results, ensure_ascii=False, indent=4), html_text
|
70 |
|
71 |
|
72 |
demo = gr.Interface(fn=classify_text,
|
73 |
inputs=gr.Textbox(lines=5, placeholder='Input text in Thai', label='Input text'),
|
74 |
examples=[
|
75 |
+
['งานจากผกก. คนนี้ไม่เคยทำให้เราผิดหวัง ต้องหาเวลาไปดูรอบสอง'],
|
76 |
['ฟอร์ด บุกตลาด อีวี ในอินเดีย #prachachat #ตลาดรถยนต์'],
|
77 |
['สั่งไป2 เมนู คือมัชฉะลาเต้ร้อน กับ ไอศครีมชาเขียว มัชฉะลาเต้ร้อน รสชาเขียวเข้มข้น หอม มัน แต่ไม่กลมกล่อม มันจืดแบบจืดสนิท ส่วนไอศครีมชาเขียว ทานแล้วรสมันออกใบไม้ๆมากกว่าชาเขียว แล้วก็หวานไป โดยรวมแล้วเฉยมากก ดีแค่รสชาเขียวเข้ม มีน้ำเปล่าบริการฟรี'],
|
78 |
+
['สาขานี้มีลิปของ Etude ไหมอ่าคะ ']
|
79 |
],
|
80 |
|
81 |
outputs=[gr.Textbox(), gr.HTML()])
|