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 = '''

Text Sentiment Analysis

Overall Sentiment

{}

Adult Content

{}

Text Summary

{}

'''.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()