Spaces:
Sleeping
Sleeping
import pandas as pd | |
import numpy as np | |
import nltk | |
from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
from scipy.special import softmax | |
import gradio as gr | |
# Download necessary NLTK resources | |
nltk.download('punkt') | |
nltk.download('punkt_tab') | |
nltk.download('averaged_perceptron_tagger') | |
# Load the RoBERTa tokenizer and model | |
tokenizer = AutoTokenizer.from_pretrained('cardiffnlp/twitter-roberta-base-sentiment') | |
model = AutoModelForSequenceClassification.from_pretrained('cardiffnlp/twitter-roberta-base-sentiment') | |
# Function to calculate polarity scores using RoBERTa | |
def polarity_scores_roberta(review_text): | |
tokens = nltk.word_tokenize(review_text) | |
encoded_text = tokenizer(review_text, return_tensors='pt') | |
output = model(**encoded_text) | |
scores = output[0][0].detach().numpy() | |
scores = softmax(scores) | |
scores_dict = { | |
'Negative': scores[0], | |
'Neutral': scores[1], | |
'Positive': scores[2] | |
} | |
return scores_dict | |
# Gradio interface function | |
def analyze_review(review_text): | |
# Analyze the review | |
scores = polarity_scores_roberta(review_text) | |
# Determine the sentiment | |
sentiment = max(scores, key=scores.get) | |
return f"The sentiment is {sentiment}.\n\nScores:\n- Negative: {scores['Negative']:.2f}\n- Neutral: {scores['Neutral']:.2f}\n- Positive: {scores['Positive']:.2f}" | |
# Gradio Interface | |
gr.Interface( | |
fn=analyze_review, | |
inputs=gr.Textbox(lines=5, placeholder="Enter your review here..."), | |
outputs=gr.Textbox(), | |
title="Review Sentiment Analysis with RoBERTa", | |
description="Enter a review and get the sentiment analysis using a RoBERTa model.", | |
).launch() |