Update app.py
Browse files
app.py
CHANGED
|
@@ -189,10 +189,13 @@ class AnonymizationEvaluator:
|
|
| 189 |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
| 190 |
filename = f"evaluation_results_{timestamp}.csv"
|
| 191 |
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
|
|
|
|
|
|
|
|
|
| 196 |
|
| 197 |
def create_evaluation_interface():
|
| 198 |
"""ایجاد رابط کاربری ارزیابی"""
|
|
@@ -254,7 +257,7 @@ def create_evaluation_interface():
|
|
| 254 |
)
|
| 255 |
|
| 256 |
download_btn = gr.Button(
|
| 257 |
-
"💾 دانلود نتایج",
|
| 258 |
variant="secondary",
|
| 259 |
visible=False
|
| 260 |
)
|
|
@@ -337,10 +340,16 @@ def create_evaluation_interface():
|
|
| 337 |
|
| 338 |
def download_results():
|
| 339 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 340 |
filename = evaluator.create_downloadable_csv()
|
| 341 |
if filename:
|
| 342 |
return (
|
| 343 |
-
"✅ فایل نتایج آماده
|
| 344 |
gr.File(value=filename, visible=True)
|
| 345 |
)
|
| 346 |
else:
|
|
@@ -402,7 +411,41 @@ def create_evaluation_interface():
|
|
| 402 |
- فایل خروجی شامل ستونهای اصلی + سه ستون متریک خواهد بود
|
| 403 |
- متریکها برای هر سطر جداگانه محاسبه میشوند
|
| 404 |
- آمار کلی در گزارش خلاصه نمایش داده میشود
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 405 |
""")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 406 |
|
| 407 |
return interface
|
| 408 |
|
|
|
|
| 189 |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
| 190 |
filename = f"evaluation_results_{timestamp}.csv"
|
| 191 |
|
| 192 |
+
try:
|
| 193 |
+
# ذخیره فایل با encoding مناسب برای فارسی
|
| 194 |
+
self.results_df.to_csv(filename, index=False, encoding='utf-8-sig')
|
| 195 |
+
return filename
|
| 196 |
+
except Exception as e:
|
| 197 |
+
print(f"خطا در ایجاد فایل: {str(e)}")
|
| 198 |
+
return None
|
| 199 |
|
| 200 |
def create_evaluation_interface():
|
| 201 |
"""ایجاد رابط کاربری ارزیابی"""
|
|
|
|
| 257 |
)
|
| 258 |
|
| 259 |
download_btn = gr.Button(
|
| 260 |
+
"💾 دانلود نتایج CSV",
|
| 261 |
variant="secondary",
|
| 262 |
visible=False
|
| 263 |
)
|
|
|
|
| 340 |
|
| 341 |
def download_results():
|
| 342 |
try:
|
| 343 |
+
if evaluator.results_df is None or evaluator.results_df.empty:
|
| 344 |
+
return (
|
| 345 |
+
"❌ هیچ دادهای برای دانلود وجود ندارد. ابتدا ارزیابی را انجام دهید.",
|
| 346 |
+
gr.File(visible=False)
|
| 347 |
+
)
|
| 348 |
+
|
| 349 |
filename = evaluator.create_downloadable_csv()
|
| 350 |
if filename:
|
| 351 |
return (
|
| 352 |
+
f"✅ فایل نتایج آماده شد: {filename} ({len(evaluator.results_df)} سطر)",
|
| 353 |
gr.File(value=filename, visible=True)
|
| 354 |
)
|
| 355 |
else:
|
|
|
|
| 411 |
- فایل خروجی شامل ستونهای اصلی + سه ستون متریک خواهد بود
|
| 412 |
- متریکها برای هر سطر جداگانه محاسبه میشوند
|
| 413 |
- آمار کلی در گزارش خلاصه نمایش داده میشود
|
| 414 |
+
|
| 415 |
+
### مشکل در دانلود؟
|
| 416 |
+
|
| 417 |
+
اگر فایل دانلود نمیشود:
|
| 418 |
+
1. مرورگر خود را رفرش کنید
|
| 419 |
+
2. مجدداً ارزیابی را انجام دهید
|
| 420 |
+
3. اطمینان حاصل کنید که popup blocker غیرفعال است
|
| 421 |
""")
|
| 422 |
+
|
| 423 |
+
# تست دانلود
|
| 424 |
+
with gr.Accordion("🧪 تست دانلود", open=False):
|
| 425 |
+
gr.Markdown("برای تست عملکرد دانلود:")
|
| 426 |
+
test_download_btn = gr.Button("تست دانلود فایل نمونه")
|
| 427 |
+
test_file_output = gr.File(label="فایل تست", visible=False)
|
| 428 |
+
|
| 429 |
+
def create_test_file():
|
| 430 |
+
"""ایجاد فایل تست برای بررسی دانلود"""
|
| 431 |
+
import pandas as pd
|
| 432 |
+
test_data = {
|
| 433 |
+
'original_text': ['متن تست 1', 'متن تست 2'],
|
| 434 |
+
'Reference_text': ['company-01 amount-01', 'person-01 amount-02'],
|
| 435 |
+
'anonymized_text': ['company-01 amount-01', 'person-01 amount-02'],
|
| 436 |
+
'Precision': [1.0, 1.0],
|
| 437 |
+
'Recall': [1.0, 1.0],
|
| 438 |
+
'F1_Score': [1.0, 1.0]
|
| 439 |
+
}
|
| 440 |
+
test_df = pd.DataFrame(test_data)
|
| 441 |
+
test_filename = "test_download.csv"
|
| 442 |
+
test_df.to_csv(test_filename, index=False, encoding='utf-8-sig')
|
| 443 |
+
return gr.File(value=test_filename, visible=True)
|
| 444 |
+
|
| 445 |
+
test_download_btn.click(
|
| 446 |
+
fn=create_test_file,
|
| 447 |
+
outputs=[test_file_output]
|
| 448 |
+
)
|
| 449 |
|
| 450 |
return interface
|
| 451 |
|