GIZA++工具的使用介紹


首先此處默認已經分詞的中英文文件分別命名為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

      • 包含訓練當中所用的所用參數設置

      • 訓練可以精確復制


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM