【问题标题】:Convert interrogative sentence to imperative sentence将疑问句转换为祈使句
【发布时间】:2014-05-05 21:18:57
【问题描述】:

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

例如:来自“哪些员工出生于 1970 年之前?”以“获取 1970 年之前出生的员工。”

【问题讨论】:

  • 我也想要一个...可惜没有好的...
  • 看了你的问题后,我继续解析一些这样的问题。在我看来,如果主语(在您的示例中为“员工”)出现在疑问句中,那么基于启发式的简单方法就足够了。您是否尝试过查看斯坦福/伯克利解析器?

标签: nlp sentence


【解决方案1】:

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

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

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

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

如果我要推荐一个用于试验上述任何方法的库/工具,我会选择 OpenNLP。

【讨论】:

    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多