评论回复生成任务
在电商平台上,用户针对所购买的商品会留下大量的评论。当用户在评论中提到了一些商品的问题时,商家常常需要通过回复来帮助解决这些问题,否则会对商品的销量带来不利的影响。然而评论的数量越来越多,如果对所有的评论都写回复,需要耗费大量的人力物力。因此开发针对评论的自动回复生成模型就显得很有必要了。
基于序列到序列的文本生成模型[1],在很多方面都取得了成功。然而,针对评论回复生成任务,标准的 Seq2Seq+Attention 模型只能将评论文本的信息考虑进来。而每一个评论都是针对每一个具体的商品而写的,这个商品信息对于生成高质量的回复是很重要的。下图展示了一个淘宝平台上的例子。
在这个例子中,给定了一条负面的评论,当没有考虑商品信息时,Seq2Seq +Attention 模型倾向于产生通用性的回复,比如“感谢您的支持和反馈”或者"我们会继续努力为您提供更好的服务”。从用户的角度来讲,看到这样的回复的感受是很不好的,这并没有解决他的问题。而在真实情况下,商家通常会根据商品的信息来进行回复,比如在这个例子中,商家提到的店名(奈诗图旗舰店)和材质(聚酯纤维)等等。如果不把商品信息考虑进来,模型就很难生成这样高质量的回复。
在这篇论文中,我们基于序列到序列框架提出了融合商品信息的评论回复生成模型。商品信息通过表格的方式表示,其中包含很多"字段-值”对。下图 (a) 给出了一个例子。
任务定义
下表给出了本文中使用的主要符号及其含义。
我们把回复生成形式化为概率模型,即我们希望在给定X和T的情况下,最大化 Y 的概率:
商品信息中字段表示方法
模型网络架构
上图给出了模型网络架构的示意图。融合商品信息的回复生成模型主要包含四个部分:评论编码器(蓝色)、商品信息编码器(绿色)、回复解码器( 红色)和门限多模态单元(Gated Multimodal Unit,GMU)(黄色)。
评论编码器
商品信息编码器
回复解码器
门限多源注意力机制
复制机制
结合强化学习方法
在训练的过程中,我们知道正确的输出回复,通过最小化如上损失函数来训练模型。然而在测试阶段,解码器根据上一时刻预测的词来生成下一时刻的词。如果某一步产生错误,随着解码的过程,错误将会累积[4]。由于这一问题,通过最大似然损失来训练模型并不总能产生基于某个评测指标(如 ROUGE,BLEU)的最优的结果,而通常是次优的结果。
实验
数据集
我们从中国最大的电子商务网站淘宝网(taobao.com)上创建了淘宝数据集。在该数据集中共包含了 100000个(评论,商品信息,回复)三元组。所有的数据都是从服装这个类别下的商品详情页面获得。经统计,在该数据集中,评论的平均长度是 39 个词,而回复的平均长度是 72 个词。商品信息中的记录条数则平均有 15 条。更详细的统计数据可以见下表。
在我们的实验中,我们使用80%的数据作为训练集,使用10%的数据作为测试集,以及使用10%数据作为验证集。该数据已经进行了开源。
评价指标
为了评估我们的方法的有效性,我们在淘宝数据集上进行实验,并且使用如下几个评价指标来评测生成的文本质量:
- ROUGE:ROUGE 值是一个被广泛应用在文本摘要领域的自动评价指标。ROUGE 值的计算通过 pyrouge 包[8]获得。在我们的实验中,我们给出 ROUGE- 1,ROUGE-2 和 ROUGE-L 的值。
- METEOR:METEOR[9]具有几个其他评价指标不具备的特点,比如词干和同义词的匹配,同时,METEOR 也与人工评测比较接近。
- BLEU:BLEU 是一个广泛应用在机器翻译中的评价指标。BLEU 用来衡量正式文本与生成文本之间的重合度。BLEU 值通过 NLTK 包[10]进行计算, 这里得到的值是 BLEU-1~4 的平均值。
- 人工评测:我们随机从测试集中采样了 100 个样例,并且邀请了五个不同的志愿者来评测这些生成文本的质量好坏。对于每一个(评论,商品信息,回复)三元组,志愿者需要给出 {0,1,2} 的打分。其中 0 表示回复与评论不相关,或者语句不通顺,含有语法错误;1 表示回复与评论相关,但还是不够好,信息量不够;2 表示评论与回复相关,并且语句通顺自然,回答了评论中的问题。
实验设置
在实验中,我们采用了如下几个基线模型:
对于基线模型和我们的模型,我们都采用带动量的梯度下降算法(SGD with Momentum)来对模型进行训练。其中动量的大小为 0.9,初始学习率为 0.02。经过 10 轮迭代后,每 4000 步学习率会衰减一次,衰减率为 0.8。我们使用 dropout 技巧来防止过拟合,其中丢弃率为 15%。为了解决梯度爆炸问题,我们进行了梯度裁剪,使得梯度的范数不超过 5。对于词向量,我们首先用 word2vec 进行预训练来进行初始化,然后在训练过程中进行调优。字段向量和位置向量都是随机初始化的。对于所有模型,我们都使用两层的 GRU,其中隐含状态维数为 256。评论和回复共享一个词表,其中词表大小为 15000。超参数详情可以见下表。
实验结果
- 自动评测结果
我们首先讨论使用自动评价指标的结果。上表给出了四个基线模型和我们的模型的结果。根据上表结果,我们可以发现“Pointer-Generator”在除了 ROUGE 外的所有指标上获得了比“Seq2Seq + Atte”更好的结果,而“Copynet”在所有评价指标上都超过了“Seq2Seq + Atte”。
这表明了复制机制和指针机制确实很有效。与其他三个基线模型相比,“Copynet + PI”在所有评价指标上都获得了提升。如相比于“Copynet”,ROUGE-L 提升了3.98,METEOR 提升了2.05,BLEU 提升了6.29。这个结果表明,商品信息对于生成高质量的回复确实很有帮助。上表的最后一行给出了我们模型的结果,在所有评价指标上都超过了 4 个基线模型。如相比于“Copynet + PI”,我们的模型在 ROUGE-L 上提升了1.37,METEOR 上提升了0.62,BLEU 上提升了1.55。
■ 人工评测结果
上表给出了人工评测的结果。在上表中,通过综合 5 个志愿者的结果,我们给出了每个得分所占的百分比。我们也计算了不同志愿者打分之间的方差,结果为 0.25。这表明不同人的打分还比较一致。
从上表中也可以看出,结合商品信息的模型(“Copynet + PI”以及我们的模型)比其他基线模型产生了更多优质的回复(也就是得分为 2)以及更少的通用性回复(得分为 1)。在人工评测中,我们的模型仍然获得了最好的结果。在我们的模型产生的回复中,72.6%获得了 2 分,相比于“Copynet + PI”提升了2.6%。同时,只有12.0%的回复获得了 0 分。除了这些模型产生的回复,我们也把商家所写的回复进行了人工评测,可见于上表的最后一行。商家所写的回复中,有82.4%获得了 2 分,比我们的模型高了9.8%。10.8%的回复获得了 1 分,而只有6.8%的回复获得了 0 分。这表明,我们的模型仍然有巨大的提升空间。
分析
■ 商品信息的影响
在评论回复的自动生成过程中,我们的模型中使用了商品信息来辅助生成更高质量的回复。在本节中,我们分析商品信息对于模型结果的影响。因此,我们针对使用不同数量(20%,40%,60%,80%,100%)的商品信息进行了实验。这里,20% 意味着我们只使用一个商品中商品信息的 20%。上表给出了我们的模型使用不同商品信息的结果。由此,我们可以发现,随着使用商品信息的增加,所有评价指标都变得越来越高,这表明了商品信息对于评论回复生成任务的重要性。
■ 模型各个组件的影响
为了分析模型中不同组件对于结果的影响,我们对去除掉其中一部分后的模型进行了实验。上表给出了本次实验的结果,其中第一行为完整模型的结果,其他行分别为:去掉强化学习训练的结果(上表中的 -RL),去掉 GMU 门机制的结果(上表中的 -Gate),去掉复制机制的结果(上表中的 -Copy),去掉字段表示的结果(上表中的 -Field)。
■ 样例分析
为了比较不同模型生成的回复之间的不同。我们在上图中给出了两个例子。在上图左边的是一个正面评论的例子,在右边的是一个负面评论的例子。在评论的下方,我们给出了两个基线模型(“Copynet” 和 “Copynet+PI”)以及我们的模型生成的回复。从上图的结果中,我们可以看到,Copynet 对于正面或者是负面的评论都倾向于生成通用性的回复,比如:“您的满意是我们最大的动力”和“我们会继续努力为您提供更优质的服务”。这种通用性回复会给用户一种非常不好的用户体验,尤其是当用户给出的是负面的评论的时候。相反,结合了商品信息的模型(“Copynet+PI”以及我们的模型)生成的回复更多样性,更有针对性。对于不同的评论和商品,能给出不同的回复。比如,在它们的回复中,不仅给出了解释,还提到了品牌名(“伊芙心悦”和“cachecache”)。这种类型的回复对于用户来说更为友好。
小结
在本论文中,我们首先引入了电商平台的评论回复生成任务。给定一条评论,我们希望模型能自动生成回复。评论回复生成任务对于客服来说是非常有帮助的,这能大大减轻人工书写回复的压力,但是该任务之前却没有被仔细研究过。
为了解决该问题,我们首先观测到了商品的信息对于生成高质量的回复是极为重要的。接着,我们基于序列到序列提出了一个可以融合商品信息的深度神经网络。在我们的模型中,我们使用了门限多源注意力机制和复制机制来更好的利用商品信息。除此之外,我们还使用了一种强化学习技巧来帮助模型进行学习优化。
我们基于淘宝网构建了一个 100000 量级的数据集,并且我们开源了该数据集。通过使用多个自动评价指标和人工评测,以及与多个基线模型进行比较实验,证明了我们的模型在该任务上的优势。同时,针对我们的模型进行了大量的分析和研究,包括商品信息对于模型性能的影响分析,模型各组件的作用分析,以及样例分析。
本篇论文收录于顶会 WWW2019
参考文献:
1.BAHDANAUD,CHOK,BENGIOY.Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.
2.LEBRETR,GRANGIERD,AULIM.Neural text generation from structured data with application to the biography domain[C]//Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing. 2016: 1203-1213.
3.AREVALO J, SOLORIO T, MONTES-Y GÓMEZ M, et al. Gated multimodal units for information fusion[J]. arXiv preprint arXiv:1702.01992, 2017.
4.RANZATOM,CHOPRAS,AULIM,etal.Sequence level training with recurrent neural networks[J]. arXiv preprint arXiv:1511.06732, 2015.
5.SEE A, LIU P J, MANNING C D. Get to the point: Summarization with pointer-generator networks[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers): volume 1. 2017: 1073-1083.
6.GU J, LU Z, LI H, et al. Incorporating copying mechanism in sequence-to-sequence learning[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers): volume 1. 2016: 1631-1640.
7.Steven J Rennie, Etienne Marcheret, Youssef Mroueh, Jarret Ross, and VaibhavaGoel. 2017. Self-critical sequence training for image captioning. In CVPR.
8.https://pypi.org/project/pyrouge/
9.http://www.cs.cmu.edu/~alavie/METEOR/
10.https://www.nltk.org