Misnik commited on
Commit
a2c991c
·
verified ·
1 Parent(s): adb8535

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -10
app.py CHANGED
@@ -1,23 +1,49 @@
1
  import gradio as gr
2
  from keybert import KeyBERT
 
3
 
4
- # Инициализируем KeyBERT
5
- kw_model = KeyBERT()
 
 
6
 
7
- def extract_keywords(text):
 
8
  if not text or not text.strip():
9
  return []
10
- # Извлекаем топ-5 ключевых слов
11
- keywords = kw_model.extract_keywords(text, top_n=5)
12
- return keywords # список кортежей (keyword, score)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
- # Готовим Gradio-интерфейс
15
  iface = gr.Interface(
16
  fn=extract_keywords,
17
- inputs=gr.Textbox(label="Enter text"),
18
- outputs="json",
 
 
 
 
 
 
19
  title="KeyBERT Extractor",
20
- description="Введите текст, чтобы получить ключевые слова"
21
  )
22
 
23
  if __name__ == "__main__":
 
1
  import gradio as gr
2
  from keybert import KeyBERT
3
+ from nltk.tokenize import sent_tokenize
4
 
5
+ # Инициализируем KeyBERT с заданной моделью
6
+ from sentence_transformers import SentenceTransformer
7
+ model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
8
+ kw_model = KeyBERT(model)
9
 
10
+ # Функция извлечения ключевых слов
11
+ def extract_keywords(text, top_n=10, diversity=0.5, use_maxsum=False, max_ngram=3):
12
  if not text or not text.strip():
13
  return []
14
+
15
+ # Разбиваем текст на абзацы
16
+ segments = sent_tokenize(text)
17
+
18
+ all_keywords = []
19
+ for segment in segments:
20
+ keywords = kw_model.extract_keywords(
21
+ segment,
22
+ keyphrase_ngram_range=(1, max_ngram),
23
+ top_n=top_n,
24
+ diversity=diversity,
25
+ use_maxsum=use_maxsum,
26
+ stop_words="english"
27
+ )
28
+ all_keywords.extend(keywords)
29
+
30
+ # Убираем дубликаты
31
+ unique_keywords = list(set(all_keywords))
32
+ return unique_keywords # возвращаем список кортежей (ключевое слово, оценка)
33
 
34
+ # Создаем Gradio интерфейс
35
  iface = gr.Interface(
36
  fn=extract_keywords,
37
+ inputs=[
38
+ gr.Textbox(label="Enter text", lines=10, placeholder="Введите текст здесь"),
39
+ gr.Slider(5, 50, value=10, step=1, label="Количество ключевых слов (top_n)"),
40
+ gr.Slider(0.0, 1.0, value=0.5, step=0.1, label="Разнообразие ключевых слов (diversity)"),
41
+ gr.Checkbox(label="Использовать MaxSum", value=False),
42
+ gr.Slider(1, 3, value=3, step=1, label="Максимальная длина фраз (n-gram)")
43
+ ],
44
+ outputs="json",
45
  title="KeyBERT Extractor",
46
+ description="Введите текст, настройте параметры и извлеките ключевые слова"
47
  )
48
 
49
  if __name__ == "__main__":