First I suggest you to read the following material to understand what NMT is and what are the limitations:
If you want to get serious about NMT, it is important to learn how the model works in order to understand its visible behavior (i.e. good or bad translation).
Regarding the tutorial applied on the WMT15 dataset, I identified 2 key points for improvements:
- Use a larger model
- Apply a subword tokenization
For 1., the tutorial used the default settings which define a relatively small neural network. Usually, people train a larger one with at least these training options:
th train.lua [...] -encoder_type brnn -layers 4 -rnn_size 800
You should also consider training for more epochs than the default (see the training options).
For 2., search online and in the documentation for the BPE tokenization. It’s a technique used to split words which increases the model performance. It is also critical to apply the same tokenization on the data you used for training the system.
I think you have already a lot to lean from the above. Good luck!