1. A method, in a data processing system, for rating difficulty of a question, the method comprising: receiving an input question; generating one or more candidate answers from a corpus of knowledge using a pipeline of software engines, wherein the pipeline of software engines generates a plurality of features extracted from the question, the one or more candidate answers, or the corpus of knowledge; and generating a question difficulty score based on the plurality of features using a machine learning model, wherein the machine learning model maps features to assigned weights for scaling the difficulty score.