Spaces:
Sleeping
Sleeping
| # app.py | |
| import gradio as gr | |
| from transformers import pipeline | |
| import torch | |
| import scipy | |
| import sentencepiece | |
| from google.protobuf import text_format | |
| import re | |
| # Load multilingual social media sentiment analysis model | |
| sentiment_model = pipeline( | |
| "text-classification", | |
| model="cardiffnlp/twitter-xlm-roberta-base-sentiment", | |
| tokenizer="cardiffnlp/twitter-xlm-roberta-base-sentiment", | |
| return_all_scores=False | |
| ) | |
| # Function to analyze text and calculate risk | |
| def analyze_text(text): | |
| result = sentiment_model(text)[0] | |
| sentiment = result['label'] | |
| score = result['score'] | |
| # Simple risk scoring logic | |
| # Adjusted to also flag high-intensity "negative" and "neutral" sentiment | |
| risk_score = score * (1.5 if sentiment.upper() in ["NEGATIVE", "LABEL_0"] else 1.0) | |
| escalation = risk_score > 0.7 # threshold | |
| return sentiment, risk_score, escalation | |
| # Process input for Gradio | |
| def process_input(text): | |
| sentiment, risk_score, escalation = analyze_text(text) | |
| return sentiment, round(risk_score, 2), "Yes" if escalation else "No" | |
| # Gradio app configuration | |
| title = "SocialAegis MVP" | |
| description = """ | |
| A sentiment-based escalation engine to detect emotional volatility in social media posts. | |
| Now using a multilingual, social-media-trained model. | |
| """ | |
| iface = gr.Interface( | |
| fn=process_input, | |
| inputs=gr.Textbox(lines=4, placeholder="Enter social media text here..."), | |
| outputs=[ | |
| gr.Label(label="Sentiment"), | |
| gr.Label(label="Risk Score"), | |
| gr.Label(label="Escalation Triggered") | |
| ], | |
| title=title, | |
| description=description, | |
| examples=[ | |
| ["I am so frustrated with this service!"], | |
| ["I had an amazing experience, thank you!"], | |
| ["This is unacceptable, I will report this."] | |
| ] | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |