2

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

people who are from newyork

我将建立查询

     select * from people where region = 'newyork'

但是当声明被否定时问题就来了

非纽约人

如何从这个陈述中提取负面情景,即使在斯坦福 NLP 之外,还有什么方法可能吗?

任何帮助表示赞赏

4

2 回答 2

1

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

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

我成功地使用了第二种方法,但我能够将我的领域限制为有限的主题和关系集。我发现斯坦福的类型依赖非常有用,它们也可以帮助你(找到这些from smth关系)。

于 2016-09-14T09:32:15.263 回答
1

您想要做的事情被称为“数据库的自然语言接口”,而 Standford NLP NER(基于 CRF 序列模型)可能不适合此任务。当命名实体的含义取决于句子语义上下文时,基于 CRF 的 NER 效果很好:人名、公司名称、国家等。带有标记名称的注释文本用于训练识别器,这种方法实际上不适用于数据库中的命名实体.

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

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

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

于 2016-09-21T16:49:06.490 回答