nlp - 获取不正确的 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,我该怎么办。
解决方案
运行您的示例时,有两点需要注意:
- Spacy 模型是经过统计训练的模型,它们分别具有特定的POS 准确率,在这种情况下约为 97%。因此,总是会出现一些错误,特别是在处理包含各种句子的语料库时。
- Spacy 当然只能在句子语法正确的情况下提供有意义的标签,而上述示例并非如此。
当我运行更正的句子“一条龙飞来拯救公主。”时,输出是
The DET
dragon NOUN
flies VERB
to PART
rescue VERB
the DET
princess NOUN
. PUNCT
因此正是我们所期望的。如果您的数据集包含处理此类句法错误的句子,“最简单”的解决方案可能会手动注释一些示例,并利用 Spacy 的训练功能,可以在此处找到详细信息。即使这样,也不能保证您获得明显更好的结果,除非您注释大量数据,并且可以断言大多数样本都有“相似”的错误。
推荐阅读
- c - 这个字符串文字的例子有什么问题?
- mongodb - NoSQL - 键/值 NoSQL 和文档 NoSQL 之间的区别
- spring-boot - 在spring boot项目中通过rest api使用@PostMapping获取403禁止错误
- r - 转置数据帧时对象大小会大幅增加
- sql - sql 查询没有选择我需要的正确值
- svn - 在获取锁定 (SVN) 上设置计时器
- java - 如何在没有persistence.xml文件的情况下禁用Wildfly 10 Hibernate Search模块是自动配置的Spring Boot应用程序?
- git - 使用 Lerna 通过 CI 自动发布 npm 包
- java - Spring Boot 安全性中的多种身份验证策略
- node.js - 发送后无法设置标头nodejs