Generating Natural Language With Semantic And Syntactic Generalization