soniakhamitkar's picture
Update app.py
4f17c5b verified
raw
history blame
1.34 kB
from transformers import pipeline
import pandas as pd
import gradio as gr
# Initialize the sentiment analysis pipeline
sentiment_pipeline = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english", framework="pt")
def analyze_csv(file_path):
# Read the CSV file
df = pd.read_csv(file_path)
# Ensure the CSV has a 'text' column
if 'text' not in df.columns:
return "Error: CSV must contain a 'text' column."
# Apply sentiment analysis on each text entry
results = df['text'].apply(lambda x: sentiment_pipeline(x)[0])
df['sentiment'] = results.apply(lambda r: r['label'])
df['score'] = results.apply(lambda r: r['score'])
# Save output to a new CSV file
output_csv_path = "output.csv"
df.to_csv(output_csv_path, index=False)
return output_csv_path # Return path to the new CSV
# Define the Gradio interface
iface = gr.Interface(
fn=analyze_csv,
inputs=gr.File(label="Upload CSV File", file_count="single", type="filepath"),
outputs=gr.File(label="Download CSV File"),
title="CSV Sentiment Analysis App",
description="Upload a CSV file with a 'text' column. The app will run sentiment analysis on each row and return a downloadable CSV with sentiment labels and scores."
)
if __name__ == "__main__":
iface.launch()