M17idd commited on
Commit
0d7d4fa
·
1 Parent(s): 2ce8e52

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -15
app.py CHANGED
@@ -539,6 +539,7 @@ def load_and_process_documents(path):
539
 
540
  doc_texts = load_and_process_documents(folder_path)
541
 
 
542
  stop_words = [
543
  "است", "و", "با", "که", "در", "از", "برای", "به", "بر", "تا", "این", "آن", "یک", "کدام", "کجا", "هم", "همه",
544
  "یا", "از", "بر", "همچنین", "می", "باید", "شود", "شد", "گفت", "گویا", "داشت", "داشتن", "کنند", "کنیم",
@@ -566,7 +567,7 @@ def clean_text(text):
566
  return re.sub(r'[^آ-ی۰-۹0-9،.؟!؛+\-* ]+', '', text)
567
 
568
  # تابعی برای پیدا کردن نزدیک‌ترین خطوط به سوال
569
- def find_closest_lines(query, doc_texts, stop_words, top_n=20, exclude_line=None):
570
  # حذف کلمات اضافی از سوال
571
  cleaned_query = remove_stop_words(query, stop_words)
572
  query_words = cleaned_query.split()
@@ -583,7 +584,7 @@ def find_closest_lines(query, doc_texts, stop_words, top_n=20, exclude_line=None
583
  # مرتب سازی بر اساس شباهت
584
  all_matched_lines.sort(key=lambda x: x[1], reverse=True)
585
 
586
- # انتخاب ۲۰ خط نزدیک‌تر
587
  closest_lines = [line for line, _ in all_matched_lines[:top_n]]
588
 
589
  # حذف خط خاص از لیست در صورت وجود
@@ -594,25 +595,16 @@ def find_closest_lines(query, doc_texts, stop_words, top_n=20, exclude_line=None
594
 
595
  # حالا این رو در کد اصلی استفاده می‌کنیم:
596
  if query:
597
- # حذف کلمات اضافی از سوال
598
- cleaned_query = remove_stop_words(query, stop_words)
599
- query_words = cleaned_query.split()
600
-
601
- all_matched_lines = []
602
 
603
- # بررسی محتوای فایل‌ها
604
- for filename, text in doc_texts.items():
605
- matched_lines = extract_keywords_from_text(text, query_words)
606
- all_matched_lines.extend(matched_lines)
607
-
608
- # حالا این لیست را به مدل می‌دهیم
609
- if all_matched_lines:
610
  prompt = f"""
611
  لطفاً با توجه به سؤال زیر و محتوای خطوط مرتبط، یک پاسخ نهایی حرفه‌ای، دقیق و روان تولید کن. فقط از متن خطوط مرتبط استفاده کن. اگر اطلاعات کافی در متن وجود ندارد، صادقانه اعلام کن.
612
  سوال:
613
  {query}
614
  خطوط مرتبط:
615
- {all_matched_lines}
616
  پاسخ نهایی:
617
  """
618
 
@@ -626,3 +618,4 @@ if query:
626
 
627
  else:
628
  st.warning("هیچ خط مرتبطی پیدا نشد.")
 
 
539
 
540
  doc_texts = load_and_process_documents(folder_path)
541
 
542
+ # لیست کلمات توقف
543
  stop_words = [
544
  "است", "و", "با", "که", "در", "از", "برای", "به", "بر", "تا", "این", "آن", "یک", "کدام", "کجا", "هم", "همه",
545
  "یا", "از", "بر", "همچنین", "می", "باید", "شود", "شد", "گفت", "گویا", "داشت", "داشتن", "کنند", "کنیم",
 
567
  return re.sub(r'[^آ-ی۰-۹0-9،.؟!؛+\-* ]+', '', text)
568
 
569
  # تابعی برای پیدا کردن نزدیک‌ترین خطوط به سوال
570
+ def find_closest_lines(query, doc_texts, stop_words, top_n=10, exclude_line=None):
571
  # حذف کلمات اضافی از سوال
572
  cleaned_query = remove_stop_words(query, stop_words)
573
  query_words = cleaned_query.split()
 
584
  # مرتب سازی بر اساس شباهت
585
  all_matched_lines.sort(key=lambda x: x[1], reverse=True)
586
 
587
+ # انتخاب ۱۰ خط نزدیک‌تر
588
  closest_lines = [line for line, _ in all_matched_lines[:top_n]]
589
 
590
  # حذف خط خاص از لیست در صورت وجود
 
595
 
596
  # حالا این رو در کد اصلی استفاده می‌کنیم:
597
  if query:
598
+ # پیدا کردن ۱۰ خط نزدیک‌تر به سوال (و حذف یک خط خاص)
599
+ closest_lines = find_closest_lines(query, doc_texts, stop_words, top_n=10, exclude_line=None)
 
 
 
600
 
601
+ if closest_lines:
 
 
 
 
 
 
602
  prompt = f"""
603
  لطفاً با توجه به سؤال زیر و محتوای خطوط مرتبط، یک پاسخ نهایی حرفه‌ای، دقیق و روان تولید کن. فقط از متن خطوط مرتبط استفاده کن. اگر اطلاعات کافی در متن وجود ندارد، صادقانه اعلام کن.
604
  سوال:
605
  {query}
606
  خطوط مرتبط:
607
+ {closest_lines}
608
  پاسخ نهایی:
609
  """
610
 
 
618
 
619
  else:
620
  st.warning("هیچ خط مرتبطی پیدا نشد.")
621
+