почему token.pos_ не работает, а другие token.lemma_ et c работают? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь выделить предложения из текстового файла, в котором есть NOUN и VERB. Но token.pos_ не работает, тогда как token.lemma_, token.shape_ et c работают. Надеюсь получить помощь по этому вопросу. Ниже приведена часть кода. Заранее спасибо.

from spacy.lang.en import English
nlp = spacy.load('en_core_web_sm')
nlp = English()
sentencizer = nlp.create_pipe("sentencizer")
nlp.add_pipe(sentencizer)
doc = nlp(out_sent)

lis = []
new_lis = []
for d in doc.sents:
    lis.append(d)
print(lis)

for sent in lis:
    flag = 0
    for token in sent:
        # token.pos_ doesn't work. token.lemma_, token.shape_ etc works!
        #print(token.pos_)
        if(token.pos_ == 'NOUN' or token.pos_ == 'VERB'):
            flag = 1
    if(flag == 1):
        new_lis.append(sent)

1 Ответ

0 голосов
/ 08 апреля 2020

Вы должны удалить следующую строку из своего фрагмента кода:

nlp = English()

, поскольку она перезаписывает строку

nlp = spacy.load('en_core_web_sm')

последний en_core_web_sm имеет предварительно обученный POS-тегер, но English() - это просто «пустая» модель, в которой нет такого встроенного POS-тегера. Модель en_core_web_sm также может разбивать предложения, используя анализ зависимостей, поэтому нет необходимости добавлять sentencizer к нему.

...