para-nmt-50m
jwieting/para-nmt-50m加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2017 年,卡内基梅隆大学的研究者 John Wieting 和 Kevin Gimpel 发表了一篇在当时引发广泛讨论的论文:《Pushing the Limits of Paraphrastic Sentence Embeddings with Millions of Machine Translations》。这篇论文提出了一个核心洞察——大量高质量的机器翻译结果,可以成为训练"句子语义相似度模型"的绝佳材料。
具体来说,如果你手头有大量英译法、英译德、英译西班牙语的平行语料,把这些翻译对反过来看,就得到了一堆"同一语义的不同英文表达方式"——即英语改写句对(paraphrase pairs)。利用这些改写对训练神经网络,可以让模型学会把意思相近的句子映射到向量空间中的相近位置。这比人工标注改写数据便宜得多,而且规模可以做到数千万级别。
这个开源项目就是该论文的官方代码实现。
项目使用的核心技巧是反向翻译(Back-Translation)。当时研究人员收集了 5000 万条 WMT 机器翻译数据,将非英语的目标语言回译成英语,自动获得了大量语义相近但表述不同的英语句对。这种用机器翻译数据做数据增强的方法,在当时的 NLP 领域属于前沿探索。
项目实现了多种句子嵌入模型,性能最佳的是 BiLSTM-Average 模型(双向 LSTM 对句子中每个词的词向量做时间步平均):
所有模型基于 Theano + Lasagne 实现,在当时是主流的深度学习框架组合。
项目提供了可直接下载使用的预训练模型(通过 setup.sh 自动下载),包括 600d Trigram-Word 和 4096d BiLSTM-Average 两个版本,均在维基百科语料上进行了训练。
项目结构清晰,主要文件位于 main/ 目录:
| 文件 | 作用 |
|---|---|
train.py | 核心训练脚本,支持多种模型架构 |
evaluate.py | 在标准数据集上评测模型 |
example.py | 简短用法示例 |
mixed_models.py | 多路融合模型实现 |
lasagne_layers.py | 自定义 Lasagne 层 |
上手流程也很直接:setup.sh 下载预训练模型,demo.sh 加载模型并测试句子相似度。
尽管技术已过时,para-nmt-50m 在 NLP 研究史上具有重要地位:
该项目 105 颗 stars 的规模,也反映了学术代码库通常比应用框架更小众的现实。
para-nmt-50m 是一个学术导向的 NLP 预训练模型项目,核心技术是利用机器翻译数据做反向翻译训练句子嵌入模型。项目在 2017 年属于前沿工作,但技术栈(Python 2.7 + Theano)已严重过时,缺乏现代工程化支持。对于新项目,建议直接使用 Sentence-BERT(基于 BERT)等现代模型替代。