GMCTech's picture
Update app.py | Remove confidence
4d02817 verified
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "GMCTech/LexCAT"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def predict_sentiment(text):
if not text.strip():
return "Please enter text.", "—", "—"
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=128)
outputs = model(**inputs)
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
predicted_class = torch.argmax(predictions, dim=1).item()
sentiment_map = {0: "NEGATIVE", 1: "NEUTRAL", 2: "POSITIVE"}
# Format each output separately
sentiment_output = f"{sentiment_map[predicted_class]}"
probabilities_output = (
f"Negative: {predictions[0][0]:.3f}\n"
f"Neutral: {predictions[0][1]:.3f}\n"
f"Positive: {predictions[0][2]:.3f}"
)
return sentiment_output, probabilities_output
# Define Gradio Interface with 3 separate outputs
with gr.Blocks(theme="soft") as demo:
gr.Markdown("# 🔍 LexCAT: Taglish Sentiment Analysis")
gr.Markdown("""
LexCAT is a lexicon-enhanced transformer model for sentiment analysis of Tagalog–English code-switched text (Taglish). \n\n
• Developed by Glenn Marcus D. Cinco for his BS/MS thesis at Mapúa University. \n
• Trained on the FiReCS dataset. \n
• Enhanced with LexiLiksik to detect intra-sentential shifts (e.g., “Maganda pero expensive” → Negative).
""")
with gr.Row():
with gr.Column(scale=1):
input_box = gr.Textbox(
placeholder="Type a Taglish sentence, e.g., 'Maganda pero expensive tlga'",
label="Input Tagalog–English (Taglish) Text",
lines=10,
max_lines=20
)
submit_btn = gr.Button("Submit", variant="primary")
clear_btn = gr.Button("Clear")
with gr.Column(scale=1):
sentiment_box = gr.Textbox(
label="Predicted Sentiment",
lines=3,
max_lines=5,
interactive=False
)
probabilities_box = gr.Textbox(
label="Raw Probabilities",
lines=6,
max_lines=10,
interactive=False
)
# Set up event listeners
submit_btn.click(
fn=predict_sentiment,
inputs=input_box,
outputs=[sentiment_box, probabilities_box]
)
clear_btn.click(
fn=lambda: ("", "", ""),
inputs=None,
outputs=[input_box, sentiment_box, probabilities_box]
)
# Add examples below
gr.Examples(
examples=[
["sobrang lambot ng burger pero expensive tlga"],
["Ang ganda ng service, one star!"],
["Super duper late delivery umabot ng 2 weeks metro manila area lang naman"],
["Salamat sa nyo nagana nmn po sya kaya super thank you ako"],
["Ganda legit, kumpleto... problema lang nainit ng sobra..."]
],
inputs=input_box,
outputs=[sentiment_box, probabilities_box],
label="Example Sentences"
)
if __name__ == "__main__":
demo.launch()