Understanding, Building, And Evaluating Models For Context Aware Conditional Natural Language Generation