Generating event descriptions under syntactic and semantic constraints