M17idd commited on
Commit
39f1557
·
1 Parent(s): ddb39b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -8
app.py CHANGED
@@ -547,12 +547,33 @@ def find_closest_filenames(query, filenames, top_n=3):
547
  scores.sort(key=lambda x: x[1], reverse=True)
548
  return [score[0] for score in scores[:top_n]]
549
 
550
- from transformers import pipeline
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
551
 
552
- def summarize_text(text):
553
- summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
554
- summary = summarizer(text, max_length=1024, min_length=512, do_sample=False)
555
- return summary[0]['summary_text']
556
 
557
  def find_best_answer(query, top_files, doc_texts):
558
  best_match = None
@@ -567,13 +588,13 @@ def find_best_answer(query, top_files, doc_texts):
567
  best_match = filename
568
  best_text = text
569
 
570
- # خلاصه کردن متن برای خروجی بهتر
571
  if best_text:
572
- summary = summarize_text(best_text)
573
  else:
574
  summary = "متنی برای خلاصه‌سازی پیدا نشد."
575
 
576
- return summary
577
 
578
 
579
  # حالا این رو در کد اصلی استفاده می‌کنیم:
 
547
  scores.sort(key=lambda x: x[1], reverse=True)
548
  return [score[0] for score in scores[:top_n]]
549
 
550
+ import re
551
+ import numpy as np
552
+ from sklearn.feature_extraction.text import TfidfVectorizer
553
+ from sklearn.cluster import KMeans
554
+ from nltk.tokenize import sent_tokenize
555
+ from sklearn.metrics.pairwise import cosine_similarity
556
+
557
+ # توابع کمکی
558
+ def clean_text(text):
559
+ return re.sub(r'[^آ-ی۰-۹0-9،.؟!؛+\-* ]+', '', text)
560
+
561
+ def summarize_text_with_kmeans(text, num_sentences=3):
562
+ sentences = sent_tokenize(text) # تقسیم متن به جملات
563
+ tfidf_vectorizer = TfidfVectorizer()
564
+ tfidf_matrix = tfidf_vectorizer.fit_transform(sentences) # تبدیل جملات به ماتریس TF-IDF
565
+
566
+ # الگوریتم خوشه‌بندی KMeans
567
+ kmeans = KMeans(n_clusters=1) # یک خوشه برای استخراج خلاصه
568
+ kmeans.fit(tfidf_matrix)
569
+
570
+ # پیدا کردن جملات نزدیک به مرکز خوشه
571
+ closest_centroid = kmeans.cluster_centers_[0]
572
+ similarities = cosine_similarity(tfidf_matrix, closest_centroid.reshape(1, -1))
573
+ similar_sentences_indices = similarities.flatten().argsort()[-num_sentences:][::-1] # انتخاب jملات نزدیک
574
 
575
+ summary = [sentences[i] for i in similar_sentences_indices]
576
+ return ' '.join(summary)
 
 
577
 
578
  def find_best_answer(query, top_files, doc_texts):
579
  best_match = None
 
588
  best_match = filename
589
  best_text = text
590
 
591
+ # خلاصه کردن متن با استفاده از KMeans
592
  if best_text:
593
+ summary = summarize_text_with_kmeans(best_text)
594
  else:
595
  summary = "متنی برای خلاصه‌سازی پیدا نشد."
596
 
597
+ return best_match, summary
598
 
599
 
600
  # حالا این رو در کد اصلی استفاده می‌کنیم: