0%

A Transformer-based Semantic Parser for NLPCC-2019 Shared Task 2

论文地址,论文作者 D Ge 等,发表于 2019 年。

结论

使用 BPE、Sharing Vocab、Synthetic Training Instance 极大地提高了准确率。

概要

seq2seq 方法将语义解析形式化为一个翻译任务,即将一个句子转换为其对应的 lf(logical form)。然而,在缺少大规模标注过的数据集的情况下,即使在一流的 seq2seq 模型(如 Transformer)中也会遇到数据稀疏的问题。为了解决这个问题,本文探索了三种广泛应用于神经机器翻译的技术,以更好地适应 seq2seq 模型的语义分析任务。 1. byte pair encoding (BPE): 将单词分割成子词(subword),将稀有单词转换成高频的子词; 2. 我们在 source 和 target 共享词表(Sharing Vocab); 3. 我们定义启发式规则生成合成的实例,以提高训练集的覆盖率(Synthetic Training Instance)。

建立基准模型

使用 Transformer 建立基准模型。

预处理数据

在 MSParS 数据集中的每一个实例都是一个包含 4 个元素的元组,包括 question, its logical form, parameters, and question type。在本论文中我们只使用问题和其对应的 lf 来训练我们的解析模型,忽视 parameters and question type,因为它们没有被评估过。实验步骤是:question --fed-into--> encoder, lf --fed-into--> decoder。 注意在 lf 中,一个实体被表示一个由多个单词组成并以“_”相连的字符串。在预处理中,我们将实体分割成它对应的单词和“_”。例如,lf: ( lambda ?x ( mso:film.film.art director “ i see you ” from avatar ?x ) ),在后处理中,我们只需要将“ _ ”替换为“_”即可。 我们还尝试将实体类型的字符串拆分为多个片段。例如,mso:film.film.art director被分为mso : film . film . art director。然而,我们的初步实验表明,这对性能有轻微的影响。

seq2seq model

介绍什么是 Transformer,略。

生成合成的训练实例

监督机器学习算法容易出现数据不平衡问题。在 MSParS 数据集中,我们发现实体类型包含偏态分布(Skewed distribution),例如,实体类型 mso:film.actor.film 包含大多数实体实例,共有 1832 个,而实体类型 mso:barball.batting statistics.slugging_pct 只有一个实体实例。在这样一种数据集上训练的 seq2seq 模型可能会被数量多的实体类型的训练实例所淹没,而数量小的实体类型的参数则没有很好的学习。由于泛化能力有限,所得到的模型容易在测试集上获得相对较差的性能。 为了解决这一数据不平衡的问题,我们从以下两个角度生成合成的训练实例。 - Entity-based: 给定一个来自原训练集中的一个句子和其对应的 lf,我们选择句子中的一个实体 A,将其替换成一个随机的实体 B,A 与 B 拥有相同的实体类型(博主注:原文中是 entity type,但是我认为用 entity type 不恰当,因为在 MSParS 中确实存在着一个 entity type,与前面提到的重名了,我觉得叫 realation 或者 predicate 更合适)。如: Original pair Sentence: movies jim bob duggar has done Logical Form: ( lambda ?x ( mso:film.actor.film jim_bob_duggar ?x ) ) Synthetic pair Sentence: movies marisa tomei has done Logical Form: ( lambda ?x ( mso:film.actor.film marisa_tomei ?x ) ) - Labeled-based: 选择一个拥有多个实体类型的实体,将其的实体类型替换为其他一个有效的实体。如下所示,"_i_see_you_"_from_avatar 拥有多个实体类型,我们随机的选择另一个实体类型(不能是 film.film.art_director)进行替换。 Original pair Sentence: who is film art directors of " i see you " from avatar Logical Form: ( lambda ?x ( mso:film.film.art_director "_i_see_you_"_from_avatar ?x ) ) Synthetic pair Sentence: who is film art directors of " i see you " from avatar Logical Form: ( lambda ?x ( mso:film.film.editor "_i_see_you_"_from_avatar ?x ) )

实验

本节中,1)我们首先介绍使用的数据集。2)然后描述了实验中我们模型的设置。3)之后,将我们的系统与其他参与的系统进行了比较研究。(博主注:数据集的介绍和模型的设置我直接跳过了)

实验设置

测试集未提供给参赛队伍,组织者根据某一标准将测试集分割,选择一个 hard subset。所以每个团队都有两个结果:full set score and hard subset score。 评估标准为 accuracy(ACC),即生成的逻辑形式与正确的逻辑形式完全吻合。 参数设置略。为了克服数据稀疏的问题,在所有的问题中,我们跟随 Ge et al,在输入和输出都共享词表。为了解决稀有单词的翻译,我们通过 BPE(这篇论文暂时找不到) 将单词分割为 subword。我们对最后 20 个模型的参数进行平均,以提高性能。

实验结果

对语义解析来说,这显示了对解决数据稀疏的问题有两个办法。BPEvocabulary sharing

Model ACC
Baseline 85.93
-BPE 54.90
-Sharing Vocab. 84.00
-Both 52.47

生成合成的训练实例的方法从本质上增加了我们训练集实例的数量。如下表所示,添加生成合成的训练实例的方法后,数量几乎翻了一倍,并且两种方法都取得了相似的性能提升,这表明我们的两种方法在提高训练实例覆盖率方面是有效的。(博主注:ACC 几乎与 baseline 相等,训练集翻了 3 倍多,我佛了)然而,这两种方法的覆盖率存在重叠。在一种方法存在的情况下,另一种方法实现有限或无改进。

Model # Instances ACC
Original 63,826 85.93
+Entity-based 137,198 86.78
+Label-based 140,485 86.94
+Both (our final model) 213,857 86.96

我们还将我们的最终系统与表4中其他参与者的系统进行了比较。从结果可以看出,我们的最终系统达到了最高的性能,特别是在 hard subset 上。这说明了我们的基于 seq2seq 的语义分析是可行和有效的。

Model ACC on full set ACC on hard subset
Soochow_SP (this paper) 85.68 57.43
NP-Parser 83.73 51.93
WLIS 82.53 47.83
Binbin Deng 68.82 35.41
kg_nlpca_ai_lr 30.79 14.89
TriJ 26.77 14.49

错误分析

分析为什么预测出错。