目前高速发展的互联网时代中,各种类型的数据不断涌现,其中,我们较为常用的就有表格数据,表格作为一种通用的结构化数据,我们可以根据需求设计 SQL 查询语句来获得表格中的知识,但是往往需要较高的设计成本以及学习成本。此时,Text-to-SQL 解析任务显得格外重要,而根据对话场景的不同,还分为单轮 Text-to-SQL 解析和多轮 Text-to-SQL 解析,本文主要研究更加困难且更接近现实应用的多轮 Text-to-SQL 解析任务。
近期,阿里巴巴达摩院联合中国科学院深圳先进技术研究院提出面向多轮 Text-to-SQL 语义解析的 SQL 查询语句导向型预训练模型 STAR。截至目前,STAR 已连续 10 个月占据 SParC 和 CoSQL 两大榜单的第一名。研究论文已被自然语言处理领域国际会议 EMNLP 2022 Findings 接收。
- 论文地址:https://arxiv.org/abs/2210.11888
- 代码地址:https://github.com/AlibabaResearch/DAMO-ConvAI/tree/main/star
STAR 是一种新颖且有效的多轮对话表格知识预训练语言模型,该模型主要通过两个预训练目标对多轮对话中的复杂上下文语义追踪和数据库模式状态追踪进行建模,目的是增强自然语言查询和数据库模式在对话流中的编码表示。
该研究在对话式语义解析的权威榜单 SParC 和 CoSQL 上进行了评估,在公平的下游模型对比下,STAR 相比之前最好的多轮表格预训练模型 SCoRe,在 SParC 数据集上 QM/IM 提升了 4.6%/3.3%,在 CoSQL 数据集上 QM/IM 显著提升 7.4%/8.5%。特别地,CoSQL 相比 SParC 数据集,拥有更多的上下文变化,这验证了该研究提出的预训练任务的有效性。
背景介绍
为了使得用户在不熟悉 SQL 语法的情况下也能够通过自然语言对话与数据库进行交互,多轮 Text-to-SQL 解析任务应运而生,该任务作为用户与数据库之间的桥梁,将交互内的自然语言问题转换为可执行的 SQL 查询语句。
预训练模型最近几年在 NLP 的各种任务上大放异彩,但由于表格和自然语言之间内在的差异性,普通的预训练语言模型(例如 BERT,RoBERTa) 在该任务上无法达到最优的性能,所以预训练表格模型(TaLM)[1-5] 应运而生。通常,预训练表格模型(TaLM)需要处理两个核心问题,包括如何建模上下文查询之间的复杂依赖(指代、意图偏移)及如何有效利用历史生成的 SQL 结果。针对上述两个核心问题,现有的预训练表格模型存在以下缺陷:
图 1. 一个上下文依赖的多轮 Text-to-SQL 解析例子。
第一,现有的表格预训练模型仅仅探索了自然语言查询的上下文信息,而不考虑历史 SQL 查询语句中所蕴含的交互状态信息,这种信息往往能以一种更加准确而紧凑的形式概括用户的意图。因此,对历史 SQL 信息进行建模和追踪能够更好地捕获当前轮查询的意图,从而更加准确地生成对应的 SQL 查询语句。如图 1 所示,由于第一轮 SQL 查询中提到了表名 “Compuses”,在第二轮 SQL 查询中很大可能会再次选择该表,因此对表名 “Compuses” 的状态进行追踪显得格外重要。
第二,由于用户可能忽略对话历史中提及的实体或者引入一些指代,导致当前轮对话信息缺失,因此多轮 Text-to-SQL 解析任务需要有效地建模上下文信息以便更好地解析当前轮自然语言对话。如图 1 所示,第二轮对话省了第一轮对话中提到的 “campuses in year 2000”。然而大部分已有预训练表格模型并没有考虑上下文信息,而是对每轮自然语言对话单独进行建模。尽管 SCoRe [1] 通过预测相邻两轮对话之间的上下文切换标签来建模上下文切换信息,但是忽略了更复杂的上下文信息,并且不能追踪远距离对话之间的依存信息。例如,图 1 中,由于第二轮对话和第三轮对话发生了上下文切换,而 SCoRe 并不能捕获第一轮对话和第四轮对话之间长距离依赖信息。
受到多轮对话中对话状态追踪任务的启发,该研究提出了一种基于模式状态追踪预训练目标来队上下文 SQL 的模式状态进行追踪;针对多轮对话中问题间复杂语义依赖问题,该研究提出了对话依赖追踪方法,捕捉多轮对话之间的复杂语义依存关系,并提出基于权重的对比学习方法来更好地建模对话之间的正例和负例关系。
问题定义
该研究首先给出多轮 Text-to-SQL 解析任务涉及的符号和问题定义。表示 T 轮自然语言查询,查询的多轮 Text-to-SQL 对话交互,其中表示第 i 轮自然语言问题,每轮自然语言对话包含个 tokens。此外,还有一个与交互的数据库 s,其中包含了 N 个表格,并且所有表格包含 m 个表名和列名,表示数据库模式 s 中的第 i 个表名或列名。假设当前轮为第 t 轮,Text-to-SQL 解析任务的目的是根据当前轮自然语言查询,历史查询,数据库模式 s 和上一轮预测的 SQL 查询语句,生成当前轮自然语言查询对应的 SQL 查询语句。
方法描述
如图 2 所示,该研究提出了一个基于 SQL 引导的多轮表格预训练框架,充分利用了历史 SQL 的结构化信息来丰富对话表示,进而对复杂的上下文信息进行更加有效地建模。
图 2. STAR 的模型框架。
具体来说,该研究提出基于模式状态追踪和基于对话依赖追踪的表格预训练目标,分别对多轮交互中的 SQL 查询语句和自然语言问题的意图进行追踪。(1) 在多轮对话情境中,当前对话的 SQL 查询依赖于上下文的 SQL 信息,因此受到多轮对话中对话状态追踪任务的启发,该研究提出了一种基于模式状态追踪(Schema State Tracking,SST)的表格预训练目标,以自监督的方式跟踪上下文相关 SQL 查询语句的模式状态 (或用户请求)。(2) 对针对多轮对话中自然语言问题之间的复杂语义依赖问题,提出了基于对话依赖追踪(Utterance Dependency Tracking,UDT)的表格预训练目标,利用基于权重的对比学习方法更好地学习自然语言查询的特征表示。下面详细介绍这两个表格预训练目标。
基于模式状态追踪的表格预训练目标
该研究提出了一种基于模式状态追踪的表格预训练目标,以自监督的方式跟踪上下文相关 SQL 查询语句的模式状态 (或用户请求),目的是预测模式槽的值。具体来说,该研究以模式状态的形式追踪 Text-to-SQL 会话的交互状态,其中槽是数据库模式(即所有表的列名),对应的槽值是 SQL 关键字。以图 3 中的 SQL 查询为例,模式槽 “[car_data]” 的值是 SQL 关键字 “[SELECT]”。首先,该研究将第 t - 1 轮预测的 SQL 查询语句转换为一组模式状态的形式。由于模式状态的槽是数据库的所有表的列名,那些没有出现在 SQL 查询语句对应的模式状态中的值被设置为 [NONE]。如图 3 所示,该研究用 m 个模式状态表示 SQL 查询语句,其中表示第 i 个模式状态的槽,表示该模式状态的值。对于第 t 轮,模式状态追踪的目标是在给定所有历史自然语言问题,当前问题和上一轮 SQL 查询语句的模式状态的情况下,预测第 t 轮的 SQL 查询语句的每个模式状态槽的值。也就是说,在第 t 轮,模式状态追踪预训练目标的输入为:
由于每个模式状态包含多个单词,因此应用注意力层来获得的表示。具体来说,给定输出上下文化表示 ( l 是的起始下标)。对于每个模式状态,模式状态的注意力感知的表示可以计算为:
进而预测当前问题的模式状态:
最后,将模式状态追踪的预训练损失函数可以被定义为:
基于对话依赖追踪的表格预训练目标
该研究提出了一个话语依赖跟踪的预训练目标,利用基于权重的对比学习方法,以捕获每个 Text-to-SQL 话中自然语言问题之间的复杂语义依赖关系。基于权重的对比学习中的一个关键挑战是如何通过自监督的方式构建适当的正例和负例标签,直觉上可以通过从不同的会话中选择自然语言问题来构建负例对。然而,构建正例问题对并非易事,因为当前的问题可能与那些发生了话题转移的历史问题无关,如图 1 所示的第二和第三个话语。因此,该研究将同一会话中的自然语言问题视为正例对,并且给它们分配了不同的相似度分数。SQL 是一种高度结构化的用户话语指示,因此通过测量当前 SQL 与历史 SQL 的相似性,可以获得自然语言问题的语义依赖的伪标签,以获得不同语句建的相似度分数,从而指导上下文建模。该研究从语义和结构两个角度出发提出了一种度量 SQL 相似性的方法。如图 3 所示:
图 3. 两种计算 SQL 语句相似度的方法。
基于语义的 SQL 相似度计算 该研究通过计算两个 SQL 查询语句对应的模式状态相似度来衡量它们之间的语义相似度。具体来说,如图 3 所示,该方法会分别获取两个 SQL 查询语句,的模式状态和。然后,该研究采用 Jaccard 相似度来计算它们之间的语义相似度:
其中表示和对应模式状态的值不是 [NONE] 的非重复模式状态的数量。
基于结构的 SQL 相似度计算 为了利用 SQL 查询语句的树形结构,该研究首先将每个 SQL 查询解析为 SQL 树,如图 3 所示。给定 SQL 查询和的两棵 SQL 树
和,该研究利用 Weisfeiler-Lehman 算法来计算的结构相似度分数,公式如下:
总的来说,该研究定义两个 SQL 查询语句和的相似度分数如下:
基于权重的对比损失 在获得 SQL 相似度后,该研究使用加权对比学习将会话中语义相似的自然语言问题的表示拉近,将语义不相似的自然语言问题的表示推远。具体来说,首先该研究利用一个注意机制来学习输入表示:
然后,该研究将加权对比损失函数最小化以优化整体网络:
最后,为了学习基于上下文语境的自然语言查询和数据库模式表示,该研究也采用了基于掩码语义建模的预训练目标,损失函数表示为。基于上述的三个训练目标,该研究定义了基于同方差的联合损失函数:
其中,为可训练的参数。
实验效果
数据集 该研究在两个对话式语义解析权威数据集 SParC 和 CoSQL 对 STAR 模型的有效性进行了验证。其中,SParC 是一个跨领域的多轮 Text-to-SQL 解析数据集,包含了大约 4300 次多轮交互和超过 12000 条自然语言问题 - SQL 查询语句对;CoSQL 是一个跨领域的对话式 Text-to-SQL 解析数据集,包含了大约 3000 次对话交互和超过 10000 条自然语言问题 - SQL 查询语句对。相比于 SParC,CoSQL 的对话上下文语义相关性更高,并且 SQL 查询语句的语法更加复杂。
基准模型 在基准模型方面,该研究比较了以下方法:(1)GAZP [6],通过结合一个前向语义解析模型和一个后向对话生成模型合成自然语言对话 - SQL 查询语句对的训练数据,最后选择具有循环一致性的数据拟合前向语义解析模型。(2)EditSQL [7],考虑了交互历史信息,通过编辑前时刻预测的 SQL 查询语句来提升当前轮对话的 SQL 生成质量。(3)IGSQL [8],提出了一个数据库模式交互图编码模型,该模型使用数据库模式的历史信息来捕获自然语言输入历史信息,并且在解码阶段引入门控机制。(4)IST-SQL [9],受到对话状态追踪任务的启发,定义了模式状态和 SQL 状态两种交互状态,并在每一轮中根据上一个预测的 SQL 查询语句进行状态更新。(5)R2SQL [10],提出了一个动态图框架,针对对话流中的对话、数据库模式之间的复杂交互进行建模,通过一种动态记忆衰退机制丰富对话和数据库模式的上下文表示。(6)PICARD [11],提出一种增量式的语义解析,对语言模型的自回归解码模型进行约束,在每个解码步骤中,通过约束解码结果的可接受性来寻找合法的输出序列。(7)DELTA [12],首先使用一个对话重写模型解决对话上下文的完整性问题,然后将完整的对话输入一个单轮 Text-to-SQL 语义解析模型,得到最终 SQL 查询语句。(8)HIE-SQL [13],从多模态的角度出发,将自然语言和 SQL 看作两种模态,探索所有历史对话和上一句预测的 SQL 查询语句之间上下文依赖信息,提出了一个双模态预训练模型并且设计了一个对话和 SQL 查询语句之间的模式链接图。
整体实验结果 如图 4 所示,从实验结果可以看出,STAR 模型在 SParC 和 CoSQL 两个数据集上的效果远胜于其他对比方法。在预训练模型对比方面,STAR 模型都远超于其他预训练模型(如 BERT,RoBERTa,GRAPPA,SCoRe),在 CoSQL dev 数据集上,对比 SCoRE 模型,QM 分数提升 7.4%,IM 分数提升 7.5%。在下游 Text-to-SQL 模型对比方面,以 STAR 为预训练模型底座的 LGESQL 模型,效果远胜于将其他预训练语言模型当作底座的下游方法,例如目前效果最好的以 GRAPPA 为底座的 HIE-SQL 模型。
图 4. 在 SParC 和 CoSQL 数据集上的实验结果
消融实验结果 本文还补充了完整的消融实验来说明 STAR 模型中每个模块的有效性。消融实验结果如图 5 所示,当去掉 SST 或者 UDT 预训练目标时,效果会大幅下降,而结合所有预训练目标的实验结果在所有数据集上都达到了最好的效果,这说明了 SST 和 UDT 的有效性。另外,该研究针对 UDT 中的两种 SQL 相似度计算方法进行了进一步的实验,从图 6 可以看出,两种 SQL 相似度计算方法都能提升 STAR 模型的效果,并且结合后的效果最佳。
图 5. 针对预训练目标的消融实验结果。
图 6. 针对 SQL 相似度计算方法的消融实验结果。
不同难度样本的模型效果 如图 7 所示,从 SParC 和 CoSQL 两个数据集上的不同难度样本的实验结果可以看出,STAR 模型针对各种难度样本的预测效果都远胜于其他对比方法,即使是在难度最大的 extra hard 样本中也效果显著。
图 7. 在 SParC 和 CoSQL 数据集上不同难度样本的实验结果。
不同轮次样本的模型效果 如图 8 所示,从 SParC 和 CoSQL 两个数据集上的不同轮次样本的实验结果可以看出,随着对话轮次的增加,基准模型的 QM 指标在急剧下降,而 STAR 模型即使在第三轮和第四轮也能表现出更稳定的性能。这表明 STAR 模型可以更好地追踪和探索对话历史中的交互状态,以帮助模型更好地解析当前对话。
图 8. 在 SParC 和 CoSQL 数据集上不同轮次样本的实验结果。
实例分析 为了评估 STAR 模型的实际效果,该研究从 CoSQL 验证集中选择了两个样本,并在图 9 中对比了 SCoRe 模型和 STAR 模型生成的 SQL 查询语句。从第一个例子我们可以看到 STAR 模型能够很好地使用历史 SQL 的模式状态信息(例如,[car_names.Model]),从而正确生成了第三轮对话的 SQL 查询语句,而 SCoRe 模型则无法跟踪这种模式状态信息。在第二个例子中,STAR 模型有效地跟踪了第一轮和第四轮话语之间的长期对话依赖关系,并通过跟踪和引用第二轮对话中的 “the number of” 信息,在第四轮 SQL 查询语句中正确地生成了 SQL 关键字 [SELECT COUNT (*)]。然而,SCoRe 模型无法跟踪这种长期依赖关系,并受到第三轮话语的干扰生成了错误的 SQL 查询语句。
图 9. 实例分析。
ModelScope 模型开源社区
本文在 CoSQL 数据集上训练得到的模型,目前已集成到 ModelScope 模型开源社区。读者可以直接在 notebook 中选择 V100 GPU 环境,通过一个简单 pipeline 即可使用 demo 模型用于多轮 Text-to-SQL 语义解析任务。
总结
本文中,研究团队提出了一个新颖且有效的多轮表格知识预训练模型(STAR 模型)。针对多轮 Text-to-SQL 语义解析任务,STAR 模型提出基于模式状态追踪和基于对话依赖追踪的表格预训练目标,分别对多轮交互中的 SQL 查询语句和自然语言问题的意图进行追踪。STAR 模型在两个权威多轮语义解析榜单很好的结果,连续 10 个月占据榜单第一名的成绩。
最后,欢迎对中国科学院深圳先进技术研究院SIAT-NLP组感兴趣的同学申请博后/博士/硕士/实习等职位,简历请发至min.yang@siat.ac.cn。