|
|
|
from transformers import pipeline |
|
import gradio as gr |
|
import pandas as pd |
|
import matplotlib.pyplot as plt |
|
|
|
analyser = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def sentiment_analysis(text_to_review): |
|
sentiment = analyser(text_to_review) |
|
return sentiment[0]['label'] |
|
|
|
|
|
|
|
def plot_sentiment_pie(df): |
|
|
|
sentiment_counts = df['Sentiment'].value_counts() |
|
|
|
|
|
fig, ax = plt.subplots(figsize=(6, 6)) |
|
ax.pie(sentiment_counts.values, labels=sentiment_counts.index, autopct='%1.1f%%') |
|
ax.set_title('Sentiment Distribution') |
|
|
|
|
|
return fig |
|
|
|
def read_excel_and_get_sentiment(file): |
|
try: |
|
df = pd.read_excel(file) |
|
if 'Review' not in df.columns: |
|
raise KeyError("'Review' column not found in the Excel file.") |
|
df['Sentiment'] = df['Review'].apply(sentiment_analysis) |
|
|
|
chart_object = plot_sentiment_pie(df) |
|
|
|
return df, chart_object |
|
except FileNotFoundError: |
|
print(f"Error: {file} not found.") |
|
raise |
|
except Exception as e: |
|
print(f"Error: {e}") |
|
raise |
|
|
|
gr.close_all() |
|
|
|
demo = gr.Interface(fn=read_excel_and_get_sentiment, |
|
inputs=[gr.File(file_types= ['xlsx'],label="upload your review comment excel file.")], |
|
outputs=[gr.DataFrame(label="Reviewed text"), gr.Plot(label="Sentiment Analysis")], |
|
title="@IT AI Enthusiast (https://www.youtube.com/@itaienthusiast/) - Sentiment Analysis", |
|
description="THIS APPLICATION WILL BE USED TO ANALYZER THE SENTIMENT BASED ON THE COMMENT PROVIDER.", |
|
theme=gr.themes.Soft(), |
|
concurrency_limit=16) |
|
demo.launch() |
|
|
|
|