Spaces:
Sleeping
Sleeping
import gradio as gr | |
from sentiment import analyze_sentiment | |
# 📌 可選擇的模型 | |
MODEL_OPTIONS = { | |
"🌎 多語言推特情緒分析 (XLM-RoBERTa)": "cardiffnlp/twitter-xlm-roberta-base-sentiment", | |
"📖 多語言情緒分析 (BERT)": "nlptown/bert-base-multilingual-uncased-sentiment", | |
"🇬🇧 英語情緒分析 (DistilBERT)": "distilbert-base-uncased-finetuned-sst-2-english" | |
} | |
# 📌 Gradio 介面說明 | |
intro_text = """ | |
# 🎯 多語言情緒分析 AI | |
本應用使用 Hugging Face 的 `XLM-RoBERTa`、`BERT`、`DistilBERT` 模型來進行**多語言情緒分析**。 | |
輸入任何語言的文本,AI 會自動判斷其**情緒分類(正向 / 中立 / 負向)**,並提供**信心度(%)**。 | |
## 📌 **使用方式** | |
1️⃣ **輸入一句話或一段文本**(可輸入中文、英文、日文等) | |
2️⃣ **選擇 AI 模型(預設為 `XLM-RoBERTa`)** | |
3️⃣ **點擊「分析情緒」** | |
4️⃣ **查看結果,包括情緒分類 & 信心度** | |
""" | |
developer_info = """ | |
## 👨💻 開發資訊 | |
- **開發者**: 余彦志 (大宇 / ian) | |
- **模型來源**: [Hugging Face](https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base-sentiment) | |
- **技術棧**: `Gradio`、`FastAPI`、`Hugging Face API` | |
- **聯絡方式**: [[email protected]] | |
""" | |
# 📌 建立 Gradio 介面 | |
def create_ui(): | |
with gr.Blocks(theme=gr.themes.Soft()) as iface: | |
gr.Markdown(intro_text) | |
text_input = gr.Textbox(lines=3, placeholder="請輸入文本...", label="輸入文本") | |
model_selector = gr.Dropdown(choices=list(MODEL_OPTIONS.keys()), value="🌎 多語言推特情緒分析 (XLM-RoBERTa)", label="選擇 AI 模型") | |
analyze_button = gr.Button("分析情緒") | |
progress_bar = gr.Textbox(value="", visible=False, label="模型載入進度") | |
result_output = gr.Markdown(label="分析結果") | |
# 📌 綁定按鈕功能 | |
def process_analysis(text, model_name): | |
model_id = MODEL_OPTIONS[model_name] | |
# **當使用者切換模型時,顯示進度條** | |
if model_id != analyze_sentiment.CURRENT_MODEL: | |
progress_bar.update("🔄 AI 模型載入中,請稍後...", visible=True) | |
# 📌 調用 API 進行分析 | |
result, _ = analyze_sentiment(text, model_id) | |
# **確保進度條消失** | |
progress_bar.update("", visible=False) | |
return result | |
# 📌 **修正 Gradio 事件綁定,確保所有輸入 & 輸出正確** | |
analyze_button.click( | |
fn=process_analysis, | |
inputs=[text_input, model_selector], | |
outputs=[result_output, progress_bar] | |
) | |
gr.Markdown(developer_info) | |
return iface | |