15. The computer program product of claim 14 , operable to cause the data processing apparatus to perform operations further comprising: stemming the text before comparing the one or more n-grams to the text; and removing duplicates of each of the one or more n-grams before comparing the one or more n-grams to the text.
14. A computer program product, encoded on a tangible program carrier, operable to cause a data processing apparatus to perform operations comprising: receiving text; segmenting the text into one or more unigrams; filtering the one or more unigrams to identify one or more core unigrams, wherein the filtering includes, for each specific unigram of the one or more core unigrams: identifying a stem of the specific unigram, searching an index to identify one or more n-grams that are related to the stem, wherein the index includes (i) grammar information for the specific unigram, (ii) language information for the specific unigram, and (iii) description information for the specific unigram, and comparing the one or more n-grams to the text to identify a group of the one or more n-grams that are included in the text; searching a searchable data structure for each n-gram in the group; and providing a content associated with each of the n-grams found in the searchable data structure, wherein the content includes an image, audio, video, text, or a document.