NLP開源:斯坦福的NMT代碼庫和哈佛的NMT工具包
機器之心報道
斯坦福大學NLP組開放神經機器翻譯代碼庫
發布地址:http://nlp.stanford.edu/projects/nmt/
參與成員:
Christopher D. Manning(斯坦福大學計算機科學和語言學教授)
Minh-Thang Luong(斯坦福博士,Google Brain 研究科學家)
Abigail See(斯坦福大學計算機科學在讀博士)
Hieu Pham
代碼庫
對於混合 NMT(hybrid NMT),請使用這個代碼庫並且引用:
代碼庫:https://github.com/lmthang/nmt.hybrid
論文:使用混合詞-字元模型實現開放辭彙神經機器翻譯(Achieving Open Vocabulary Neural Machine Translation with Hybrid Word-Character Models)
摘要:幾乎之前所有的神經機器翻譯(NMT)使用的辭彙都受限,隨後可能用一個方法來修補未知的單詞。本論文展示了一個全新的能實現開放辭彙神經機器翻譯(open vocabulary NMT)的詞-字元解決方法。我們建立了一個混合的系統,能夠實現大部分的詞級(word level)翻譯,並可查閱罕見詞的字母組成。我們字元級的循環神經網路能計算源詞的表徵,並能在需要時恢復未知的目標詞。這種混合的方法還有一個雙重優點是,與基於字元的網路相比,它更快且更容易訓練;同時,它不像基於詞的模型那樣會產生未知的詞。在 WMT" 15 英語-捷克語的翻譯任務上,這種混合方法還實現了一個額外的+ 2.1 BLEU 分的提升——超過已經能處理未知單詞的模型 11.4 BLEU 分。我們的最佳系統在這個任務上達到了新的最佳表現:20.7 BLEU 分。我們證明了我們的字元模型不僅能成功地學習生成形式很好的捷克語詞(這是一種辭彙複雜高度屈折的語言),還能為英語源詞建立了正確的表徵。
對於通用的基於注意的 NMT(general attention-based NMT),請引用以下論文:
代碼庫:https://github.com/lmthang/nmt.hybrid
預處理的數據
WMT"15 英語-捷克語數據(大)
訓練集(包含 1580 萬個句子對)
英語訓練集(train.en):http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/train.en
捷克語訓練集(train.cs):http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/train.cs
測試集:
newstest2013.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/newstest2013.en
newstest2013.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/newstest2013.cs
newstest2014.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/newstest2014.en
newstest2014.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/newstest2014.cs
newstest2015.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/newstest2015.en
newstest2015.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/newstest2015.cs
辭彙庫(最常見的詞):
vocab.1K.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.1K.en
vocab.1K.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.1K.cs
vocab.10K.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.10K.en
vocab.10K.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.10K.cs
vocab.20K.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.20K.en
vocab.20K.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.20K.cs
vocab.50K.en:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.50K.en
vocab.50K.cs:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.50K.cs
詞典(從對齊的數據中提取出來的,dict.en-cs):http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/dict.en-cs
字元庫:
vocab.char.200.en (http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.char.200.en)
vocab.char.200.cs (http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.char.200.cs)
註:我們的論文《Achieving Open Vocabulary Neural Machine Translation with Hybrid Word-Character Models》中使用了這個數據集。
WMT"14 英語-德語數據(中)
訓練集(包含 450 萬個句子對)
英語訓練集(train.en):http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/train.en
德語訓練集:(train.de):http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/train.de
測試集:
newstest2012.en:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2012.en
newstest2012.de:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2012.de
newstest2013.en:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2013.en
newstest2013.de:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2013.de
newstest2014.en:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2014.en
newstest2014.de:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2014.de
newstest2015.en:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2015.en
newstest2015.de:http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/newstest2015.de
辭彙庫(最常見的 5 萬個詞):
vocab.50K.en (http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/vocab.50K.en)
vocab.50K.de (http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/vocab.50K.de)
詞典(從對齊的數據中提取出來的,dict.en-de):http://nlp.stanford.edu/projects/nmt/data/wmt14.en-de/dict.en-de
註:我們的論文《Effective Approaches to Attention-based Neural Machine Translation》中使用了這個數據集。另外,因為歷史上的原因,我們對合成詞(compound words)做了拆分。比如,rich-text format --> rich ##AT##-##AT## text format.
IWSLT"15 英語-越南語數據(小)
訓練集(包含 13.3 萬個句子對)
英語訓練集(train.en):http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/train.en
越南語訓練集(train.vi):http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/train.vi
測試集:
tst2012.en:http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/tst2012.en
tst2012.vi:http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/tst2012.vi
tst2013.en:http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/tst2013.en
tst2013.vi:http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/tst2013.vi
辭彙庫(最常見的 5 萬個詞):
vocab.en:http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/vocab.en
vocab.vi:http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/vocab.vi
詞典(從對齊的數據中提取出來的,dict.en-vi):http://nlp.stanford.edu/projects/nmt/data/iwslt15.en-vi/dict.en-vi
註:我們的論文《Stanford Neural Machine Translation Systems for Spoken Language Domains》中使用了這個數據集
預訓練的模型
我們放出了預訓練好的模型,可以直接通過我們的 Matlab 代碼使用。
註:要使用這些模型,必須要一個 GPU。如果想要這些模型在 CPU 上可用,請考慮使用這個腳本:https://github.com/stanfordnlp/nmt/blob/master/code/misc/model2cpu.m
WMT"15 英語-捷克語混合模型(hybrid models)
我們訓練了 4 個具有同樣架構的模型(全局注意、雙線性形式、dropout、兩層字元級模型):
1. Model 1:http://nlp.stanford.edu/projects/nmt/models/wmt15.en-cs/model1.mat
2. Model 2 :http://nlp.stanford.edu/projects/nmt/models/wmt15.en-cs/model2.mat
3. Model 3:http://nlp.stanford.edu/projects/nmt/models/wmt15.en-cs/model3.mat
4. Model 4:http://nlp.stanford.edu/projects/nmt/models/wmt15.en-cs/model4.mat
WMT"14 英語到德語基於注意的模型(attention-based models)
1. 全局注意、點積:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/globalAttn-dotProduct.mat
2. 全局注意、點積、dropout:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/globalAttn-dotProduct-dropout.mat
3. 全局注意、雙線性形式、dropout:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/globalAttn-bilinear-dropout.mat
4. 局部注意(單調)、雙線性形式:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/localAttnMono-bilinear.mat
5. 局部注意(單調)、雙線性形式、dropout:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/localAttnMono-bilinear-dropout.mat
6. 局部注意(預測)、點積、dropout:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/localAttnPred-dotProduct-dropout.mat
7. 局部注意(預測)、雙線性形式:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/localAttnPred-bilinear.mat
8. 局部注意(預測)、雙線性形式、dropout:http://nlp.stanford.edu/projects/nmt/models/wmt14.en-de/localAttnPred-bilinear-dropout.mat
IWSLT"15 英語-越南語基於注意的模型(attention-based models)
1. 全局注意、雙線性形式、dropout:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/globalAttn-bilinear-dropout.mat
2. 全局注意、concatenate :http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/globalAttn-concat.mat
3. 局部注意(預測)、點積、dropout:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnMono-dotProduct-dropout.mat
4. 局部注意(單調)、雙線性形式、dropout:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnMono-bilinear-dropout.mat
5. 局部注意(單調)、雙線性形式:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnMono-bilinear.mat
6. 局部注意(單調)、concatenate、dropout :http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnMono-concat-dropout.mat
7. 局部注意(預測)、點積、dropout:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnPred-dotProduct-dropout.mat
8. 局部注意(預測)、雙線性形式:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnPred-bilinear.mat
9. 局部注意(預測)、concatenate、dropout:http://nlp.stanford.edu/projects/nmt/models/iwslt15.en-vi/localAttnPred-concat-dropout.mat
哈佛大學NLP組開源神經機器翻譯工具包OpenNMT:已達到生產可用水平
神經機器翻譯是近段時間以來推動機器翻譯發展的主要推動力。今天,哈佛大學自然語言處理研究組(Harvard NLP)宣布開源了其研發的神經機器翻譯系統 OpenNMT,該系統使用了 Torch 數學工具包。該研究組在官網上表示該系統已經達到生產可用的水平(industrial-strength)。
官網:http://opennmt.net
代碼:https://github.com/opennmt/opennmt
演示:https://demo-pnmt.systran.net
Docker 容器:https://hub.docker.com/r/harvardnlp/opennmt
OpenNMT 可以像主要的翻譯服務提供商的已投入生產的系統那樣使用。該系統簡單易用,易於擴展,同時也能維持效率和當前最佳的翻譯準確度。
其特性包括:
簡單的通用型介面,僅需要源文件和目標文件;
為高性能 GPU 訓練進行了速度和內存優化;
可以提升翻譯性能的最新研究的特性;
有多個語言對的預訓練好的模型(即將到來);
允許其它序列生成任務的擴展,比如歸納總結和圖像到文本生成。
安裝
OpenNMT 僅需要一次 vanilla torch/cutorch 安裝。它要使用 nn、nngraph 和 cunn。有(CUDA)Docker 容器可選。
快速啟動
OpenNMT 包含三條指令:
1)預處理數據
th preprocess.lua -train_src data/src-train.txt -train_tgt data/tgt-train.txt -valid_src data/src-val.txt -valid_tgt data/tgt-val.txt -save_data data/demo
2)訓練模型
th train.lua -data data/demo-train.t7 -save_model model
3)翻譯句子
th translate.lua -model model_final.t7 -src data/src-test.txt -output pred.txt
查看指南了解更多:http://opennmt.github.io/Guide
研究
其中主要的模型基於論文 Neural Machine Translation by Jointly Learning to Align and Translate Bahdanau et al. ICLR 2015 和 Effective Approaches to Attention-based Neural Machine Translation, Luong et al. EMNLP 2015。
在基本模型上,還有大量可選項,這都要感謝 SYSTRAN(http://www.systransoft.com/)的出色工作。特別地,下面是一些實現的功能:
Effective Approaches to Attention-based Neural Machine Translation . Luong et al., EMNLP 2015.
Character-based Neural Machine Translation. Costa-Jussa and Fonollosa, ACL 2016.
Compression of Neural Machine Translation Models via Pruning . See et al., COLING 2016.
Sequence-Level Knowledge Distillation . Kim and Rush., EMNLP 2016.
Deep Recurrent Models with Fast Forward Connections for Neural Machine Translation . Zhou et al, TACL 2016.
Guided Alignment Training for Topic-Aware Neural Machine Translation . Chen et al., arXiv:1607.01628.
Linguistic Input Features Improve Neural Machine Translation . Senrich et al., arXiv:1606.02892
聲明
OpenNMT 的實現使用了以下項目的代碼:
Andrej Karpathy 的 char-rnn:https://github.com/karpathy/char-rnn
Wojciech Zaremba 的 LSTM:https://github.com/wojzaremba/lstm
Element RNN 庫:https://github.com/Element-Research/rnn
※文本分析初學者教程:用Python實現垃圾郵件過濾器
※重磅|自動駕駛計算機視覺研究綜述:難題、數據集與前沿成果
※英特爾深度學習產品綜述:如何佔領人工智慧市場
※資源|生成對抗網路及其變體的論文匯總
※三張圖讀懂機器學習:基本概念、五大流派與九種常見演算法
TAG:機器之心 |
※劍橋大學:SGNMT—一個用於新模型和搜索策略快速原型設計的靈活NMT解碼平台
※結合通用和專用NMT的優勢,CMU為NMT引入「語境參數生成器」
※EMNLP 2018 | Google AI提出「透明注意力」機制,實現更深層NMT模型
※Github 項目推薦 用PyTorch 實現 OpenNMT
※如何確定NMT測到的就是Ca2+流
※AI翻譯引進NMT技術,就能精準識別「語境」嗎?
※研究揭示RNA修飾酶Dnmt2在精子獲得性遺傳中的重要作用
※跟北師大老師一起了解NMT非損傷微測技術