| 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() |