File size: 2,203 Bytes
126108c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f77676e
126108c
 
 
 
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

import gradio as gr
import numpy as np
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

labels = ['ๅ–œใณ', 'ๆ‚ฒใ—ใฟ', 'ๆœŸๅพ…', '้ฉšใ', 'ๆ€’ใ‚Š', 'ไฟก้ ผ', 'ๆ‚ฒใ—ใฟ', 'ๅซŒๆ‚ช']

def np_softmax(x):
    x_exp = torch.exp(torch.tensor(x) - torch.max(torch.tensor(x)))
    f_x = x_exp / x_exp.sum()
    return f_x

def emotion_clf(text):
    model.eval()
    tokens = tokenizer(text, truncation=True, return_tensors="pt")
    tokens.to(model.device)
    preds = model(**tokens)
    prob = np_softmax(preds.logits.cpu().detach().numpy()[0])
    out_dict = {n: p.item() for n, p in zip(labels, prob)}
    return out_dict

tokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese-whole-word-masking")
model = AutoModelForSequenceClassification.from_pretrained("jingwora/language-emotion-classification-ja", num_labels=8)

title = "Emotion Classification"
description = "Enter Japanese text and get the emotion probabilities."
text = gr.Textbox(placeholder="Enter japanese text", label="text", lines=3)
label = gr.Label(num_top_classes=8)
examples = [
    ["ๅคงๅˆ‡ใชๅ‹ไบบใŒ็ตๅฉšใ‚’็™บ่กจใ—ใŸใจใใ€ๅฟƒใŒๆบ€ใก่ถณใ‚ŠใŸๅนธใ›ใ‚’ๆ„Ÿใ˜ใพใ—ใŸใ€‚"],
    ["ๆ„›ใ™ใ‚‹็ฅ–ๆฏใŒไบกใใชใฃใŸใจใใ€่ƒธใซๆทฑใ„ๆ‚ฒใ—ใฟใŒๅบƒใŒใ‚Šใพใ—ใŸใ€‚"],
    ["ๆ–ฐใ—ใ„ไป•ไบ‹ใ‚’ๅง‹ใ‚ใ‚‹ๅ‰ๅคœใ€ๆ˜Žๆ—ฅใ‹ใ‚‰ใฎๆœช็Ÿฅใฎไธ–็•Œใซ่ƒธใŒ้ซ˜้ณดใ‚Šใพใ—ใŸใ€‚"],
    ["ๅฑฑ้“ใ‚’ๆญฉใ„ใฆใ„ใŸใ‚‰ใ€็พŽใ—ใ„ๆปใŒ็พใ‚Œใ€ๆ€ใ‚ใšๆฏใ‚’้ฃฒใ‚€้ฉšใใ‚’ๆ„Ÿใ˜ใพใ—ใŸใ€‚"],
    ["ๅ…ฌๅนณใ•ใ‚’ๆฌ ใ„ใŸๆฑบๅฎšใ‚’ๅ—ใ‘ใŸใจใใ€ๆ†คใ‚Šใ‚’ๆŠฑใˆใฆๆ€’ใ‚ŠใŒๆนงใไธŠใŒใ‚Šใพใ—ใŸใ€‚"],
    ["้›ฃใ—ใ„ๅฑ€้ขใงไปฒ้–“ใŒใ—ใฃใ‹ใ‚Šใจๆ”ฏใˆใฆใใ‚Œใฆใ€ๅฟƒใ‹ใ‚‰ใฎไฟก้ ผใ‚’ๆ„Ÿใ˜ใพใ—ใŸใ€‚"],
    ["ๅคฑๆ‹ใ—ใŸใจใใ€ๅฟƒใซ้‡ใ„ๆ‚ฒใ—ใฟใŒๅบƒใŒใ‚Šใ€ไฝ•ใ‚‚ๆ‰‹ใซใคใ‹ใชใ„็Šถๆณใงใ—ใŸใ€‚"],
    ["ๆฑšใ‚ŒใŸๅ ดๆ‰€ใง้•ทๆ™‚้–“้Žใ”ใ—ใŸใจใใ€ไธๅฟซๆ„ŸใจๅซŒๆ‚ชๆ„ŸใŒๅ‹Ÿใ‚Šใพใ—ใŸใ€‚"],
]

demo = gr.Interface(
    fn=emotion_clf,
    inputs=text,
    outputs=label,
    title=title,
    description=description,
    examples=examples,
    interpretation="default", 
    theme="freddyaboulton/dracula_revamped",
)

demo.launch()