1. A method comprising: responsive to receiving a query item, identifying a first semantic class collection from a collection of web pages, the first semantic class collection comprising at least one raw semantic class, each raw semantic class containing the query item; creating a second semantic class collection by removing from the first semantic class collection, one or more items with a semantic class frequency less than a predetermined threshold, wherein the semantic class frequency is the number of times an item of the one or more items appears in a particular semantic class, the second semantic class collection comprising the semantic classes remaining after the removing from the first semantic class collection, each remaining semantic class containing the query item; applying a topic model to the second semantic class collection for each of a plurality of items in the second semantic class collection to generate a plurality of topics, wherein applying the topic model comprises setting a topic number for each of the plurality of topics based on a number of semantic classes to which each of the plurality of topics could belong, the topic number being larger than the number of semantic classes to which each of the plurality of topics could belong; and generating a final semantic class collection by merging and sorting the plurality of topics to generate a plurality of final semantic classes for use by a search engine in response to the query item, wherein the plurality of final semantic classes are based at least in part on the query item.