为什么 token.pos_ 不工作而其他人 token.lemma_ 等在工作?

why is token.pos_ not working while others token.lemma_ etc are working?

我正在尝试从包含名词和动词的文本文件中分离句子。但是 token.pos_ 不工作,而 token.lemma_、token.shape_ 等工作。 希望在这方面得到一些帮助。下面是代码的一部分。提前谢谢你。

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)

您应该从代码段中删除以下行:

nlp = English()

因为它覆盖了行

nlp = spacy.load('en_core_web_sm')

后者 en_core_web_sm 有一个预训练的词性标注器,但 English() 只是一个没有内置词性标注器的 "blank" 模型。模型 en_core_web_sm 也可以使用依赖解析来拆分句子,所以不需要添加 sentencizer 到它。