M17idd commited on
Commit
7c7b6e8
·
1 Parent(s): 061de97

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -10
app.py CHANGED
@@ -544,20 +544,33 @@ def clean_text(text):
544
  return re.sub(r'[^آ-ی۰-۹0-9،.؟!؛+\-* ]+', '', text)
545
 
546
 
547
- def find_closest_filename(query, filenames):
 
548
  scores = [(f, fuzz.partial_ratio(query, f)) for f in filenames]
549
  scores.sort(key=lambda x: x[1], reverse=True)
550
- return scores[0][0] if scores else None
551
 
 
 
 
552
 
553
- # فرض بر این است که متغیر query توسط کاربر مشخص شده است
 
 
 
 
 
 
 
 
 
 
 
554
  if query:
555
- closest_file = find_closest_filename(query, list(doc_texts.keys()))
 
556
 
557
- if closest_file:
558
- matched_text = doc_texts[closest_file]
559
- st.markdown(scores[0][0])
560
- st.markdown(matched_text)
561
  prompt = f"""
562
  لطفاً با توجه به سؤال زیر و محتوای سند موجود، یک پاسخ نهایی حرفه‌ای، دقیق و روان تولید کن. فقط از متن سند استفاده کن. اگر اطلاعات کافی در متن وجود ندارد، صادقانه اعلام کن.
563
  سوال:
@@ -574,8 +587,7 @@ if query:
574
  rewritten = clean_text(response.content.strip())
575
 
576
  st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
577
- think.empty()
578
 
579
  else:
580
  st.warning("هیچ سند مرتبطی پیدا نشد.")
581
- think.empty()
 
544
  return re.sub(r'[^آ-ی۰-۹0-9،.؟!؛+\-* ]+', '', text)
545
 
546
 
547
+ def find_closest_filenames(query, filenames, top_n=3):
548
+ # گرفتن نزدیک‌ترین فایل‌ها بر اساس شباهت
549
  scores = [(f, fuzz.partial_ratio(query, f)) for f in filenames]
550
  scores.sort(key=lambda x: x[1], reverse=True)
551
+ return [score[0] for score in scores[:top_n]] # برگشت دادن N فایل با بیشترین شباهت
552
 
553
+ def find_best_answer(query, top_files, doc_texts):
554
+ best_match = None
555
+ best_score = 0
556
 
557
+ # بررسی محتوای فایل‌ها
558
+ for filename in top_files:
559
+ text = doc_texts[filename]
560
+ similarity = fuzz.partial_ratio(query, text) # مقایسه سوال با محتوای فایل
561
+ if similarity > best_score:
562
+ best_score = similarity
563
+ best_match = filename
564
+
565
+ return best_match, doc_texts.get(best_match, "")
566
+
567
+
568
+ # حالا این رو در کد اصلی استفاده می‌کنیم:
569
  if query:
570
+ top_files = find_closest_filenames(query, list(doc_texts.keys()), top_n=3)
571
+ best_file, matched_text = find_best_answer(query, top_files, doc_texts)
572
 
573
+ if best_file:
 
 
 
574
  prompt = f"""
575
  لطفاً با توجه به سؤال زیر و محتوای سند موجود، یک پاسخ نهایی حرفه‌ای، دقیق و روان تولید کن. فقط از متن سند استفاده کن. اگر اطلاعات کافی در متن وجود ندارد، صادقانه اعلام کن.
576
  سوال:
 
587
  rewritten = clean_text(response.content.strip())
588
 
589
  st.markdown(f'<div class="chat-message">{rewritten}</div>', unsafe_allow_html=True)
 
590
 
591
  else:
592
  st.warning("هیچ سند مرتبطی پیدا نشد.")
593
+