我有一些输入文字,其中包含一个或多个人名。我没有这些名字的字典。哪个Java库可以帮助我从输入文本中定义名称? 我查看了OpenNLP,但没有找到任何示例或指南,或者至少描述了如何将其应用到我的代码中。 (我看到了javadoc,但这个项目的文档非常糟糕。)
我想从一些随机文本中找到名字。如果输入的文字是“我的朋友乔史密斯去了商店。”,那么我想得到“乔史密斯”。我认为在智能引擎上应该有一些足够大的词典,基于较小的词典,可以理解人名。
答案 0 :(得分:3)
我会调查LingPipe。查看this demo。顺便说一句,你要做的事情叫做“named entity recognition”。要做到正确,这是一个困难的CS问题。
答案 1 :(得分:3)
OpenNLP具有命名实体识别功能。请查看文档中的English Name Finding部分。但我的经验表明,它识别实体,但没有与之关联的标签。 (准确地说,我发现这些标签含糊不清。)所以,如果你有句子“我的朋友Joe Smith去了沃尔玛商店”,OpenNLP会识别两个命名实体 - “Joe Smith”和“Walmart”。我无法将“Joe Smith”标记为Person,将“Walmart”标记为Organization。
正如Matt所建议的,你可以试试LingPipe,虽然它是一个商业工具。一些开源替代品是MorphAdorner和Stanford NER。
答案 2 :(得分:2)
虽然我们正在等待您正在做的事情的详细信息,但这里有一些常见名字列表的链接,至少在美国人口中是这样的:
我认为您需要这些(和/或更多)进行检查,因为您的任务听起来不像NLP可以为您做的事情而没有参考信息。
答案 3 :(得分:1)
您可以在此处http://code.google.com/p/graph-expression/wiki/Examples
查看自由文字中的人物提取答案 4 :(得分:1)
OpenNlp在其NER模型中有一个人类型。从opennlp网站下载项目和模型,并从模型网站获取模型(Opennlp页面上有一个链接)。然后转到这里,http://www.asksunny.com/drupal/?q=node/4这是如何加载模型和执行NER的一个很好的例子。 NER永远不会完美,所以不要失望。
答案 5 :(得分:1)
我建议您使用stanford Name Entity Recognizer(NER)。斯坦福大学NER提供了许多分类器.stanford NER提供的一个分类器可以从给定的文本中识别名称,位置和组织。
您可以在此链接中找到stanford NER的在线演示 http://nlp.stanford.edu:8080/ner/
答案 6 :(得分:0)
从语义角度来看,您还可以将OpenCyc和WordNet项目视为更有趣。
答案 7 :(得分:0)
这个问题在自然语言处理中的命名实体识别中得到解决,目前它被认为是一个有点难的问题。但是,您可以使用许多工具。我已经使用了stanford NER,这是一个很好的软件。
答案 8 :(得分:0)
OpenCalais服务可能很有用。在http://www.opencalais.com/documentation/calais-submission-tool
尝试他们的提交工具此工具不仅可识别人名。
答案 9 :(得分:0)
试用Stanford NER,一个文本处理库