eaedk's picture
APP
29f83a3
raw
history blame
No virus
1.82 kB
import gradio as gr
from transformers import AutoModelForSequenceClassification
from transformers import AutoTokenizer, AutoConfig
import numpy as np
from scipy.special import softmax
# Setup
model_path = f"GhylB/Sentiment_Analysis_DistilBERT"
tokenizer = AutoTokenizer.from_pretrained(model_path)
config = AutoConfig.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
# Functions
# 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)
def sentiment_analysis(text):
text = preprocess(text)
# PyTorch-based models
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
scores_ = output[0][0].detach().numpy()
scores_ = softmax(scores_)
# Format output dict of scores
labels = ['Negative', 'Neutral', 'Positive']
scores = {l: float(s) for (l, s) in zip(labels, scores_)}
return scores
demo = gr.Interface(
fn=sentiment_analysis,
inputs=gr.Textbox(placeholder="Copy and paste/Write a tweet here..."),
outputs="text",
interpretation="default",
examples=[["What's up with the vaccine"],
["Covid cases are increasing fast!"],
["Covid has been invented by Mavis"],
["I'm going to party this weekend"],
["Covid is hoax"]],
title="Tutorial : Sentiment Analysis App",
description="This Application assesses if a twitter post relating to vaccinations is positive, neutral, or negative.", )
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860) # 8080