1. A computer implemented method of generating answers to natural language questions, said method comprising: receiving said natural language question; processing said question using a plurality of natural language processing techniques to obtain a plurality of searchable components; conducting a first search in a corpus based on said plurality of searchable components to obtain a plurality of relevant documents; analyzing said plurality documents to generate a plurality of candidate answers; after said candidate answers are generated, retrieving a plurality of supporting passages from said corpus based on said candidate answers; analyzing said candidate answers based on grammatical and semantic structures in said query and in said retrieved supporting passages; generating a confidence score for each analyzed candidate answer, said confidence score based on a ratio of the number of query terms present in a supporting passage with a total number of the searchable components of the received question; and outputting said candidate answers and associated confidence scores.