开发您自己的语言翻译系统





5.00/5 (5投票s)
理解基于示例的机器翻译 (EBMT) 系统以及如何使用现有工具创建您自己的系统
摘要
本文描述了如何使用 Java 在 Linux 平台上开发基于示例的机器翻译(EBMT)系统,以实现从一种语言到另一种语言的翻译。在此特定案例中,我将翻译英语句子为印地语。EBMT 的翻译原理很简单:系统通过分析数据库中预先翻译好的句子来决定输入句子的恰当翻译。因此,预翻译句子数据库越大,EBMT 系统的准确性就越高。
本文极大地受到 Ralf Brown 和 Balakrishnan 在该领域进行的广泛研究工作的启发。
引言和背景
基于示例的翻译本质上是类比翻译。这意味着,如果 EBMT 系统给定一组源语言(正在翻译的语言)句子及其在目标语言中的对应翻译,系统就可以利用这些示例将其他类似的源语言句子翻译成目标语言句子。基本前提是,如果一个先前翻译过的句子再次出现,那么相同的翻译很可能再次是正确的。
使用的软件
开发自己的机器翻译是一个艰巨的任务。然而,有一些工具可以帮助加速这一过程。我在我的 EBMT 系统中使用了以下工具:
- Moses Decoder
- Giza++
- IRST-LM
框图

描述
我将整个 EBMT 系统划分为四个模块。
1. 模块一:精确匹配算法
在此模块中,首先将输入的英语句子与可用双语语料库中的每个句子进行精确匹配。如果找到匹配项,则检索并显示相应的印地语句子作为输出。
如果输入的是一个段落,那么输入首先会被分解成句子,然后逐个处理并翻译每个句子。
2. 模块二:基于规则的句子翻译
每种语言都有一些语法来描述句子中的词语应该如何组织。例如,以英语和印地语为例。英语遵循主语-谓语-宾语 (SVO) 的语言结构,而印地语遵循主语-宾语-谓语 (SOV) 的结构。为了说明这个例子,请比较以下两个句子:
英语:Anshul plays football
印地语:Anshul football khelta hai
此模块将输入语言转换为标记化格式。例如,上面的英语句子会被转换为:
<Subject> plays <Object>
这有助于泛化翻译过程。
除此之外,在翻译句子时还需要考虑许多其他语言学规则。
3. 模块三:短语解码器
当前两个模块无法翻译时,我们将句子分解成短语,然后运行基于统计机器翻译的算法来查找输入句子的最可能翻译结果。
数学上,我们试图找出
H*= arg maxHP(H/E) -(1)
我知道这听起来很复杂,让我来解释一下我们是如何得到这个方程的。
根据著名的贝叶斯定律(概率),
P(A/B) = P(B/A) * P(A)/P(B)
在这种情况下,我们需要找到翻译句子 A,它对于给定的输入句子 B 具有最大的正确翻译概率。由于我们正在寻找给定固定事件 B 的最可能结果 A*,P(B) 是常数,不起作用。
因此,我们想要
=> A* = arg maxA P(A/B)
=> A*=arg maxA P(B/A)*P(A)/P(B)
=> A*= arg maxA P(B/A)*P(A) -same as (1)
此模块通过寻找能够最大化 P(E/H)*P(H)
的短语 H,来尝试找到英语句子最可能的印地语翻译。诸如此类的短语会被组合起来以完成句子。
注意:
- P(H)=[语言模型概率]
我使用了 IRST-Language Model,它衡量印地语句子的流畅度和概率,并提供一组流畅的句子来测试潜在的翻译。
- P(E/H)=[翻译模型概率 H->E]
我使用了 Giza++,它衡量忠实度,给定印地语句子,计算(英语,印地语)对的概率,并测试给定流畅句子是否是翻译。
- arg maxH
我使用了 Moses Decoder,它使用启发式搜索来有效且高效地找到
H*
。
4. 模块四:词解码器
这是 EBMT 尝试翻译输入句子的最后一次尝试。当模块三也无法翻译时,EBMT 会将句子分解成单词。对于每个单词,它会尝试查找字典翻译,然后简单地将输出拼接成一个翻译后的句子。
EBMT 的设置
EBMT 系统的基本准备工作需要您执行以下操作:
- 开发一个包含从源语言到目标语言的预翻译句子的双语语料库。
- 一旦拥有了规模可观的语料库,您就需要根据您的系统安装 Giza++、Moses 和 IRST。
- IRST 也需要单语文件。这可以通过分离双语语料库轻松创建。
- 最后,您需要使用 giza++ 训练您的语料库。在后台,会运行 shell 脚本和 Perl 脚本来计算概率并生成各种文件,例如对齐文件、翻译表、生育力文件、失真表等。

结果
使用 Giza++ 进行训练花了 1.5 天。之后,我的 EBMT 系统就准备好了!
未来工作
机器翻译是一个研究领域,已经做了大量工作,还有更多工作有待完成。我仅仅演示了如何使用现有工具来创建自己的机器翻译系统。这是我创新之路的第一步,我还有很长的路要走……
历史
- 2010 年 8 月 11 日:初始发布