統計式機器翻譯

機器翻譯

前言

簡介

歷史

翻譯輔助

逐字翻譯

輔助介面

規則翻譯

簡介

翻譯規則

比對方法

統計翻譯

簡介

語料庫

統計學習

案例翻譯

簡介

案例比對

翻譯過程

評測方法

人工評測

自動評測

程式實作

逐字翻譯

規則翻譯

統計翻譯

案例翻譯

自動評測

網頁翻譯

相關書籍

自然語言處理

人工智慧

正規語言

編譯器實作

相關資源

語料辭典

程式工具

相關網站

相關文獻

統計訊息

最新修改

訊息

相關網站

參考文獻

最新修改

簡體版

English

簡介

統計式的翻譯 (Statistical Machine Translation,簡稱 SMT),所依靠的主要是語料庫,而非語法規則,這是統計式翻譯和規則式翻譯的最大不同點。機器翻譯系統的語料庫通常稱為平行語料庫 (Parallel Corpus)。平行語料庫當中記載了來源語言與目標語言間的對應關係。像是文章間的對應、句子間的對應、以及片語和詞彙上的對應關係。這些對應關係對統計式翻譯系統提供了一些統計上的參考與指導原則。可以幫助統計式翻譯系統將來源語言轉換成目標語言。

舉例而言,對於英翻中的系統,我們可以準備英漢平行語料庫,以下是一小段平行語料庫的範例。

原文 (英文) 譯文 (中文)
… The man saw a lady in red walked in the park. A little dog followed behind and barking around. … …那個男人看見一個紅衣女郎在公園裡走著,還有一隻小狗跟在後面汪汪的叫。…
對照版
…The (那個) man (男人) saw(看見) a(一個) lady(女郎) in red(紅衣) walked(走著) in the park(在公園裡). A(一隻) little(小) dog(狗) followed(跟在) behind(後面) and barking around (汪汪的叫)….

圖 1 : 一小段平行語料庫的範例

甚至,有些語料庫還記載著詞性標記的資訊,這種語料庫稱為標記語料庫 (Tagged Corpus),通常是用來作解歧義問題 (Word Sense Disambiguation) 的訓練與測試資料。甚至有些語料庫會記載著剖析樹的結構資訊,此種語料庫稱為樹庫 (Tree Bank)。然而,樹庫的建立相當花費人工,因此,通常資料量沒辦法作到很大。但是,對於平行語料庫而言,大量的資料是有可能建構出來的,甚至,許多平行語料庫是使用自動對齊演算法所自動建構出來的,這些自動建構的平行語料庫,對近幾年來的統計式翻譯有極大的貢獻。

統計式的方法近幾年來受到相當大的重視,其原因主要是由於網路上大量資料的出現,使得語料的取得即為方便。這讓統計式翻譯得以先對大量資料進行統計後,給與每一條規則、詞彙與短語一個機率值。如此,就能避開人為給定權重的問題,用統計的方式決定每個規則與詞彙的機率,再根據這些機率值進行機率最大化的推演。然後,就能根據這些推演結果,決定哪一個組合的可能性最高,以統計機率為基礎解決問題。

方法

機器翻譯的主要方法是從所有可能的語句 $T(s)$ 中找出最適合當翻譯語句的 $t$,此過程可用下列的機器翻譯最佳化公式表示。

(1)
\begin{align} bts = mt(s) = argmax_t \{ score(t|s) \} \end{align}

統計式翻譯的目標同樣是以上述方程式為基礎,同樣是希望將來源語句轉換為翻譯語句,同樣透過列舉與最佳化的程序進行翻譯,但不同的是,統計式翻譯會從語料庫當中找出可用的類似語句或片語,並且可以利用語料庫的統計值以及範例作為翻譯的參考。

統計式翻譯所採用的最佳化方程式,通常會以最大機率原則的方式表達。因此,方程式 1 通常會被改寫為方程式 2 ,其目的是在尋找最可能的翻譯語句,也就是在給定來源語句 s 之後,條件機率 $P(t|s)$ 最大的的翻譯語句 t。

(2)
\begin{align} bts = mt(s) = argmax_t \{ P(t|s) \} \end{align}

為了避免這樣的數學對讀者造成困擾,讓我們解釋一下方程式 2 的直觀意義。這個方程式仍然是在尋找最佳翻譯語句,假如我們希望將英文句子 t 翻譯成中文句子 t。那麼,我們只要先列舉出可能的中文翻譯句 T = {t1, t2,…,tn},然後,從其中挑選出最可能的翻譯句 bts 即可。這個挑選法乃然是利用列舉後取最大者的方式進行的。

在方程式 2 當中,P(t|s) 是無法經由統計的方式直接取得的,因為同樣的語句通常不會在語料庫中出現過。否則,根本不需要最佳化,我們只要直接從平行語料庫當中查出該語句的翻譯即可。

既然無法直接查出答案,那麼, P(t|s) 當然也就不存在於語料庫當中,因為 s 通常沒有出現過 (一次都沒有)。因此,我們必須依靠某種的估計與推論方式,計算出 P(t|s) 的值。這些統計值的資訊,通常是靠較常出現的次數統計得到的,像是詞彙 (word) 的出現機率 P(w),詞對 (word pair) 的出現機率 P(ws,wt),類別 (class) (或稱標記 : tag) 的出現機率 P(c),或者是某些規則的出現機率 P(r) 等。

舉例而言, P(girl) 代表 girl 這個詞的出現機率, P(N) 代表名詞的出現機率,P(girl, 女人) 代表 (girl,女人) 這個詞對在平行語料庫當中的出現機率, P(Det Adj NP) 代表 Det Adj NP 這個語法在語料庫當中的出現機率,P(Adj girl) 則代表 形容詞後緊接著 girl 這個詞的出現機率。這些詞彙與樣式的出現次數較為頻繁,因此,統計上的意義也就比較穩定而明確。因此,從這些事實出發,會比較靠得住。

我們可以根據這些可靠的機率值,透過某種理論,間接計算出 P(t|s) 的值。這些理論可以單存考慮詞對間的統計值,也可以加入類別、Part of speech、Tag 甚至規則等等資訊。

最簡單的翻譯模型是逐字翻譯式的,而且只考慮詞對 (si,ti) 之間的關係,舉例而言,當我們想要翻譯的語句 s 是『I like the girl in red dressing』時,我們從語料庫的統計值當中可以取得每個詞彙與其翻譯詞彙之間的統計資訊。於是,我們可以利用簡單的條件機率 P(t1|s1) P(t2|s2) …的乘積,作為條件機率 P(t|s) 的估計值,其轉換公式如 3 所示。

(3)
\begin{align} P(t|s) = P(t_1|s_1) P(t_2|s_2)... P(t_n|s_n) = \prod_{i=1}^{n} P(t_i|s_i) \end{align}

這個公式所代表句子的機率是詞彙機率的簡單組合,但是不考慮前後詞彙的影響與語法規則的問題。於是,方程式 2 就會被改寫為如下所示的公式 4

(4)
\begin{align} bts = mt(s) = argmax_t { \prod_{i=1}^{n} P(t_i|s_i) } \end{align}
SentenceCandidates.jpg

圖1:語句 I like the girl in red dressing 的中文翻譯後選詞

在圖1 當中,如果每個候選詞上的數字代表其條件機率,則根據方程式 4 所計算出來的結果,會選擇每一個候選詞彙集合當中條件機率最大的那個。也就是以圖1當中每排的第一個詞彙作為譯文,直接將該詞彙按照英文的詞序輸出,於是,『I like the girl in red dressing』這句話就會被翻譯成『我愛這個女孩在紅色打扮』。

這樣的模型沒有考慮前後詞彙間的影響力,也沒有考慮語法規則的影響力,更沒有考慮詞序可能重新排列的問題。因此,各位讀者應該可以很明顯的感覺到其方法的問題點,翻譯品質通常不太好。

於是,統計式翻譯必須納入更多的考量,並且應該要處理詞序上的問題,否則詞序一但不對,就算選詞的結果對了,讀起來仍然會很怪。還好,經過長期的研究後,終於有人提出了較好的解決方案,這個解決方案的核心在於使用貝氏定理 (Baye’s Theorem)。

貝氏定理是機率理論上非常有效的推論法則,在機率式推論的主題當中,我們曾經探討過此一定理,並利用此定理來建構貝氏推論網路 (Baye’s Network)。以下是貝氏定理在機器翻譯上的版本,這個版本如方程式 5 所示。

(5)
\begin{equation} P(t|s)=P(s|t) P(t) \end{equation}

貝氏定理的功能是用來將條件機率反轉,使得我們能夠顛倒過來用結論推算前提的機率。由於在現實世界當中,我們往往只能觀察到結果,因此,前題往往是未知的。此時,使用貝氏定理,就能從對結果的觀察當中,計算出前提的機率,使得我們利用結果來預測前提。倒果為因的結果,讓我們得以發現隱含與現象背後的法則。

同樣的,貝氏定理也可以用在統計式翻譯上,讓我們可以從譯文當中,直接選取適當的翻譯模式,再將這個模式套入最佳的翻譯詞彙,以得到語法較為正確的翻譯版本,這就是貝氏定理在機器翻譯上的用途。

這個看來毫不起眼的微小改變,在統計翻譯的領域,卻有非常大的影響力。

我們也可以納入詞彙間的前後影響力,像是簡單的二連詞 (bigram) 模型,就經常會使用下列公式。

(6)
\begin{align} P(t) = P(t_1) P(t_2|t_1) ... P(t_{n-1}|t_n) = P(t_1) \prod_{i=2}^n P(t_{i-1}|t_i) \end{align}

有了公式 6 之後,我們就可以考慮詞彙之間的關係。但是,我們不能直接將方程式 6 代入到方程式 5 當中。因為,這樣乘出來的機率值必然越來越小,這明顯是錯誤的作法。

對於這個問題,在機率理論上正確合理的作法,是採用貝式定理,以進一步納入二連詞模型,以考慮連接關係。貝式定理的功能是用來將條件機率反轉,這個反轉的功能在統計推論上非常有用,以下是貝式定理的公式。

根據貝式定理,我們就可以用下列公式計算考慮二連詞的翻譯機率。其中,乘法符號之前的 $P(s_i|t_i)$ 是 P(s|t) 的估計值,而乘號之後的 $P(t_1) = P(t_{i-1}|t_i)$ 則是 P(t) 的估計值。

(7)
\begin{align} P(t|s) = P(s|t) P(t) = \prod_{i=1}^{n} P(s_i|t_i)*P(t_1) \prod_{i=2}^{n} P(t_{i-1}|t_i) \end{align}

在方程式 7 當中,貝式定理除了將 P(t|s) 反轉成 P(s|t) P(t) 之外,其時將整個統計的方式也全都反轉了過來。原本我們是利用原文來估計譯文的機率,現在卻反過來,用譯文為基礎,以估計原文的機率。這個反轉在統計式翻譯上有非常重大的意義。

使用更明確的案例有助於我們理解此反轉的意義,原先,我們是根據原文取得所有可能的翻譯詞彙之後,才透過最佳化計算出最好的翻譯句,但是反轉後卻能直接從語料庫中查出翻譯片語。

近來,範例導向的統計式翻譯 (Example Based Machine Translation,簡稱EBMT) 吸引了許多研究者的目光。此種方式通常以貝式定理為基礎,進行統計值的計算。其主要最佳化的目標數學式,乃是利用貝式定理對方程式 1 進行改寫而得到的。改寫後的結果如

統計式的方法,以強力的數學作為後盾,是一種很有潛力的方式。這使得機器翻譯的領域,很可能步上和語音辨識領域同樣的道路,進入由機率統計理論主導的階段。

然而,在自然語言領域,有時準確的機率值無法取得,但是根據資訊理論 (Information Theory) 當中的資訊量(在資訊理論當中的專有名詞為“熵”Entropy) 與互資訊 (Mutual Information) 的定義方式。最大機率值也導致最大的互資訊,這將導致最大的壓縮率 (Compression Ratio) 與最小的資訊量 (Entropy)。這使得機率理論與資訊理論可以聯手被用來解決自然語言處理上的許多問題,特別是統計式翻譯領域,這些理論將有很強的應用潛力。

於是,只要能計算出 p(sc|se),就能透過對英文句子 se 的列舉程序找到最好的中文翻譯 sc。透過這樣的翻譯方式,系統會將上述語句翻譯成『我喜歡這個女孩穿紅色的衣服』。但是,這並不符合該語句的中文意義。因為,『I like the girl in red dressing』應該翻譯成『我喜歡這個穿紅衣服的女孩』才合理。

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License