翻译句子挖掘

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

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 and Schwenk, Section 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

  • MT 的领域内数据选择 - 本文也使用了 Sentence Transformers 来生成/选择机器翻译系统的领域内平行数据——使用单语文本。