首先此處默認已經分詞的中英文文件分別命名為chinese和english
GIZA++是用來做詞對齊的工具,早期版本是GIZA,其實GIZA++這個工具已經很老了,好多年都沒有更新了
實驗准備
2.1 GIZA++
GIZA++ 是由 Franz Och 開發的 GIZA 的一個擴展,並包含了許多其他的特點。
2.2 mkcls
mkcls 是由 Franz Och 開發的一個訓練詞語聚類的工具。——現在GIZA++和mkcls都托管在github上了https://github.com/moses-smt/giza-pp
2.3 平行雙語語料庫
漢英平行語料庫,漢語語料需要切分,英語語料需要 tokenize
實驗步驟:
最新版本的gcc之間make編譯就好了,Makefile文件中有個地方需要修改,需要刪除GIZA++v2/Makefile中的-DBINARY_SEARCH_FOR_TTABLE選項,再重新編譯即可
make 正常結束后,在 GIZA++-v2 和 mkcls-v2 目錄下各生成了一些可執行文件。
a) 運行命令 ./plain2snt.out chinese english,將普通文本轉化為 GIZA++ 格式
• 生成的文件
•chinese.vcb(english.vcb)
• 單詞編號
• 漢語句子中的單詞
• 單詞的出現次數
• chinese_english.snt(english_chinese.snt)
• 每個句子對出現的次數
• 漢語句子中的單詞編號
• 英語句子中的token編號
注: 0是保留給特殊的“空”token。
b) 運行命令
./snt2cooc.out chinese.vcb english.vcb chinese_english.snt > chn_eng.cooc
./snt2cooc.out english.vcb chinese.vcb english_chinese.snt > eng_chn.cooc
獲得共線文件
3.3 構建GIZA++所需的mkcls文件
a) 運行命令
./mkcls -pchinese -Vchinese.vcb.classes opt
./mkcls -penglish -Venglish.vcb.classes opt
• 參數設置
• -n:表示訓練迭代次數,默認1次
• -p:需要聚類的已分詞文本
• -V:輸出信息
• opt:優化運行
• 生成的文件
• chinese.vcb.classes(english.vcb.classes)
• 按字母表序的單詞
• 單詞詞類
• chinese.vcb.classes.cats(english.vcb.classes.cats, )
• 單詞詞類
• 對應詞類的一組單詞
3.4運行GIZA++
a) 運行命令 .
./GIZA++ -S chinese.vcb -T english.vcb -C chinese_english.snt -CoocurrenceFile chn_eng.cooc -outputpath c2e
./GIZA++ -S english.vcb -T chinese.vcb -C english_chinese.snt -CoocurrenceFile eng_chn.cooc -outputpath e2c
• 生成文件(以漢-英為例)
• Decoder.config
• 用於ISI Rewrite Decoder解碼器
• trn.src.vcb,trn.trg.vcb
• 類似於chinese.vcb和english.vcb文件
• tst.src.vcb,tst.trg.vcb
• 空文件
• ti.final
• 從英文到中文的詞語對齊
• 詞語對齊通過token編號表示,並在每組數字后給出相應的對齊概率
• 例如:
3 0 0.237882
11 0 0.900132
• actual.ti.final
• 從英文到中文的詞語對齊
• 詞語對齊通過實際 token 表示,並在每組 token 后給出相應的對齊概率
• 例如:
polished 閃閃 1
pain 割 0.0173626
• A3.final
• 記錄了在 IBM Model 3迭代訓練后,每個句對的一個最佳對齊 (Viterbi Alignment)。
• 第一行是一個可用於作為對齊可視化工具的標題的一個標簽,包含訓練的語料庫中的有關該句編號的信息在訓練語料,句子長度和對齊概率。
• 第二行是目標語言,第三行是源語言,源語言中的每個記號之后是一個零或多個數字的集合,這些數字代表的與源語言記號連接的目標語言記號位置。
• perp
• 在訓練的最后生成,提出了每次訓練迭代的困惑度值的列表
• a3.final
• 包含的形式如下的表
• i j l m p ( i / j, l, m)
• j = position of target sentence
• i = position of source sentence
• l = length of the source sentence
• m = length of the target sentence
• p( i | j, l, m) = is the probability that a source word in position i is moved to position j in a pair of sentences of length l and m
• d3.final
• 類似於a3.final文件,只是 交換了i 和 j 的位置
• n3.final
• 源語言 token 的 fertility 分別為 0,1,…,n 時的概率表,形式如下:
source__id p0 p1 p2 …. pn,p0 是fertility為0時的概率
• 例如:
1 0.475861 0.282418 0.133455 0.0653083 0.0329326 0.00844979 0.0014008
10 0.249747 0.000107778 0.307767 0.192208 0.0641439 0.15016 0.0358886
11 0.397111 0.390421 0.19925 0.013382 2.21286e-05 0 0
12 0.0163432 0.560621 0.374745 0.00231588 0 0 0
• t3.final
• IBM Model 3訓練后的翻譯表,形式如下:
s_id t_id P(t_id/s_id)
s_id:源語言token編號
t_id:目標語言token編號
P(t_id / s_id):源語言token翻譯為目標語言token的概率
• D4.final
• IBM Model 4的distortion表
• gizacfg
• 包含訓練當中所用的所用參數設置
• 訓練可以精確復制