朝伟 的个人资料我的神韵天堂照片日志 工具 帮助

日志


2007/9/20

研究机器翻译的朋友们请留下你的足迹

机器翻译所有的工具和预料库差不多都被移植到win32上了,需要的朋友联系我,
MSN/Gtalk/Email:wan695@gmail.com 
我实在是找不到一个方便的地方共享我的资源
2007/8/27

Phrase-Based SMT 机器翻译所需工具集

1、分词工具(针对汉英翻译)
汉语分词工具:ICTCLAS(计算所开发的汉语分词工具) 、海量分词、s-msrseg(微软分词工具)、3GWS(飞嘉华分词系统)
英语分词工具:tokenizeE.perl 使用方法
$perl tokenizeE.perl <inputfilename>outputfilename
inputfilename为未做tokenize之前的英语语料的文件名,outfilename为tokenize之后的英语语料的文件名
2、mkcls(用来生成word class)
可以在http://www.fjoch.com/处下载得到
使用方法:
$tar xzvf mkcls.tar.gz
$cd mkcls/
$make
$cd ..
$mkdir wordclass
$cp chinese english mkcls/mkcls wordclass/
生成汉语的wordclass:
$./mkcls -c80 -n10 -pchinese -Vchinese.vcb.classes opt
----->生成chinese.vcb.classes chinese.vcb.classes.cats 两个文件
生成英语的wordclass:
$./mkcls -c80 -n10 -penglish -Venglish.vcb.classes opt
----->生成english.vcb.classes english.vcb.classes.cats
3、GIZA++(用来生成词语对齐的语料)和plain2snt.out
可以在http://www.fjoch.com/处下载得到
使用方法:
$tar xzvf GIZA++.tar.gz
$cd GIZA++/
$make
------>生成GIZA++、plain2snt.out两个文件
$cp chinese english GIZA++/
$./plain2snt.out chinese english
------>生成四个文件:chinese.vcb,english.vcb,chinese_english.snt和english_chinese.snt
$mkdir temp
$cd temp/
$cp ../GIZA++ ../chinese.vcb ../english.vcb ../chinese_english.snt ../english_chinese.snt .
$cp /home/mkcls/wordclass/chinese* /home/mkcls/wordclass/english* .
---->这样在temp目录下包括如下文件GIZA++,chinese.vcb,english.vcb,chinese_english.snt,english_chinese.snt
chinese.vcb.classes,chinese.vcb.classes.cats,english.vcb.class和english.vcb.classes.cats
开始训练ch-->en
$./GIZA++ -s chinese.vcb -t english.vcb -c chinese_english.snt
开始训练en-->ch
$./GIZA++ -s english.vcb -t chinese.vcb -c english_chinese.snt
---->通过以上的双向训练得到两个双向对齐的*.root.A3.final文件
4、词语对齐提炼工具(WordAlignment)
该工具由本人开发,主要参照了Koehn的算法
使用方法:
$./WordAlignment --forward chinese2english.A3.final --reverse english2chinese.A3.final --alignment [parameter]
parameter: intersect | union | grow-diag-final
---->通过以上的训练可以生成chinese和english两个语料,以及一个对齐文件: aligned.intersect | aligned.union | aligned.grow-diag-final
5、词典概率评分工具(LexicalScore)
该工具由同学开发,主要参照了Koehn的算法
使用方法:
$./LexicalScore -i aligned.grow-diag-final -s chinese -t english
---->通过以上的训练可以生成两个文件lex.s2t lex.t2s,其中lex.s2t为汉语单词翻译为英语单词的概率且英语单词在前汉语单词在后
6、短语抽取工具(PhraseExtract)
该工具由同学开发,主要参照了Och的算法
使用方法:
$./PhraseExtract -i aligned.grow-diag-final -s chinese -t english
---->通过以上的训练可以生成extract文件,该文件中包含双语短语的对应关系及短语中单词的对应关系
7、短语评分工具(PhraseScore)
该工具由本人开发,主要参照了Koehn的算法
使用方法:
$./PhraseScore --extr extractfilename --lexs2t lexs2tfilename --lext2s lext2sfilename
---->通过以上的训练可以生成phrase-table文件(该文件也是Phrase-Based SMT的翻译模型文件)。
8、语言模型训练工具(SRILM)
可以在www.speech.sri.com/projects/srilm/下载到,该软件直接make会有一些问题,所以我直接用了别人配置生成ngram-count软件,
该软件是SRILM工具生成的用来训练语言模型的工具
使用方法:
$./ngram-count -interpolate -kndiscount1 -kndiscount2 -kndiscount3 -text english -lm english.lm
上面的命令行中english为目标语言的文件名,english.lm为要生成的语言模型的文件名。通过以上训练将得到一个三元的语言模型文件。
9、解码器
我们自己开发的PanGu(盘古)解码器--------> 正在开发中,估计十一月份会出第一版。
可选的基于短语的解码器:Pharaoh(由Koehn开发), Mose(正在开发中,由Koehn带领的团队开发,估计9月中旬左右会完成,开源项目),SilkRoad(由计算所开发,估计9月中旬左右完成,开源项目)
Pharaoh的使用方法:
$./pharaoh -f pharaoh.ini <chinese.eval> out
其中chinese.eval为要翻译的汉语文本,out为翻译生成的英语文本。pharaoh.ini为配置文件,可以在该本件中指定语言模型和翻译模型的文件名和位置


关于GIZA++


研究统计机器翻译的人恐怕没有不知道GIZA++的,但是从我自己和别人的使用经验来看,中间显然还存在不少的问题,从这篇Post开始,随时和大家分享一些自己的使用心得,希望起到抛砖引玉的作用。

第一个问题,编译。
GIZA++需要的是GCC2.9以上的编译器,但在实验中发现,3.4及其以上的就肯定不能编译了,存在一系列指针错误。而GCC一般是随系统捆绑的,除非自己再安装另外的版本,现在已知的可以直接编译不出任何问题的系统是RedHat 9,不过RedHat的衍生版本好像就没那么幸运了,Fedora系列的都不行(至少Core 3以上的都不行)。:-(
不过,当你的系统不能直接编译时,你可以在你的系统/usr/bin下看看有没有g++32,如果有的话那么赶紧去吧GIZA++的Makefile里的


CXX = g++


改成


CXX = g++32


然后make吧!
另外一个mkcls则好对付多了,好像我所试用过的系统都可以直接编译。

第二个问题,fe0_3.final高频词文件。
如果你要用基于词的解码器,则会需要一个后缀为fe0_3.final的高频词文件,而这个文件是不会自动生成的。ISI-ReWriter-Decoder解码器包里有个rewrite.mkZeroFert.perl程序可以给出训练文件里的高频词和频率,将它改一改就可以适应我们的要求了:


#! /usr/bin/perl
# Code written by Ulrich Germann; (c) 2002 University of Southern California



use strict;
my %words; # maps from word IDs to words
my %counts; # maps from words to their word counts
my %zfprobs; # maps from words to zero fert probs
my $min_occ = 250; # minimum number of occurrences to consider it
my $threshold = .5; # probability cutoff 这里可以改成你想要的任何threshold值,高于这个值的才能算高频词。



open VOCAB, $ARGV[0] or die "$ARGV[0]: $!\n";
while (&lt;VOCAB&gt;) { split; $words{$_[0]} = $_[1]; $counts{$_[1]} = $_[2]; }
close VOCAB;



# get zero fertilites (e.g. 'fra-eng.n4.final')
open ZFERT, $ARGV[1] or die "$ARGV[1]: $!\n";
while (&lt;ZFERT&gt;) { split; $zfprobs{$words{$_[0]}} = $_[1]; }
close ZFERT;



my @k = sort { $zfprobs{$b} &lt;=&gt; $zfprobs{$a} } keys %zfprobs;
for (@k)
{
if ($counts{$_} &gt;= $min_occ and $zfprobs{$_} &gt;= $threshold)
{
print "$_ $zfprobs{$_}\n"; # 将这句改成 print "$_\n"; 其结果就可以直接存为fe0_3.final文件了。
}
}


不过,大部分情况下即使你把threshold设成0.9也依然会有很多"伪"高频词出现在结果中,所以手动调整一下吧,这样才能保证得到较好的解码结果。



2007/8/26

安裝 srilm 的一些問題及細節

有鑒於許多同學在安裝上都遇到了很多問題,在這裡我放上一些安裝時的細節。

在下載完的 srilm.tgz 裡會有一個說明文件,裡面詳細描述了安裝時的注意事項。不過 對於一個不熟 unix 系統的人來說會有許多障礙。下面是依照該文件的步驟,再加上了針 對資訊系工作站的設定的安裝方法:

  1. 在你的目錄下建立一個 srilm 的安裝目錄:
    mkdir ~/srilm-1.4.6
  2. 把下載的檔案 copy 至該目錄之下:
    cp 你下載的檔案位置 ~/srilm-1.4.6
  3. 解開該檔案:
    cd ~/srilm-1.4.6; tar zxf srilm.tgz

從這裡開始,很多人會遇到問題, srilm 內附用來自動偵測系統種類的小程式事實上是幾乎無法使用的,所以如果按照 INSTALL 文件裡的說明一步一步來,大概成功的機率很小...

接下來我們大概有三件事要做:

一、修改 Makefile,不要用內建的系統偵測程式。
二、把自己系統的一些設定正確的告訴 Makefile 。
三、安裝 srilm 並執行內部的測試確定安裝成功。

修改 Makefile ,不要用內建的系統偵測程式

請用編輯器(你可以試試pico, joe or vim)在 ~/srilm-1.4.6/Makefile 的開頭前幾行找到一行像這樣的:
MACHINE_TYPE := $(shell $(SRILM)/sbin/machine-type)
請在這行前加上一個 # 符號,並輸入新的一行:
MACHINE_TYPE := i686
這一行會告訴 Makefile 之後要看的設定在 common/Makefile.machine.i686 裡。

把系統的相關設定正確的告訴 Makefile


  1. 接下來我們要先設定你的 srilm 位置。如果是照著這篇說明做的那麼你的位置應該是在:
    ~/srilm-1.4.6
    一樣,請用編輯器打開 ~/srilm-1.4.6/Makefile ,在頭幾行裡可以找到一行:
    # SRILM = /home/speech/stolcke/project/srilm/devel
    請在該行下方新增一行:
    SRILM= $(HOME)/srilm-1.4.6
  2. 再來是告訴 Makefile 你所使用的 compiler (for C and C++)。
    編輯 ~/srilm-1.4.6/common/Makefile.machine.i686,在這個檔案中可以找到下面這樣的三行:

    GCC_FLAGS = -mcpu=pentium3 -Wreturn-type -Wimplicit -Wimplicit-int
    CC = /usr/local/bin/gcc $(GCC_FLAGS)
    CXX = /usr/local/bin/g++ -Wno-deprecated $(GCC_FLAGS) -DINSTANTIATE_TEMPLATES

    請改成:(以資訊系的工作站設定為例)
    GCC_FLAGS = -Wreturn-type -Wimplicit
    CC = /usr/bin/gcc $(GCC_FLAGS)
    CXX = /usr/bin/g++ -Wno-deprecated $(GCC_FLAGS) -DINSTANTIATE_TEMPLATES

  3. 設定一個必要的函式庫 (Tcl) 在你的系統中的安裝位置。
    繼續在 ~/srilm-1.4.6/common/Makefile.machine.i686 裡找到下面兩行:

    TCL_INCLUDE =
    TCL_LIBRARY = -ltcl

    一樣,我們以資訊系的工作為例,請改成:
    TCL_INCLUDE = -I/usr/include/tcl8.4
    TCL_LIBRARY = -ltcl8.4
  4. 設定額外的工具程式位置。
    在 ~/srilm-1.4.6/common/Makefile.machine.i686 檔尾附近可以看到有關 gawk 以及 perl 的設定:

    # Location of gawk binary
    GAWK = /usr/bin/gawk

    # Location of perl binary
    PERL = /usr/bin/perl

    在資訊系的工作站上,這兩個設定是不用更改的。但是如果是其他的機器上,請確認一下這裡的設定。

安裝 srilm 並執行內部的測試確定安裝成功

以上的設定都完成之後,我們要開始編譯 srilm 了。

  1. 在 srilm 的目錄之下編譯 srilm:
    cd ~/srilm-1.4.6
    make World
    接下來會看到滿滿螢幕的字,這些訊息是在 compile 時的輸出資訊,如果你看得懂,那大概安裝 srilm 對你來說是一件輕鬆的事。如果你看不懂也不重要,這些訊息對你來說一點用也沒有,只要等它跑完,回 到等你輸入指令的狀態即可。

  2. 執行內部的測試
    export PATH=~/srilm-1.4.6/bin/i686:~/srilm-1.4.6/bin:$PATH
    cd ~/srilm-1.4.6/test
    make all
    這個步驟,請你注意看螢幕上的輸出結果。會跑出一大堆像是:

    *** Running test ngram-class ***

    real 0m6.312s
    user 0m6.292s
    sys 0m0.020s
    ngram-class: stdout output IDENTICAL.
    ngram-class: stderr output IDENTICAL.
    你要注意的是上面大寫的 IDENTICAL。如果你的安裝全都正確無誤,那麼每個結果都應該是 IDENTICAL,如果有不正確的地方或是編譯時有錯誤,則會是 DIFFERS 的字樣。

以上是完整的安裝過程。


問題排解


這裡是你可能會遇到的問題,在寫信來給我之前,我希望你可以先先這裡的一些資訊,或許可以讓你自己解決問題,也可以讓你更清楚在哪一個步驟遇到了問題。


問題:

1、測試時出現 can't find gawk
2、測試時出現 can't find ngram
3、在 make World 時出現很多與 Makefile.common.targets 或 Makefile.common.variables 相關的錯誤訊息
4、在 make World 時出現 "mkdir:無法建立目錄" 的訊息
5、測試時大部份都是 IDENTICAL 但有少數是 DIFFERS


回答

  1. 測試時出現 can't find gawk
    這表示你的 gawk 和 perl 路徑並沒有設定正確,他們的設定是在 ~/srilm-1.4.6/common/Makefile.machine.i686之下,接近檔尾的地方。
    你可以在工作站上用以下的指令來確 gawk 以及 perl 的位置:
    which gawk
    which perl
    比對這兩個指令的輸出結果是否就是你的設定。如果沒有任何輸出表示系統中很可能沒有該工具,下面的指令可以幫你找出是否有安裝在其他路徑之下:
    whereis gawk
    whereis perl
    如果也沒有任何路徑資訊,表示你必須另行安裝,或者可以請你的系統管理者幫忙安裝。
  2. 測試時出現 can't find ngram
    這有兩種情形:
    • 你可能根本沒有成功編譯
    • 你編譯成功了,但是測試時沒有設對路徑,因此系統找不到執行檔
    前者,可以檢查一下 ~/srilm-1.4.6/lib/i686 之下的檔案,看看有幾個檔案。正常來說會有:
    • libdstruct.a
    • libflm.a
    • liblattice.a
    • libmisc.a
    • liboolm.a
    一共五個檔案。如果你是少了 libmisc.a,很有可能是 Tcl 的路徑沒有設定對。寫信給你的系統管理員確認一下 Tcl 的安裝路徑。
    如果五個都有,那你可以再檢查一下 ~/srilm-1.4.6/bin/i686 下有沒有 ngram 這個檔案。如果有,表示你是第兩種情形。如果沒有,那表示沒有編譯成功,也就是本文中的一些設定並不符合你的系統環境。你可能需要再確定一些設定的值 (gcc, gawk, perl 等等的路徑)

    後者,你有執行步驟中的 export 那個指令嗎? 這個指令是假設你的 shell 是 bash.
    要知道你是哪個 shell 你可以用這個指令:
    echo $SHELL
    如果螢幕上出現 /bin/bash 表示你是用 bash, 那麼你什麼都做對了..寫信來給我吧!
    如果是 /bin/tcsh 表示你是用 tcsh. 因此你的路徑設定要用另一個指令:
    set path=( ~/srilm-1.4.6/bin/i686 ~/srilm-1.4.6/bin $path )
  3. 在 make World 時出現很多與 Makefile.common.targets 或 Makefile.common.variables 相關的錯誤訊息
    這是你在第二步時修改 srilm 目錄位置時沒有設定對。可能是你的 $(HOME) 變數並不是正確的。這個時候你可以不要用變數的方式來設定,回到你的 srilm 目錄之下,在該目錄輸入指令 'pwd' 並且把出現的目錄抄下來,再回到 Makefile 之中把剛才抄下來的目錄指派給 SRILM 變數。
    例如,如果你在 srilm 的目錄之下輸入 'pwd' 之後出現的是:
    /diska3/user/john/homework/hw1/srilm
    則在 Makefile 中直接設定:
    SRILM = /diska3/user/john/homework/hw1/srilm
    應該可以解決這個問題。
  4. 在 make World 時出現 "mkdir:無法建立目錄" 的訊息
    請把安裝目錄之下的 include, bin, lib 三個目錄先砍掉即可。
  5. 測試時大部份都是 IDENTICAL 但有少數是 DIFFERS
    其實作業二會用到的程式只有 ngram, ngram-count 兩個,因此其他程式有錯誤並不影響,所以只要確定上面兩個程式測試時是 IDENTICAL 即可。另外若是 DIFFERS 發生在 stderr 也不影響執行結果。
2007/6/20

飞跃迷雾--浅谈机器翻译软件的发展走势



  北京雅信诚软件公司刚刚发布的"雅信CAT"号称是我国自行研究开发的第一个专业翻译平台,它突破了内核翻译的瓶颈,首次提出了计算机辅助翻译的概
念。



  机器翻译的发展史告诉我们,伴随着信息技术的发展以及全球网络的一体化趋势,机器翻译技术也得以不断提高,翻译软件的辅助翻译作用愈发明显。而对于从
事机器翻译研究的专家、学者或软件开发人员来说,机器翻译的发展过程,其实就是一步一步跨越机器翻译技术障碍的过程。


  跨越障碍


  作为不同语言之间的翻译交流,机器翻译既是一门科学,也是一门艺术。随着计算机应用技术的不断发展,为了解决计算机语言交流的复杂、繁琐、枯燥等问
题,机器翻译的研究工作开始了新的里程。

 几十年来,国内外许多专家、学者为机器翻译的研究付出了大量的心血和汗水。但是,至今还没有一个完善、实用、全面、高质量的自动翻译系统出现,这也说明
了语言翻译的难度之大。应该说,机器翻译经过几十年的发展,还是取得了很大的进展,特别是作为人们的辅助翻译工具,机器翻译已经得到大多数人的认可,近年
来国内外翻译软件的蓬勃发展,就证明了这一点。目前,国内的机器翻译软件就不下百种,根据这些软件的翻译特点,大致可以分为三大类:词典翻译类、汉化翻译
类和专业翻译类。

  词典类翻译软件占主导地位的应该就是金山软件公司的《金山词霸》了。《金山词霸》堪称是多快好省的电子词典,它可以迅速查询英文单词或词组的词义,并
提供单词的发音,为用户了解单词或词组含义提供了极大的便利。


  汉化翻译软件的典型代表是北京实达铭泰公司开发的《东方快车2000》,它首先提出了"智能汉化"的概念,改变了过去"即时汉化"的不足,也使人们对
翻译软件有了更新的认识,使翻译软件的辅助翻译作用更加明显。《东方快车

2000》
为用户提供了"智能汉化集成环境",为不会英语或英语水平不高的人提供了"语言障碍的全面解决方案",包括内码转换、动态汉化和电子词典等,很好地满足了
用户汉化英文软件、英文网页,实现对屏幕英文信息的了解和文章的初步翻译等,对信息获取、了解文章大意有相当实际的作用。


  以译星、雅信译霸为代表的专业翻译系统,是面对专业或行业用户的翻译软件。这类软件具有传统语法规则的翻译内核,其自动翻译的可读性效果如
何,一直是翻译软件企业的努力方向。在自动翻译方面,译星具有一定的优势,但其专业翻译的质量与人们的实用性还有很大差距,所以,在好长一段时间里,专业
翻译软件一直处于徘徊不前的状态。


  国际上有关专家分析认为:机器翻译要想达到类似人工翻译一样的流畅程度,至少还要经历15年时间的持续研究。也就是说,在人类对语言研究的同时,还无
法明了"人脑是如何进行语言的模糊识别和判断"的情况下,机器翻译要想达到100%的准确率是不可能的。


  一位翻译界权威人士曾这样评价目前的状况:"国内市场上的几种专业翻译软件的操作程度、翻译准确性、可读性等都相差不大,翻译机理也大同小
异,因此,专业翻译软件的发展几乎处于停滞状态。如果没有新的开发思路,翻译技术得不到提高,国内的专业翻译软件市场就谈不上发展,也会走向瓶颈状态。我
们必须另辟新路,寻找新的解决方法。"


  另辟蹊径


  应该说,在很多领域里,计算机辅助人类工作的方式得到了广泛的应用,值得我们借鉴。例如:CAD软件,它并不是代替人工进行工作,而是给我们
提供方便的操作平台,辅助我们高效率地完成相应的工作,从而减少重复和机械劳动,提高工作效率。其实,我们并不要求计算机自动设计出一个机器模型、画出一
幅美丽的图画,或帮我们写出一篇文章,这毕竟太过分了。我们也不会要求计算机象翻译专家一样自动地完成语言的翻译。对于我们来说,计算机只是起着辅助人工
的作用,如果计算机辅助技术用于语言的翻译研究,应该同样可以起到很大的辅助作用,这就是所谓的"计算机辅助翻译"(Comp

uterAidedTranslation,简称CAT)的概念。它集机器记忆式翻译、语法分析式翻译和人际交互式翻译为一体,把翻译过程中机械、重复、
琐碎的工作交给计算机来完成。这样,翻译者只需将精力集中在创造性的思考上,有利于工作效率的提高。


  长期以来,科技资料的翻译就是科研机构、大学、情报部门以及大型企业的重要工作之一。随着国际交往的增多,资料翻译也显得越来越重要。特别是
对于一些大型的引进项目,其外文资料往往数以吨计,这些资料若仅靠人工翻译,难度可想而知,还不适应规模化生产,因而,依靠机器翻译来进行前期的"粗翻
译",再经过人工的"过滤",就显得轻松多了。



  商机无限


  其实,翻译工作者都能发现翻译过程中常见的规律:一是重复的内容多(相同的句子或片段反复出现);二是相似的句型和句式反复出现;三是在翻译
过程中最耗费精力和时间的是查词典、书写、录入或编辑。而如果有了计算机辅助翻译系统(CAT),以上问题就可以迎刃而解了,它能提供最佳解决方案,使翻
译效率事半功倍。


  有关专家经过大量的研究和统计表明,在翻译相同的专业文献时,很多内容会重复出现,最高时重复率达60% 。如果提供一个记忆机制,使相同
或相似的句子只需翻译一次,就可以存在机器里,这样,就能减少重复性的劳动,提高翻译速度。在翻译时,系统通过搜索记忆库,对需要译的内容进行分析、对
比,给出翻译建议和参考译例,使相同的句子或片段不要翻译第二遍,这在翻译同类文章时非常有效。尤其是对某些产品的说明书,只要翻译一个版本,在今后产品
升级换代或出现相关产品时,许多内容都可以不用翻译就能直接使用。而如果融合网络技术建立资源站点,通过局域网和INTERNET实现资源共享,就可起到
"自己翻译过的内容不用翻译,别人翻译过的内容也不用翻译"的作用。这样的结果是,只要有人曾翻译过某句话,其他人就不用再重复工作了。


  在平时的翻译过程中,句型相同或相似的句子也经常出现,由于常用的翻译软件大多采用的是语法树结构的翻译内核,这种内核适用于比较有规律的
语句,而对于变化多端的自然语言,采用千篇一律的翻译模式,往往不能奏效。另一种以语法模式为主的翻译内核,是基于传统语法树和以自然语言为基础的一种广
义语法结构,计算机根据这些规则"举一反三"地进行翻译,在不断"学习"新语法的情况下,高质量的参考译文就出现了。广义语法的基础是"句型"和"类
别",这使语法的表现形式更简单、易用,并可分类继承,提高了系统的专业翻译水平。机器翻译的选词机制(从多义词中选择正确的词义)只有采用模式翻译内
核,才能使机器翻译给出的参考译文更通顺、合理、可用。


  翻译工作者普遍认为,翻译资料时最耗费精力的是要将翻译的结果写在纸上,然后输入计算机。而如果将这些时间用来思考,先借助翻译软件进行辅
助翻译,再依靠人工进行智能化整合,那么翻译的效率将成倍提高。为了最大限度地降低翻译者的体力消耗和缩短翻译周期,使用计算机辅助翻译系统(CAT)显
然是很好的做法。


  CAT具备了方便的交互翻译体系,其主要操作点取鼠标即可完成,这样,翻译速度就得以提高。因此,只要预先在系统中存储大量的词库,翻译
时,计算机就会自动把所翻译句子的每个单词或词组通过查词典的形式在屏幕上显示出来,并把高频词的释义放在首位,同时还能自动地给出参考译文。由于每个单
词对应多个中文释义,如果计算机选择有误,可通过点击鼠标选择正确的释义加以替换。对于复杂句,人们可按照不同的理解方式,用鼠标点取计算机给出的中文组
成通顺的译文。


  其实,在翻译过程中,计算机给出的单词、词组或句子片段的中文解释,就如同大小不等的"构件",人们根据需要,用鼠标选取这些"构件"加上
一些连接词(我们称为"黏合剂"),就可以组成正确的译文。这样,在翻译过程中省去了查词典、书写、录入甚至排版等繁杂的工作,翻译家们才有更多的时间来
思考和研究如何将文章翻译得更准确、更美妙!


  当然,计算机辅助翻译系统所提供的几项功能是相辅相成的,记忆、分析、交互配合使用,这样的结果使翻译文章的速度提高了2倍,甚至更高。因
此,作为电脑语言辅助工具的计算机辅助翻译系统,将在很大程度上改变目前专业翻译软件的现状,也为词典翻译类和汉化翻译类软件的开发提供了一个全新的思
路,或许,国内沉寂许久的翻译软件行业又将迎来一个开发热潮,谁的技术领先谁就有可能获得巨大的市场回报。

  不管怎样,如何提高翻译软件的质量、效果,增强可读性,是翻译软件企业必须面对的问题。而计算机辅助翻译系统的面市,必将给我们带来一次突破性的进展
和新的市场机会。

2007/6/18

全文翻译技术发展脉络


  自上世纪90年代以来,机器翻译领域的方法基本上可以分为两大类,即基于规则
(Rule-based)的方法和基于语料库(Corpus-
based)的方法。基于规则的方法是传统的方法,而基于语料库的方法是80年代以后逐渐发展起来的方法。基于规则的机器翻译(Machine
Translation,MT)MT又可以分为基于转换的方法和基于中间语言(Interlingua-based)的方法,而基于语料库的方法又可以分
为基于统计(Statistic-based)和基于实例(Example-based)的方法。由于没有哪种机器翻译方法能够取得令人满意的效果,于
是,多引擎的思想自然就成为一种提高机器质量的手段。而且这种方法也确实有效。现在,多引擎的方法在机器翻译系统的开发中已得到广泛采用。






  基于规则的机器翻译






  基于规则的机器翻译的技术是最成熟的,也是到目前为止应用最广的,目前有影响的机器翻译系统都是基于规则的。基于规则的机器翻译系统就是对语言语句的
词法、语法、语义和句法进行分析、判断和取舍,然后重新排列组合,生成等价的目标语言。



  基于中间语言的方法是对源语言进行分析后产生一种成为中间语言的表示形式,然后直接由这种中间语言的表示形式生成目标语言。所谓中间语言就是自然语言
的计算机表示形式的系统化,它试图创造出一种独立于各种自然语言,同时又能表示各种自然语言的人工语言。



  基于规则的机器翻译发展到今天,相对来说已比较成熟。虽然经过长期的努力,人们已经建立含有成千上万个规则的规则库,覆盖了相当大的语言现象,但是从
理论上讲,这种过程仍然很有限。因为语言是一个民族经过几千年的积累,是约定俗成而又动态发展的。随着社会的不断发展,新的词汇和语言现象不断出现。现有
的机器翻译系统的规则再多,也只是特定语言现象的概括和总结。因此,基于规则的机器翻译方法借鉴了其他方法的优点,并产生很多变化,主要体现在以下几个方
面:



  在规则的获取方面,传统的规则方法主要依靠语言学家总结规则进行调试,而现在更加重视从语料库中获取规则(如采用错误驱动的学习算法);



  传统的规则方法往往偏重描述粗粒度的、全局化的大范围语言学规则知识,而现在则更加重视描述细粒度的、局部的小范围的语言学知识,呈现出"小规则库、
大词典"的趋势;



  在知识表示方面,为了以更小的粒度、更加准确地对翻译知识进行描述,一般要对单纯的上下文无关规则做一些改进;



  传统的规则方法采用的往往是非此即彼的确定性原则,系统的鲁棒性较差,而现在规则系统中一般都引入各种形式的概率或评分函数,系统的鲁棒性有所提高。






  基于语料库的机器翻译方法






  基于统计的机器翻译方法和基于实例的机器翻译方法都是使用语料库作为翻译知识的来源。二者的区别在于:在基于统计的机器翻译方法中,知识的表示是统计
数据,而不是语料库本身,翻译知识的获取是在翻译之前完成,翻译的过程中不再使用语料库;而在基于实例的机器翻译方法中,双语语料库本身就是翻译知识的一
种表现形式(不一定是惟一的),翻译知识的获取在翻译之前没有全部完成,在翻译的过程中还要查询并利用语料库。



  统计翻译的数学模型是由IBM公司的Brown等人提出来的。统计机器翻译的基本思想是,把机器翻译看成是一个信息传输的过程,用一种信道模型对机器
翻译进行解释。假设一段源语言文本S,经过某一噪声信道后变成目标语言T,也就是说,假设目标语言文本T是由一段源语言文本S经过某种奇怪的编码得到的,
那么翻译的目标就是要将T还原成S,这也就是一个解码的过程。



  统计机器翻译问题被分解为三个问题:语言模型的参数估计;翻译模型的参数估计;搜索问题,寻找最优的译文。基于统计的方法需要大规模双语语料,其翻译
模型、语言模型参数的准确性直接依赖于语料的多少,其翻译质量主要取决于概率模型的好坏和语料库的覆盖能力。同时,翻译模型、语言模型在简化过程中也带来
一些缺陷,在简化和可行之间存在一个权衡问题。基于统计的方法不需要对大量知识的依赖,直接靠统计结果进行歧义消解处理和译文的选择,避开了语言理解的诸
多难题。但是,语料的选择和处理不但工程量大,而且需要同实际处理问题相似。因此,通用领域的机器翻译系统很少以统计方法为主。






  基于实例的方法(EBMT)






  基于实例的机器翻译(Example-Based Machine
Translation)思想最早是由著名的日本机器翻译专家长尾真(Nagao.
M.)提出的。其基本设想是不通过深层的分析,而仅仅通过已有的经验知识,通过类比原理进行翻译。人类的翻译过程是首先正确分解输入句子,将句子分解为短
语碎片,接着把这些短语碎片译成其他语言短语,最后把这些短语合并成长句。每个短语碎片采取类比的原则进行翻译。这一方法的基本原理归纳起来很简单:系统
的主要知识源是双语对照的翻译实例库,每当输入一个源语言句子S时,系统找出和S最为相似的句子S',并模仿S'的译文T'构成S的译文T然后输出。这种
方法需要一个很大的语料库作为支撑,为构建语料库需要投入巨大的人力和物力。



  基于实例的机器翻译方法具有以下一些优点:



  系统维护容易 系统中知识以翻译实例和语义词典等形式存在,可以很容易地利用增加实例和词汇的方式扩充系统。



  容易产生高质量的译文
尤其在利用了较大的翻译实例库,或者输入能和实例精确匹配时更是如此,同时也可以避免一些传统的基于规则机器翻译必须进行的深层次语言学分析。



  同语种相关的知识很少
只要记忆库中存在外形同输入相似的句子,就可以进行匹配。而从语料库中获取的知识颗粒度比较小,对自然语言的刻画更为细腻、真实和准确。



  由于大规模获取语言知识的代价非常大,对于词法、语法和语义的规则的收集概括难以全面,机器翻译系统的性能一直徘徊不前。利用已经存在的双语语料库资
源为新的翻译需求提供经验,是目前提高机器翻译系统译文质量的重要途径之一。EBMT对于相同或相似的文本的翻译有非常显著的效果,随着例句库的规模的增
加,其作用也越来越显著。对于实例库中已有的文本,可以直接获得高质量的翻译结果。对于实例库中存在的实例十分相似的文本,可以通过类比推理,并对翻译结
果进行少量的修改,构造近似的翻译结果。



  基于实例的翻译具有众多的优点,在具体实现上又是千差万别,很多地方还有相当大的潜力,近年来一直是机器翻译研究的热点之一。但由于语料库规模的限
制,基于实例的机器翻译很难达到很高的匹配率,因而,到目前为止还很少有机器翻译系统采用纯粹的基于实例的方法,一般都是把基于实例的机器翻译作为多翻译
引擎中的一个,以提高翻译的正确率。