自然语言到 SQL 查询

数据挖掘 机器学习 sql nlp
2021-09-21 23:06:06

我一直致力于开发一个系统“将自然语言转换为 SQL 查询”。

我已经阅读了类似问题的答案,但无法获得我正在寻找的信息。

下面是此类系统的流程图,我从An Algorithm to Transform Natural Language into SQL Queries for Relational Databases by Garima Singh, Arun Solanki

流程图

我已经理解到词性标记步骤。但是我该如何处理剩下的步骤。

  1. 我需要训练所有可能的 SQL 查询吗?
  2. 或者,一旦词性标记完成,我必须玩这些词并形成一个 SQL 查询?

编辑:我已经成功实现了从“用户查询”到“词性标记”的步骤。

谢谢你。

4个回答

如果你想从另一个角度解决问题,端到端学习,而不是提前指定你前面提到的这个大管道,你只关心句子和它们对应的 SQL 之间的映射查询。

教程:

如何与您的数据库对话

文件:

数据集:

用于开发自然语言界面的大型注释语义解析语料库。

Github代码:

  1. seq2sql
  2. SQLNet

此外,还有像nlsql这样的商业解决方案

NLTK有一个很好的分步指南,介绍了使用 python 中的 nltk 包将人类语言转换为 SQL 查询所需的一切。

这是基本的,但它回答了你的问题。

为了补充 Fadi 的回答,以下是有关 NL 到 SQL 方法的其他有用论文。这些方法的主要区别在于它们支持应该使用多个表(连接不同的表)来回答的查询,但是 Salesforce 论文(及其数据集)专注于一次对一个表的查询。

这两篇论文都使用了此处可用的 GeoQuery 数据集

有很多关于 text-to-SQL 任务的工作。

我强烈建议您检查WikiSQLSpider数据集。研究从 seq2seq + attention mech 开始。到基于 BERT 的解决方案。此外,每项研究都指出了输入表示的重要性,您可以在其中提供所有表模式或仅提供列名。这是一个非常深奥的话题,正如@PyRsquared 所说,没有简单的答案:)