翻译句对挖掘

双语文本挖掘 (Bitext mining) 是指在单语语料库中寻找平行(翻译)句对的过程。例如,您有一组英语句子

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. 首先,我们将所有句子编码为各自的嵌入 (embedding)。如 我们的论文 所示,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*。

  • 用于机器翻译的领域内数据选择 (In-domain Data Selection for MT) - 这篇论文也采用了 Sentence Transformers 来为机器翻译系统生成/选择领域内的平行数据——使用的是单语文本。