自定义命名实体提取

custom named entity extraction

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

people who are from newyork

我将构建查询

     select * from people where region = 'newyork'

但是当语句被否定时问题就来了

不是纽约人

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

感谢任何帮助

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

  • 定义自定义 属性 "not a ..." 并将其应用到任何地方。
  • 使用知识数据库,从数据中提取LOCATION,将"not from smth"定义为"LOCATION is not smth"。

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

你想做什么叫做 'natural language interface to database' 和 Standford NLP NER(基于 CRF 序列模型)可能不适合这个任务的解决方案。 当命名实体的含义取决于句子语义上下文时,基于 CRF 的 NER 很好:人名、公司名称、国家等。带有标记名称的注释文本用于训练识别器,这种方法实际上不适用于数据库中的命名实体.

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

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

你可以看看我专门为自然语言查询识别编写的库:NLQuery