ACL 2020 | 面向对话任务的词向量PR-Embedding

ACL 2020 | 面向对话任务的词向量PR-Embedding

本期推送介绍了哈工大讯飞联合实验室在自然语言处理顶级国际会议ACL 2020发表的工作,提出了一种面向对话任务的词向量技术PR-Embedding。

•••

论文题目:Conversational Word Embedding for Retrieval-based Dialog System

论文作者:马文涛,崔一鸣,刘挺,王栋,王士进,胡国平

论文地址:https://arxiv.org/abs/2004.13249

•••

简介

人与人之间的对话往往包含各种各样的信息,例如知识、常识、语言习惯等。本文提出了一种称为PR-Embedding的对话型词向量模型,基于大量的对话对<post, reply>从上下文两个空间同时进行词向量学习。该方法首先引入了机器翻译中的词对齐模型生成跨句子的窗口,然后从字和句子两个层次进行词向量训练。我们在检索式对话的单轮和多轮回复选择任务上分别进行了评估,实验结果发现PR-Embedding可以显著提升回复选择的质量。另外,在分析中我们发现PR-Embedding可以学到一些日常对话关系,比如“为什么”与“因为”、“谢谢”与“客气”以及“祝贺”与“感谢”等。

 

动机

传统的词向量方法(如word2vec [1], GloVe [2]等)一般基于词在大量单句中的共现关系进行无监督训练从而将词映射到低维空间,因为其高效易用而应用在各种NLP任务中。这其中也包含对话系统相关的任务,无论是基于特征计算还是神经网络的对话检索、生成模型,预训练的词向量一般都是其重要组件。

 

然而,我们发现在将对话的上下文进行表示时,已有的方法存在一些问题:1) 已有的词向量一般是基于单个句子中的共现关系进行训练,而对话中的文本往往是成对出现的,这种句对的上文post和下文reply的词语之间往往包含一定的语义关联,比如上文出现“为什么”时,下文往往会出现“因为”,这两个词不在同一个句子但存在明显的语义关系;2)当上文和下文中的词都映射到同一个语义空间进行表示时,模型通常会倾向于选择重复的文本,因为相同的词容易得到更高的相似度,而这会导致模型选择的回复缺乏新的内容。

 

针对上述问题,我们提出了一种对话型词向量模型PR-Embedding (Post-Reply Embedding) 使用对话句对从不同的语义空间进行对话上文和下文的表示。首先,我们使用post和reply两个不同的空间对上文和下文分别进行表示;其次,我们引入统计机器翻译的对齐模型生成从上文到下文的跨句子共现窗口;最后,我们使用词粒度的共现信息和句子粒度的匹配关系进行词向量的训练。

 

词向量模型

1. 任务定义

我们使用两个词典ACL 2020 | 面向对话任务的词向量PR-Embedding和对应的词向量矩阵ACL 2020 | 面向对话任务的词向量PR-Embedding分别用于对话上文post和下文reply的表示,其中s为词典大小,d为词向量的维度。我们从大量的对话语料中进行词向量训练,语料由大量的句对<post, reply>组成,其中post可以表示成ACL 2020 | 面向对话任务的词向量PR-EmbeddingACL 2020 | 面向对话任务的词向量PR-Embedding,m, n为post和reply的长度。

 

2. 对话任务中的词对齐

同之前的工作word2vec、GloVe类似,我们也使用基于滑动窗口的词共现统计。不同的是,我们需要同时考虑句子内部和句对之间的词共现。对于单个句子而言,相邻的词往往具有更明显的语义关系,然而对于不同句子中的词,其语义关系往往和距离不存在明显的关联,如图1所示。

ACL 2020 | 面向对话任务的词向量PR-Embedding

图1 对话中的词对齐示例

 

上文post中的最后一个词“from”和下文reply中的第一个词“i”在位置上相邻,但是并没有明显的语义关系。因此我们需要寻找句对之间语义相关而非距离相近的词,然后以其为中心生成跨句子的共现窗口。

 

我们引入统计机器翻译中词对齐模型[3]来解决这个问题,将上文post作为源语言、下文reply作为目标语言,然后基于大规模的对话语料统计学习到上文词典ACL 2020 | 面向对话任务的词向量PR-Embedding和下文词典ACL 2020 | 面向对话任务的词向量PR-Embedding中的词之间的对齐概率,最后对于每一个训练句对,都基于对齐概率找到上下文之间的词对齐关系从而生成跨句子的共现窗口。比如对于上述例子中post中的词“where”,我们通过词对齐概率找到其在下文中最相关的词“alabama”,以其为中心生成下文中的共现窗口,从而认为“where”与下文中该窗口中所有词均具有共现关系。

 

3. 词向量训练

我们使用词粒度的共现信息和句子粒度的匹配信息来训练PR-Embedding。首先我们使用词粒度的共现信息来训练词向量,在基于上述词对齐方法得到同空间和异空间的两种共现关系后,我们构造一个全局的共现矩阵,然后借鉴GloVe中的全局对数双线性回归模型来进行词向量的训练,公式如下:

ACL 2020 | 面向对话任务的词向量PR-EmbeddingACL 2020 | 面向对话任务的词向量PR-Embedding

其中ACL 2020 | 面向对话任务的词向量PR-Embedding为第i个词和第k个词的共现次数,w和w ̃分别为同一个词作为中心词和背景词的两种表示,b为对应的偏置。我们使用这两个表示的加和作为每个词在词粒度输出的表示。

 

为了学习post和reply两个不同空间之间的语义关系,我们使用句子级的分类任务对词粒度训练的表示做进一步训练。我们将post和reply中的词分别进行基于cosine距离的匹配计算,然后使用CNN和Max-pooling将匹配特征进行降维。具体如下:

ACL 2020 | 面向对话任务的词向量PR-Embedding

其中ACL 2020 | 面向对话任务的词向量PR-Embedding为可训练的参数,ACL 2020 | 面向对话任务的词向量PR-Embedding的拼接,h为卷积核的大小。最后我们将降维得到的向量M ̃使用全连接层和sigmoid**函数进行句对二分类预测,使用交叉熵损失函数进行训练。

 

实验结果

数据集:为了更好地对词向量进行评估,我们使用人工标注的对话数据进行实验。其中英文数据集使用PersonaChat [4]多轮对话数据,中文方面测试集使用一个人工标注的in-house单轮对话数据,包含935 posts和12767 replies,每个<post, reply> pair都按照回复质量有三种标签:好、中、差。对应的训练集来自Baidu Zhidao的问答对,在清洗之后包含107万pairs。

 

评估方法:我们使用GloVe作为主要的baseline,另外也同BERT [5]的Embedding层、Fasttext [6]和DSG [7]的开放的词向量进行对比。我们主要面向检索式对话的单轮和多轮的回复选择任务,其中单轮对话任务上我们基于BOW进行对比,多轮对话任务上引入一个神经网络模型KVMemnn (key-value memory network) [8]进行对比。评估指标上英文数据集使用topk结果的命中率[email protected],中文数据集上使用NDCG和[email protected]对候选回复的排序质量进行评估。

 

表1 英文数据PersonaChat测试集结果

ACL 2020 | 面向对话任务的词向量PR-EmbeddingACL 2020 | 面向对话任务的词向量PR-Embedding

 

英文数据集上结果如表1所示。在PersonaChat的单轮任务上,PR-Embedding比最强的baseline GloVe高出4.4%。在多轮任务上,我们将PR-Embedding与模型原始的Embedding层拼接使用,当该层随机初始化时效果有3.6%的提升,而当该层使用GloVe预训练的词向量初始化时,模型效果相对随机初始化有所提高,但是拼接PR-Embedding后效果仍有3.1%的提升。说明PR-Embedding与已有的Embedding方法可以起到一些信息互补的作用。中文in-house测试集结果如表2所示,我们的方法显著超过了所有baseline。提升幅度比英文数据集上要大,可能是因为中文的训练集规模要远大于英文数据。

 

表2 中文in-house测试集结果

ACL 2020 | 面向对话任务的词向量PR-EmbeddingACL 2020 | 面向对话任务的词向量PR-Embedding

我们在中文数据集上进行了消融实验,其结果在表2下半部分。当我们将两个空间的词向量改为传统的单空间表示时,就与GloVe添加添加上句子级的训练类似,其结果有一个大幅度的下降,但是仍然要比GloVe效果要好。当我们去掉句子级训练时,效果也有一个较大幅度的下降,说明了句子级训练的必要性。

 

分析

1. 相近词

我们首先挑选了3个常见高频词分析了其在整个语义空间的相近词分布情况。对于PR-Embedding,我们从post空间中挑选对应的词,同时分析其在post和reply两个空间的相近词分布情况,整体结果如表3表示。

 

表3 相近词分布

ACL 2020 | 面向对话任务的词向量PR-EmbeddingACL 2020 | 面向对话任务的词向量PR-Embedding

 

对于表中的GloVe和P-Emb列,相近词的分布一般与所选择词相同或者相近,因为对于任意一个词,在整个语义空间中最相近的肯定是它本身。这种相似性会让模型倾向于选择带有重复词的回复。而R-Emb列中的相近词一般与所选词相关而不相同,如“why”和“because”、“thanks”和“welcome”、“congratulations”和“thank”。这些pair说明PR-Embedding可以建模句对之间的语义关联,这有利于模型选择相关而富有内容的回复。

 

2. 可视化

为了探索PR-Embedding如何在两个空间对上下文中的词进行表示,我们使用t-SNE对40个高频词在两个空间的表示进行了可视化分析,其结果如图2所示。首先通过相同颜色词的分布我们可以发现,在同一空间中的词会按照语义的相似性聚集在相近的位置,如“hello”和“hi”、“good”和“great”、“not”和“no”。

ACL 2020 | 面向对话任务的词向量PR-Embedding

图2 四十个高频词在两个空间中的分布

 

对于同一个词在不同空间,大部分也分布在相似的位置,尤其是名词和动词,比如“work”、“think”、“know”,这可能是因为他们在不同空间扮演相似的语义角色。但是对于一些疑问词情况所有不同,比如“how”和“good, great”、“why”和“because”分别在post和reply空间有着相近的位置。另外,一些代词也有类似现象,比如post空间中的“my, we”和reply空间中的“your”分布相近。这些符合人类对话的习惯,说明PR-Embedding可以在两个空间之间建模上文和下文之间语义的相关性。

 

结论

本文提出了一种对话型的词向量模型PR-Embedding,通过大规模的人类对话pair来学习对话系统中的文本表示。我们引入了统计机器翻译中的词对齐得到上文和下文之间的对齐关系从而生成跨句子的共现窗口,然后从词和句子两个粒度的信息进行词向量的训练。在实验中我们发现PR-Embedding可以提升检索式对话中单轮和多轮回复选择的质量,并且在不同空间中建模上下文的语义相关性。在以后的工作中,我们会进一步将该方法应用到对话生成模型中,探索其在回复生成中的影响。

 

参考文献

[1] Mikolov et al., 2013. Distributed representations of words and phrases and their compositionality. In NeurIPS 2013.

[2] Pennington et al., 2014. Glove: Global vectors for word representation. In EMNLP 2014.

[3] Och et al., 2003. A systematic comparison of various statistical alignment models. In Computational Linguistics 2003.

[4] Zhang et al., 2018. Personalizing dialogue agents: I have a dog, do you have pets too? In ACL 2018.

[5] Devlin et al., 2019. Bert: Pre-training of deep bidirectional transformers for language understanding. In NAACL 2019.

[6] Joulin et al., 2017. Bag of tricks for efficient text classification. In EACL 2017.

[7] Song et al., 2018. Directional skip-gram: Explicitly distinguishing left and right context for word embeddings. In NAACL 2018.

[8] Miller et al., 2016. Key-value memory networks for directly reading documents. In EMNLP 2016.

 

原文:马文涛

编辑、校对:HFL编辑部

 

重磅!忆臻自然语言处理-学术微信交流群已成立

可以扫描下方二维码,小助手将会邀请您入群交流,

注意:请大家添加时修改备注为 [学校/公司 + 姓名 + 方向]

例如 —— 哈工大+张三+对话系统。

号主,微商请自觉绕道。谢谢!

ACL 2020 | 面向对话任务的词向量PR-Embedding

ACL 2020 | 面向对话任务的词向量PR-Embedding

 

推荐阅读:

【长文详解】从Transformer到BERT模型

赛尔译文 | 从头开始了解Transformer

百闻不如一码!手把手教你用Python搭一个Transformer

ACL 2020 | 面向对话任务的词向量PR-Embedding