这篇文章是腾讯人工智能实验室发表在EMNLP 2017上的文章,基于细粒度的模板解数学应用题。
贡献点
- 学习问题文本到模板片段的映射,充分利用模板的信息。
- 为每个模板自动构建sketch。
- 实现了一个两阶段的系统,包括模板检索和对齐排序。
整体思路
总结下来,该工作主要分为三个部分:
1. 模板归纳 sketch for template
训练集中的题目包含文本和表达式。
- 首先,把文本中的操作数映射到 n 1 , n 2 , . . . n_1, n_2, ... n1,n2,...,对表达式中的具体操作数也用 n 1 , n 2 , . . . n_1, n_2,... n1,n2,...来代替,转换成表达式模板。
- 每个模板可能对应多个题目,将相同模板的题目归为一类。抽取其特征,包括单位、问题关键词、文本表达等来表征这个模板。这里的文本表达是对应于模板片段的,即细粒度的模板匹配。【如下图】
2. 训练过程
有了每个模板对应的归纳特征,我们就想要对训练集中的数据进行训练。训练的过程分为两个部分,一部分是训练选择模板的正确性,另一部分是在选择候选的模板之后,将操作数填到模板中的位置正确性。对于这两个部分的训练,损失函数都是使用了Ranking SVM的方法。
定义选择模板的损失:
L = 1 2 ∣ ∣ v t ∣ ∣ 2 + C ∑ i l ( v t T f ( x i , t j ) + − v t T f ( x i , t l ) − ) L = \frac{1}{2}||v_t||^2 + C \sum_{i} l(v_t^T f(x_i, t_j)^+ - v_t^T f(x_i, t_l)^-) L=21∣∣vt∣∣2+Ci∑l(vtT