获得不正确的 POS 标记

Getting incorrect POS tagging

我正在尝试获取句子的 POS dragon flies to rescue the princess 使用以下代码

nlp = spacy.load("en_core_web_md")
doc = nlp("dragon flies to rescue the princess")

for token in doc:
    print(f'{token.text:{12}} {token.pos_:{12}}')

以上代码的输出:

dragon       NOUN         
flies        NOUN         
to           PART         
rescue       VERB         
the          DET          
princess     NOUN         

这里,'flies' 被认为是名词,而它是动词,是因为 spacy 将 'dragon flies' 视为一个词吗?

如果我想得到 "VERB" 作为苍蝇的 POS,我该怎么办。

当运行使用您的示例时,有两点需要注意:

  1. Spacy 模型是经过统计训练的模型,它们各自具有特定的 POS accuracy,在本例中约为 97%。因此,一些 错误总是在意料之中,特别是当您处理包含各种句子的语料库时。
  2. Spacy 当然只能在句子语法正确的情况下提供有意义的标签,而您上面的示例并非如此。

当我运行改正后的句子"A dragon flies to rescue the princess.",输出为

The          DET         
dragon       NOUN        
flies        VERB        
to           PART        
rescue       VERB        
the          DET         
princess     NOUN        
.            PUNCT

因此正是我们所期望的。如果您的数据集包含处理此类句法错误的句子,"easiest" 解决方案可能会手动注释一些示例,并利用 Spacy 的训练功能,可以找到详细信息 here。即便如此,也不能保证你会得到明显更好的结果,除非你注释了大量数据,并且可以断言大多数样本都有 "similar-looking" 错误。