首页 > 解决方案 > 获取不正确的 POS 标记

问题描述

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

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,我该怎么办。

标签: nlpspacylinguistics

解决方案


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

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

当我运行更正的句子“一条龙飞来拯救公主。”时,输出是

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

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


推荐阅读