Skip to content

Instantly share code, notes, and snippets.

@toaco
Created November 8, 2017 09:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toaco/6ac364064141a0e7e63fa0a2719610b2 to your computer and use it in GitHub Desktop.
Save toaco/6ac364064141a0e7e63fa0a2719610b2 to your computer and use it in GitHub Desktop.
Math Rendering Problems

统计机器翻译(英语:Statistical Machine Translation,简写为SMT)是机器翻译的一种,基本思想是通过对大量的平行语料进行统计分析,构建模型,进而使用此模型进行翻译。

所谓的平行语料就是表达同一个意思的不同语言的句子,如:

這是一個蘋果。
This is an apple.

桌上有一本書。
There is a book on the table.

模型的定义

假设一个源语言句子$f$和一个目标语言句子$e$,我们定义$f$翻译成$e$的概率为: $$ p(e|f) $$ 于是如何将$f$翻译成$e$的问题就变成了求解$p(e|f)$最大的时候的$e$。由贝叶斯定理可知: $$ p(e \mid f) = \frac{p(f \mid e)p(e)}{p(f)} $$ 由于$f$句子是已知的,所以$p(f)$是一个常数,因此求解$p(e|f)$最大的时候的$e$就是求解$p(f \mid e)p(e)$最大的时候的$e$。用公式表示就是: $$ \mathop{\arg,\max}\limits_{e} p(e \mid f) = \mathop{\arg,\max}\limits_{e} p(e)\times p(f \mid e) $$

举个例子,假设要将“我肚子饿了”翻译,并且我们已经根据模型计算出了可能翻译的句子,如下: $$ \begin{array}{c | c c} English & p(f \mid e) & p (e) \ \hline \text{I am hungry} & 0.00019 & 0.0084\ \text{My belly hungry} & 0.00031 & 0.0000031\ \text{I starve} & 0.00045 & 0.0000012\ \end{array} $$

那么这句中文最有可能的翻译则为“I am hungry”。因为它的$ p(e)\times p(f \mid e)$最大。在统计机器翻译中,我们把$ p(e)$叫做语言模型,表示一个句子是一个流畅的句子的概率,比如上面“I am hungry”就比另外两个流程;我们把$ p(f \mid e)$叫做翻译模型,表示把句子从$e$翻译到$f$的概率。从中国对翻译的传统要求“信达雅”三点上看,翻译模型体现了信与达,而雅则在语言模型中得到反映。

因此我们的主要任务就是训练模型,让它知道各种情况下$ p(f \mid e)$的值和$ p(e)$的值。

语言模型

假如$e$这个句子由$w1$,$w2$...$wn$这些单词组成的,那么可知: $$ p(e)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1) $$ 即:$e$这个句子出现的概率等于第一个单词出现的概率$\times$第一个单词出现的情况下第二个单词出现的概率$\times$第一个单词和第二个单词均出现的情况下第三个单词出现的概率...

而以上的各个单词在其前面的单词出现的情况下出现的概率是可以通过语料库统计出来的。这里就解决了$p(e)$计算的问题。

随着句子单词数量增多,$p(wn|w1,w2,...,wn-1)$计算将会变得非常耗时,所以一般实际中采取n-gram求近似值。n一般不超过3, google使用的是4.

翻译模型

我们假设$e$由$(e1,e2...,el)$这些单词按顺序组成,$f$由$(f1,f2,...,fj)$这些单词按照顺序组成:那么$p(f \mid e)$这个问题可以看成$(e1,e2...,el)$到$(f1,f2,...,fj)$的概率问题。第一个句子如何转换为第二个句子呢,我们假设这之间存在一种转换A,那么: $$ P(F\mid E) = \sum_{A} P(F,A \mid E) = \sum_{A} P(F \mid E, A) \times P(A \mid E) $$ 现在我们假设这种转换A就是$e$中的一个单词$el$到$f$中的一个单词$fj$的对齐转换。我们规定$e$中的每个单词可以对应$f$中的0-1个单词(因为有的$f$中的词可能在$e$中不存在,比如中文的"的"在英文中就找不到对应的单词),那么有: $$ P(F \mid E, A) = \prod_{j=1}^{J} t(f_{j} \mid e_{A_{j}}) $$ 其中,$t(fj∣eAj)$ 表示在 alignment A 之下,对应到$fj$位置的$ej$ ,翻譯成 $fj$ 的機率。因为两个句子之间的对齐关系有很多种,现在我们假设每种对齐的概率都一样,那么: $$ P(A \mid E) = \frac{\epsilon}{(I+1)^{J}} $$ 将这两项代人原来的公式得到(这就是IBM Model 1): $$ \begin{equation} P(F\mid E) = \sum_{A} P(F,A \mid E) = \sum_{A} P(F \mid E, A) \times P(A \mid E) \ = \sum_{A} \prod_{j=1}^{J} t(f_{j} \mid e_{A_{j}}) \times \frac{\epsilon}{(I+1)^{J}} \ \end{equation} $$ 我们只需要先求出该公式里面的各个参数,就可以使用该模型来进行翻译了。求解其中参数的问题这里就不描述了,感兴趣的可以去看一些$EF$算法。另外,$IBM Model 2$在$1$的基础上去掉所有对齐概率相等的假设并加入了新的参数:词在句子中的位置,$HMM$模型将$IBM Model 2$中的绝对位置更改为相对位置,即相对上一个词连接的位置,而IBM Model 3,4,5Model 6引入了“Fertility Model”,代表一个词翻译为若干词的概率。

参考链接

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment