基于Sentence-Transformers的平行句对挖掘技术详解
什么是平行句对挖掘
平行句对挖掘(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.
技术实现原理
基于Sentence-Transformers的平行句对挖掘主要采用以下技术流程:
1. 句子嵌入编码
首先使用预训练的多语言句子嵌入模型(如LaBSE)将所有句子编码为向量表示。LaBSE(Language-agnostic BERT Sentence Embedding)是目前在平行句对挖掘任务上表现最好的模型之一,它能将不同语言的句子映射到统一的语义空间中。
2. 双向K近邻搜索
对两种语言的所有句子嵌入执行双向K近邻搜索:
- 对语言A的每个句子,在语言B中找出K个最相似的句子
- 对语言B的每个句子,在语言A中找出K个最相似的句子
通常K值设置在4到16之间,这个步骤可以大大减少后续计算的候选对数量。
3. 相似度评分
采用Artetxe和Schwenk提出的评分公式对候选句对进行评分。这个评分综合考虑了双向相似度,公式为:
score = (cos_sim(a,b) + 1) / 2 + (cos_sim(b,a) + 1) / 2
其中cos_sim(a,b)表示句子a在语言A中的嵌入与句子b在语言B中的嵌入的余弦相似度。
4. 阈值筛选
根据评分结果筛选高质量的平行句对。通常设置1.2-1.3的阈值可以获得较高质量的结果。
实际应用案例
BUCC2018评测任务
BUCC2018是一个标准的平行句对挖掘评测任务,提供了已知的平行句对作为测试集。通过这个任务可以评估不同挖掘策略的效果。实现脚本会输出使F1分数最大化的最优阈值。
通用平行句对挖掘
给定两个文本文件(每行一个句子),该实现可以自动挖掘出平行句对并输出到压缩文件中。这个流程可以应用于:
- 多语言百科全书的平行句对挖掘
- 多语言新闻语料对齐
- 构建自定义的机器翻译训练数据
机器翻译领域数据选择
相关研究还利用Sentence-Transformers从单语文本中生成/选择领域特定的平行数据,用于提升机器翻译系统在特定领域的表现。
技术优势
- 高效性:通过嵌入表示和近似最近邻搜索,可以处理大规模语料
- 跨语言能力:基于多语言预训练模型,支持多种语言对
- 无需监督:完全无监督的方法,不需要任何平行语料作为训练数据
- 高质量结果:通过双向验证和评分机制,确保挖掘出的平行句对质量
这项技术为获取大规模平行语料提供了一种高效、自动化的解决方案,特别适合资源稀缺语言对的平行数据构建。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考