Fulwah commited on
Commit
66aa4ff
·
verified ·
1 Parent(s): d2c9609

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +93 -0
  2. requirements.txt +7 -0
app.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """app.ipynb
3
+
4
+ Automatically generated by Colab.
5
+
6
+ Original file is located at
7
+ https://colab.research.google.com/drive/1BMiyF9DwMs7FuCZXgZMK_rX096woV5cP
8
+ """
9
+
10
+ import gradio as gr
11
+ import torch
12
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
13
+ from arabic_reshaper import reshape
14
+ from bidi.algorithm import get_display
15
+
16
+
17
+ model_name = "UBC-NLP/MARBERT"
18
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
19
+
20
+
21
+ id2label = {
22
+ 0: 'Fluency Disorder (تأتأة)',
23
+ 1: 'Language Disorder (تأخر لغة)',
24
+ 2: 'Motor Speech Disorder (اضطراب حركي)',
25
+ 3: 'Other/Medical (أخرى/طبية)',
26
+ 4: 'Social Communication/ASD (تواصل واجتماعي)',
27
+ 5: 'Speech Sound Disorder (مخارج الحروف)'
28
+ }
29
+
30
+ model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=len(id2label))
31
+
32
+
33
+ def fix_arabic(text):
34
+ return get_display(reshape(text))
35
+
36
+
37
+ def predict_speech_issue(text):
38
+ if not text.strip():
39
+ return "الرجاء كتابة وصف الحالة"
40
+
41
+ inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
42
+
43
+ with torch.no_grad():
44
+ outputs = model(**inputs)
45
+ probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
46
+ pred_id = torch.argmax(probs).item()
47
+ confidence = probs[0][pred_id].item()
48
+
49
+ label = id2label[pred_id]
50
+
51
+
52
+ recommendations = {
53
+ 'Speech Sound Disorder (مخارج الحروف)': "ينصح بتقييم مخارج الحروف وفحص أعضاء النطق (Oral Motor Exam).",
54
+ 'Language Disorder (تأخر لغة)': "ينصح بعمل اختبار لغة شامل لتقييم اللغة الاستقبالية والتعبيرية.",
55
+ 'Social Communication/ASD (تواصل واجتماعي)': "ينصح بمراجعة طبيب نمو وسلوك وعمل تقييم تواصل اجتماعي.",
56
+ 'Fluency Disorder (تأتأة)': "ينصح بمراقبة بيئة الطفل وتقليل الضغوط التواصلية، واستشارة مختص طلاقة.",
57
+ 'Motor Speech Disorder (اضطراب حركي)': "يحتاج تقييم دقيق لاحتمالية وجود Apraxia أو Dysarthria.",
58
+ 'Other/Medical (أخرى/طبية)': "يفضل مراجعة طبيب أنف وأذن وحنجرة (ENT) أو مختص سمعيات."
59
+ }
60
+
61
+ advice = recommendations.get(label, "يرجى استشارة مختص للتقييم السريري.")
62
+
63
+ # HTML
64
+ html_output = f"""
65
+ <div style="direction: rtl; text-align: right; font-family: 'Arial'; padding: 20px; border-radius: 10px; background-color: #f8f9fa; border: 1px solid #dee2e6;">
66
+ <h2 style="color: #2c3e50;">التصنيف المتوقع: {label}</h2>
67
+ <p style="font-size: 1.1em;"><b>نسبة اليقين:</b> {confidence:.1%}</p>
68
+ <hr style="border: 0.5px solid #bdc3c7;">
69
+ <p style="font-size: 1.1em; color: #e67e22;"><b> نصيحة الأخصائي:</b> {advice}</p>
70
+ </div>
71
+ """
72
+ return html_output
73
+
74
+ # Gradio
75
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
76
+ gr.Markdown("<h1 style='text-align: center;'>🇸🇦 فصيح: أداة المسح الذكي للنطق والتخاطب</h1>")
77
+ gr.Markdown("<p style='text-align: center;'>مشروع تجريبي لتحليل شكاوى النطق باللهجة السعودية باستخدام الذكاء الاصطناعي</p>")
78
+
79
+ with gr.Row():
80
+ input_txt = gr.Textbox(
81
+ label="أدخلي وصف الحالة هنا (بالعامية)",
82
+ placeholder="مثال: ولدي عمره 3 سنين وما ينطق حرف الكاف...",
83
+ lines=3
84
+ )
85
+
86
+ btn = gr.Button("تحليل الحالة ", variant="primary")
87
+ output = gr.HTML()
88
+
89
+ btn.click(fn=predict_speech_issue, inputs=input_txt, outputs=output)
90
+
91
+ # تشغيل التطبيق
92
+ if __name__ == "__main__":
93
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ transformers
2
+ torch
3
+ pandas
4
+ scikit-learn
5
+ gradio
6
+ arabic-reshaper
7
+ python-bidi