使用自然语言进行程序合成( 二 )


表 1 文本编辑领域相关的语法和基准样本
使用自然语言进行程序合成文章插图
上述需求启发作者设计一种用于实现高阶文本边界操作的命令语言 , 该语言的部分语法如表 1(a)所示 。 语法中包含了一些文本编辑的关键命令 , 如插入 Insert、删除 Remove、打印 Print 和替换 Replace , 这些命令都依赖于一个指明了编辑操作作用范围(比如一组行、一组单词或整个 Word 文档)的 IterScope 表达式 。 SelectStr 产生式(Production)内含一个允许有限通配符匹配的令牌 Token、一个用于过滤匹配值的布尔条件 BCond 以及一个基于下标的结果选择记号——出现值 Occurrence 。 例如:我们可以使用 AtomicOccurrence 中的 FirstFew(N)项来删除符合匹配条件的前 N 的结果;特别地 , 当 Occurrence 的值为 ALL 时 , 所有满足匹配条件的结果都将被删除 。 布尔条件 BCond 囊括了一些标准的字符串匹配谓词(如 Contains、StartsWith 等) , 由原子条件 AtomicCond 组成 , 支持 And、Not 在内的条件组合 。 CommonCond 产生式标定了相对于某个字符组合的位置 , 如在某个字符组合之后 After(Token)、在某个组合之前 Before(Token)和某两个组合之间等 Between(Token, Token) 。 样例 1 和样例 2 分别给出了针对表 1(b)中所示的编辑任务 1 和 2 的命令语言描述 。
使用自然语言进行程序合成文章插图
样例 1 表 1(b)中文本编辑任务 1 的 DSL 描述
使用自然语言进行程序合成文章插图
样例 2 表 1(b)中文本编辑任务 2 的 DSL 描述
此外 , 表 1(c)描述了该语言系统可以处理的其他变式 。 这些自然语言任务都可以用表 1(a)所示 DSL 语法来描述 。 作者认为表 1(a)给出的语法足够支持高阶文本编辑操作:一旦用户习惯使用 DSL 语言完成简单的条件性文本操作 , 那么通过将复杂问题分解为简单问题 , 更加复杂的文本操作也不成问题 。
2.2 自动机理论(智能教学)形式化方法的研究成果已经在智能教学系统的多个部分中得到了应用 , 包括问题生成(Problem Generation)、题解生成(Solution Generation)和一些关于几何、自动机理论在内的各种学科领域的反馈生成(Feedback Generation)等多个领域 。 这些领域中的每一个都涉及一种专用的 DSL , 用于生成题目、产生题解以及生成针对学生提交题解的反馈意见 。
以自动机的构造为例:假设学生需要构造这样一个自动机 , 该自动机需要能够接受一段描述了某种语言的英文段落(有关示例见表 2) 。 根据 Alur 等人提供的、关于构造此类语言的一些要素 , 作者设计了一种 DSL , 可以通过两种方式为学生提供指导:① 作为题解生成工具的输入以生成一个正确的题解 , 并以这个正确题解为基准为学生提交的题解打分;② 用于提供反馈并根据学生的提交生成问题变式 。 该反馈生成工具已经部署在部分教室中 。 实践证明 , 该工具能够以比人类更快、更合理方式分配成绩和生成反馈 。
表 2 有关自动机领域的基准样本
使用自然语言进行程序合成文章插图
样例 3 和样例 4 分别展示了表 2 中规格 1 和规格 2 的 DSL 翻译结果 。
使用自然语言进行程序合成文章插图
样例 3 表 2 中规格 1 的 DSL 翻译结果
使用自然语言进行程序合成文章插图
样例 4 表 2 中规格 2 的 DSL 翻译结果
2.3 航空旅游信息系统(ATIS)ATIS 是用于查询航空旅行信息的标准基准 , 包括英语查询和包含航班信息的数据库 。 长期以来 , ATIS 一直被自然语言处理和语音处理社区广泛用作通用基准 。 表 3 展示了一些来自 ATIS 的查询样本 。
使用自然语言进行程序合成文章插图
【使用自然语言进行程序合成】表 3 ATIS 领域的基准样本
针对 ATIS , 作者设计了一种基于 SQL 行列操作的 DSL , 能支持谓词和表达式运算 。 这些谓词和表达式与航空旅行查询领域的出发地/目的地、日期、价格等重要概念相对应 。 表 3 中的第一个查询语句可以翻译成如样例 5 所示的形式 。
使用自然语言进行程序合成文章插图
样例 5 表 3 中第一个查询语句的 DSL 表示
3 问题定义本文主要研究如何使用给定的 DSL 定义和训练数据合成目标 NL-to-DSL 合成器 。 现给出如下定义: