sergeyfeldman's picture
Token usage fix
16683e1 verified
raw
history blame
1.85 kB
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",
use_safetensors=True,
use_auth_token=authtoken
)
tokenizer.do_lower_case = True
model = AutoModelForSequenceClassification.from_pretrained(
"guidecare/feelings_and_issues_large_v2",
use_safetensors=True,
use_auth_token=authtoken
)
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()