百度语义解析 ( Text-to-SQL ) 技术研究及应用


百度语义解析 ( Text-to-SQL ) 技术研究及应用
本文插图
来源:DataFunTalk
本文长度为6500字 , 建议阅读10+分钟
本文介绍自然语言问题转成数据库可操作的SQL查询语句的应用 。
百度语义解析 ( Text-to-SQL ) 技术研究及应用
本文插图
[ 导读 ]语义解析 ( Semantic Parsing ) 是自然语言处理技术的核心任务之一 , 涉及语言学、计算语言学、机器学习以及认知语言等多个学科 , 在近几年中获得了广泛关注 , 语义解析任务有助于促进机器语言理解的快速发展 。
本文重点介绍语义解析技术中的Text-to-SQL任务 , 让机器自动将用户输入的自然语言问题转成数据库可操作的SQL查询语句 , 实现基于数据库的自动问答能力 。
任务介绍及研究动机
当前 , 大量信息存储在结构化和半结构化知识库中 , 如数据库 。 对于这类数据的分析和获取需要通过SQL等编程语言与数据库进行交互操作 , SQL的使用难度限制了非技术用户 , 给数据分析和使用带来了较高的门槛 。 人们迫切需要技术或工具完成自然语言与数据库的交互 , 因此诞生了Text-to-SQL任务 。
我们通过图1中的实例来介绍一下Text-to-SQL任务 。 该任务包含两部分:Text-to-SQL解析器和SQL执行器 。
解析器的输入是给定的数据库和针对该数据库的问题 , 输出是问题对应的SQL查询语句 , 如图中红色箭头标示 。 SQL执行器在数据库上完成该查询语句的执行 , 及给出问题的最终答案 , 如图中绿色箭头标示 。
SQL执行器有很多成熟的系统 , 如MySQL , SQLite等 , 该部分不是本文重点 。 本文主要介绍解析器 , 学术界中Text-to-SQL任务默认为Text-to-SQL解析模型 。
百度语义解析 ( Text-to-SQL ) 技术研究及应用
本文插图
【百度语义解析 ( Text-to-SQL ) 技术研究及应用】图1
首先 , 我们介绍一下术语“数据库”和“SQL查询语句”:
1. 数据库由一张或多张表格构成 , 表格之间的关系通过外键给出 。 在该实例中 , 数据库由表 “中国城市”和“2018年宜居城市” 构成 , 两张表通过外键:“中国城市”的“名称”列和“2018年宜居城市”的“名称”列关联;
2. SQL是数据库查询语言 , 其构成来自3部分:数据库(如实例SQL查询语句中蓝色标注的成分)、问题(如实例SQL查询语句红色标注的成分)、SQL关键词(如实例SQL查询语句中的Select、From、Where等) 。
其次 , 我们介绍一下Text-to-SQL解析模型 。 根据SQL的构成 , 解析器需要完成两个任务 , 即“问题与数据库的映射”和“SQL生成” 。
在问题与数据库的映射中 , 需要找出问题依赖的表格以及具体的列 , 如图1实例中 , 问题“绿化率前5的城市有哪些 , 分别隶属于哪些省?”依赖的数据库内容包括:表格“中国城市” , 具体的列“名称”、“所属省”、“绿化率”(SQL查询语句蓝色标注成分) 。
在SQL生成中 , 结合第一步识别结果以及问题包含信息 , 生成满足语法的SQL查询语句 , 如实例中的“Select 名称 , 所属省 From 中国城市 Where 绿化率 > 30%” 。
Text-to-SQL研究进展
Text-to-SQL技术能够有效地辅助人们对海量的数据库进行查询 , 因其有实用的应用场景 , 引起了学术界和工业界的广泛关注 。 我们接下来将从相关数据集和模型两方面介绍该技术的研究进展 。
1. 数据集介绍
图2给出了Text-to-SQL数据集发展趋势 , 代表数据集参见表1 。
百度语义解析 ( Text-to-SQL ) 技术研究及应用
本文插图
图2


推荐阅读