"n"-gram models are widely used in statistical natural language processing. In speech recognition, phonemes and sequences of phonemes are modeled using a "n"-gram distribution. For parsing, words are modeled such that each "n"-gram is composed of "n" words. For language identification, sequences of characters/graphemes ("e.g.", letters of the alphabet) are modeled for different languages. For sequences of characters, the 3-grams (sometimes referred to as "trigrams") that can be generated from "good morning" are "goo", "ood", "od ", "d m", " mo", "mor" and so forth, counting the space character as a gram (sometimes the beginning and end of a text are modeled explicitly, adding "_ ⁠_g", "_go", "ng_", and "g_ ⁠_"). For sequences of words, the trigrams (shingles) that can be generated from "the dog smelled like a skunk" are "# the dog", "the dog smelled", "dog smelled like", "smelled like a", "like a skunk" and "a skunk #".