日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

基于短语的统计机器翻(PBMT) 开源工具 :Moses

發布時間:2023/11/28 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于短语的统计机器翻(PBMT) 开源工具 :Moses 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何運行Moses

?

1. Moses的歷史

  Moses是Pharaoh的升級版本,增加了許多功能。它是一個基于短語的統計機器翻譯系統,整個系統用C++語言寫成,從訓練到解碼完全開放源代碼,可以運行在Linux平臺和Windows平臺。它有兩大特點:

  1.1 Factored Translation Model

   在Factored Translation Model中,一個單詞不僅僅是一個符號(token),而是一個包含多個因子的向量,例如表面詞形、詞干、詞性等。這些因子共同作用來刻畫一個單詞。

  1.2 Confusion Network Decoding

   當前的機器翻譯系統能夠接受的輸入一般是純文本形式的一串單詞(一句話或者一篇文章),而現在將機器翻譯系統作為一個大的信息處理系統的組成部分的需求日益增長,它的輸入可能不再是純文本的形式,而是其它模塊的輸出結果,例如命名實體(NE)識別的結果,或者語音識別的結果。這樣的輸入不再是單一的,而是可能含有錯誤的、多種可能性的輸入。Confusion Network Decoding允許這種多可能性的輸入,最終選擇最優譯文。

2. Moses基本框架

  Moses核心框架仍是Philipp Koehn的基于短語的SMT框架。平臺采用GIZA++進行翻譯模型的訓練,SRILM進行語言模型的訓練,Moses進行生成模型的訓練及解碼,mteval對實驗結果進行BLEU評分。

  2.1 總調用部分:moses-cmd/src/Main.cpp

  2.2 解碼器初始入口部分

   i. 參數設置:

    moses/src/Parameter.cpp

   ii. 模型數據加載:

    moses/src/StaticData.cpp

  2.3 句子翻譯處理部分

   i. 解碼器算法實現總調度:

    Manager.cpp

   ii. 翻譯選項處理:

    TranslationOptionCollection.cpp

   iii. 部分翻譯處理:

    Hypothesis.cpp

   iv. 包含翻譯假設,實現剪枝:

    HypothesisStack.cpp

  2.4 結果輸出:moses-cmd/src/Main.cpp

   i. 輸出最佳翻譯結果:

    moses-cmd/src/IOStream::OutputBestHypo

   ii. n-best生成及輸出:

    n-best lists generated in Manager.cpp, output in IOStream.cpp

3. Moses測試平臺搭建

  3.1 安裝SRILM

   參考http://www.leexiang.com/how-to-configure-srilm-on-ubuntu

   補充:語言模型訓練工具除了SRILM可選外,還可以使用IRSTLM

  3.2 安裝GIZA++

   參考http://www.leexiang.com/gizapp-report

  3.3 安裝Moses

   3.3.1 安裝和編譯

   在編輯Moses之前一定要安裝所有的依賴包,否則無法編譯通過,請安裝以下軟件包:

   $sudo apt-get install autoconf automake texinfo zlib1g zlib1g-dev zlib-bin zlibc libtool libboost-all-dev libxmlrpc-c3-dev build-essential

   推薦通過Subversion下載并管理Moses:

   svn co?https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk moses

   進入moses,運行./regenerate-makefiles.sh

   注:如果gcc 是4.4版本,可能會出現錯誤,需要修改moses/src,moses-cmd/src,misc三個文件夾中的Makefile.am文件,在AM_CPPFLAGS=…..后面加上-std=c++0x,并修改configure文件中3870行,將MY_ARCH=${with_srilm}/sbin/machine-type?改為MY_ARCH=“i686-gcc4“,重新編譯一次。

   ./configure –with-srilm=MT/srilm (SRILM的絕對路徑)

   再運行命令make -j 4

   則Moses的解碼器編譯成功。

   3.3.2 安裝Moses訓練腳本:

   進入moses/scripts目錄,查看Makefile文件。該文件需要指定兩個目錄TARGETDIR和BINDIR。其中,TARGETDIR會存放編譯后的文件,BINDIR需要事先存放3個可執行程序:GIZA++, snt2cooc.out,mkcls(Makefile會調用check-dependencies.pl以檢查是否指定目錄和包含可執行程序)。

   我們在scripts目錄下新建兩個目錄:target和bin,將之前編譯好的GIZA++、snt2cooc.out和mkcls拷貝到bin目錄 下,并將Makefile文件的第13-14行修改為:

   TARGETDIR=/home/user/MT/moses/scripts/target

   BINDIR=/home/user/MT/moses/scripts/bin

   在scripts目錄下輸入命令:

   make release

   注:運行命令后,可能出現錯誤:/bin/sh: ./check-dependencies.pl: not found,此時需要將scripts/Makefile文件中的@./check-dependencies.pl修改為perl check-dependencies.pl,通過moses郵件列表發現的,至于原因我暫時也不知道,如果您明白請告訴我,謝謝

   編譯完成后,會在TARGETDIR 目錄下創建一個scripts-timestamp目錄,這個目錄中存放編譯后的腳本。編譯后的文件名寫入released-files。編譯后的腳本路徑:SCRIPTS_ROOTDIR=/home/user/MT/moses/scripts/target/scripts- 20100105-1600

   至此,Moses安裝成功。

   使用時需要聲明環境:

   export SCRIPTS_ROOTDIR=/home/user/MT/moses/scripts/target/scripts-YYYYMMDD-HHMM

   3.3.3 安裝Moses附加腳本:

   (1) 下載相關腳本

    從http://www.statmt.org/wmt07/scripts.tgz下載scripts.tgz并解壓:

    tar xzf scripts.tgz

    這些腳本包括:

    Tokenizer scripts/tokenizer.perl

    Lowercaser scripts/lowercase.perl

    SGML-Wrapper scripts/wrap-xml.perl

   (2) 下載中科院計算所ICTCLAS中文分詞工具

    下載地址:http://www.ictclas.org

   (3) 準備數據

    中英雙語平行語料庫:train.chn和train.eng(測試集);dev.chn和ref0~3(開發集);

    要求已完成英文token及英文句首字母大寫轉小寫。

    如果沒有進行預處理,可參考下面:

    英文切分:scripts/tokenizer.perl -l en < data/english > data/train.seg.eng.upper

    中文切分:使用ICTCLAS實現中文語料分詞,獲得切分語料庫train.seg.chn

    大小寫轉換:scripts/lowercase.perl < data/ train.seg.eng.upper > data/train.seg.eng

   過濾長句:bin/moses-scripts/scripts-YYYYMMDD-HHMM/training/clean-corpus- n.perl data/train.seg chn eng data/train 1 100

4. 構建語言模型

  此處訓練一個5元的語言模型,用kndiscount平滑方法,命令如下:

  ./ngram-count -text train.chn -lm train.chn.gz -order 5 -unk -interpolate -kndiscount -tolower

  參數說明:

   -text:要訓練的文本,一行一句

   -lm:輸出文件名

   -order n:語言模型的元數

   -unk:未登錄詞,默認是移除未登錄詞

   -kndiscount:平滑

   -interpolate:插值

  至此,語言模型訓練完成。

5. 訓練模型

  運行:/home/user/MT/moses/scripts/target/scripts-20100105-1600/training/train-model.perl (舊版是train-factored-phrase-model.perl)

  -scripts-root-dir /home/user/moses/scripts/target/scripts-20100105-1600

  -root-dir /home/user/MT/moses/data/

  -corpus /home/user/MT/moses/data/train -e eng -f chn

  -max-phrase-length 10

  -alignment-factors grow-diag-final-and

  -reordering msd-bidirectional-fe

  -lm 0:5:/home/user/moses/data/train.chn.gz

  程序會在/home/user/MT/moses/data下建立corpus、giza.eng-chn、giza.chn-eng和model四個目錄。

  在model目錄里,存放著最終結果:配置文件moses.ini、短語表phrase-table.0-0.gz和重排序表reordering- table.msd-fe.0.5.0-0.gz。

  這一步耗時較長,慢慢等待,期間可以上個廁所……..

  至此,短語抽取完成。

6. 最小錯誤率訓練

  執行最小錯誤率訓練時,必須要采用Moses規定的文件格式。輸入文件是純文本文件,一行一句,沒有任何標記。參考譯文文件也是相同格式。

  需要注意的是,Moses規定每個參考譯文單獨存放在一個文件中。

  這里我們使用的參考譯文有四個,即ref0~3,運行以下命令:

  /home/user/MT/moses/scripts/target/scripts-20100105-1600/training/mert-moses-new.pl \

  /home/user/MT/moses/data/dev.eng \

  /home/user/MT/moses/data/ref \

  /home/user/MT/moses/moses-cmd/src/moses \

  /home/user/MT/moses/data/model/moses.ini \

  -working-dir /home/MT/moses/data/mert \

  -root-dir /home/user/MT/moses/scripts/target/scripts-20100105-1600 \

  -nbest 200 \

  訓練完成,生成一系列文件。

  tail -n 1 run*.cmert.log查看所有迭代的BLEU結果,選擇最好的runXX.moses.ini

  用生成的最好的配置文件覆蓋moses.ini,輸入

cp runXX.moses.ini moses.ini

  最終生成moses.ini文件,至此,最小錯誤率訓練完成。

7. 解碼

  echo "I have a book ." | moses –config moses-tuned.ini

  輸出結果含有如下一行:

  BEST TRANSLATION: 我 有 一本 書?

  說明翻譯成功。

總結

以上是生活随笔為你收集整理的基于短语的统计机器翻(PBMT) 开源工具 :Moses的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。