| import gradio as gr |
| import torch |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer |
|
|
| |
| model_name = "TextLabRUET/xlm-r_based_bangla_sentence_classifier" |
| tokenizer = AutoTokenizer.from_pretrained(model_name) |
| model = AutoModelForSequenceClassification.from_pretrained(model_name) |
|
|
| |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| model.to(device) |
|
|
| |
| class_mapping = { |
| 0: "Assertive Sentence (বর্ণনামূলক বাক্য)", |
| 1: "Interrogative Sentence (প্রশ্নবোধক বাক্য)", |
| 2: "Imperative Sentence (অনুজ্ঞাসূচক বাক্য)", |
| 3: "Optative Sentence (প্রার্থনা সূচক বাক্য)", |
| 4: "Exclamatory Sentence (বিস্ময়সূচক বাক্য)" |
| } |
|
|
| |
| def predict_bangla_sentence(sentence): |
| |
| inputs = tokenizer(sentence, return_tensors="pt", truncation=True, padding=True, max_length=128) |
| |
| |
| inputs = {key: val.to(device) for key, val in inputs.items()} |
| |
| |
| with torch.no_grad(): |
| outputs = model(**inputs) |
| |
| |
| logits = outputs.logits |
| predicted_class = torch.argmax(logits, dim=-1).item() |
| |
| |
| sentence_type = class_mapping.get(predicted_class, "Unknown Sentence Type") |
| return f"Predicted Class: {sentence_type}" |
|
|
| |
| iface = gr.Interface( |
| fn=predict_bangla_sentence, |
| inputs=gr.Textbox(lines=2, placeholder="Enter a Bangla sentence..."), |
| outputs="text", |
| title="Bangla Sentence Classifier", |
| description = ( |
| "This model was trained using a curated Bangla dataset by **TextLab RUET**. " |
| "It classifies Bangla sentences into five distinct categories: Assertive, Interrogative, Imperative, Optative, and Exclamatory " |
| "using the **XLM-R** (a multilingual transformer model based on the BERT architecture).\n" |
| "Enter a Bangla sentence below to see how our model interprets it!\n\n" |
| "**Note**: While we strive for accuracy, the model may occasionally misclassify sentences due to dataset limitations. " |
| "We apologize for any errors and appreciate your understanding." |
| ), |
| theme="compact" |
| ) |
|
|
| |
| iface.launch(share=True) |