1234 / app.py
william1324's picture
Update app.py
856d4f7 verified
raw
history blame
1.69 kB
import pandas as pd
from transformers import pipeline
import gradio as gr
# 載入 Hugging Face 的中文三分類情緒模型
classifier = pipeline("text-classification", model="uer/roberta-base-finetuned-dianping-chinese", tokenizer="uer/roberta-base-finetuned-dianping-chinese")
# 分析函式(接收 CSV)
def analyze_csv(file):
df = pd.read_csv(file)
# 檢查是否有 "text" 欄位
if "text" not in df.columns:
return "錯誤:CSV 檔案中必須包含 'text' 欄位。"
# 對每一列文字做情緒分析
results = []
for text in df["text"]:
result = classifier(str(text))[0]
label = result["label"]
score = round(result["score"], 4)
if label == "LABEL_0":
sentiment = "負向"
elif label == "LABEL_1":
sentiment = "中立"
elif label == "LABEL_2":
sentiment = "正向"
else:
sentiment = "未知"
results.append({"label": sentiment, "score": score})
# 加回原始 dataframe
df["情緒判斷"] = [r["label"] for r in results]
df["信心分數"] = [r["score"] for r in results]
# 輸出為新的 csv 檔案
output_file = "/tmp/output.csv"
df.to_csv(output_file, index=False)
return output_file
# Gradio 介面(接收檔案,回傳檔案)
gr.Interface(
fn=analyze_csv,
inputs=gr.File(label="上傳包含 'text' 欄位的 CSV 檔案", file_types=[".csv"]),
outputs=gr.File(label="下載標註後的 CSV 檔案"),
title="中文情緒分析系統(批次處理)",
description="上傳一份 CSV,系統會針對 'text' 欄做情緒分析,並下載結果。"
).launch()