2009-12-09 54 views
5

我有一些输入文本,其中包含一个或多个人类的人的名字。我没有任何这些名字的字典。哪个Java库可以帮助我从输入文本中定义名称? 我翻看OpenNLP,但没有找到任何示例或指南或至少描述如何将它应用到我的代码。 (我看到的javadoc,但它是这样一个项目文档相当差。)如何定义文本人的姓名(JAVA)

我想找到一些随机的文字名称。如果输入的文字是“我的朋友乔·史密斯去商店”,那么我想得到“乔·史密斯”。我认为在智能引擎上应该有足够大的字典,以小字典为基础,可以理解人名。

+0

你们是不是要确定,例如,它出现在一个句子中的名字吗?即,由于“我的朋友乔去商店。”你想要“乔”? – Seth 2009-12-09 18:17:32

+2

请澄清你的问题!你不能“定义”的名字,他们在历史上创造。例如,“朱利叶斯”是一个罗马的名字。如何文本看,什么样的处理是你用它做什么? – 2009-12-09 18:18:22

+3

我觉得作者想使用一个Java库,可能使用OpenNLP非结构化文本中提取的人的名字,但他不能找到如何实现这样的例子还是不错的文档。 – DrDee 2009-12-09 18:21:52

回答

0

您也可以通过OpenCyc和共发现项目看起来从语义的角度来看更有趣。

3

OpenNLP已命名实体识别。查看文档中的部分English Name Finding。但是我的经验表明,它可以识别实体,但没有与之关联的标签。 (准确地说,我发现标签不明确地分配。)因此,如果您有“我的朋友乔史密斯前往沃尔玛商店”这句话,OpenNLP会标识两个已命名的实体 - “Joe Smith”和“Walmart”。我无法将“Joe Smith”标记为Person,将“Walmart”标记为Organization。

正如Matt建议的那样,您可以尝试LingPipe,尽管它是一种商业工具。一些开源替代品是MorphAdornerStanford NER

1

OpenNlp检查人提取在其NER模型的人的类型。从opennlp网站下载项目和模型,并从模型网站获取模型(Opennlp页面上有链接)。然后去这里,http://www.asksunny.com/drupal/?q=node/4这是一个如何加载模型和执行NER的好例子。 NER从来都不是完美的,所以不要失望。

1

该问题在自然语言处理中的命名实体识别中得到解决,并且此时它被认为是有点难的问题。不过,您可以使用许多工具。我已经使用斯坦福NER这是一个很好的软件。

1

我将使用斯坦福命名实体识别器(NER)建议你。斯坦福大学NER提供了许多分类器。斯坦福NER提供的分类器中的一个可以从给定的文本中识别名称,位置和组织。

您可以在这个环节 http://nlp.stanford.edu:8080/ner/

相关问题