1. A method of semantically parsing a natural language expression, comprising: constructing, by a processor, a first ambiguous meaning representation for a first natural language expression; and fully or partially disambiguating, by a processor, the first meaning representation by specializing it by replacing a first semantic descriptor in it by a second, more specific semantic descriptor.