nlp - 在斯坦福 CoreNlp 中,为什么不是所有专有名词(NNP)也命名实体
问题描述
我使用斯坦福 CoreNlp 进行名称实体识别 (NER)。我注意到在某些情况下它不是 100%,这很好,也不足为奇。然而,即使一个单词命名实体未被识别(即标签是O
),它也有标签NNP
(专有名词)。
例如,给定例句“The RestautantName in New York is the best outlet.”,nerTags()
只会[O, O, O, LOCATION, LOCATION, O, O, O, O, O]
正确识别“New York”。这句话的解析树看起来像
(ROOT
(S
(NP
(NP (DT The) (NNP RestautantName))
(PP (IN in)
(NP (NNP New) (NNP York))))
(VP (VBZ is)
(NP (DT the) (JJS best) (NN outlet)))
(. .)))
所以 "RestaurantName" 是专有名词 ( NNP
)
当我查找专有名词的定义时,它听起来非常接近命名实体。有什么不同?
解决方案
解析器在解析树库数据上进行训练,命名实体识别器在针对 PERSON、LOCATION、ORGANIZATION、MISC 的单独命名实体数据上进行训练。
我原以为 RestaurantName 可能会被标记为 MISC,但如果它没有被标记,则意味着在命名实体的训练数据中没有真正的例子。这里的关键点是解析决策和命名实体决策是由在不同数据上训练的不同模型完全独立地做出的。
推荐阅读
- spring-boot - 没有域的后端服务器的 SSL
- ios - 为什么我的 IOS 应用程序模拟器停止显示我的应用程序屏幕
- python - pyfcm.errors.AuthenticationError:验证发件人帐户时出错
- mongodb - limit() 选项在 mongodb 中如何工作?
- spring-boot - HBM2DDL 正在尝试跨目标数据库以外的数据库映射实体
- ruby - 错误:安装 XSpear-1.4.1.gem 时出错:rubyzip 需要 Ruby 版本 >= 2.4
- c++ - 如何在 DPC++ 编译器选项中指定 C++ 标准版本?
- java - Apache Flink:如何拆分组合广播状态并在 processBroadcastElement() 中放入单独的 MapStateDescriptor
- angular - 如何在 Angular 7 中将渲染添加到外部 URL?
- javascript - 作为道具传递的函数不是函数