And please give a description or some readings about how the algorithm works.
You can start by reading the most recent description paper:
For OpenNMT-py specifically, some additional references are shown in the docs (not necessarily exhaustive):
https://opennmt.net/OpenNMT-py/ref.html
okay, thank you so much!