File size: 1,799 Bytes
b749f9b
d74be1e
 
b523b2d
e0faa7c
d763fab
0d92287
d74be1e
 
43f72c8
 
b749f9b
43f72c8
d74be1e
 
431582d
46bb59f
ac68060
 
4e33088
cef4787
ac68060
 
 
cfc3e8a
cef4787
 
 
 
 
 
cfc3e8a
1501319
89465fa
d74be1e
 
cef4787
 
 
 
 
d74be1e
 
cef4787
 
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
from transformers import RobertaTokenizer, AutoModelForSequenceClassification
from scipy.special import expit
import numpy as np
import os
import gradio as gr
import requests
from datetime import datetime

# set up model
authtoken = os.environ.get("TOKEN")
tokenizer = RobertaTokenizer.from_pretrained("guidecare/feelings_and_issues_large_v2", token=authtoken, use_safetensors=True)
tokenizer.do_lower_case = True
model = AutoModelForSequenceClassification.from_pretrained("guidecare/feelings_and_issues_large_v2", token=authtoken, use_safetensors=True)
all_label_names = list(model.config.id2label.values())

def predict(text):
    probs = expit(model(**tokenizer([text], return_tensors="pt", padding=True)).logits.detach().numpy())
    probs = [float(np.round(i, 2)) for i in probs[0]]
    zipped_list = list(zip(all_label_names, probs))
    print(text, zipped_list)
    
    issues = [(i, j) for i, j in zipped_list if i.startswith('issue')]
    feelings = [(i, j) for i, j in zipped_list if i.startswith('feeling')]
    harm = [(i, j) for i, j in zipped_list if i.startswith('harm')]
    sentiment = [(i, j) for i, j in zipped_list if i.startswith('sentiment')]
    
    issues = sorted(issues, key=lambda x: x[1], reverse=True)
    feelings = sorted(feelings, key=lambda x: x[1], reverse=True)
    harm = sorted(harm, key=lambda x: x[1], reverse=True)
    sentiment = sorted(sentiment, key=lambda x: x[1], reverse=True)
    
    top = issues + feelings + harm + sentiment
    d = {i: j for i, j in top}
    return d

iface = gr.Interface(
    fn=predict,
    inputs=gr.Textbox(label="Enter text"),
    outputs=gr.Label(label="Predictions"),
    title="Emotion and Issue Predictor",
    description="Enter a text to predict emotions and issues.",
)

if __name__ == "__main__":
    iface.launch()