Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| import sys | |
| # Add current directory to path | |
| current_dir = os.path.dirname(os.path.abspath(__file__)) | |
| sys.path.insert(0, current_dir) | |
| # Try to import advanced model, fallback to basic if needed | |
| try: | |
| from app.model import predict | |
| from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification | |
| # Try to load your custom model first | |
| try: | |
| MODEL_NAME = "fitsblb/YelpReviewsAnalyzer" | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) | |
| model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME) | |
| sentiment_pipeline = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer) | |
| CUSTOM_MODEL_AVAILABLE = True | |
| except: | |
| # Fallback to a general model | |
| sentiment_pipeline = pipeline("sentiment-analysis", model="cardiffnlp/twitter-roberta-base-sentiment-latest") | |
| CUSTOM_MODEL_AVAILABLE = False | |
| except ImportError: | |
| # Ultimate fallback | |
| from transformers import pipeline | |
| sentiment_pipeline = pipeline("sentiment-analysis", model="cardiffnlp/twitter-roberta-base-sentiment-latest") | |
| CUSTOM_MODEL_AVAILABLE = False | |
| def analyze_sentiment(text): | |
| """Analyze sentiment using available models""" | |
| if not text.strip(): | |
| return "Please enter some text to analyze!" | |
| try: | |
| # Use the pipeline | |
| result = sentiment_pipeline(text) | |
| if isinstance(result, list) and len(result) > 0: | |
| result = result[0] | |
| sentiment = result['label'] | |
| confidence = result['score'] | |
| # Map labels to consistent format | |
| if sentiment.upper() in ['POSITIVE', 'POS']: | |
| sentiment = "Positive" | |
| elif sentiment.upper() in ['NEGATIVE', 'NEG']: | |
| sentiment = "Negative" | |
| elif sentiment.upper() in ['NEUTRAL', 'NEU']: | |
| sentiment = "Neutral" | |
| model_info = "YelpReviewsAnalyzer (Custom)" if CUSTOM_MODEL_AVAILABLE else "RoBERTa (Fallback)" | |
| output = f""" | |
| ## π― Sentiment Analysis Result | |
| **Sentiment**: {sentiment} | |
| **Confidence**: {confidence:.3f} | |
| **Model**: {model_info} | |
| --- | |
| *Analyzing sentiment with AI models* | |
| """ | |
| return output | |
| except Exception as e: | |
| return f"β Error analyzing sentiment: {str(e)}" | |
| # Create Gradio interface | |
| demo = gr.Interface( | |
| fn=analyze_sentiment, | |
| inputs=gr.Textbox( | |
| label="π Enter Text for Sentiment Analysis", | |
| placeholder="Type your text here... (e.g., 'This restaurant has amazing food!')", | |
| lines=3 | |
| ), | |
| outputs=gr.Markdown(label="π― Analysis Results"), | |
| title="π Sentiment Analyzer", | |
| description=""" | |
| **AI-Powered Sentiment Analysis** | |
| This system analyzes the sentiment of your text using transformer models. | |
| Enter any text and get instant sentiment predictions with confidence scores! | |
| """, | |
| examples=[ | |
| ["This restaurant has absolutely amazing food and incredible service!"], | |
| ["The food was terrible and the service was slow."], | |
| ["It's an okay place, nothing special but not bad either."], | |
| ["I love this product! Best purchase I've ever made."], | |
| ["This movie was boring and way too long."] | |
| ], | |
| theme=gr.themes.Soft(), | |
| allow_flagging="never" | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |