Spaces:
Running
Running
import tensorflow as tf | |
from transformers import RobertaTokenizer, TFRobertaForSequenceClassification | |
class SentimentAnalyzer: | |
def __init__(self, model_name='roberta-base', classifier_model='arpanghoshal/EmoRoBERTa'): | |
""" | |
Initializes the sentiment analyzer with the specified models. | |
:param model_name: Name of the tokenizer model | |
:param classifier_model: Name of the sentiment classification model | |
""" | |
self.tokenizer = RobertaTokenizer.from_pretrained(model_name) | |
self.model = TFRobertaForSequenceClassification.from_pretrained(classifier_model) | |
def analyze_sentiment(self, user_input): | |
""" | |
Analyzes the sentiment of the given user input. | |
:param user_input: Text input from the user | |
:return: A tuple of sentiment label and sentiment score | |
""" | |
encoded_input = self.tokenizer(user_input, return_tensors="tf", truncation=True, padding=True, max_length=512) | |
outputs = self.model(encoded_input) | |
scores = tf.nn.softmax(outputs.logits, axis=-1).numpy()[0] | |
predicted_class_idx = tf.argmax(outputs.logits, axis=-1).numpy()[0] | |
sentiment_label = self.model.config.id2label[predicted_class_idx] | |
sentiment_score = scores[predicted_class_idx] | |
return sentiment_label, sentiment_score | |