Harnessing Knowledge and Reasoning for Human-Like Natural Language Generation: A Brief Review