1. A method of resolving both semantic and syntactic ambiguity, comprising: generating, by a computer, combinations of semantic interpretation choices for each of at least two alternative syntactic parses of a natural language expression or part thereof; and selecting, by the computer, one or more best combinations from those generated for all of the alternative syntactic parses.