Ошибка при использовании NamesExtractor 'generator' object has no attribute 'matches'

Использую Jupyter Notebook

Есть такой код:

from collections import defaultdict
from natasha import NamesExtractor
from nltk.tokenize import sent_tokenize
from natasha import MorphVocab

morph_vocab = MorphVocab()
names_contexts = defaultdict(set)

def update_names_counts(sentence, names_counts):
    matches = extract_names(sentence)
    if matches.matches:
        for match in matches:
            name = get_full_name(match.fact)
            names_counts[name] += 1
            #names_contexts[name].add(sentence)



def get_full_name(match_object):
    name_parts = []
    if match_object.first is not None:
        name_parts.append(match_object.first)
    if match_object.middle is not None:
        name_parts.append(match_object.middle)
    if match_object.last is not None:
        name_parts.append(match_object.last)
    full_name = ' '.join(name_parts)
    return full_name       


chapter1 = part1_chapter[1]
sentences = sent_tokenize(chapter1)

extract_names = NamesExtractor(morph_vocab)
names_counts = defaultdict(int)


for sentence in sentences:
    update_names_counts(sentence, names_counts)

print('Количество найденных имён в тексте:', len(names_counts))

names_top_10 = sorted(names_counts.items(), 
                      key=lambda name_and_count: name_and_count[1], 
                      reverse=True)[:10]

и при обработке возникает ошибка:

AttributeError                            Traceback (most recent call last)
<ipython-input-9-dc8d1d7aebd4> in <module>
      8 # извлекаем из каждого предложения имена и обновляем счётчик имён
      9 for sentence in sentences:
---> 10     update_names_counts(sentence, names_counts)
     11 
     12 print('Количество найденных имён в тексте:', len(names_counts))

<ipython-input-6-faf1b8b59c57> in update_names_counts(sentence, names_counts)
     30 def update_names_counts(sentence, names_counts):
     31     matches = extract_names(sentence)
---> 32     if matches.matches:
     33         for match in matches:
     34             name = get_full_name(match.fact)

AttributeError: 'generator' object has no attribute 'matches'

около года назад текущий вариант кода работал, на текущий момент не могу устранить проблему, буду благодарна за помощь!


Ответы (0 шт):