ThankGod's picture
title-description-edit
09f6af6 unverified
Raw
History Blame Contribute Delete
2.23 kB
from transformers import AutoModelForSequenceClassification
from transformers import AutoTokenizer, AutoConfig
import numpy as np
from scipy.special import softmax
import gradio as gr
# Preprocess text (username and link placeholders)
def preprocess(text):
new_text = []
for t in text.split(" "):
t = '@user' if t.startswith('@') and len(t) > 1 else t
t = 'http' if t.startswith('http') else t
new_text.append(t)
return " ".join(new_text)
# load model
MODEL = f"cardiffnlp/twitter-roberta-base-sentiment-latest"
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
#model.save_pretrained(MODEL)
tokenizer = AutoTokenizer.from_pretrained(MODEL)
config = AutoConfig.from_pretrained(MODEL)
# create classifier function
def classify_sentiments(text):
text = preprocess(text)
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
scores = output[0][0].detach().numpy()
scores = softmax(scores)
# Print labels and scores
probs = {}
ranking = np.argsort(scores)
ranking = ranking[::-1]
for i in range(len(scores)):
l = config.id2label[ranking[i]]
s = scores[ranking[i]]
probs[l] = np.round(float(s), 4)
return probs
#build the Gradio app
#Instructuction = "Write an imaginary review about a product or service you might be interested in."
title="Text Sentiment Analysis"
description = """Write a Good or Bad review about an imaginary product or service,\
see how the machine learning model is able to predict your sentiments"""
article = """
- Click submit button to test sentiment analysis prediction
- Click clear button to refresh text
"""
gr.Interface(classify_sentiments,
'text',
'label',
title = title,
description = description,
#Instruction = Instructuction,
article = article,
allow_flagging = "never",
live = False,
examples=["This has to be the best Introductory course in machine learning",
"I consider this training an absolute waste of time."]
).launch()