shrirangphadke's picture
Update app.py
eefc793 verified
raw
history blame contribute delete
No virus
3.19 kB
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()