| | import pandas as pd |
| | import gradio as gr |
| | from textblob import TextBlob |
| | import re |
| |
|
| | def preprocess_text(text): |
| | if not isinstance(text, str): |
| | return "" |
| | text = text.lower() |
| | text = re.sub(r'http\S+|www\S+|https\S+', '', text, flags=re.MULTILINE) |
| | text = re.sub(r'[^\w\s]', '', text) |
| | return text.strip() |
| |
|
| | def predict_sentiment(user_input): |
| | cleaned_text = preprocess_text(user_input) |
| | if not cleaned_text: |
| | return "Please enter actual text" |
| | |
| | |
| | blob = TextBlob(cleaned_text) |
| | polarity = blob.sentiment.polarity |
| | |
| | |
| | if polarity > 0.1: |
| | return "Positive" |
| | elif polarity < -0.1: |
| | return "Negative" |
| | else: |
| | return "Neutral" |
| |
|
| | def get_dataset_info(): |
| | try: |
| | df = pd.read_csv('sentiment_analysis.csv') |
| | summary = f"Dataset loaded! Total rows: {len(df)}. Columns: {', '.join(df.columns)}" |
| | return summary |
| | except: |
| | return "error." |
| |
|
| | with gr.Blocks(theme=gr.themes.Soft()) as demo: |
| | with gr.Row(): |
| | with gr.Column(): |
| | input_text = gr.Textbox( |
| | label="Input Text", |
| | placeholder="Type anything", |
| | lines=4 |
| | ) |
| | submit_btn = gr.Button("Analyze Setiment") |
| | |
| | with gr.Column(): |
| | output_label = gr.Label(label="Predicted result") |
| |
|
| | submit_btn.click(fn=predict_sentiment, inputs=input_text, outputs=output_label) |
| | |
| | if __name__ == "__main__": |
| | demo.launch() |