6

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

输入:

约翰史密斯很沮丧。

约翰史密斯很沮丧。

巴拉克奥巴马很沮丧。

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

杰夫阿特伍德很沮丧。

Bing Liu 对 openNLP NER 模块感到沮丧。

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

杰登史密斯很沮丧。

史密斯杰登很沮丧。

Lady Gaga 很沮丧。

Gaga 女士很沮丧。

Gaga 夫人很沮丧。

杰登很沮丧。

刘先生很沮丧。

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

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

约翰史密斯很沮丧。

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

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

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

Bing Liu 对 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”在姓氏列表中。 .

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

ps 斯坦福和 UIUC NER 系统的性能要好得多,但存在一些有趣但偏离主题的细微差异(这个问题太长了)

4

1 回答 1

5

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

如果 OpenNLP 的性能不能满足您的要求,并且您不能使用 Stanford 或 UIUC NER,我建议尝试使用Mallet,使用CRF此示例代码应该可以帮助您入门。

于 2014-07-07T18:59:33.947 回答