thiruvanth's picture
Update app.py
72b7afd verified
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import numpy as np
import gradio as gr
device = 'cuda' if torch.cuda.is_available() else 'cpu'
MODEL_PATH = 'finiteautomata/bertweet-base-sentiment-analysis'
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH)
model = model.to(device)
query = 'I am not having a great day.'
inputs = tokenizer(query, return_tensors='pt', truncation=True)
inputs = inputs.to(device)
outputs = model(**inputs)
label2id = model.config.label2id
logits = outputs.logits
sigmoid = torch.nn.Sigmoid()
probs = sigmoid(logits.squeeze().cpu())
probs = probs.detach().numpy()
for i, k in enumerate(label2id.keys()):
label2id[k] = probs[i]
label2id = {k: v for k, v in sorted(label2id.items(), key=lambda item: item[1], reverse=True)}
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH)
model = model.to(device)
def get_predictions(input_text: str) -> dict:
label2id = model.config.label2id
inputs = tokenizer(input_text, return_tensors='pt', truncation=True)
inputs = inputs.to(device)
outputs = model(**inputs)
logits = outputs.logits
sigmoid = torch.nn.Sigmoid()
probs = sigmoid(logits.squeeze().cpu())
probs = probs.detach().numpy()
for i, k in enumerate(label2id.keys()):
label2id[k] = probs[i]
label2id = {k: float(v) for k, v in sorted(label2id.items(), key=lambda item: item[1].item(), reverse=True)}
return label2id
gr.Interface(
fn=get_predictions,
inputs=gr.components.Textbox(label='Input'),
outputs=gr.components.Label(label='Predictions', num_top_classes=3),
allow_flagging='never'
).launch(debug='True')