如何将自然语言问题翻译成 MDX 查询?

人工智能 自然语言处理 问答
2021-11-16 00:30:56

我正在研究自然语言处理 (NLP) 以开发 NL 问答系统。回答部分已经完成。因此,处理问题以及有关算法的问题仍然存在。

最终产品应该允许用户在 NL 中提问。然后,该问题被转换为多维表达式 (MDX) 查询,该查询生成有关多维数据集维度的脚本。

如何将自然语言问题翻译成 MDX 查询?

问题的结果是以计算的形式出现的。例如

员工 1 做了多少申报?

或者

给我销售的数量。

2个回答

您可以使用一个组件库,它可以帮助您在应用程序(问题部分)中实现自然语言查询构建器,称为Open Natural Language Processing Package ,因此您绝对可以使用 OpenNLP 的现有模块(例如实体提取)开发一个模块,分块和解析。

根据维基百科来源它指出,截至 2001 年,问答应用程序通常包括“确定问题类型和答案类型的问题分类器模块”,因此“已经提出了多智能体问答架构,其中每个域 [或变量]由一个试图回答问题的代理人代表,考虑到它的具体知识。”

但是仍然需要一些努力来构建与数据库内联的 NLgenerators,用于答案查询,也是帮助您了解如何在半结构化表上使用组合语义解析的链接

希望这可以给你一些见解。

这是一个很难解决的问题,最好的方法很大程度上取决于你的任务范围。如果您有一个列数有限的小型数据库表,您可能会使用一些基本的模式匹配技术。如果它比这更复杂,您可能必须对问题进行全面的句法分析。这也取决于可能的问题类型的变化。

假设一组有限的变量和变体,您可以设置如下:

Y 生产了多少 X/Y 完成了多少 X/Y 的 X 数量是多少

您可以从模式中填充两个变量,然后在查询中使用它们:

选择 sum(X) 其中生产者 == Y

(或您的查询具有的任何格式)。

这样做的好处是您不需要成为语言学专家来维护/扩展系统,并且您可以在必要时为其添加更多模式。您可能必须将一些术语映射到同义词上才能从中获得正确的列标题/标签。但这种方法实施起来并不难,而且您应该有一个基本系统,并且运行得相当快。然后,您必须查看/测试您的用户提出的问题,并相应地扩展模式库存。

缺点是您最终可能会得到一长串模式,并且可能会有一些冲突,即具有不同变量的相同模式会要求不同类型的结果。如果这被证明是一个问题,您可能必须寻找更强大的方法。