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

      • 包含训练当中所用的所用参数设置

      • 训练可以精确复制

posted on 2017-12-22 15:58  法杰拉  阅读(5191)  评论(0编辑  收藏  举报

导航