PS: 我还做了一个slides,可以点击此处下载,或在下方预览。

Slides Data-Driven Response Generation in Social Media

这个论文是个比较古老的(2011年)论文了,做的事情是通过统计机器翻译(Statistical Machine Translation,SMT)来做回复生成。什么是对话生成呢?即给定用户的任意的一句话,输出一个合适的回复。

有这样一个发现:在自然的话语中,相邻的句子间常常有较强的结构上的关系(Hobbs, 1985),比如:

Stimulus: I’m slowly making this soup…… and it smells gorgeous!

Response: I’ll bet it looks delicious too! Haha

其中”this soup”对应”it”,”smells”对应”looks”,”gorgeous”对应”delicious”,这和翻译是很相似的,所以我们想能不能使用SMT去做回复生成呢?

统计机器翻译(Statistical Machine Translation)

首先简单介绍一下什么是统计机器翻译,我们拿最简单的模型来作说明。给定一个源语言的句子\(S\),我们要生成一个最可能的翻译\(\hat{T}\):

\[\begin{align*}\hat{T} &= argmax_T P(T|S) \\&= argmax_T \frac{P(S|T)P(T)}{P(S)} \\&= argmax_T P(S|T)P(T)\end{align*}\]

其中\(P(S|T)\)是翻译模型(Translation model),用于完整的表达意思;\(P(T)\)是语言模型(Language model),用于生成流畅的句子。

\[P(S|T)=\Pi_{i=1}^{I}\phi(s_i|t_i)d(a_i-b_{i-1})\]

其中\(\phi(s_i|t_i)\)是短语的概率,由翻译表给出,\(d(a_i-b_{i-1})\)是两个语言中短语位置的相对距离。注意这里使用的是短语而不是单词,因为单个单词很多时候不能正确地表达意思,比如take off,单独拿出来take和off进行对应的话肯定不知所云了。

\[P(w_1^n) = \Pi_{k=1}^n P(w_k | w_1^{k-1}) \approx \Pi_{k=1}^n P(w_k | w_{k-N+1}^{k-1})\]

其中\(w_1^n\)表示单词序列\(w_1, w_2, \cdots w_n\),等式难以计算,所以使用马尔可夫假设进行估算,假设每个词只与它前面N个词有关,这样的模型叫做N-Gram模型。

至于如何生成句子,如何将翻译decoding出来,就需要使用集束搜索(Beam Search)了。

回复生成比机器翻译更困难

回复生成要比机器翻译任务更加困难,主要有以下两个难点。

可能的回复范围更广

相比于机器翻译,回复生成对于一个源语句,它可能的回复太多了。而且由于两边都是同一语言,会产生词汇重复(Lexical Repetition)的问题,因为与某个短语联系最强的短语是它本身。直接套用SMT可能会产生下面这种情况:

Stimulus: I’m slowly making this soup …… and it smells gorgeous!

Response: i’m slowly making this soup …… and you smell gorgeous!

回复与源语句仅仅有一点细微的变化,这是我们不愿看到的,所以我们采取了一些方法来不鼓励这种词汇相似的翻译:

  1. 将所有的一个短语是另一个短语的子串的短语对剔除掉
  2. 引入一个新的feature来对相似的词汇进行惩罚:

\[\phi_{lex} (s,t)=J(s,t)\]

其中\(J(s,t)\)是s和t的单词的集合的Jaccard Similarity,\(J(s,t)=|s \cap t|/|s \cup t|\)

未对齐的单词更多

解决方法是生成所有的短语对(最大长度为4),这样能够使得短语对的个数还是\(O(|s||r|)\)量级。Fisher精确检验是统计显著性检验方法,用于检查两个二进制变量的相关性,所谓二进制变量就是变量的值域只有两个值的变量,Fisher精确检验相比于卡方检验在频数较小的时候相对精确。

信息检索(Infomation Retrieval)方法

为一个句子\(s\)找到一个回复主要有以下两种方法:

  1. IR-STATUS[\(r_{argmax_i sim(s, s_i)}\)] 即检索与\(s\)最相似的\(s_i\)对应的回复\(r_i\);
  2. IR-RESPONSE [\(r_{argmax_i sim(s, r_i)}\)] 即检索与\(s\)最相似的回复\(r_i\).

直觉上IR-STATUS更合理一些,但在实际实验中发现IR-RESPONSE比IR-STATUS要好,但是IR-RESPONSE比MT的方法还要差一点点。