跑moses摩西翻译系统
参考以下链接:
http://blog.csdn.net/han_xiaoyang/article/details/10101701
https://blog.csdn.net/han_xiaoyang/article/details/10283995(主要讲的是对齐部分)
根据以上链接 终于把三个工具都安装好了 安装这些东西就是费时还没有营养。。。但是又不能避免。。
这里使用ubuntu作为例子吧,本人比较懒,喜欢使用apt-get命令来安装软件和所需的库,当然,如果是centOS的话,yum也可以有同样的效果,可以配一下软件源
看服务器环境:lsb_release -a
--------------------------------------------------------正题-------------------------------------------------------------------
编译创建好GIZA++后,有两种方式来使用它,一是在编译Moses时将GIZA++的地址作为选项参数。如果在编译Moses时没有指定GIZA++的地址,可以采用另外一个方法,那就是在训练语言模型时指明GIZA++三个可执行文件的路径,例如:
train-model.perl -external-bin-dir $HOME/external-bin-dir
我在实际操作中,采用的是第二种方法,即在使用Moses时,给一个参数指明GIZA++路径。
第二次跑摩西 执行到tokenisation:
一直卡在这里 不知道哪里出错了???
-------------------------------------------------------------------------------------------------------------------------------------
之后开始实验部分:
在进行语料训练之前,要先对我们的平行语料做一些预处理,主要包括以下以下步骤:
tokenisation:这一步主要是在单词和单词之间或者单词和标点之间插入空白,以便于后续识别和其他操作。
(由于使用的是CTB语料库,分词已经做完,该步可以省略)
truecasing:初始每句话的字和词组都被转换为没有格式的形式(例如统一为小写)。这有助于减少数据稀疏性问题。
cleaning:长句和空语句可引起训练过程中的问题,因此将其删除,同时删除显不对齐句子删除。
对了,对于平行语料的中文部分的话,在训练之前一定要注意要先分好词,这样后面使用giza-pp进行对齐训练的时候
才能精准对齐词、
词组和短语。我使用的是中科院ictclas分词系统,但是又licence过期的可能,你也可以使用Ansj,
基本是将ictlas用Java重写了一遍,
词库基本不变,分词的程序我可以在之后的文章里给出。
-----------------------------------------------------------------------------------
跑摩西的目的是为了获得双向对齐的预料,是在摩西的训练过程中获得的中间文件。但是摩西系统到最后都没有跑通。
自己编写实现摩西系统中的双向对齐。http://blog.csdn.net/han_xiaoyang/article/details/10283995
一开始为了得到的双向对齐,我是直接将两个矩阵合并,这样分析出来的依存关系的召回率增加了,但是准确率会降低。
实验输入:利用giza++得到的两个对齐输出文档:形如