Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
import torch | |
import torch | |
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer | |
# Load model directly | |
from transformers import AutoTokenizer, AutoModelForSequenceClassification, AutoModelForSeq2SeqLM, RobertaTokenizer, RobertaForSequenceClassification | |
# Define a function for text summarization using GPT | |
def summarize_text(text, max_length=1024): | |
tokenizer = AutoTokenizer.from_pretrained("kabita-choudhary/finetuned-bart-for-conversation-summary") | |
model = AutoModelForSeq2SeqLM.from_pretrained("kabita-choudhary/finetuned-bart-for-conversation-summary") | |
# Tokenize input text | |
input_ids = tokenizer.encode(text, return_tensors='pt', max_length=1024, truncation=True) | |
# Generate summary | |
summary_ids = model.generate(input_ids, max_length=max_length, num_return_sequences=1, early_stopping=True) | |
# Decode and return summary | |
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True) | |
return summary | |
# Define a function to analyze text for potential adult content | |
def analyze_adult_content(text): | |
# Load pre-trained RoBERTa model and tokenizer | |
tokenizer = RobertaTokenizer.from_pretrained('roberta-base') | |
model = RobertaForSequenceClassification.from_pretrained('roberta-base') | |
# Tokenize input text | |
inputs = tokenizer(text, return_tensors='pt') | |
# Perform inference | |
outputs = model(**inputs) | |
# Get predicted label (0: Not Adult Content, 1: Adult Content) | |
predicted_label_idx = torch.argmax(outputs.logits).item() | |
predicted_label = model.config.id2label[predicted_label_idx] | |
return predicted_label | |
# Define a function to analyze the sentiment of the text using VADER | |
def analyze_sentiment(text): | |
analyzer = SentimentIntensityAnalyzer() | |
sentiment_scores = analyzer.polarity_scores(text) | |
# Determine sentiment label based on compound score | |
if sentiment_scores['compound'] >= 0.05: | |
sentiment_label = 'Positive' | |
elif sentiment_scores['compound'] <= -0.05: | |
sentiment_label = 'Negative' | |
else: | |
sentiment_label = 'Neutral' | |
return sentiment_label | |
def text_analysis(text): | |
# Analyze sentiment | |
sentiment_label = analyze_adult_content(text) | |
sentiment = analyze_sentiment(text) | |
summary = summarize_text(text) | |
html = '''<!doctype html> | |
<html> | |
<body> | |
<h1>Text Sentiment Analysis</h1> | |
<div style=background-color:#d9eee1> | |
<h2>Overall Sentiment</h2> | |
<p>{}</p> | |
</div> | |
<div style=background-color:#fff4a3> | |
<h2>Adult Content</h2> | |
<p>{}</p> | |
</div> | |
<div style=background-color:#cfb0b1> | |
<h2>Text Summary</h2> | |
<p>{}</p> | |
</div> | |
</body> | |
</html> | |
'''.format(sentiment_label, sentiment, summary) | |
return html | |
demo = gr.Interface( | |
text_analysis, | |
gr.Textbox(placeholder="Enter sentence here..."), | |
["html"], | |
examples=[ | |
["What a beautiful morning for a walk!"], | |
["It was the best of times, it was the worst of times."], | |
], | |
) | |
demo.launch() |