OpenNMT 是哈佛大学 NLP 研究小组开源的产品级翻译工具,在其官网上有多种语言代码,有基于 Torch/Pytorch,也有基于tensorflow的。该框架一经发布便被谷歌采用,是迄今为止最能代表神经机器翻译前沿技术的开源工具之一。
本文主要对pytorch的版本进行编译和实践。
从其官网https://github.com/OpenNMT/OpenNMT-py上介绍:pytorch版本的opennmt具有多种功能:如包括基本的文本翻译、自动摘要、语音转文本和图像转文本等。
The following OpenNMT features are implemented:
- data preprocessing
- Inference (translation) with batching and beam search
- Multiple source and target RNN (lstm/gru) types and attention (dotprod/mlp) types
- TensorBoard/Crayon logging
- Source word features
- Pretrained Embeddings
- Copy and Coverage Attention
- Image-to-text processing
- Speech-to-text processing
- "Attention is all you need"
- Inference time loss functions.
Beta Features (committed):
- multi-GPU
- Structured attention
- [Conv2Conv convolution model]
- SRU "RNNs faster than CNN" paper
OpenNMT的框架主要是序列到序列的模型(seq2seq),因此可以实现多种任务的快速变换。
其原理架构如下:
2、编译过程
注:pytorch版本的opennmt需要用到torch text库,但是通过pip安装的text版本较老,会出现很多的BUG,因此需要从git库上取最新代码进行安装。
(1) 英语转德语的翻译实践
(2) 图像到文本识别实践(从其文档中进行编译学习http://opennmt.net/OpenNMT-py/im2text.html)
测试两个图片分别为:
可见其结果还是非常好的。