Hi
I think the reason your model does not learn to end sentences properly is that you are using a greedy decoder. I think if you used beam search instead for decoding, you will have far better results.
You can learn more from this video
https://www.youtube.com/watch?v=RLWuzLLSIgw