leilaghomashchi commited on
Commit
c34a202
·
verified ·
1 Parent(s): f430e23

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -78
app.py CHANGED
@@ -3,97 +3,55 @@ from transformers import AutoTokenizer, AutoModelForTokenClassification
3
  import torch
4
 
5
  # پرامپت سیستم (کوتاه شده برای کاهش مصرف)
6
- SYSTEM_PROMPT = """
7
- شما یک سیستم هوشمند ناشناس‌سازی متن هستید. وظیفه شما شناسایی و جایگزینی موجودیت‌های حساس در متون مالی و اقتصادی فارسی است.
8
 
9
- دستورالعمل‌های اصلی:
10
-
11
- انواع موجودیت‌ها:
12
-
13
- company-XX: نام شرکت‌ها، سازمان‌ها، بانک‌ها، هلدینگ‌ها، گروه‌های مالی (مثال: ایران خودرو، بانک ملی، گروه مالی صبا، سازمان حسابرسی)
14
-
15
- person-XX: نام و نام خانوادگی اشخاص (مثال: محمد رضایی، مهدی اخوان بهابادی، فرج‌اله قدمی)
16
-
17
- amount-XX: مبالغ مالی شامل ریال، تومان، همت، دلار، تن، دستگاه و واحدهای اندازه‌گیری (مثال: ۲۳ هزار و ۲۹۶ میلیارد تومان، ۵۰۰ میلیون دلار، ۷۳.۷ میلیون نفر، 636 ریال)
18
-
19
- percent-XX: درصدها و نسبت‌ها (مثال: ۴.۵۸ درصد، ۷۵ درصد، ۱۴٪، منفی 345 درصد)
20
-
21
- قوانین کلیدی:
22
-
23
- 1. ترتیب شماره‌گذاری: اولین باری که موجودیت ظاهر می‌شود، شماره می‌گیرد (01، 02، 03، ...)
24
-
25
- 2. حفظ هویت یکسان: اگر همان موجودیت دوباره آمد، از همان شماره استفاده کن. مثلا "ایران خودرو" در جمله اول و "این شرکت" در جمله دوم هر دو company-01 هستند.
26
-
27
- 3. تشخیص نام‌های مختلف: "فولاد مبارکه اصفهان" و "فولاد مبارکه" و "این شرکت" همه company-01 هستند. "همراه اول" و "گروه همراه اول" و "این اپراتور" همه company-01 هستند. اما "بانک پاسارگاد" و "سرزمین هوشمند پاد" دو company مختلف هستند.
28
-
29
- 4. مبالغ و درصدهای مختلف: هر عدد جدید، شماره جدید می‌گیرد
30
-
31
- 5. حفظ ساختار: ساختار جمله را حفظ کن، تاریخ‌ها را تغییر نده، کلمات توصیفی مثل "شرکت"، "بانک"، "گروه" را قبل از برچسب حفظ کن
32
 
33
- 6. هیچ توضیح اضافه‌ای نده: فقط متن ناشناس‌شده را برگردان، بدون توضیح یا تفسیر
 
 
 
 
34
 
35
  نمونه‌های آموزشی:
36
-
37
  نمونه ۱:
38
  متن اصلی: ایران خودرو در اسفندماه سال 1402 حدود 23 هزار و 296 میلیارد تومان درآمد کسب کرد که در مقایسه با بهمن 4.58 درصد افزایش داشت. زیان خالص ایران خودرو در این سال به بیش از 37 همت رساند.
39
  متن ناشناس‌شده: company-01 در اسفندماه سال 1402 حدود amount-01 درآمد کسب کرد که در مقایسه با بهمن percent-01 افزایش داشت. زیان خالص company-01 در این سال به بیش از amount-02 رساند.
40
-
41
  نمونه ۲:
42
  متن اصلی: بانک پاسارگاد با شناسایی سود خالص 155 هزار میلیارد ریالی در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با بانک ملت داشت. در مقابل، بانک سرمایه با مدیرعاملی فرج‌اله قدمی وضعیت بحرانی دارد.
43
  متن ناشناس‌شده: company-01 با شناسایی سود خالص amount-01 در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با company-02 داشت. در مقابل، company-03 با مدیرعاملی person-01 وضعیت بحرانی دارد.
44
-
45
  نمونه ۳:
46
  متن اصلی: مهدی اخوان بهابادی، مدیرعامل همراه اول، در مجمع عمومی عادی سالیانه اعلام کرد درآمد عملیاتی شرکت اصلی با رشد قابل توجه 37 درصدی نسبت به سال 1402، به 70 هزار و 677 میلیارد تومان رسیده است. سود خالص تلفیقی گروه همراه اول در پایان سال مالی 1403 به 8003 میلیارد تومان رسید.
47
  متن ناشناس‌شده: person-01، مدیرعامل company-01، در مجمع عمومی عادی سالیانه اعلام کرد درآمد عملیاتی شرکت اصلی با رشد قابل توجه percent-01 نسبت به سال 1402، به amount-01 رسیده است. سود خالص تلفیقی گروه company-01 در پایان سال مالی 1403 به amount-02 رسید.
48
-
49
  نمونه ۴:
50
  متن اصلی: بانک پاسارگاد با شناسایی سود خالص 155 هزار میلیارد ریالی در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با بانک ملت داشت. در مقابل، بانک سرمایه با مدیرعاملی فرج‌اله قدمی وضعیت بحرانی دارد و زیان خالص 2700 میلیارد تومانی در سه‌ماهه نخست 1404 گزارش کرد. نسبت کفایت سرمایه این بانک به منفی 345 درصد رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به 67 هزار میلیارد تومان است.
51
  متن ناشناس‌شده: company-01 با شناسایی سود خالص amount-01 در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با company-02 داشت. در مقابل، company-03 با مدیرعاملی person-01 وضعیت بحرانی دارد و زیان خالص amount-02 در سه‌ماهه نخست 1404 گزارش کرد. نسبت کفایت سرمایه این بانک به percent-01 رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به amount-03 است.
52
-
53
  نمونه ۵:
54
  متن اصلی: صورت‌های مالی حسابرسی شده شرکت آسان پادرو منتهی به 30 آذر 1403 نشان می‌دهد این شرکت سال مالی جاری بیش از 6 میلیارد تومان زیان خالص شناسایی کرده است. پادرو سال مالی 1403 حدود 30 میلیارد تومان درآمد عملیاتی کسب کرد که این رقم در مقایسه با سال 1402 رشد تقریباً دوبرابری دارد. 97 درصد درآمد پادرو از «پردازش حمل» است که مربوط به مشتریان متقاضی خدمات پستی بوده و بیش از 60 درصد درآمد آن از سرزمین هوشمند پاد (زیرمجموعه بانک پاسارگاد) و بابت حمل مرسوله کارت‌های بانکی است.
55
  متن ناشناس‌شده: صورت‌های مالی حسابرسی شده company-01 منتهی به 30 آذر 1403 نشان می‌دهد این شرکت سال مالی جاری بیش از amount-01 زیان خالص شناسایی کرده است. company-01 سال مالی 1403 حدود amount-02 درآمد عملیاتی کسب کرد که این رقم در مقایسه با سال 1402 رشد تقریباً دوبرابری دارد. percent-01 درآمد company-01 از «پردازش حمل» است که مربوط به مشتریان متقاضی خدمات پستی بوده و بیش از percent-02 درآمد آن از company-02 (زیرمجموعه company-03) و بابت حمل مرسوله کارت‌های بانکی است.
56
-
57
  نمونه ۶:
58
  متن اصلی: مجمع عمومی عادی سالیانه شرکت پتروشیمی پارس با نماد «پارس» راس ساعت 10:00 روز سه شنبه مورخ 1403/04/12 در محل برکه چوپان، هتل بزرگ نخل کنگان، طبقه پنجم، سالن همایش‌ها برگزار شد. در این مجمع صورت‌های مالی سال مالی منتهی به 1401/12/29 مورد بررسی و تصویب قرار گرفت و سازمان حسابرسی به‌ عنوان بازرس قانونی، حسابرس شرکت و بازرس علی‌البدل انتخاب شد. چشم‌انداز افق سال 1407 شرکت پتروشیمی پارس، سرآمدی در تولید پایدار، بهره‌وری و توسعه زنجیره ارزش خواهد بود و تا زمانی که افزایش ظرفیت جدید نداشته باشد، سودآوری از طریق رشد درآمد با پیداکردن مشتریان جدید امکان‌پذیر نخواهد بود.
59
  متن ناشناس‌شده: مجمع عمومی عادی سالیانه company-01 با نماد «پارس» راس ساعت 10:00 روز سه شنبه مورخ 1403/04/12 در محل برکه چوپان، هتل بزرگ نخل کنگان، طبقه پنجم، سالن همایش‌ها برگزار شد. در این مجمع صورت‌های مالی سال مالی منتهی به 1401/12/29 مورد بررسی و تصویب قرار گرفت و company-02 به‌ عنوان بازرس قانونی، حسابرس شرکت و باز��س علی‌البدل انتخاب شد. چشم‌انداز افق سال 1407 company-01، سرآمدی در تولید پایدار، بهره‌وری و توسعه زنجیره ارزش خواهد بود و تا زمانی که افزایش ظرفیت جدید نداشته باشد، سودآوری از طریق رشد درآمد با پیداکردن مشتریان جدید امکان‌پذیر نخواهد بود.
60
-
61
  نمونه ۷:
62
  متن اصلی: شرکت فولاد مبارکه اصفهان در مجمع عمومی عادی سالیانه راس ساعت 10 صبح روز شنبه مورخ 1403/04/30 در استان اصفهان برگزار شد و حاشیه سود خالص شرکت 38 درصد بوده که در نسبت به متوسط صنعت 20 درصد بالاتر است. صورت‌های مالی فصلی فولاد مبارکه اصفهان خبر از کاهش سودسازی می‌دهد و EPS این شرکت در پایان سال مالی 1404 از 636 ریال به 614 ریال خواهد رسید. تحلیل‌گران پیش‌بینی می‌کنند که این شرکت در سال 1403 از 500 میلیار تومان سرمایه‌گذاری خطرپذیری معافیت مالیاتی را اخذ کند.
63
  متن ناشناس‌شده: company-01 در مجمع عمومی عادی سالیانه راس ساعت 10 صبح روز شنبه مورخ 1403/04/30 در استان اصفهان برگزار شد و حاشیه سود خالص شرکت percent-01 بوده که در نسبت به متوسط صنعت percent-02 بالاتر است. صورت‌های مالی فصلی company-01 خبر از کاهش سودسازی می‌دهد و EPS این شرکت در پایان سال مالی 1404 از amount-01 به amount-02 خواهد رسید. تحلیل‌گران پیش‌بینی می‌کنند که این شرکت در سال 1403 از amount-03 سرمایه‌گذاری خطرپذیری معافیت مالیاتی را اخذ کند.
64
-
65
  نمونه ۸:
66
  متن اصلی: شرکت سرمایه‌گذاری دارویی تأمین (تیپیکو) گزارش فعالیت هیئت‌مدیره خود را برای سال مالی منتهی به 31 اردیبهشت 1404 در سامانه کدال منتشر کرد که درآمد‌های عملیاتی به 681,667 میلیارد ریال و سود خالص تلفیقی 86,278 میلیارد ریال رسید. صورت‌های مالی حسابرسی شده شرکت آسان پادرو منتهی به 30 آذر 1403 نشان می‌دهد این شرکت بیش از 6 میلیارد تومان زیان خالص شناسایی کرده است. پادرو سال مالی 1403 حدود 30 میلیارد تومان درآمد عملیاتی کسب کرد که رشد دوبرابری دارد و 97 درصد درآمد از پردازش حمل است که مربوط به مشتریان متقاضی خدمات پستی بوده است.
67
  متن ناشناس‌شده: company-01 گزارش فعالیت هیئت‌مدیره خود را برای سال مالی منتهی به 31 اردیبهشت 1404 در سامانه کدال منتشر کرد که درآمد‌های عملیاتی به amount-01 و سود خالص تلفیقی amount-02 رسید. صورت‌های مالی حسابرسی شده company-02 منتهی به 30 آذر 1403 نشان می‌دهد این شرکت بیش از amount-03 زیان خالص شناسایی کرده است. company-02 سال مالی 1403 حدود amount-04 درآمد عملیاتی کسب کرد که رشد دوبرابری دارد و percent-01 درآمد از پردازش حمل است که مربوط به مشتریان متقاضی خدمات پستی بوده است.
68
-
69
  نمونه ۹:
70
  متن اصلی: دو بانک ملت و پاسارگاد به ترتیب با شناسایی سود خالص 157 و 155 هزار میلیارد ریالی رقابت تنگاتنگی داشته و در رده‌های اول و دوم جای دارند. مجموع بانک‌های مورد بررسی در پایان اسفند ماه سال 1400 زیان انباشته‌ای معادل 1388 هزار میلیارد ریال داشته‌اند که نسبت به اسفند ماه سال 1399 این زیان انباشته 10 درصد افزایش یافته است. بررسی آخرین صورت‌های مالی بانک‌های دولتی و خصوصی حاکی از آن است که 12 بانک کشور، در پایان سال 1401 در مجموع زیان انباشته سنگین 336 هزار میلیارد تومانی را رقم زده‌اند.
71
  متن ناشناس‌شده: دو بانک company-01 و company-02 به ترتیب با شناسایی سود خالص amount-01 و amount-02 رقابت تنگاتنگی داشته و در رده‌های اول و دوم جای دارند. مجموع بانک‌های مورد بررسی در پایان اسفند ماه سال 1400 زیان انباشته‌ای معادل amount-03 داشته‌اند که نسبت به اسفند ماه سال 1399 این زیان انباشته percent-01 افزایش یافته است. بررسی آخرین صورت‌های مالی بانک‌های دولتی و خصوصی حاکی از آن است که 12 بانک کشور، در پایان سال 1401 در مجموع زیان انباشته سنگین amount-04 را رقم زده‌اند.
72
-
73
  نمونه ۱۰:
74
  متن اصلی: بانک سرمایه با مدیرعاملی فرج‌اله قدمی وضعیت بحرانی دارد و زیان خالص 2700 میلیارد تومانی در سه‌ماهه نخست 1404 گزارش کرد که نسبت به دوره مشابه قبل 14% افزایش یافت. نسبت کفایت سرمایه این بانک به منفی 345 درصد رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به 67 هزار میلیارد تومان است. مرور صورت‌های مالی بانک‌ها نشان می‌دهد «سود تسعیر» و «ارزش‌گذاری دارایی‌های ارزی» طی 1401–1403 به منبع مهم سود اسمی بانک‌ها تبدیل شده و سهم سودهای ارزی به‌راحتی به 40–60٪ رسیده است.
75
  متن ناشناس‌شده: company-01 با مدیرعاملی person-01 وضعیت بحرانی دارد و زیان خالص amount-01 در سه‌ماهه نخست 1404 گزارش کرد که نسبت به دوره مشابه قبل percent-01 افزایش یافت. نسبت کفایت سرمایه این بانک به percent-02 رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به amount-02 است. مرور صورت‌های مالی بانک‌ها نشان می‌دهد «سود تسعیر» و «ارزش‌گذاری دارایی‌های ارزی» طی 1401–1403 به منبع مهم سود اسمی بانک‌ها تبدیل شده و سهم سودهای ارزی به‌راحتی به percent-03 رسیده است.
76
-
77
  حالا وظیفه شما: متن زیر را طبق الگوی بالا ناشناس‌سازی کنید. فقط متن ناشناس‌شده را بدون هیچ توضیح اضافه برگردانید.
78
  """
79
 
80
- - company-XX: شرکت‌ها، بانک‌ها (مثال: ایران خودرو → company-01)
81
- - person-XX: اشخاص (مثال: احمد رضایی → person-01)
82
- - amount-XX: مبالغ مالی (مثال: 50 هزار میلیارد تومان → amount-01)
83
- - percent-XX: درصدها (مثال: 25 درصد → percent-01)
84
-
85
- قوانین:
86
- 1. شماره‌گذاری به ترتیب ظهور (01، 02، 03...)
87
- 2. موجودیت تکراری = همان شماره
88
- 3. ساختار جمله را حفظ کنید
89
- 4. فقط متن ناشناس‌شده را برگردانید
90
-
91
- نمونه:
92
- متن اصلی: بانک ملی ایران در سال 1403 سود 50 هزار میلیارد تومانی کسب کرد. مدیرعامل بانک ملی، احمد رضایی، گفت این بانک 25 درصد رشد داشت.
93
- متن ناشناس‌شده: company-01 در سال 1403 سود amount-01 کسب کرد. مدیرعامل company-01، person-01، گفت این بانک percent-01 رشد داشت."""
94
-
95
  print("در حال بارگذاری مدل...")
96
- model_name = "HooshvareLab/bert-base-parsbert-ner-uncased" # مدل ParsBERT NER
97
 
98
  # تشخیص دستگاه (GPU یا CPU)
99
  device = "cuda" if torch.cuda.is_available() else "cpu"
@@ -123,33 +81,48 @@ except Exception as e:
123
  print(f"❌ خطا در بارگذاری مدل: {e}")
124
  raise e
125
 
126
- def anonymize_text(text):
127
- """تابع ناشناس‌سازی متن با استفاده از ParsBERT"""
128
  if not text.strip():
129
  return "⚠️ لطفاً متنی وارد کنید"
130
 
131
- # تبدیل متن به توکن‌ها
132
- inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=512)
133
-
134
- # پیش‌بینی‌ها را از مدل دریافت کنید
135
- with torch.no_grad():
136
- outputs = model(**inputs)
137
 
138
- # استخراج برچسب‌ها
139
- predictions = outputs.logits.argmax(dim=2)
140
-
141
- # تبدیل توکن‌ها به برچسب‌های موجودیت
142
- tokens = tokenizer.convert_ids_to_tokens(inputs['input_ids'][0])
143
- predicted_labels = [model.config.id2label[pred.item()] for pred in predictions[0]]
144
-
145
- # ترکیب توکن‌ها و برچسب‌ها
146
- result = []
147
- for token, label in zip(tokens, predicted_labels):
148
- if label != 'O': # اگر برچسب O نباشد، آن را در نتیجه اضافه کن
149
- result.append(f"{token}: {label}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
 
151
- # تبدیل به رشته نهایی
152
- return '\n'.join(result)
 
 
153
 
154
  # نمونه‌های پیش‌فرض
155
  examples = [
@@ -159,7 +132,7 @@ examples = [
159
 
160
  # ساخت رابط کاربری
161
  with gr.Blocks(title="ناشناس‌سازی متون", theme=gr.themes.Soft()) as demo:
162
- gr.Markdown("""
163
  # 🔒 ناشناس‌سازی متون مالی فارسی
164
 
165
  ⚠️ **توجه**: این نسخه روی CPU اجرا می‌شود و کند است (30-60 ثانیه برای هر متن).
@@ -206,7 +179,7 @@ with gr.Blocks(title="ناشناس‌سازی متون", theme=gr.themes.Soft())
206
  label="📝 نمونه‌های آزمایشی (کلیک کنید)"
207
  )
208
 
209
- gr.Markdown("""
210
  ### 📌 نکات:
211
  - متن‌های کوتاه (کمتر از 100 کلمه) سریع‌تر پردازش می‌شوند
212
  - برای متن‌های طولانی، به چند دقیقه زمان نیاز است
@@ -215,9 +188,15 @@ with gr.Blocks(title="ناشناس‌سازی متون", theme=gr.themes.Soft())
215
 
216
  submit_btn.click(
217
  fn=anonymize_text,
218
- inputs=[input_text],
219
  outputs=output_text
220
  )
221
 
222
  if __name__ == "__main__":
223
  demo.launch()
 
 
 
 
 
 
 
3
  import torch
4
 
5
  # پرامپت سیستم (کوتاه شده برای کاهش مصرف)
6
+ SYSTEM_PROMPT = """شما یک سیستم ناشناس‌سازی متن هستید. موجودیت‌های حساس را شناسایی و جایگزین کنید:
 
7
 
8
+ - company-XX: شرکت‌ها، بانک‌ها (مثال: ایران خودرو → company-01)
9
+ - person-XX: اشخاص (مثال: احمد رضایی → person-01)
10
+ - amount-XX: مبالغ مالی (مثال: 50 هزار میلیارد تومان → amount-01)
11
+ - percent-XX: درصدها (مثال: 25 درصد → percent-01)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ قوانین:
14
+ 1. شماره‌گذاری به ترتیب ظهور (01، 02، 03...)
15
+ 2. موجودیت تکراری = همان شماره
16
+ 3. ساختار جمله را حفظ کنید
17
+ 4. فقط متن ناشناس‌شده را برگردانید
18
 
19
  نمونه‌های آموزشی:
 
20
  نمونه ۱:
21
  متن اصلی: ایران خودرو در اسفندماه سال 1402 حدود 23 هزار و 296 میلیارد تومان درآمد کسب کرد که در مقایسه با بهمن 4.58 درصد افزایش داشت. زیان خالص ایران خودرو در این سال به بیش از 37 همت رساند.
22
  متن ناشناس‌شده: company-01 در اسفندماه سال 1402 حدود amount-01 درآمد کسب کرد که در مقایسه با بهمن percent-01 افزایش داشت. زیان خالص company-01 در این سال به بیش از amount-02 رساند.
 
23
  نمونه ۲:
24
  متن اصلی: بانک پاسارگاد با شناسایی سود خالص 155 هزار میلیارد ریالی در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با بانک ملت داشت. در مقابل، بانک سرمایه با مدیرعاملی فرج‌اله قدمی وضعیت بحرانی دارد.
25
  متن ناشناس‌شده: company-01 با شناسایی سود خالص amount-01 در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با company-02 داشت. در مقابل، company-03 با مدیرعاملی person-01 وضعیت بحرانی دارد.
 
26
  نمونه ۳:
27
  متن اصلی: مهدی اخوان بهابادی، مدیرعامل همراه اول، در مجمع عمومی عادی سالیانه اعلام کرد درآمد عملیاتی شرکت اصلی با رشد قابل توجه 37 درصدی نسبت به سال 1402، به 70 هزار و 677 میلیارد تومان رسیده است. سود خالص تلفیقی گروه همراه اول در پایان سال مالی 1403 به 8003 میلیارد تومان رسید.
28
  متن ناشناس‌شده: person-01، مدیرعامل company-01، در مجمع عمومی عادی سالیانه اعلام کرد درآمد عملیاتی شرکت اصلی با رشد قابل توجه percent-01 نسبت به سال 1402، به amount-01 رسیده است. سود خالص تلفیقی گروه company-01 در پایان سال مالی 1403 به amount-02 رسید.
 
29
  نمونه ۴:
30
  متن اصلی: بانک پاسارگاد با شناسایی سود خالص 155 هزار میلیارد ریالی در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با بانک ملت داشت. در مقابل، بانک سرمایه با مدیرعاملی فرج‌اله قدمی وضعیت بحرانی دارد و زیان خالص 2700 میلیارد تومانی در سه‌ماهه نخست 1404 گزارش کرد. نسبت کفایت سرمایه این بانک به منفی 345 درصد رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به 67 هزار میلیارد تومان است.
31
  متن ناشناس‌شده: company-01 با شناسایی سود خالص amount-01 در رده دوم سودآورترین بانک‌های کشور قرار گرفت و رقابت تنگاتنگی با company-02 داشت. در مقابل، company-03 با مدیرعاملی person-01 وضعیت بحرانی دارد و زیان خالص amount-02 در سه‌ماهه نخست 1404 گزارش کرد. نسبت کفایت سرمایه این بانک به percent-01 رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به amount-03 است.
 
32
  نمونه ۵:
33
  متن اصلی: صورت‌های مالی حسابرسی شده شرکت آسان پادرو منتهی به 30 آذر 1403 نشان می‌دهد این شرکت سال مالی جاری بیش از 6 میلیارد تومان زیان خالص شناسایی کرده است. پادرو سال مالی 1403 حدود 30 میلیارد تومان درآمد عملیاتی کسب کرد که این رقم در مقایسه با سال 1402 رشد تقریباً دوبرابری دارد. 97 درصد درآمد پادرو از «پردازش حمل» است که مربوط به مشتریان متقاضی خدمات پستی بوده و بیش از 60 درصد درآمد آن از سرزمین هوشمند پاد (زیرمجموعه بانک پاسارگاد) و بابت حمل مرسوله کارت‌های بانکی است.
34
  متن ناشناس‌شده: صورت‌های مالی حسابرسی شده company-01 منتهی به 30 آذر 1403 نشان می‌دهد این شرکت سال مالی جاری بیش از amount-01 زیان خالص شناسایی کرده است. company-01 سال مالی 1403 حدود amount-02 درآمد عملیاتی کسب کرد که این رقم در مقایسه با سال 1402 رشد تقریباً دوبرابری دارد. percent-01 درآمد company-01 از «پردازش حمل» است که مربوط به مشتریان متقاضی خدمات پستی بوده و بیش از percent-02 درآمد آن از company-02 (زیرمجموعه company-03) و بابت حمل مرسوله کارت‌های بانکی است.
 
35
  نمونه ۶:
36
  متن اصلی: مجمع عمومی عادی سالیانه شرکت پتروشیمی پارس با نماد «پارس» راس ساعت 10:00 روز سه شنبه مورخ 1403/04/12 در محل برکه چوپان، هتل بزرگ نخل کنگان، طبقه پنجم، سالن همایش‌ها برگزار شد. در این مجمع صورت‌های مالی سال مالی منتهی به 1401/12/29 مورد بررسی و تصویب قرار گرفت و سازمان حسابرسی به‌ عنوان بازرس قانونی، حسابرس شرکت و بازرس علی‌البدل انتخاب شد. چشم‌انداز افق سال 1407 شرکت پتروشیمی پارس، سرآمدی در تولید پایدار، بهره‌وری و توسعه زنجیره ارزش خواهد بود و تا زمانی که افزایش ظرفیت جدید نداشته باشد، سودآوری از طریق رشد درآمد با پیداکردن مشتریان جدید امکان‌پذیر نخواهد بود.
37
  متن ناشناس‌شده: مجمع عمومی عادی سالیانه company-01 با نماد «پارس» راس ساعت 10:00 روز سه شنبه مورخ 1403/04/12 در محل برکه چوپان، هتل بزرگ نخل کنگان، طبقه پنجم، سالن همایش‌ها برگزار شد. در این مجمع صورت‌های مالی سال مالی منتهی به 1401/12/29 مورد بررسی و تصویب قرار گرفت و company-02 به‌ عنوان بازرس قانونی، حسابرس شرکت و باز��س علی‌البدل انتخاب شد. چشم‌انداز افق سال 1407 company-01، سرآمدی در تولید پایدار، بهره‌وری و توسعه زنجیره ارزش خواهد بود و تا زمانی که افزایش ظرفیت جدید نداشته باشد، سودآوری از طریق رشد درآمد با پیداکردن مشتریان جدید امکان‌پذیر نخواهد بود.
 
38
  نمونه ۷:
39
  متن اصلی: شرکت فولاد مبارکه اصفهان در مجمع عمومی عادی سالیانه راس ساعت 10 صبح روز شنبه مورخ 1403/04/30 در استان اصفهان برگزار شد و حاشیه سود خالص شرکت 38 درصد بوده که در نسبت به متوسط صنعت 20 درصد بالاتر است. صورت‌های مالی فصلی فولاد مبارکه اصفهان خبر از کاهش سودسازی می‌دهد و EPS این شرکت در پایان سال مالی 1404 از 636 ریال به 614 ریال خواهد رسید. تحلیل‌گران پیش‌بینی می‌کنند که این شرکت در سال 1403 از 500 میلیار تومان سرمایه‌گذاری خطرپذیری معافیت مالیاتی را اخذ کند.
40
  متن ناشناس‌شده: company-01 در مجمع عمومی عادی سالیانه راس ساعت 10 صبح روز شنبه مورخ 1403/04/30 در استان اصفهان برگزار شد و حاشیه سود خالص شرکت percent-01 بوده که در نسبت به متوسط صنعت percent-02 بالاتر است. صورت‌های مالی فصلی company-01 خبر از کاهش سودسازی می‌دهد و EPS این شرکت در پایان سال مالی 1404 از amount-01 به amount-02 خواهد رسید. تحلیل‌گران پیش‌بینی می‌کنند که این شرکت در سال 1403 از amount-03 سرمایه‌گذاری خطرپذیری معافیت مالیاتی را اخذ کند.
 
41
  نمونه ۸:
42
  متن اصلی: شرکت سرمایه‌گذاری دارویی تأمین (تیپیکو) گزارش فعالیت هیئت‌مدیره خود را برای سال مالی منتهی به 31 اردیبهشت 1404 در سامانه کدال منتشر کرد که درآمد‌های عملیاتی به 681,667 میلیارد ریال و سود خالص تلفیقی 86,278 میلیارد ریال رسید. صورت‌های مالی حسابرسی شده شرکت آسان پادرو منتهی به 30 آذر 1403 نشان می‌دهد این شرکت بیش از 6 میلیارد تومان زیان خالص شناسایی کرده است. پادرو سال مالی 1403 حدود 30 میلیارد تومان درآمد عملیاتی کسب کرد که رشد دوبرابری دارد و 97 درصد درآمد از پردازش حمل است که مربوط به مشتریان متقاضی خدمات پستی بوده است.
43
  متن ناشناس‌شده: company-01 گزارش فعالیت هیئت‌مدیره خود را برای سال مالی منتهی به 31 اردیبهشت 1404 در سامانه کدال منتشر کرد که درآمد‌های عملیاتی به amount-01 و سود خالص تلفیقی amount-02 رسید. صورت‌های مالی حسابرسی شده company-02 منتهی به 30 آذر 1403 نشان می‌دهد این شرکت بیش از amount-03 زیان خالص شناسایی کرده است. company-02 سال مالی 1403 حدود amount-04 درآمد عملیاتی کسب کرد که رشد دوبرابری دارد و percent-01 درآمد از پردازش حمل است که مربوط به مشتریان متقاضی خدمات پستی بوده است.
 
44
  نمونه ۹:
45
  متن اصلی: دو بانک ملت و پاسارگاد به ترتیب با شناسایی سود خالص 157 و 155 هزار میلیارد ریالی رقابت تنگاتنگی داشته و در رده‌های اول و دوم جای دارند. مجموع بانک‌های مورد بررسی در پایان اسفند ماه سال 1400 زیان انباشته‌ای معادل 1388 هزار میلیارد ریال داشته‌اند که نسبت به اسفند ماه سال 1399 این زیان انباشته 10 درصد افزایش یافته است. بررسی آخرین صورت‌های مالی بانک‌های دولتی و خصوصی حاکی از آن است که 12 بانک کشور، در پایان سال 1401 در مجموع زیان انباشته سنگین 336 هزار میلیارد تومانی را رقم زده‌اند.
46
  متن ناشناس‌شده: دو بانک company-01 و company-02 به ترتیب با شناسایی سود خالص amount-01 و amount-02 رقابت تنگاتنگی داشته و در رده‌های اول و دوم جای دارند. مجموع بانک‌های مورد بررسی در پایان اسفند ماه سال 1400 زیان انباشته‌ای معادل amount-03 داشته‌اند که نسبت به اسفند ماه سال 1399 این زیان انباشته percent-01 افزایش یافته است. بررسی آخرین صورت‌های مالی بانک‌های دولتی و خصوصی حاکی از آن است که 12 بانک کشور، در پایان سال 1401 در مجموع زیان انباشته سنگین amount-04 را رقم زده‌اند.
 
47
  نمونه ۱۰:
48
  متن اصلی: بانک سرمایه با مدیرعاملی فرج‌اله قدمی وضعیت بحرانی دارد و زیان خالص 2700 میلیارد تومانی در سه‌ماهه نخست 1404 گزارش کرد که نسبت به دوره مشابه قبل 14% افزایش یافت. نسبت کفایت سرمایه این بانک به منفی 345 درصد رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به 67 هزار میلیارد تومان است. مرور صورت‌های مالی بانک‌ها نشان می‌دهد «سود تسعیر» و «ارزش‌گذاری دارایی‌های ارزی» طی 1401–1403 به منبع مهم سود اسمی بانک‌ها تبدیل شده و سهم سودهای ارزی به‌راحتی به 40–60٪ رسیده است.
49
  متن ناشناس‌شده: company-01 با مدیرعاملی person-01 وضعیت بحرانی دارد و زیان خالص amount-01 در سه‌ماهه نخست 1404 گزارش کرد که نسبت به دوره مشابه قبل percent-01 افزایش یافت. نسبت کفایت سرمایه این بانک به percent-02 رسیده که از فروپاشی مالی بانک حکایت می‌کند و زیان انباشته آن نزدیک به amount-02 است. مرور صورت‌های مالی بانک‌ها نشان می‌دهد «سود تسعیر» و «ارزش‌گذاری دارایی‌های ارزی» طی 1401–1403 به منبع مهم سود اسمی بانک‌ها تبدیل شده و سهم سودهای ارزی به‌راحتی به percent-03 رسیده است.
 
50
  حالا وظیفه شما: متن زیر را طبق الگوی بالا ناشناس‌سازی کنید. فقط متن ناشناس‌شده را بدون هیچ توضیح اضافه برگردانید.
51
  """
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  print("در حال بارگذاری مدل...")
54
+ model_name = "HooshvareLab/parsbert-ner-uncased"
55
 
56
  # تشخیص دستگاه (GPU یا CPU)
57
  device = "cuda" if torch.cuda.is_available() else "cpu"
 
81
  print(f"❌ خطا در بارگذاری مدل: {e}")
82
  raise e
83
 
84
+ def anonymize_text(text, temperature=0.2, max_tokens=1024):
85
+ """تابع ناشناس‌سازی متن"""
86
  if not text.strip():
87
  return "⚠️ لطفاً متنی وارد کنید"
88
 
89
+ inputs = tokenizer(text, return_tensors="pt").to(device)
 
 
 
 
 
90
 
91
+ try:
92
+ # پیش‌بینی موجودیت‌های حساس
93
+ with torch.no_grad():
94
+ outputs = model(**inputs).logits
95
+
96
+ predictions = torch.argmax(outputs, dim=2)
97
+
98
+ # جایگزینی موجودیت‌ها با شماره‌ها
99
+ tokens = tokenizer.convert_ids_to_tokens(inputs['input_ids'][0])
100
+ anonymized_tokens = []
101
+
102
+ for i, token in enumerate(tokens):
103
+ if token.startswith("##"):
104
+ token = tokens[i-1] + token[2:] # به هم پیوستن زیرکلمه‌ها
105
+
106
+ label = model.config.id2label[predictions[0][i].item()]
107
+
108
+ if label == "B-ORG" or label == "I-ORG":
109
+ anonymized_tokens.append("company-{:02d}".format(i + 1))
110
+ elif label == "B-PER" or label == "I-PER":
111
+ anonymized_tokens.append("person-{:02d}".format(i + 1))
112
+ elif label == "B-MONEY" or label == "I-MONEY":
113
+ anonymized_tokens.append("amount-{:02d}".format(i + 1))
114
+ elif label == "B-PERCENT" or label == "I-PERCENT":
115
+ anonymized_tokens.append("percent-{:02d}".format(i + 1))
116
+ else:
117
+ anonymized_tokens.append(token)
118
+
119
+ anonymized_text = tokenizer.convert_tokens_to_string(anonymized_tokens)
120
+ return anonymized_text.strip()
121
 
122
+ except Exception as e:
123
+ error_msg = f"❌ خطا در پردازش: {str(e)}"
124
+ print(error_msg)
125
+ return error_msg
126
 
127
  # نمونه‌های پیش‌فرض
128
  examples = [
 
132
 
133
  # ساخت رابط کاربری
134
  with gr.Blocks(title="ناشناس‌سازی متون", theme=gr.themes.Soft()) as demo:
135
+ gr.Markdown("""
136
  # 🔒 ناشناس‌سازی متون مالی فارسی
137
 
138
  ⚠️ **توجه**: این نسخه روی CPU اجرا می‌شود و کند است (30-60 ثانیه برای هر متن).
 
179
  label="📝 نمونه‌های آزمایشی (کلیک کنید)"
180
  )
181
 
182
+ gr.Markdown("""
183
  ### 📌 نکات:
184
  - متن‌های کوتاه (کمتر از 100 کلمه) سریع‌تر پردازش می‌شوند
185
  - برای متن‌های طولانی، به چند دقیقه زمان نیاز است
 
188
 
189
  submit_btn.click(
190
  fn=anonymize_text,
191
+ inputs=[input_text, temperature, max_tokens],
192
  outputs=output_text
193
  )
194
 
195
  if __name__ == "__main__":
196
  demo.launch()
197
+
198
+
199
+
200
+
201
+
202
+