Update app.py
Browse files
app.py
CHANGED
|
@@ -59,27 +59,31 @@ def segment_text(text, max_segment_length=1000):
|
|
| 59 |
|
| 60 |
def postprocess_keywords(keywords, min_score=0.65):
|
| 61 |
"""
|
| 62 |
-
|
| 63 |
"""
|
| 64 |
unique_keywords = []
|
| 65 |
seen = set()
|
| 66 |
|
| 67 |
for kw in sorted(keywords, key=lambda x: len(x[0]), reverse=True):
|
| 68 |
if kw[0] not in seen and kw[1] >= min_score:
|
| 69 |
-
if not any(kw[0] in u_kw[
|
| 70 |
-
unique_keywords.append(kw)
|
| 71 |
seen.add(kw[0])
|
| 72 |
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
| 74 |
|
| 75 |
def evaluate_keywords(keywords, text_length):
|
| 76 |
"""
|
| 77 |
Оценка качества ключевых слов.
|
| 78 |
"""
|
| 79 |
avg_score = sum([kw["score"] for kw in keywords]) / len(keywords)
|
| 80 |
-
coverage = len(keywords) / (text_length / 100) # Ключевые слова на 100 символов
|
| 81 |
return {"average_score": avg_score, "coverage": coverage}
|
| 82 |
|
|
|
|
| 83 |
def extract_keywords_interface(text, top_n=15, diversity=0.4, max_ngram=3):
|
| 84 |
"""
|
| 85 |
Извлечение ключевых слов через Gradio интерфейс с улучшенной фильтрацией.
|
|
|
|
| 59 |
|
| 60 |
def postprocess_keywords(keywords, min_score=0.65):
|
| 61 |
"""
|
| 62 |
+
Постобработка ключевых слов: удаление вложенных, коротких и низкорейтинговых фраз.
|
| 63 |
"""
|
| 64 |
unique_keywords = []
|
| 65 |
seen = set()
|
| 66 |
|
| 67 |
for kw in sorted(keywords, key=lambda x: len(x[0]), reverse=True):
|
| 68 |
if kw[0] not in seen and kw[1] >= min_score:
|
| 69 |
+
if not any(kw[0] in u_kw["keyword"] for u_kw in unique_keywords):
|
| 70 |
+
unique_keywords.append({"keyword": kw[0], "score": kw[1]})
|
| 71 |
seen.add(kw[0])
|
| 72 |
|
| 73 |
+
filtered_keywords = [
|
| 74 |
+
kw for kw in unique_keywords if len(kw["keyword"].split()) > 1
|
| 75 |
+
]
|
| 76 |
+
return filtered_keywords
|
| 77 |
|
| 78 |
def evaluate_keywords(keywords, text_length):
|
| 79 |
"""
|
| 80 |
Оценка качества ключевых слов.
|
| 81 |
"""
|
| 82 |
avg_score = sum([kw["score"] for kw in keywords]) / len(keywords)
|
| 83 |
+
coverage = len(keywords) / (text_length / 100) # Ключевые слова на 100 символов текста
|
| 84 |
return {"average_score": avg_score, "coverage": coverage}
|
| 85 |
|
| 86 |
+
|
| 87 |
def extract_keywords_interface(text, top_n=15, diversity=0.4, max_ngram=3):
|
| 88 |
"""
|
| 89 |
Извлечение ключевых слов через Gradio интерфейс с улучшенной фильтрацией.
|