使用NiuTrans工具訓練文言文↔白話文翻譯模型,涵蓋語料預處理、詞對齊、翻譯模型、語言模型、參數調優五大階段。
src.txt、tgt.txt,行對齊、空格分詞src→tgt產生src2tgt.A3.final,tgt→src產生tgt2src.A3.finalalignment.txt# check.py 核心邏輯 # 遍歷兩個A3文件,檢查第i句對的source/target length是否互換一致 # 不一致的句對從兩個A3文件和平行語料中同時剔除 # 修正後調用 NiuTrans.SymAlignment 合併生成 alignment.txt
perl NiuTrans-phrase-train-model.pl \ -tmdir $workDir/model.phrase/ \ -s $srcFile -t $tgtFile -a $aligFile
僅需目標語言語料(如lm.txt),訓練3-gram:
perl NiuTrans-training-ngram-LM.pl \ -corpus $lmodelFile -ngram 3 \ -vocab $workDir/lm/lm.vocab \ -lmbin $workDir/lm/lm.trie.data
perl NiuTrans-phrase-generate-mert-config.pl \ -tmdir $workDir/model.phrase/ \ -lmdir $workDir/lm/ -ngram 3 \ -o $workDir/NiuTrans.phrase.user.config
#!/bin/sh workDir=$1; srcFile=$2; tgtFile=$3; lmodelFile=$4 perl NiuTrans-running-GIZA++.pl -src $srcFile -tgt $tgtFile -out $aligFile -tmpdir $workDir/wordalignment/ python check.py $src2tgtA3File $tgt2srcA3File $srcFile $tgtFile ../bin/NiuTrans.SymAlignment $tgt2srcA3File.check $src2tgtA3File.check $aligFile perl NiuTrans-phrase-train-model.pl -tmdir $workDir/model.phrase/ -s $srcFile.check -t $tgtFile.check -a $aligFile perl NiuTrans-training-ngram-LM.pl -corpus $lmodelFile -ngram 3 -vocab $workDir/lm/lm.vocab -lmbin $workDir/lm/lm.trie.data perl NiuTrans-phrase-generate-mert-config.pl -tmdir $workDir/model.phrase/ -lmdir $workDir/lm/ -ngram 3 -o $workDir/NiuTrans.phrase.user.config
perl NiuTrans-phrase-decoder-model.pl \ -test $workDir/test/test.txt \ -c $workDir/NiuTrans.phrase.user.config \ -output $workDir/test/Xbest.out
修改腳本第56行-nbest參數可輸出多候選結果。
check.py需放在scripts/目錄此流程將NiuTrans各組件串聯為可自動化的訓練管線,解決了GIZA++截斷導致的合併失敗問題,實戰價值高。