humbleakh's picture
Update app.py
07ac16e verified
Raw
History Blame Contribute Delete
2.77 kB
import torch
import gradio as gr
from transformers import pipeline
import pandas as pd
from textblob import TextBlob
import matplotlib.pyplot as plt
# model_path = " C:\\Users\\abdul\\Documents\\genaiproj\\genai\\Models\\models--distilbert--distilbert-base-uncased-finetuned-sst-2-english"
analyzer = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
# analyzer = pipeline("text-classification", model=model_path)
# print(analyzer(["Nice to meet you!", "very expensive"]))
def sentiment_analysis(review):
sentiment = analyzer(review)
return sentiment[0]['label']
def plot_sentiment_distribution(df):
# Check if required columns are present
if 'Review' not in df.columns or 'Sentiment' not in df.columns:
raise ValueError("DataFrame must contain 'Review' and 'Sentiment' columns.")
# Count positive and negative sentiments
sentiment_counts = df['Sentiment'].value_counts()
# Create a bar chart
fig, ax = plt.subplots()
sentiment_counts.plot(kind='bar', ax=ax, color=['skyblue', 'salmon'])
# Set chart labels and title
ax.set_xlabel('Sentiment')
ax.set_ylabel('Count')
ax.set_title('Sentiment Distribution')
# Return the figure object
return fig
def analyze_reviews(file):
if not file.name.endswith('.xlsx'):
return "Invalid file type. Please upload an Excel file."
# Read the Excel file
df = pd.read_excel(file)
if 'Review' not in df.columns:
return "The Excel file must contain a column named 'Review'."
# Apply get_sentiment function to each review and create new column
df['Sentiment'] = df['Review'].apply(sentiment_analysis)
chart_object = plot_sentiment_distribution(df)
return df, chart_object
# Result = analyze_reviews("C:\\Users\\abdul\\Documents\\genaiproj\\genai\\Files\\app_reviews.xlsx")
# print(Result)
# Example usage
# file_path = 'path_to_your_excel_file.xlsx' # Update with your actual file path
# result_df = analyze_reviews(file_path)
# print(result_df)
gr.close_all()
# demo = gr.Interface(fn=summary, inputs="text", outputs="text")
demo = gr.Interface(
fn=analyze_reviews,
inputs=[gr.File(label="Input file to analyze")],
outputs=[gr.Dataframe(label="Sentiments"), gr.Plot(label="Sentiment Distribution")],
title="Sentiment Analyzer",
theme="soft",
description="Analyze the sentiment of any review in seconds!")
demo.launch(share=True)
# Example usage
# data = {'Review': ['Great product!', 'Not good', 'Excellent service', 'Bad experience'],
# 'Sentiment': ['Positive', 'Negative', 'Positive', 'Negative']}
# df = pd.DataFrame(data)
# fig = plot_sentiment_distribution(df)
# fig.show()