使用openNLP命名的实体识别(默认模型)

时间:2013-03-06 15:18:43

标签: opennlp named-entity-recognition

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

输入:

  约翰史密斯很沮丧。

     约翰史密斯很沮丧。

     巴拉克奥巴马很沮丧。

     雨果查韦斯感到很沮丧。 (没有了)

     

杰夫阿特伍德很沮丧。

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

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

     杰登史密斯很沮丧。

     史密斯杰登很沮丧。

     

Lady Gaga很沮丧。

     

女士。加加很沮丧。

     

MRS。加加很沮丧。

     杰登很沮丧。

     

先生。刘很沮丧。

输出(我将钻石换成方括号):

  

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

     约翰史密斯很沮丧。

     

[START:person] Barak Obama [END]感到沮丧。

     雨果查韦斯感到很沮丧。 (没有了)

     

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

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

     

[开始:人] Noam Chomsky [END]对这个世界感到沮丧。

     

Jayden [START:person] Smith [END]感到沮丧。

     

[START:person] Smith [END] [START:person] Jayden [END]感到沮丧。

     Lady Gaga很沮丧。

     

女士。加加很沮丧。

     

MRS。加加很沮丧。

     杰登很沮丧。

     

先生。刘很沮丧。

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

  1. 先生和夫人等强名称指标被忽略。
  2. Jayden(2011年美国最受欢迎的4个名字)未被识别,而后来的'Smith'(在“Jayden Smith ......”中)被确定。我怀疑该模型“认为”句子开头的大写Jayden应该是句子的开头而不是因为NE。颠倒顺序,“Smith Jayden”作为提示(假设1),openNLP将其识别为两个独特的NE,不像其他全名如“John Smith”,可能暗示'Smith'在姓氏列表中。
  3. - >我很困惑和沮丧,如果有人能指出我的算法(或验证它很糟糕),我会很感激。

    P.S。斯坦福大学和UIUC NER系统的表现要好得多,但有些微妙的差异很有趣,但很不合适(这个问题太长了)

1 个答案:

答案 0 :(得分:5)

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

如果OpenNLP的性能不符合您的要求且您无法使用Stanford或UIUC NER,我建议您使用Mallet尝试CRFThis sample code应该让你开始。