HaniaEmaan's picture
Update app.py
7e7dfcc verified
Raw History Blame Contribute Delete
1.58 kB
import gradio as gr
import spaces
import torch
from transformers import AutoTokenizer, AutoModelForTokenClassification
model_id = "HaniaEmaan/code-switching-codesaviours-si26-hania"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id)
@spaces.GPU
def classify_text(text):
if not text.strip():
return ""
words = text.strip().split()
tokenized = tokenizer(
words,
is_split_into_words=True,
truncation=True,
max_length=128,
return_tensors="pt"
)
with torch.no_grad():
outputs = model(**tokenized)
probs = torch.softmax(outputs.logits, dim=2)[0]
predictions = torch.argmax(outputs.logits, dim=2)[0]
word_ids = tokenized.word_ids(batch_index=0)
id2label = model.config.id2label
results = []
seen = set()
for idx, word_idx in enumerate(word_ids):
if word_idx is None or word_idx in seen:
continue
seen.add(word_idx)
label = id2label[predictions[idx].item()]
score = probs[idx][predictions[idx]].item()
results.append(f"Word: '{words[word_idx]}' | Label: {label} | Score: {score:.2f}")
return "\n".join(results)
demo = gr.Interface(
fn=classify_text,
inputs=gr.Textbox(placeholder="Type here... e.g. you don't listen me. me tmse bohat tang hun"),
outputs="textbox",
title="Code-Switched Language Identification (ZeroGPU)",
description="XLM-RoBERTa Token Classification for Roman Urdu and English — word-level tagging."
)
demo.launch()