|
|
--- |
|
|
language: ar |
|
|
license: apache-2.0 |
|
|
library_name: transformers |
|
|
pipeline_tag: text-classification |
|
|
tags: |
|
|
- arabic |
|
|
- medical |
|
|
- nlp |
|
|
- bert |
|
|
- text-classification |
|
|
metrics: |
|
|
- accuracy |
|
|
- f1 |
|
|
base_model: aubmindlab/bert-base-arabertv02 |
|
|
datasets: |
|
|
- Ahmed-Selem/Shifaa_Arabic_Medical_Consultations |
|
|
--- |
|
|
|
|
|
# 🩺 Shifaa Medical Question Classifier | مصنّف أسئلة شفاء الطبية |
|
|
|
|
|
## العربية |
|
|
|
|
|
### نظرة عامة |
|
|
هذا الموديل يقوم **بتصنيف الأسئلة الطبية العربية** إلى **16 فئة** (تخصص/قسم طبي متوقع) باستخدام **AraBERT** بعد Fine-tuning على بيانات منصة شفاء. |
|
|
|
|
|
- **المهمة:** تصنيف نصوص متعدد الفئات (16 فئة) |
|
|
- **اللغة:** العربية |
|
|
- **أفضل النتائج:** Accuracy ≈ **0.82** | F1-macro ≈ **0.70** |
|
|
- **المخرجات:** اسم الفئة المتوقعة + احتمالية (Confidence) |
|
|
|
|
|
### روابط المشروع |
|
|
- 🔗 **Live Demo (Streamlit):** https://shifaa-app-app-kphfdr6vpdwjnhkfirlgpu.streamlit.app/ |
|
|
- 🧾 **GitHub Repository:** https://github.com/Ayama11/shifaa-streamlit-app |
|
|
- 🤗 **Model on HuggingFace:** https://huggingface.co/aya99ma/shifaa-bert-classifier |
|
|
- 📦 **Dataset:** https://huggingface.co/datasets/Ahmed-Selem/Shifaa_Arabic_Medical_Consultations |
|
|
|
|
|
### الفئات (16) |
|
|
0. أمراض الأطفال ومشاكلهم |
|
|
1. أمراض الباطنية والصدر |
|
|
2. أمراض الجلدية |
|
|
3. أمراض الجهاز البولي والتناسلي |
|
|
4. أمراض الجهاز العصبي |
|
|
5. أمراض الدم والأورام |
|
|
6. أمراض الرأس |
|
|
7. أمراض العضلات |
|
|
8. أمراض العظام |
|
|
9. أمراض الغدد والهرمونات |
|
|
10. أمراض النساء والولادة |
|
|
11. الأدوية والمستحضرات |
|
|
12. الجراحة العامة والتجميل |
|
|
13. الصحة البدنية |
|
|
14. الطب البديل |
|
|
15. شئون طبية ومشاكل متفرقة |
|
|
|
|
|
### طريقة الاستخدام (Transformers) |
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
import torch |
|
|
|
|
|
MODEL_ID = "aya99ma/shifaa-bert-classifier" |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) |
|
|
model = AutoModelForSequenceClassification.from_pretrained(MODEL_ID) |
|
|
model.eval() |
|
|
|
|
|
text = "لدي صداع شديد منذ يومين" |
|
|
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) |
|
|
|
|
|
with torch.inference_mode(): |
|
|
logits = model(**inputs).logits |
|
|
probs = torch.softmax(logits, dim=-1)[0] |
|
|
|
|
|
pred_id = int(torch.argmax(probs)) |
|
|
label = model.config.id2label[pred_id] |
|
|
confidence = float(probs[pred_id]) |
|
|
|
|
|
print(label, confidence) |
|
|
|