Spaces:
Build error
Build error
| from transformers import pipeline | |
| import gradio as gr | |
| import lime | |
| import lime.lime_text | |
| import numpy as np | |
| from sklearn.pipeline import make_pipeline | |
| # Load multi-class sentiment analysis model | |
| sentiment_model = pipeline("text-classification", model="cardiffnlp/twitter-roberta-base-sentiment", top_k=None) | |
| # Define possible sentiment classes with a reduced, logical set | |
| label_mapping = { | |
| "LABEL_0": "negative", | |
| "LABEL_1": "neutral", | |
| "LABEL_2": "positive", | |
| "LABEL_3": "anger", | |
| "LABEL_4": "chill" | |
| } | |
| # Function to get sentiment prediction | |
| def analyze_sentiment(text): | |
| results = sentiment_model(text)[0] # Get predictions | |
| sorted_results = sorted(results, key=lambda x: x['score'], reverse=True) | |
| top_label, top_confidence = label_mapping[sorted_results[0]['label']], sorted_results[0]['score'] | |
| return f"Sentiment: {top_label} (Confidence: {top_confidence:.2f})" | |
| # Suggest test cases to ensure correct labeling | |
| def get_suggestions(): | |
| return "Try these examples:\n- 'I love this! Best experience ever!' (positive)\n- 'I am so happy today!' (positive)\n- 'It was okay, nothing special.' (neutral)\n- 'I am disappointed with this product.' (negative)\n- 'This is the worst day of my life.' (negative)\n- 'I am furious right now!' (anger)\n- 'I am extremely relaxed and enjoying the moment.' (chill)" | |
| # Explainability function using LIME | |
| def explain_prediction(text): | |
| explainer = lime.lime_text.LimeTextExplainer(class_names=list(label_mapping.values())) | |
| def predictor(texts): | |
| predictions = [sentiment_model(text)[0] for text in texts] | |
| return np.array([[pred[label] if label in pred else 0 for label in label_mapping.values()] for pred in predictions]) | |
| exp = explainer.explain_instance(text, predictor, num_features=6) | |
| return exp.as_list() | |
| # Create Gradio interface | |
| iface = gr.Interface( | |
| fn=analyze_sentiment, | |
| inputs="text", | |
| outputs="text", | |
| title="Multi-Class Sentiment Analysis App", | |
| description="Enter a sentence to analyze its sentiment across multiple categories (Negative, Neutral, Positive, Anger, Chill).", | |
| live=True, | |
| examples=[ | |
| ["I love this! Best experience ever!"], | |
| ["I am so happy today!"], | |
| ["It was okay, nothing special."], | |
| ["I am disappointed with this product."], | |
| ["This is the worst day of my life."], | |
| ["The movie was fantastic, I really enjoyed it!"], | |
| ["I am so angry, I can't believe this happened!"], | |
| ["I feel completely at peace right now."], | |
| ["The service was terrible, I wouldn’t recommend this place."], | |
| ["I feel great today, everything is going well!"], | |
| ["It’s just another day, nothing special to report."], | |
| ["This food is awful, I can’t even eat it!"], | |
| ["The book was so engaging, I couldn’t put it down!"], | |
| ["I don’t really have an opinion on this matter."], | |
| ["My day has been okay, not good but not bad either."], | |
| ["I regret buying this product, it’s a waste of money."], | |
| ["The customer support was helpful and solved my issue quickly."], | |
| ["This experience has been quite frustrating, honestly."], | |
| ["I had fun at the party, it was a great time!"], | |
| ["There was too much traffic today, it was so annoying."], | |
| ["I appreciate your help, it really made a difference."], | |
| ["The test was hard, but I think I did okay."], | |
| ["I wouldn’t buy this again, it didn’t meet my expectations."], | |
| ["This new update has improved the app significantly!"], | |
| ["I’m not sure how I feel about this decision."], | |
| ["Everything went smoothly today, no issues at all."], | |
| ["The weather is nice today, not too hot or too cold."], | |
| ["I had a terrible time at the event, it was poorly organized."], | |
| ["My experience was neutral, I don’t have strong feelings either way."], | |
| ["I highly recommend this to everyone, it’s fantastic!"], | |
| ["This place is so relaxing, I could stay here forever."], | |
| ["I had a bad day, but I’ll get through it."], | |
| ["The lecture was informative, I learned a lot."], | |
| ["It’s neither good nor bad, just okay overall."], | |
| ["The store was crowded and the staff was rude, not a good experience."], | |
| ["I’m satisfied with my purchase, it met my expectations."], | |
| ["This situation is frustrating, I don’t know what to do."], | |
| ["I’m feeling optimistic about the future!"], | |
| ["It was a boring day, nothing interesting happened."], | |
| ["I love spending time with my friends, they make me happy."], | |
| ["The flight was delayed, but at least I got home safely."], | |
| ["This dessert is absolutely delicious, I need more!"], | |
| ["I wish things had gone differently, but it’s okay."], | |
| ["The staff was unfriendly, I didn’t feel welcome at all."], | |
| ["I had a productive day, I got a lot of work done."], | |
| ["This movie was neither exciting nor dull, just in between."], | |
| ["I’m really grateful for your kindness, it means a lot."], | |
| ["I have no strong opinion about this, it’s just okay."], | |
| ["The food was decent, but I’ve had better."], | |
| ["Everything was perfect, I couldn’t have asked for more!"], | |
| ["The trip was stressful, nothing went according to plan."], | |
| ["I’m hopeful that things will get better soon."], | |
| ["The presentation was well done, I was impressed."], | |
| ["I feel indifferent about this, it doesn’t affect me much."], | |
| ["The concert was amazing, I had a blast!"] | |
| ] | |
| ) | |
| iface.launch() | |