2014-03-27 39 views
6

我正在尝试开发自然语言接口到数据库,我只是想知道是否有一个库或一个API(Java),我可以用它来转换一个问题(疑问句)到命令(祈使句)。将疑问句转换为命令句

例如:从“哪些员工在1970年之前出生?” “让1970年以前出生的员工”。

+0

我也想要一个...可悲的是没有任何好的... – alvas

+0

看完你的问题后,我继续解析一些这样的问题。在我看来,如果主语(在你的例子中,“雇员”)出现在疑问句中,那么简单的基于启发式的方法就足够了。你有没有试过看斯坦福大学/伯克利分析器? –

回答

0

这是一个相当复杂和不平凡的问题。但是,如果您的域名有限(员工数据库查询等),并且您只希望将一组有限的话语作为输入,则可以构建一个简单的基于规则的系统。

最简单的解决方案是开发一组基于正则表达式的转换规则。 例如假设在(是|是)之后出现的单词是动词。你可以保存所有频繁动词的字典及其与数据库字段的映射。这里“出生”将被映射到例如可以被称为DATE_OF_BIRTH的字段。

更复杂的基于规则的解决方案是查找或构建您所选语言的解析器,并根据解析器输出和规则库执行转换。例如。解析器将输出什么是句子谓语,主语等。你将有一套规则来重新排列句子的这些部分以产生命令式结构。

如果您讨厌手动开发规则库的想法,您可以尝试使用机器学习方法并训练统计系统。在这里,您需要开发一个涵盖大多数问题类型的问题数据库,并对其进行训练。

如果我想建议一个单一的库/工具用于试验上述任何方法,我会说OpenNLP。