Last active
February 25, 2020 12:34
-
-
Save achmedzhanov/e6ed8b79be63f4b05a13748011249708 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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