OmidSakaki commited on
Commit
e1dab92
·
verified ·
1 Parent(s): 5cf0cf1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -0
app.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
3
+ import requests
4
+ import json
5
+
6
+ # مدلت رو از repo خودت لود کن
7
+ MODEL_REPO = "OmidSakaki/mental-health-deberta" # یا هر نامی که push کردی
8
+
9
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_REPO)
10
+ model = AutoModelForSequenceClassification.from_pretrained(MODEL_REPO)
11
+
12
+ # pipeline برای classification
13
+ classifier = pipeline("text-classification", model=model, tokenizer=tokenizer, device=0 if torch.cuda.is_available() else -1)
14
+
15
+ # API ترجمه فارسی به انگلیسی (رایگان – می‌تونی عوض کنی)
16
+ TRANSLATE_API_URL = "https://api.mymemory.translated.net/get" # یا DeepL / Google Translate API اگر کلید داری
17
+
18
+ def translate_to_english(text_fa):
19
+ """ترجمه متن فارسی به انگلیسی با API رایگان"""
20
+ if not text_fa.strip():
21
+ return "متن وارد نشده است"
22
+
23
+ params = {
24
+ "q": text_fa,
25
+ "langpair": "fa|en"
26
+ }
27
+ try:
28
+ response = requests.get(TRANSLATE_API_URL, params=params, timeout=10)
29
+ data = response.json()
30
+ translated = data["responseData"]["translatedText"]
31
+ return translated
32
+ except Exception as e:
33
+ return f"خطا در ترجمه: {str(e)}"
34
+
35
+ def classify_mental_health(text_fa):
36
+ # مرحله ۱: ترجمه به انگلیسی
37
+ text_en = translate_to_english(text_fa)
38
+
39
+ # مرحله ۲: طبقه‌بندی با مدل
40
+ result = classifier(text_en)[0]
41
+ label = result['label'] # مثلاً 'Suicidal' یا 'Depression'
42
+ score = result['score'] * 100 # درصد اطمینان
43
+
44
+ # مرحله ۳: تبدیل لیبل به فارسی برای خروجی کاربرپسند
45
+ label_fa_map = {
46
+ 'Normal': 'نرمال / عادی',
47
+ 'Depression': 'افسردگی',
48
+ 'Anxiety': 'اضطراب',
49
+ 'Suicidal': 'افکار خودکشی'
50
+ }
51
+ label_fa = label_fa_map.get(label, label) # اگر لیبل ناشناخته بود همون انگلیسی بمونه
52
+
53
+ # خروجی نهایی
54
+ output = f"متن ترجمه‌شده به انگلیسی:\n{text_en}\n\n"
55
+ output += f"وضعیت تشخیص داده شده: **{label_fa}**\n"
56
+ output += f"اطمینان مدل: {score:.1f}%"
57
+
58
+ return output
59
+
60
+ # ساخت رابط Gradio
61
+ demo = gr.Interface(
62
+ fn=classify_mental_health,
63
+ inputs=gr.Textbox(
64
+ label="متن فارسی خود را وارد کنید",
65
+ placeholder="مثال: احساس می‌کنم دیگه نمی‌تونم ادامه بدم...",
66
+ lines=5
67
+ ),
68
+ outputs=gr.Textbox(label="نتیجه تشخیص"),
69
+ title="تشخیص وضعیت سلامت روان از روی متن فارسی",
70
+ description="""متن فارسی وارد کنید → به انگلیسی ترجمه می‌شود → توسط مدل تشخیص داده می‌شود → نتیجه به فارسی نمایش داده می‌شود.
71
+
72
+ کلاس‌ها: نرمال، افسردگی، اضطراب، افکار خودکشی""",
73
+ examples=[
74
+ ["امروز خیلی خوب بودم و خوشحالم"],
75
+ ["دیگه نمی‌تونم تحمل کنم، همه چیز تموم بشه بهتره"],
76
+ ["قلبم تند می‌زنه و نمی‌تونم آرام باشم"]
77
+ ],
78
+ theme=gr.themes.Soft(),
79
+ allow_flagging="never"
80
+ )
81
+
82
+ if __name__ == "__main__":
83
+ demo.launch()