雪花台湾

Gale和Church的句對齊演算法解析

Gale和Church在1993年提出了一個基於長度進行句對齊的演算法,並在附錄里公開了C源代碼。這篇論文相當經典,以至於之後的關於句對齊的論文大多數要引用它。論文的題目是 A Program for Aligning Sentences in Bilingual Corpora。

對齊分兩步。第一步是段落對其,第二步是在段落內部進行句對齊。段落對齊重要,不過簡單,問題在於段落內部的句對齊。所以本文只解析已知段落對齊,怎樣在段落內進行句對齊。首先定義幾個概念,所有論文中出現的符號都對應定義里的符號。

對齊演算法的輸入是某一對相互對齊的段落,輸出是對齊序列。

接下來就變成了動態規劃問題,類似最小編輯距離。片段對序列那麼多,哪個是對齊序列呢?如果用窮舉法,計算量太大,顯然不現實。換個角度想,假設我們已經知道了對齊序列,用 表示該對齊序列的距離和,其中 是原文段落最後一個句子的index, 是譯文段落最後一個句子的index。對齊序列的距離和可以表示成最後一個片段對的距離加上去掉最後一個片段對的剩下的片段對序列的距離和(可以認為對齊序列的子序列也是對齊序列)。最後一個片段對有六種對齊模式,所以要對每種模式分情況討論,選擇結果最小的那個。動態規劃的遞歸式就是這麼來的。

遞歸式的基礎情況D(0,0)=0,通過遞歸式,我們可以求出對齊序列的距離和,在求距離和的過程中,我們順便記錄了對齊軌跡,也就是順便求出了對齊序列。這就是演算法的主幹思想。

gachalign 是一個Python實現,pupilalign 是在此基礎上的修改,使代碼便於理解。

推薦閱讀:

相关文章