Я на самом деле не использую TextBlob, но у меня есть два метода, которые могут помочь вам достичь вашей цели.По сути, я разделяю предложение пробелом и перебираю его, чтобы увидеть, есть ли совпадения.Один метод возвращает список, а другой - словарь значений индекса и слова.
### If you just want a list of words
def find_keyword_matches(sentence, keyword_list):
s1 = sentence.split(' ')
return [i for i in s1 if i in keyword_list]
Затем:
find_keyword_matches(sentence2, comorbidity_keywords)
Вывод:
['segmentectomy']
Длясловарь:
def find_keyword_matches(sentence, keyword_list):
s1 = sentence.split(' ')
return {xyz.index(i):i for i in xyz if i in comorbidity_keywords}
Вывод:
{17: 'segmentectomy'}
Наконец, итератор, который также выведет, где в предложении найдено слово, если оно вообще есть:
def word_range(sentence, keyword):
try:
idx_start = sentence.index(keyword)
idx_end = idx_start + len(keyword)
print(f'Word \'{keyword}\' found within index range {idx_start} to {idx_end}')
if idx_start > 0:
return keyword
except ValueError:
pass
Затем выполните понимание вложенного списка, чтобы избавиться от значений None:
found_words = [x for x in [word_range(sentence2, i) for i in comorbidity_keywords] if not x is None]