翻译句对挖掘

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

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 通过单语文本生成/选择用于机器翻译系统的领域内平行数据。