Skip to content

Instantly share code, notes, and snippets.

@achmedzhanov
Last active February 25, 2020 12:34
Show Gist options
  • Save achmedzhanov/e6ed8b79be63f4b05a13748011249708 to your computer and use it in GitHub Desktop.
Save achmedzhanov/e6ed8b79be63f4b05a13748011249708 to your computer and use it in GitHub Desktop.
from nltk import sent_tokenize
from pymystem3 import Mystem
import re
# текст, в котором будем искать
some_text = 'Красивая мама красиво мыла раму. Ну а веселая собака грызла косточку. А тот самый питон ел мыщь.'
# текст с ключевыми словами
keyword_text = 'веселая Красивая'
# список предложений
sents = sent_tokenize(some_text)
print(some_text)
# список пар (предложение, леммы)
# set используем чтобы хранить уникальный список лемм и для скорости
m = Mystem()
sents_end_lemmas = [(s, set(m.lemmatize(s))) for s in sents]
print(sents_end_lemmas)
# леммы ключевых слов
keyword_lemmas = m.lemmatize(keyword_text)
# убираем пробелы, переносы строк ...
keyword_lemmas = [l for l in keyword_lemmas if not re.match(r"\s+", l)]
# превращаем в set
keyword_lemmas_set = set(keyword_lemmas)
print(keyword_lemmas)
# фильтруем: у каждого предложения проверям, есть ли пересечение множества лемм
# ключевых слов и множества лемм предложения
filtered = [sl[0] for sl in sents_end_lemmas if(len(keyword_lemmas_set.intersection(sl[1])) > 0)]
print(filtered)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment