Mark Chang's Blog

Machine Learning, Deep Learning and Python

Machine Translation : Statistical Machine Translation

Introduction

Statistical Machine Translation (統計機器翻譯)是一種機器翻譯的演算法,這種方法藉由從 parallel corpus(平行語料庫)語料庫,當成訓練資料,訓練出機器學習的模型,以此將句子翻譯成另一個句子。

平行語料庫中包含大量句子,這些句子意思一樣,但分別用兩種語言寫成,例如:

1
2
3
4
5
6
7
這是一個蘋果。
This is an apple.

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

...... 

藉由這種平行語料庫,就可以用統計的方式,讓機器學會如何將一種語言,翻譯成另一種語言。

Noisy Channel Model

Noicy Channel Model 是一種常用的統計機器翻譯的模型。

如果,要把中文翻譯成英文,則可用計算某個中文句子翻譯成英文句子的機率,來找出哪個翻譯結果,是比較好的翻譯。給定中文句子 c ,它翻譯成某個英文句子 e 的機率,為 ,即為,在中文句子為 c 的條件下,出現英文句子 e 的條件機率。

Noicy Channel Model 中,有兩個成分:

其中, Language Model 表示英文句子 e 在語料庫中的機率。要建立此模型,用單一一種語言的語料庫做訓練即可。

Translation Model 表示給定英文句子 e ,在此條件下,翻譯成中文句子 c 的機率。要建立此模型,需要用平行語料庫做訓練。

用貝氏定理,得出某個中文句子 c 翻譯成某個英文句子 e 的機率,為:

若要得出翻譯最佳的英文句子,則可以求機率最大者,如下:

Example

舉個例子,若要將中文句 「我肚子餓了」 翻譯成英文。假設已經先從從語料庫中,計算出可能翻譯出的英文句子,如下:

則這句中文最有可能的翻譯為 “I am hungry”

註:本例子已先假設 Language Model Translation Model 都已經先計算好。若要從頭計算 Language Model 可以用 n-gram ,但計算 Translation Model 則需要更複雜的模型,例如 IBM ModelPhrase-based Model

Reference

本文參考至coursera線上課程

Michael Collins. Natural Language Processing

https://www.coursera.org/course/nlangp

Comments