【问题标题】:Named Entity recognition with openNLP (default model)使用 openNLP 识别命名实体(默认模型)
【发布时间】:2013-02-21 11:13:01
【问题描述】:

谁能指出 openNLP NameFinder 模块使用的算法? 代码很复杂,而且文档很少,并且作为一个黑盒(提供默认模型)使用它给我的印象是它主要是启发式的。 以下是输入和输出的一些示例:

输入:

约翰·史密斯很沮丧。

约翰·史密斯很沮丧。

巴拉克·奥巴马很沮丧。

雨果·查韦斯很沮丧。 (不再)

杰夫·阿特伍德很沮丧。

刘冰对 openNLP NER 模块感到沮丧。

诺姆·乔姆斯基对这个世界感到沮丧。

杰登·史密斯很沮丧。

Smith Jayden 很沮丧。

Lady Gaga 很沮丧。

女士。加加很沮丧。

夫人。加加很沮丧。

杰登很沮丧。

先生。刘很沮丧。

输出(我将菱形改为方括号):

[START:person] John Smith [END] 很沮丧。

约翰·史密斯很沮丧。

[START:person] Barak Obama [END] 很沮丧。

雨果·查韦斯很沮丧。 (不再)

[START:person] Jeff Atwood [END] 很沮丧。

刘冰对 openNLP NER 模块感到沮丧。

[START:person] Noam Chomsky [END] 对这个世界感到沮丧。

Jayden [START:person] Smith [END] 很沮丧。

[START:person] Smith [END] [START:person] Jayden [END] 很沮丧。

Lady Gaga 很沮丧。

女士。 Gaga 很沮丧。

夫人。 Gaga 很沮丧。

杰登很沮丧。

先生。刘很沮丧。

似乎模型只是学习了在训练数据中标注的固定名称列表,并允许进行一些平铺和组合。 两个值得注意的 (FN) 示例是:

  1. 忽略诸如 Mr. 和 Mrs. 之类的强姓名指示符。
  2. Jayden(2011 年美国最受欢迎的第 4 名)未被识别,而以下“Smith”(在“Jayden Smith...”中)被识别。我怀疑模型“认为”句子开头的大写 Jayden 是句子的开头而不是 NE。颠倒顺序,“Smith Jayden”作为提示(假设为 1),openNLP 将其识别为两个不同的 NE,与其他全名(例如“John Smith”)不同,可能暗示“Smith”在姓氏列表中。 .

-> 我感到困惑和沮丧,如果有人能指出我的算法(或验证它很糟糕),我将不胜感激。

附言斯坦福和 UIUC NER 系统的表现都要好得多,但存在一些有趣但离题的细微差异(这个问题太长了)

【问题讨论】:

    标签: opennlp named-entity-recognition


    【解决方案1】:

    顾名思义,NameFinderME 使用最大熵模型。 Here 是我的开创性论文。

    如果 OpenNLP 的性能不符合您的要求,并且您不能使用 Stanford 或 UIUC NER,我建议尝试使用 Mallet,使用 CRFThis sample code 应该可以帮助您入门。

    【讨论】:

    • 谢谢!我的 EM 在这里做得很糟糕。有趣的问题是功能集是什么。字?大写?句子被“。”分割因此先生没有帮助?我个人使用的是斯坦福 NER,对此非常满意,但我对 openNLP 奇怪的结果感到好奇。
    猜你喜欢
    • 2019-03-22
    • 2012-05-12
    • 1970-01-01
    • 2011-10-20
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多