File size: 3,621 Bytes
85e28c3
 
8d6659b
85e28c3
 
 
 
 
 
 
 
 
 
 
 
 
8d6659b
85e28c3
 
 
 
 
8d6659b
85e28c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import numpy as np


model_name = "Ngit/MiniLMv2-L6-H384-goemotions-v2"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)


def evaluate(text):
    text = text.strip()
    proba = [0]*28
    if text:
        input_ids = tokenizer(text, return_tensors="pt").input_ids
        output = model(input_ids)
        proba = 1 / (1 + np.exp(-output.logits.detach().numpy()[0]))
        proba = [int(v*1000)/10 for v in proba]
    return proba


with gr.Blocks() as demo:
    text = gr.Textbox(label="Text to evaluate", lines=6)
    with gr.Row():
        with gr.Group():
            t_adm = gr.Slider(label="admiration", value=0, maximum=100)
            t_amu = gr.Slider(label="amusement", value=0, maximum=100)
            t_ang = gr.Slider(label="anger", value=0, maximum=100)
            t_ann = gr.Slider(label="annoyance", value=0, maximum=100)
            t_app = gr.Slider(label="approval", value=0, maximum=100)
            t_car = gr.Slider(label="caring", value=0, maximum=100)
            t_con = gr.Slider(label="confusion", value=0, maximum=100)
        with gr.Group():
            t_cur = gr.Slider(label="curiosity", value=0, maximum=100)
            t_des = gr.Slider(label="desire", value=0, maximum=100)
            t_dis = gr.Slider(label="disappointment", value=0, maximum=100)
            t_dip = gr.Slider(label="disapproval", value=0, maximum=100)
            t_dit = gr.Slider(label="disgust", value=0, maximum=100)
            t_emb = gr.Slider(label="embarrassment", value=0, maximum=100)
            t_exc = gr.Slider(label="excitement", value=0, maximum=100)
        with gr.Group():
            t_fea = gr.Slider(label="fear", value=0, maximum=100)
            t_gra = gr.Slider(label="gratitude", value=0, maximum=100)
            t_gri = gr.Slider(label="grief", value=0, maximum=100)
            t_joy = gr.Slider(label="joy", value=0, maximum=100)
            t_lov = gr.Slider(label="love", value=0, maximum=100)
            t_ner = gr.Slider(label="nervousness", value=0, maximum=100)
            t_opt = gr.Slider(label="optimism", value=0, maximum=100)
        with gr.Group():
            t_pri = gr.Slider(label="pride", value=0, maximum=100)
            t_rea = gr.Slider(label="realization", value=0, maximum=100)
            t_rel = gr.Slider(label="relief", value=0, maximum=100)
            t_rem = gr.Slider(label="remorse", value=0, maximum=100)
            t_sad = gr.Slider(label="sadness", value=0, maximum=100)
            t_sur = gr.Slider(label="surprise", value=0, maximum=100)
            t_neu = gr.Slider(label="neutral", value=0, maximum=100)

    btn = gr.Button(value="Evaluate Emotion")
    btn.click(
            evaluate,
            inputs=[text],
            outputs=[
                t_adm,
                t_amu,
                t_ang,
                t_ann,
                t_app,
                t_car,
                t_con,
                t_cur,
                t_des,
                t_dis,
                t_dip,
                t_dit,
                t_emb,
                t_exc,
                t_fea,
                t_gra,
                t_gri,
                t_joy,
                t_lov,
                t_ner,
                t_opt,
                t_pri,
                t_rea,
                t_rel,
                t_rem,
                t_sad,
                t_sur,
                t_neu,
            ],
        )

if __name__ == "__main__":
    demo.queue().launch()