2

我有一个文本语料库,它已经通过构造在句子级别对齐 - 它是一对英语字符串及其翻译成另一种语言的列表。我有大约 10 000 个字符串,每个字符串 5 到 20 个单词及其翻译。我的目标是尝试建立一个翻译质量的衡量标准——当然是自动的,因为我正在处理我一无所知的语言:)

我想从这个翻译列表中构建一个字典,它将源英语字符串中的每个单词(最可能的)翻译成另一种语言。我知道这本词典远非完美,但我希望当一个词的翻译不一致时,我能有足够好的东西来标记,例如,如果我的词典说“Store”要由“Magasin”翻译成法语那么如果我发现某个地方“商店”被翻译为“精品店”,我就会怀疑有什么问题。

所以我需要:

  1. 从我的语料库构建字典
  2. 对齐字符串/翻译对中的单词

您对如何执行此操作有很好的参考吗?已知算法?我发现了许多关于文本对齐的链接,但它们似乎更多的是在句子级别而不是在单词级别......

任何其他关于如何自动检查翻译是否一致的建议将不胜感激!

提前致谢。

4

3 回答 3

3

GIZA++是一个免费的(特别是 GPL 许可的)字对齐工具。我训练了其他答案中提到的著名 IBM 模型,以及其他统计模型。

您可以从Google Code 的 GIZA++ 站点下载它,在GIZA++ Apertium上可以找到其用法的简要介绍。它归结为这个过程

  1. 创建你的平行语料库,句子对齐(你似乎已经有了)
  2. 应用 GIZA++ 自带的plain2snt工具,提取 GIZA++ 格式的单词列表和句子列表
  3. (可选——仅用于某些模型:)使用该mkcls工具生成单词类(也包括在内)
  4. 运行实际的单词对齐工具GIZA++。您可以使用各种可选配置设置来确定生成的模型的类型。

在执行此操作之前,您必须通过运行从源代码构建工具make。该代码是用 C++ 编写的,并且可以很好地与最新的 GCC 版本一起编译。

最后的几点说明:

  • 每个单词都有不止一种可能的翻译;您不应该仅仅因为同一个词在另一个文本中的翻译不同,就认为在一个文本中找到的特定翻译必然是错误的假设;

  • 一个词可以翻译成(不一定是连续的)几个词的序列,反之亦然。有些词根本没有翻译;

  • GIZA++ 是一种近似正确词对齐的统计工具;它生成的许多对齐方式都是有问题的或不正确的。

于 2012-09-10T06:15:24.973 回答
2

这是一个非常标准的统计机器翻译问题,称为“单词对齐”。
IBM 的研究人员开发了许多基于 EM 集群的模型,我认为它们是当今开发的大多数其他冷却器模型的基础。
谷歌搜索“ibm 单词对齐模型”以查找 IBM 模型 1 到 5。
这个演示文稿 - http://www.stanford.edu/class/cs224n/handouts/cs224n-lecture-05-2011-MT.pdf似乎是一个开始的好地方。

于 2012-09-03T18:29:51.690 回答
0

你在单词之间使用空格吗?无论您使用什么字符,您都可以查看sliceLinux 中的命令。它使您能够过滤空格和其他字符之间的单词。

于 2012-09-03T13:55:55.160 回答