从非结构化文本中提取人名

时间:2015-01-07 08:10:32

标签: nlp text-mining opennlp named-entity-recognition

我有一系列账单和发票,所以文中没有上下文(我的意思是他们不讲故事)。 我想从这些账单中提取人名。 我尝试过OpenNLP但是训练模型的质量并不好,因为我没有上下文。 所以第一个问题是:我可以训练模型只包含没有上下文的人名吗?如果可能的话,你可以给我一篇关于我如何建立这个新模型的好文章(我读到的大部分文章没有解释我应该为建立新模型所采取的步骤)。

我的数据库名称超过100,000个人名(名字,姓氏),所以如果NER系统在我的情况下不起作用(因为没有上下文),那么搜索这些名称的最佳方法是什么?候选人(我的意思是用所有其他姓氏搜索每个名字?)

感谢。

2 个答案:

答案 0 :(得分:3)

关于" context",我猜你的意思是你没有完整的句子,即没有上一个/下一个令牌,在这种情况下你会面临非常标准的NER。我不知道这个特定问题的可用软件或培训数据,如果您发现没有,您将不得不为培训和/或评估目的建立自己的语料库。

您的名称数据库可能会有很大帮助,具体取决于数据库中实际存在的帐单名称的比例。您也可能不得不依赖于名称的字符级形态,作为模式(参见[1]中的模式)。一旦你有一个训练集的功能(存在于数据库,形态,法案的其他信息)和解决方案(注释账单的实际名称),使用标准机器学习作为SVM将是非常简单的(如果你不熟悉这一点,只是问)。

其他一些建议:

  • 您最有可能还会使用其他账单信息:公司名称,职位,税务提及等。
  • 您也可以选择性地进行 - 如果所有账单都应该提及(确切地说?)一个人的名字,您可以排除所有其他文本(例如金额,税名,职位等)或假设在专用模型中账单中的所有文字,只有一个应该被猜到一个名字。

[1]命名实体提取的排名算法:提升和投票的感知器(Michael Collins,2002)

答案 1 :(得分:2)

我从一些正则表达式开始,然后可能使用基于字典的方法(即,大名单)来扩充它。

无论你做什么,它都不会是完美的,所以一定要牢记这一点。