nmt-keras-master

所属分类:多国语言处理
开发工具:Python
文件大小:2155KB
下载次数:0
上传日期:2020-06-21 00:54:12
上 传 者魏强2310
说明:  nmt-keras-master人工智能实现的机器翻译
(Machine translation based on NMT keras master artificial intelligence)

文件列表:
.readthedocs.yml (462, 2020-06-17)
.travis.yml (2476, 2020-06-17)
LICENSE (1070, 2020-06-17)
__init__.py (0, 2020-06-17)
config.py (24092, 2020-06-17)
data_engine (0, 2020-06-17)
data_engine\__init__.py (23, 2020-06-17)
data_engine\prepare_data.py (14612, 2020-06-17)
data_engine\rebuild_dataset_from_config.py (1850, 2020-06-17)
demo-web (0, 2020-06-17)
demo-web\__init__.py (0, 2020-06-17)
demo-web\config_online.py (2249, 2020-06-17)
demo-web\sample_server.py (31310, 2020-06-17)
docs (0, 2020-06-17)
docs\Makefile (7627, 2020-06-17)
docs\source (0, 2020-06-17)
docs\source\conf.py (9630, 2020-06-17)
docs\source\configuration.rst (15422, 2020-06-17)
docs\source\data_engine.rst (323, 2020-06-17)
docs\source\help.rst (862, 2020-06-17)
docs\source\index.rst (2074, 2020-06-17)
docs\source\modules.rst (83, 2020-06-17)
docs\source\nmt_keras.rst (569, 2020-06-17)
docs\source\requirements.rst (1351, 2020-06-17)
docs\source\resources.rst (7183, 2020-06-17)
docs\source\tutorial.rst (484, 2020-06-17)
docs\source\usage.rst (2853, 2020-06-17)
docs\source\utils.rst (800, 2020-06-17)
examples (0, 2020-06-17)
examples\EuTrans (0, 2020-06-17)
examples\EuTrans\dev.en (4448, 2020-06-17)
examples\EuTrans\dev.es (5256, 2020-06-17)
examples\EuTrans\mapping.es_en.pkl (16772, 2020-06-17)
examples\EuTrans\test.en (160199, 2020-06-17)
examples\EuTrans\test.es (188707, 2020-06-17)
examples\EuTrans\training.en (437666, 2020-06-17)
... ...

# NMT-Keras [![Documentation](https://readthedocs.org/projects/nmt-keras/badge/?version=latest)](https://nmt-keras.readthedocs.io) [![Build Status](https://travis-ci.org/lvapeab/nmt-keras.svg)](https://travis-ci.org/lvapeab/nmt-keras) [![Open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lvapeab/nmt-keras/blob/master/examples/tutorial.ipynb) ![Compatibility](https://img.shields.io/badge/Python-3.7-blue.svg) [![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/lvapeab/nmt-keras/blob/master/LICENSE) Neural Machine Translation with Keras. Library documentation: [nmt-keras.readthedocs.io](https://nmt-keras.readthedocs.io) ## Attentional recurrent neural network NMT model ![alt text](examples/documentation/attention_nmt_model.png "RNN NMT") ## Transformer NMT model ![alt text](examples/documentation/transformer_nmt_model.png "Transformer NMT") # ## Features (in addition to the full Keras cosmos): . * :heavy_exclamation_mark: Multi-GPU training (only for Tensorflow). * [Transformer model](https://arxiv.org/abs/1706.03762). * [Tensorboard integration](https://github.com/lvapeab/nmt-keras/blob/master/examples/documentation/tensorboard_integration.md). * Online learning and Interactive neural machine translation (INMT). See [the interactive NMT branch](https://github.com/lvapeab/nmt-keras/tree/interactive_NMT). * Attention model over the input sequence of annotations. - Supporting [Bahdanau (Add)](https://arxiv.org/abs/1409.0473) [Luong (Dot)](https://arxiv.org/abs/1508.04025) attention mechanisms. - Also supports double stochastic attention (Eq. 14 from [arXiv:1502.03044](https://arxiv.org/pdf/1502.03044.pdf)) * Peeked decoder: The previously generated word is an input of the current timestep. * Beam search decoding. * Ensemble decoding ([sample_ensemble.py](https://github.com/lvapeab/nmt-keras/blob/master/sample_ensemble.py)). - Featuring length and source coverage normalization ([reference](https://arxiv.org/abs/1609.08144)). * Translation scoring ([score.py](https://github.com/lvapeab/nmt-keras/blob/master/sample_ensemble.py)). * Model averaging ([utils/model_average.py](https://github.com/lvapeab/nmt-keras/blob/master/utils/average_models.py)). * Support for GRU/LSTM networks: - Regular GRU/LSTM units. - [Conditional](https://arxiv.org/abs/1703.04357) GRU/LSTM units in the decoder. - Multilayered residual GRU/LSTM networks (and their Conditional version). * [Label smoothing](https://arxiv.org/abs/1512.00567). * N-best list generation (as byproduct of the beam search process). * Unknown words replacement (see Section 3.3 from [this paper](https://arxiv.org/pdf/1412.2007v2.pdf)) * Use of pretrained ([Glove](http://nlp.stanford.edu/projects/glove/) or [Word2Vec](https://code.google.com/archive/p/word2vec/)) word embedding vectors. * MLPs for initializing the RNN hidden and memory state. * [Spearmint](https://github.com/HIPS/Spearmint) [wrapper](https://github.com/lvapeab/nmt-keras/tree/master/meta-optimizers/spearmint) for hyperparameter optimization. * [Client-server](https://github.com/lvapeab/nmt-keras/tree/master/demo-web) architecture for web demos: - Regular NMT. - [Interactive NMT](https://github.com/lvapeab/nmt-keras/tree/interactive_NMT). - [Check out the demo!](http://casmacat.prhlt.upv.es/inmt) ## Installation Assuming that you have [pip](https://en.wikipedia.org/wiki/Pip_(package_manager)) installed and updated (>18), run: ```bash git clone https://github.com/lvapeab/nmt-keras cd nmt-keras pip install -e . ``` for installing the library. ### Requirements NMT-Keras requires the following libraries: - [Our version of Keras](https://github.com/MarcBS/keras) (Recommended v. 2.0.7 or newer). - [Multimodal Keras Wrapper](https://github.com/lvapeab/multimodal_keras_wrapper) (v. 2.0 or newer). ([Documentation](http://marcbs.github.io/staged_keras_wrapper/) and [tutorial](http://marcbs.github.io/multimodal_keras_wrapper/tutorial.html)). For accelerating the training and decoding on CUDA GPUs, you can optionally install: - [CuDNN](https://developer.nvidia.com/cudnn). - [CuPy](https://github.com/cupy/cupy). For evaluating with additional metrics (Meteor, TER, etc), you can use the [Coco-caption evaluation package](https://github.com/lvapeab/coco-caption/tree/master/pycocoevalcap/) and set `METRICS='coco'` in the `config.py` file. This package requires `java` (version 1.8.0 or newer). ## Usage ### Training 1) Set a training configuration in the `config.py` script. Each parameter is commented. See the [documentation file](https://github.com/lvapeab/nmt-keras/blob/master/examples/documentation/config.md) for further info about each specific hyperparameter. You can also specify the parameters when calling the `main.py` script following the syntax `Key=Value` 2) Train!: `` python main.py `` ### Decoding Once we have our model trained, we can translate new text using the [sample_ensemble.py](https://github.com/lvapeab/nmt-keras/blob/master/sample_ensemble.py) script. Please refer to the [ensembling_tutorial](https://github.com/lvapeab/nmt-keras/blob/master/examples/documentation/ensembling_tutorial.md) for more details about this script. In short, if we want to use the models from the first three epochs to translate the `examples/EuTrans/test.en` file, just run: ```bash python sample_ensemble.py --models trained_models/tutorial_model/epoch_1 \ trained_models/tutorial_model/epoch_2 \ --dataset datasets/Dataset_tutorial_dataset.pkl \ --text examples/EuTrans/test.en ``` ### Scoring The [score.py](https://github.com/lvapeab/nmt-keras/blob/master/score.py) script can be used to obtain the (-log)probabilities of a parallel corpus. Its syntax is the following: ``` python score.py --help usage: Use several translation models for scoring source--target pairs [-h] -ds DATASET [-src SOURCE] [-trg TARGET] [-s SPLITS [SPLITS ...]] [-d DEST] [-v] [-c CONFIG] --models MODELS [MODELS ...] optional arguments: -h, --help show this help message and exit -ds DATASET, --dataset DATASET Dataset instance with data -src SOURCE, --source SOURCE Text file with source sentences -trg TARGET, --target TARGET Text file with target sentences -s SPLITS [SPLITS ...], --splits SPLITS [SPLITS ...] Splits to sample. Should be already includedinto the dataset object. -d DEST, --dest DEST File to save scores in -v, --verbose Be verbose -c CONFIG, --config CONFIG Config pkl for loading the model configuration. If not specified, hyperparameters are read from config.py --models MODELS [MODELS ...] path to the models ``` ### Advanced features Other features such as online learning or interactive NMT protocols are implemented in the [interactiveNMT](https://github.com/lvapeab/nmt-keras/tree/interactive_NMT) branch. ## Resources * [examples/documentation/nmt-keras_paper.pdf](https://github.com/lvapeab/nmt-keras/blob/master/examples/documentation/nmt-keras_paper.pdf) contains a general overview of the NMT-Keras framework. * In [examples/documentation/neural_machine_translation.pdf](https://github.com/lvapeab/nmt-keras/blob/master/examples/documentation/neural_machine_translation.pdf) you'll find an overview of an attentional NMT system. * In the [examples](https://github.com/lvapeab/nmt-keras/blob/master/examples/) folder you'll find 2 colab notebooks, explaining the basic usage of this library: * An introduction to a complete NMT experiment: [![Open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lvapeab/nmt-keras/blob/master/examples/tutorial.ipynb) * A dissected NMT model: [![Open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lvapeab/nmt-keras/blob/master/examples/modeling_tutorial.ipynb) * In the [examples/configs](https://github.com/lvapeab/nmt-keras/blob/master/examples/configs) folder you'll find two examples of configs for larger models. ## Citation If you use this toolkit in your research, please cite: ``` @article{nmt-keras:2018, journal = {The Prague Bulletin of Mathematical Linguistics}, title = {{NMT-Keras: a Very Flexible Toolkit with a Focus on Interactive NMT and Online Learning}}, author = {\'{A}lvaro Peris and Francisco Casacuberta}, year = {2018}, volume = {111}, pages = {113--124}, doi = {10.2478/pralin-2018-0010}, issn = {0032-6585}, url = {https://ufal.mff.cuni.cz/pbml/111/art-peris-casacuberta.pdf} } ``` NMT-Keras was used in a number of papers: * [Online Learning for Effort Reduction in Interactive Neural Machine Translation](https://arxiv.org/abs/1802.03594) * [Adapting Neural Machine Translation with Parallel Synthetic Data](http://www.statmt.org/wmt17/pdf/WMT14.pdf) * [Online Learning for Neural Machine Translation Post-editing](https://arxiv.org/pdf/1706.03196.pdf) ### Acknowledgement Much of this library has been developed together with [Marc Bolanos](https://github.com/MarcBS) ([web page](http://www.ub.edu/cvub/marcbolanos/)) for other sequence-to-sequence problems. To see other projects following the same philosophy and style of NMT-Keras, take a look to: [TMA: Egocentric captioning based on temporally-linked sequences](https://github.com/MarcBS/TMA). [VIBIKNet: Visual question answering](https://github.com/MarcBS/VIBIKNet). [ABiViRNet: Video description](https://github.com/lvapeab/ABiViRNet). [Sentence SelectioNN: Sentence classification and selection](https://github.com/lvapeab/sentence-selectioNN). [DeepQuest: State-of-the-art models for multi-level Quality Estimation](https://github.com/sheffieldnlp/deepQuest). ### Warning! The `Theano` backend is not tested anymore, although it should work. There is a [known issue](https://github.com/Theano/Theano/issues/5994) with the `Theano` backend. When running `NMT-Keras`, it will show the following message: ``` [...] raise theano.gof.InconsistencyError("Trying to reintroduce a removed node") InconsistencyError: Trying to reintroduce a removed node ``` It is not a critical error, the model keeps working and it is safe to ignore it. However, if you want the message to be gone, use the Theano flag `optimizer_excluding=scanOp_pushout_output`. ## Contact Alvaro Peris ([web page](http://lvapeab.github.io/)): lvapeab@prhlt.upv.es

近期下载者

相关文件


收藏者