SentimentAnalysisForNMTTNT / py /pages /single_analysis.py
shegga's picture
🎉 Major Refactor: Modular Architecture with Automatic Fine-Tuning
b8ae42e
"""
Single Text Analysis Page for Vietnamese Sentiment Analysis
"""
import gradio as gr
import time
def create_single_analysis_page(app_instance):
"""Create the single text analysis tab"""
def analyze_sentiment(text):
"""Analyze sentiment of a single text"""
if not text.strip():
return "❌ Please enter some text to analyze."
if not app_instance.model_loaded:
return "❌ Model not loaded. Please refresh the page."
try:
sentiment, output_text = app_instance.predict_sentiment(text.strip())
if sentiment:
return output_text
else:
return "❌ Analysis failed. Please try again."
except Exception as e:
app_instance.cleanup_memory()
return f"❌ Error during analysis: {str(e)}"
# Single Text Analysis Tab
with gr.Tab("📝 Single Text Analysis"):
gr.Markdown("# 🎭 Vietnamese Sentiment Analysis")
gr.Markdown("Enter Vietnamese text to analyze sentiment using a transformer model from Hugging Face.")
with gr.Row():
with gr.Column(scale=3):
text_input = gr.Textbox(
label="Enter Vietnamese Text",
placeholder="Nhập văn bản tiếng Việt để phân tích cảm xúc...",
lines=4,
max_lines=10
)
with gr.Row():
analyze_btn = gr.Button("🔍 Analyze Sentiment", variant="primary")
clear_btn = gr.Button("🗑️ Clear", variant="secondary")
with gr.Column(scale=2):
result_output = gr.Markdown(label="Analysis Result", visible=True)
# Example texts
examples = [
"Giảng viên dạy rất hay và tâm huyết.",
"Khóa học này không tốt lắm.",
"Cơ sở vật chất bình thường.",
"Học phí quá cao.",
"Nội dung giảng dạy rất hữu ích."
]
gr.Examples(
examples=examples,
inputs=[text_input],
label="Example Texts"
)
# Connect events
analyze_btn.click(
fn=analyze_sentiment,
inputs=[text_input],
outputs=[result_output]
)
clear_btn.click(
fn=lambda: "",
outputs=[text_input]
)
return analyze_btn, clear_btn, text_input, result_output