M17idd commited on
Commit
9d76c2f
·
1 Parent(s): b0a87d5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -5
app.py CHANGED
@@ -540,13 +540,24 @@ st.markdown("""
540
 
541
 
542
 
 
 
 
 
 
543
  if query:
544
  found = False
545
- threshold = 62
 
 
 
 
 
 
546
 
547
- for idx, sentence in enumerate(all_sentences):
548
- similarity = fuzz.partial_ratio(query, sentence)
549
  if similarity >= threshold:
 
550
  prompt = f"""
551
  تعدادی پاسخ برای سوال زیر تولید شده است. لطفاً ابتدا این پاسخ‌ها را بررسی کن، سپس با در نظر گرفتن محتوای سوال و لحن آن، یک پاسخ نهایی حرفه‌ای، دقیق و روان ارائه کن که هم به سوال پاسخ دهد و هم از نظر نگارشی و ساختاری در سطح بالایی باشد. پاسخ نهایی باید حداکثر 1024 کاراکتر و حداقل 512 باشد، خلاصه و واضح نوشته شود و فقط به زبان فارسی باشد. از تکرار اضافی پرهیز کن و محتوای چند پاسخ را در صورت نیاز با هم ترکیب کن.
552
  سوال:
@@ -563,8 +574,7 @@ if query:
563
 
564
  # بررسی مرتبط بودن پاسخ با سؤال
565
  review_prompt = f"""
566
- لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا ن . اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شدواگر کمی مربوط بود بنویس: 'کمی خوب''.
567
- اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
568
  سوال:
569
  {query}
570
  پاسخ:
 
540
 
541
 
542
 
543
+ from sentence_transformers import SentenceTransformer, util
544
+
545
+ # بارگذاری مدل برای جستجوی معنایی
546
+ model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
547
+
548
  if query:
549
  found = False
550
+ threshold = 0.62
551
+
552
+ query_embedding = model.encode(query, convert_to_tensor=True)
553
+
554
+ sentence_embeddings = model.encode(all_sentences, convert_to_tensor=True)
555
+
556
+ similarities = util.pytorch_cos_sim(query_embedding, sentence_embeddings)[0]
557
 
558
+ for idx, similarity in enumerate(similarities):
 
559
  if similarity >= threshold:
560
+ sentence = all_sentences[idx]
561
  prompt = f"""
562
  تعدادی پاسخ برای سوال زیر تولید شده است. لطفاً ابتدا این پاسخ‌ها را بررسی کن، سپس با در نظر گرفتن محتوای سوال و لحن آن، یک پاسخ نهایی حرفه‌ای، دقیق و روان ارائه کن که هم به سوال پاسخ دهد و هم از نظر نگارشی و ساختاری در سطح بالایی باشد. پاسخ نهایی باید حداکثر 1024 کاراکتر و حداقل 512 باشد، خلاصه و واضح نوشته شود و فقط به زبان فارسی باشد. از تکرار اضافی پرهیز کن و محتوای چند پاسخ را در صورت نیاز با هم ترکیب کن.
563
  سوال:
 
574
 
575
  # بررسی مرتبط بودن پاسخ با سؤال
576
  review_prompt = f"""
577
+ لطفاً بررسی کن که آیا پاسخ زیر، حدودا به سوال زیر پاسخ داده است یا خیر یعنی کلمات کلیدی اصلی در سوال در پاسخ هست یا ن . اگر پاسخ به سوال مرتبط، درست و قابل قبول است، فقط بنویس: 'تأیید شد'. اگر کمی مربوط بود بنویس: 'کمی خوب'. اگر پاسخ اشتباه است یا هیچ ربطی به سوال ندارد، فقط بنویس: 'نیاز به اصلاح دارد'.
 
578
  سوال:
579
  {query}
580
  پاسخ: