自定义命名实体提取

时间:2016-09-14 08:33:04

标签: nlp stanford-nlp opennlp named-entity-extraction

我正在尝试使用stanford NLP实现NER(命名实体提取)。 最终目标是将自由文本转换为查询格式。 我创建了一个自定义词典,能够提取实体并构建查询

people who are from newyork

我将构建查询

     select * from people where region = 'newyork'

但是当声明被否定时会出现问题

不是来自纽约的人

如何从这个陈述中提取负面情景,即使在斯坦福NLP之外也有任何可能的方法

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

我知道实现否定关系的两种可能性:

  • 定义自定义属性"不是..."并在任何地方应用它。
  • 使用知识数据库,从数据中提取LOCATION,定义"而不是smth" as" LOCATION不是smth"。

我成功地使用了第二种方法,但我能够将我的域限制为有限的主题和关系。我发现Stanford's typed dependencies非常有用,他们也可以帮助你(找到那些from smth关系)。

答案 1 :(得分:0)

你想做什么被称为'数据库的自然语言接口'和Standford NLP NER(基于CRF序列模型)可能是这项任务的不适当的解决方案。 当命名实体意义取决于句子语义上下文时,基于CRF的NER是好的:人名,公司名称,国家等。带有标记名称的带注释文本用于训练识别器,并且这种方法实际上不可用于数据库中的命名实体

在这种情况下,基于规则的识别器要好得多:

  • 你不需要训练它们:它应该保持规则引擎使用的词典最新(数据表名称列表,列等)
  • 您可以轻松添加所需的自定义解析器:日期,数字/条件,逻辑运算符(如“not”,“or”,“and”)

您可以浏览我专为自然语言查询识别而编写的库:NLQuery