Spaces:
Build error
Build error
| import gradio as gr | |
| from transformers import pipeline | |
| import torch | |
| # Initialize sentiment analysis pipeline | |
| try: | |
| sentiment_pipeline = pipeline( | |
| "sentiment-analysis", | |
| model="nlptown/bert-base-multilingual-uncased-sentiment", | |
| device=0 if torch.cuda.is_available() else -1 | |
| ) | |
| except Exception as e: | |
| raise Exception(f"Failed to load model: {str(e)}") | |
| def analyze_sentiment(text, language): | |
| """Analyze sentiment of input text and return sentiment label and confidence score.""" | |
| if not text or not text.strip(): | |
| return "Error: Please enter some text", 0 | |
| try: | |
| result = sentiment_pipeline(text) | |
| sentiment = result[0]['label'] # e.g., "1 star", "2 stars", etc. | |
| score = result[0]['score'] # Confidence score between 0 and 1 | |
| return sentiment, round(score, 2) | |
| except Exception as e: | |
| return "Error occurred", 0 | |
| # Custom CSS for bilingual readability | |
| custom_css = """ | |
| body, .gr-button, .gr-input, .gr-output, .gr-textbox { | |
| font-family: 'Tajawal', 'Arial', sans-serif !important; | |
| } | |
| .gr-button {margin: 5px;} | |
| .output-text {font-size: 16px;} | |
| """ | |
| # Gradio interface for Part 1 | |
| with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# Sentiment Analysis Platform") | |
| gr.Markdown("Enter text in Arabic or English to analyze its sentiment.") | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| text_input = gr.Textbox( | |
| label="Your Comment", | |
| placeholder="Type your comment here...", | |
| lines=3 | |
| ) | |
| language_input = gr.Radio( | |
| ["Arabic", "English"], | |
| label="Language", | |
| value="English" | |
| ) | |
| submit_btn = gr.Button("Analyze", variant="primary") | |
| with gr.Column(scale=3): | |
| sentiment_output = gr.Textbox(label="Sentiment") | |
| score_output = gr.Slider(0, 1, label="Confidence Score", interactive=False) | |
| examples = gr.Examples( | |
| examples=[ | |
| ["The product is amazing!", "English"], | |
| ["الخدمة سيئة جداً", "Arabic"], | |
| ["منتج جيد نوعاً ما", "Arabic"], | |
| ["It's okay, nothing special", "English"] | |
| ], | |
| inputs=[text_input, language_input] | |
| ) | |
| submit_btn.click( | |
| fn=analyze_sentiment, | |
| inputs=[text_input, language_input], | |
| outputs=[sentiment_output, score_output] | |
| ) | |
| demo.launch() |