翻译句对挖掘

双语文本挖掘描述了在单语语料库中寻找平行(翻译)句子对的过程。例如,你有一组英语句子

This is an example sentences.
Hello World!
My final third sentence in this list.

和一组德语句子

Hallo Welt!
Dies ist ein Beispielsatz.
Dieser Satz taucht im Englischen nicht auf.

在这里,你希望找到英语和德语这两组语言之间所有的翻译对。

正确的(两个)翻译是

Hello World!    Hallo Welt!
This is an example sentences.   Dies ist ein Beispielsatz.

通常你会将此方法应用于大型语料库,例如,你想要在英文维基百科和中文维基百科中找到所有翻译后的句子。

基于裕度的挖掘

我们遵循 Artetxe 和 Schwenk, 第 4.3 节中的设置,以在两个数据集中寻找翻译句子

  1. 首先,我们将所有句子编码为其对应的嵌入。如我们的论文所示,LaBSE 是目前双语文本挖掘的最佳方法。该模型已集成到 Sentence-Transformers 中

  2. 一旦我们有了所有的嵌入,我们就会在两个方向上找到所有句子的 k 个最近邻句子。k 的典型选择在 4 到 16 之间。

  3. 然后,我们使用第 4.3 节中提到的公式为所有可能的句子组合评分。

  4. 得分最高的句子对最可能是翻译句对。请注意,得分可以大于 1。通常你需要找到一个截止值,低于该阈值的句对将被忽略。为了获得高质量结果,大约 1.2 - 1.3 的阈值效果相当好。

示例

  • bucc2018.py - 这个脚本包含一个关于 BUCC 2018 共享任务的示例,用于查找平行句子。由于我们知道两个语料库中有哪些句子是平行的,因此该数据集可用于评估不同的策略。该脚本挖掘平行句子,然后打印出能获得最高 F1 分数的最佳阈值。

  • bitext_mining.py - 这个文件读取两个文本文件(每行一个句子),并将平行句子输出到 *parallel-sentences-out.tsv.gz。

  • 用于机器翻译的域内数据选择 - 这篇论文还使用 Sentence Transformers 生成/选择机器翻译系统的域内平行数据——利用单语文本。