我试图使用斯坦福NLP实现NER(命名实体提取)。 的最终目标是将自由文本转换为查询格式。 我创建了一个自定义词典和我能够提取的实体,并建立查询自定义命名实体提取
people who are from newyork
我将建立查询
select * from people where region = 'newyork'
但在声明中被否定
人谁的问题来不是从纽约
如何从这个声明中提取负面情况,有没有任何可能的方式,即使在斯坦福外面NLP
任何帮助表示赞赏
我试图使用斯坦福NLP实现NER(命名实体提取)。 的最终目标是将自由文本转换为查询格式。 我创建了一个自定义词典和我能够提取的实体,并建立查询自定义命名实体提取
people who are from newyork
我将建立查询
select * from people where region = 'newyork'
但在声明中被否定
人谁的问题来不是从纽约
如何从这个声明中提取负面情况,有没有任何可能的方式,即使在斯坦福外面NLP
任何帮助表示赞赏
我知道2点的可能性来实现否定关系:
smth
”定义为“LOCATION不是smth
”。我成功地使用了第二种方法,但是我能够将我的域限制为有限的主题和关系集。我发现Stanford's typed dependencies非常有用,他们可能也会帮助你(找到那些from smth
关系)。
你想做什么被称为'数据库的自然语言接口'和Standford NLP NER(基于CRF序列模型)可能不适合这项任务的解决方案。 当命名实体的含义取决于句子语义上下文时,基于CRF的NER是很好的:人名,公司名称,国家等。带有标记名的注释文本用于训练识别器,这种方法实际上并不适用于数据库。
基于规则的识别是在这种情况下要好得多:
您可能一瞥我的图书馆,这是专门为自然语言查询识别而编写的:NLQuery。
我试过了第一种方法。上述方法的问题是,如果在一个句子中有多个否定,那么我们就看不到哪个实体被否定 –
第一种方法的缺点是必须每N个实体有N个否定。基本上,额外属性的数量增长得太快。尝试第二种方法,它具有额外的好处 - 您可以将您的关系映射到某个数据库并使用SQL查询信息。 – dveim