作者|惠彬原,耿瑞莹,黎槟华,李永彬,孙健
单位|阿里巴巴达摩院Conversational AI团队
引言
机器可以自己写 SQL 语句吗?当然可以~只需要用自然语言描述你的想法即可,甚至还能进行多轮的交互!
语义解析(Semantic Parsing)是自然语言处理中的一个非常基础且重要的问题。近些年来,语言解析中的 Text-to-SQL 任务引起了学术界和工业界的广泛关注,该任务的目的是将自然语言转换为可执行的 SQL 语句,帮助用户仅使用自然语言便可完成和数据库的交互。
利用 Text-to-SQL 技术可以实现很多应用,比如对话式(上下文相关)语义解析 (Context-Dependent Semantic Parsing) ,数据库作为对话系统中的「知识」来源,将用户的每一个问题转换为对应的 SQL 语句,通过复杂的多轮问答,进而实现任务型对话。如下图所示,用户通过多轮的询问与数据库进行信息的交换,最终得到期望的回答。
▲ 图1. 对话式 Text-to-SQL 任务
针对这项任务,耶鲁大学联合 Saleforce 分别于 ACL 2019 和 EMNLP 2019 提出了两个公开的 Benchmark,SParC [1] 和 CoSQL [2],这两个数据集有如下共同特点:
1. 跨领域:每个数据库都属于不同的领域,这对模型的泛化性提出了严格的要求;
2. 上下文依赖:在对话系统中存在的多轮指代、省略等问题都需要进行建模;
3. 复杂 SQL:最终生成的 SQL 复杂性较高,譬如需要多表联合查询等。
本文提出了一种新的框架,称之为动态上下文模式图(Dynamic Contextualized Schema Graph),该框架基于动态进化图的结构,有效的刻画了多轮场景下的话术 (utterance),数据库模式(schema),以及他们之间复杂的交互 (linking)。
在该框架中,我们讨论了基于混合关系构建边的方式并提出了记忆遗忘的机制来整合归纳偏置,最终呈现出一个灵活的过程来描述不同层次的上下文。实验层面,我们在 SParC 和 CoSQL 上面验证了模型的性能,在投稿时达到了 SOTA 的结果,在榜单上排名第一。
论文标题:
Dynamic Hybrid Relation Network for Cross-Domain Context-Dependent Semantic Parsing
收录会议:
AAAI 2021
论文链接:
https://arxiv.org/abs/2101.01686
代码链接:
https://github.com/huybery/r2sql
对话式语义解析的两个挑战
首先我们需要先思考对话式解析模型需要具备哪些能力?首先模型需要能够处理来自任意领域的数据库信息,比如金融、政务、酒旅等行业数据。所以模型面临的第一个挑战:如何处理跨领域问题?对于任意垂域都能够完成 SQL 生成。
其次,在对话场景中,用户是通过多轮的查询实现最终的目的,处理当前的 SQL 生成可能需要依赖历史的信息,其中大量的指代、省略问题需要被关注。同时,在对话流不断增长的过程中,用户关心的焦点也可能发生偏移,这引出了第二个挑战,如何准确的理解和利用上下文?
下面我们从这两个方面分别具体的介绍其中的难点。
2.1 跨领域问题
首先是 Text-to-SQL 的跨领域问题,主流的思路是直接建立自然语言和数据库中 列、表、值的连接,研究者将其称为 Schema linking。如图 2 所示,模型需要能够将自然语言中出现的实体和数据库模式中的信息进行对齐,最终生成正确的 SQL 结果。
▲ 图2. Schema Linking [3]
我们通过分析 SParC 中验证集的 bad case,发现很多样本都是因为命中了错误了表名或列名导致生成的错误,所以 Schema linking 的效果将直接影响 SQL 的生成。
过往的上下文依赖的方法,包括 CD-Seq2Seq [1],EditSQL [4] 等,都是基于 Cross attention 机制来完成 linking,我们将这种仅仅凭借 Cross attention 方式构建 linking 的结果成为隐式关系,这种方法对于很多表面特征捕捉较差,比如 n-gram 匹配等。
而 RAT-SQL [3] 提出了一种可以融入规则先验的 self-attention 结构,能够有效的捕捉表面特征。尽管 RAT 的结构声称可以同时处理 hard 和 soft 的关系,但是我们发现这种结构还是更容易偏向 hard 的关系,所以我们将 RAT 归类为显式关系。隐式关系和显式关系各有优势,所以一个难点在于能否有一个统一的框架同时兼顾不同类型的关系探索?
2.2 上下文建模
在对话式的 Text-to-SQL 任务中,如何进行上下文的建模也是亟需解决的问题。过去的工作主要是围绕话术 (utterance)层面的上下文,如图 3 展示很多在 utterance 层面上下文建模的方法。
▲ 图3. 上下文建模思路[5]
而其实在这个任务中,除了 utterance 层面的上下文外,没有工作关注 linking 层面的上下文建模,即在用户不断询问的过程中,用户聚焦的意图可能会发生变化,所以如何处理 linking 层面的变化也是一个新的挑战。那么第二个难点在于能否有一个统一的框架同时兼顾 utterance 和 linking 层面的上下文建模?
提出的模型
首先我们形式化对话式 Text-to-SQL 任务,该任务由不同领域的对话数据组成,目的是将对话流程中的自然语言话术转为对应的 SQL 语句。假设 是所有对话流程的集合,一个会话过程 由一系列的话术