将疑问句转换为命令性句

pab*_*oot 7 nlp sentence

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

例如:"1970年以前哪些员工出生?" "让员工在1970年之前出生".

小智 2

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

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

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

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

如果我要建议一个库/工具来试验上述任何方法,我会说 OpenNLP。