|
|
Line 1: |
Line 1: |
| {{Distinguish|engram}}
| | 46 yr old Biomedical Engineer Rusty Hyslop from Big Trout Lake, has interests including surfing, property developers in singapore and baking. Last year just made a trip City of Graz – Historic Centre and Schloss Eggenberg.<br><br>Stop by my blog post: [http://god-i.es/blog/view/66733/new-launch-apartmentnew-apartmentnew-launch-properties-new-launchlanded god-i.es] |
| {{For|Google phrase-usage graphs|Google Ngram Viewer}}
| |
| {{More footnotes|date=February 2011}}
| |
| {{DISPLAYTITLE:''n''-gram}}
| |
| | |
| In the fields of [[computational linguistics]] and [[probability]], an '''''n''-gram''' is a contiguous sequence of ''n'' items from a given [[sequence]] of text or speech. The items can be [[phoneme]]s, [[syllable]]s, [[letter (alphabet)|letter]]s, [[word]]s or [[base pairs]] according to the application. The ''n''-grams typically are collected from a [[text corpus|text]] or [[speech corpus]].
| |
| | |
| An ''n''-gram of size 1 is referred to as a "unigram"; size 2 is a "[[bigram]]" (or, less commonly, a "digram"); size 3 is a "[[trigram]]". Larger sizes are sometimes referred to by the value of ''n'', e.g., "four-gram", "five-gram", and so on.
| |
| | |
| == Applications ==
| |
| An '''''n''-gram model''' is a type of probabilistic [[language model]] for predicting the next item in such a sequence in the form of a <math>(n - 1)</math>–order [[Markov chain|Markov model]]. ''n''-gram models are now widely used in [[probability]], [[communication theory]], [[computational linguistics]] (for instance, statistical [[natural language processing]]), [[computational biology]] (for instance, biological [[sequence analysis]]), and [[data compression]]. The two core advantages{{Compared to?|date=November 2011}} of ''n''-gram models (and algorithms that use them) are relative simplicity and the ability to scale up – by simply increasing ''n'' a model can be used to store more context with a well-understood [[space–time tradeoff]], enabling small experiments to scale up very efficiently.
| |
| | |
| ==Examples==
| |
| | |
| {| class="wikitable" style="font-size:85%;"
| |
| |+ Figure 1 ''n''-gram examples from various disciplines
| |
| ! Field !! Unit !!Sample sequence !! 1-gram sequence !! 2-gram sequence !! 3-gram sequence
| |
| |-
| |
| ! Vernacular name !! !! !! unigram !! bigram !! trigram
| |
| |-
| |
| ! Order of resulting [[Markov model]] !! !! !! 0 !! 1 !! 2
| |
| |-
| |
| | [[Protein sequencing]] || [[amino acid]] || … Cys-Gly-Leu-Ser-Trp … || …, Cys, Gly, Leu, Ser, Trp, … || …, Cys-Gly, Gly-Leu, Leu-Ser, Ser-Trp, … || …, Cys-Gly-Leu, Gly-Leu-Ser, Leu-Ser-Trp, …
| |
| |-
| |
| | [[DNA sequencing]]|| [[base pair]] || …AGCTTCGA… || …, A, G, C, T, T, C, G, A, … || …, AG, GC, CT, TT, TC, CG, GA, … || …, AGC, GCT, CTT, TTC, TCG, CGA, …
| |
| |-
| |
| | [[Computational linguistics]] || [[Character (computing)|character]] || …to_be_or_not_to_be… || …, t, o, _, b, e, _, o, r, _, n, o, t, _, t, o, _, b, e, … || …, to, o_, _b, be, e_, _o, or, r_, _n, no, ot, t_, _t, to, o_, _b, be, … || …, to_, o_b, _be, be_, e_o, _or, or_, r_n, _no, not, ot_, t_t, _to, to_, o_b, _be, …
| |
| |-
| |
| | [[Computational linguistics]] ||[[word]] || … to be or not to be … || …, to, be, or, not, to, be, … || …, to be, be or, or not, not to, to be, … || …, to be or, be or not, or not to, not to be, …
| |
| |}
| |
| | |
| Figure 1 shows several example sequences and the corresponding 1-gram, 2-gram and 3-gram sequences.
| |
| | |
| Here are further examples; these are word-level 3-grams and 4-grams (and counts of the number of times they appeared) from the Google ''n''-gram corpus.<ref>
| |
| {{cite web
| |
| |author= Alex Franz and Thorsten Brants
| |
| |title=All Our N-gram are Belong to You
| |
| |year=2006
| |
| |work=Google Research Blog
| |
| |url=http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html
| |
| |accessdate=2011-12-16
| |
| }}</ref>
| |
| | |
| *ceramics collectables collectibles (55)
| |
| *ceramics collectables fine (130)
| |
| *ceramics collected by (52)
| |
| *ceramics collectible pottery (50)
| |
| *ceramics collectibles cooking (45)
| |
| | |
| 4-grams
| |
| | |
| *serve as the incoming (92)
| |
| *serve as the incubator (99)
| |
| *serve as the independent (794)
| |
| *serve as the index (223)
| |
| *serve as the indication (72)
| |
| *serve as the indicator (120)
| |
| | |
| ==''n''-gram models==
| |
| An '''''n''-gram model''' models sequences, notably natural languages, using the statistical properties of ''n''-grams.
| |
| | |
| This idea can be traced to an experiment by [[Claude Shannon]]'s work in [[information theory]]. Shannon posed the question: given a sequence of letters (for example, the sequence "for ex"), what is the [[likelihood]] of the next letter? From training data, one can derive a [[probability distribution]] for the next letter given a history of size <math>n</math>: ''a'' = 0.4, ''b'' = 0.00001, ''c'' = 0, ....; where the probabilities of all possible "next-letters" sum to 1.0.
| |
| | |
| More concisely, an ''n''-gram model predicts <math>x_{i}</math> based on <math>x_{i-(n-1)}, \dots, x_{i-1}</math>. In probability terms, this is <math>P(x_{i} | x_{i-(n-1)}, \dots, x_{i-1})</math>. When used for [[language model]]ing, independence assumptions are made so that each word depends only on the last ''n-1'' words. This [[Markov model]] is used as an approximation of the true underlying language. This assumption is important because it massively simplifies the problem of learning the language model from data. In addition, because of the open nature of language, it is common to group words unknown to the language model together.
| |
| | |
| Note that in a simple n-gram language model, the probability of a word, conditioned on some number of previous words (one word in a bigram model, two words in a trigram model, etc.) can be described as following a [[categorical distribution]] (often imprecisely called a "[[multinomial distribution]]").
| |
| | |
| In practice, the probability distributions are smoothed by assigning non-zero probabilities to unseen words or n-grams; see [[N-gram#Smoothing techniques|smoothing techniques]].
| |
| | |
| ==Applications and considerations==
| |
| | |
| ''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 [[Character (symbol)|characters]]/[[grapheme]]s (''e.g.'', [[Letter (alphabet)|letters of the alphabet]]) are modeled for different languages.<ref>{{cite journal
| |
| |author=Ted Dunning
| |
| |year=1994
| |
| |title=Statistical Identification of Language
| |
| |url=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.1958
| |
| |publisher= New Mexico State University
| |
| }} Technical Report MCCS 94-273</ref> 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 (sometimes the beginning and end of a text are modeled explicitly, adding "__g", "_go", "ng_", and "g__"). For sequences of words, the trigrams 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 #". Some practitioners preprocess strings to remove spaces, most simply collapse [[Whitespace character|whitespace]] to a single space while preserving paragraph marks. Punctuation is also commonly reduced or removed by preprocessing. ''n''-grams can also be used for sequences of words or almost any type of data. For example, they have been used for extracting features for clustering large sets of satellite earth images and for determining what part of the Earth a particular image came from.<ref>Soffer, A., "Image categorization using texture features," Document Analysis and Recognition, 1997., Proceedings of the Fourth International Conference on , vol.1, no., pp.233,237 vol.1, 18-20 Aug 1997 doi: 10.1109/ICDAR.1997.619847</ref> They have also been very successful as the first pass in genetic sequence search and in the identification of the species from which short sequences of DNA originated.<ref>Andrija Tomović, Predrag Janičić, Vlado Kešelj, n-Gram-based classification and unsupervised hierarchical clustering of genome sequences, Computer Methods and Programs in Biomedicine, Volume 81, Issue 2, February 2006, Pages 137-153, ISSN 0169-2607, http://dx.doi.org/10.1016/j.cmpb.2005.11.007.</ref>
| |
| | |
| ''n''-gram models are often criticized because they lack any explicit representation of long range dependency. (In fact, it was [[Noam Chomsky|Chomsky]]'s critique of [[Markov model]]s in the late 1950s that caused their virtual disappearance from [[natural language processing]], along with statistical methods in general, until well into the 1980s.) This is because the only explicit dependency range is (''n''-1) tokens for an ''n''-gram model, and since natural languages incorporate many cases of unbounded dependencies (such as [[wh-movement]]), this means that an ''n''-gram model cannot in principle distinguish unbounded dependencies from noise (since long range correlations drop exponentially with distance for any Markov model). For this reason, ''n''-gram models have not made much impact on linguistic theory, where part of the explicit goal is to model such dependencies.
| |
| | |
| Another criticism that has been made is that Markov models of language, including n-gram models, do not explicitly capture the performance/competence distinction discussed by Chomsky. This is because n-gram models are not designed to model linguistic knowledge as such, and make no claims to being (even potentially) complete models of linguistic knowledge; instead, they are used in practical applications.
| |
| | |
| In practice, n-gram models have been shown to be extremely effective in modeling language data, which is a core component in modern statistical [[natural language processing|language]] applications.
| |
| Most modern applications that rely on n-gram based models, such as [[machine translation]] applications, do not rely exclusively on such models; instead, they typically also incorporate [[Bayesian inference]]. Modern statistical models are typically made up of two parts, a [[prior distribution]] describing the inherent likelihood of a possible result and a [[likelihood function]] used to assess the compatibility of a possible result with observed data. When a language model is used, it is used as part of the prior distribution (e.g. to gauge the inherent "goodness" of a possible translation), and even then it is often not the only component in this distribution. Handcrafted features of various sorts are also used, for example variables that represent the position of a word in a sentence or the general topic of discourse. In addition, features based on the structure of the potential result, such as syntactic considerations, are often used. Such features are also used as part of the likelihood function, which makes use of the observed data. Conventional linguistic theory can be incorporated in these features (although in practice, it is rare that features specific to generative or other particular theories of grammar are incorporated, as [[computational linguistics|computational linguists]] tend to be "agnostic" towards individual theories of grammar{{Citation needed|date=November 2011}}).
| |
| | |
| ==''n''-grams for approximate matching==
| |
| {{main|Approximate string matching}}
| |
| ''n''-grams can also be used for efficient approximate matching. By converting a sequence of items to a set of ''n''-grams, it can be embedded in a [[vector space]], thus allowing the sequence to be compared to other sequences in an efficient manner. For example, if we convert strings with only letters in the English alphabet into 3-grams, we get a <math>26^3</math>-dimensional space (the first dimension measures the number of occurrences of "aaa", the second "aab", and so forth for all possible combinations of three letters). Using this representation, we lose information about the string. For example, both the strings "abc" and "bca" give rise to exactly the same 2-gram "bc" (although {"ab", "bc"} is clearly not the same as {"bc", "ca"}). However, we know empirically that if two strings of real text have a similar vector representation (as measured by [[cosine similarity|cosine distance]]) then they are likely to be similar. Other metrics have also been applied to vectors of ''n''-grams with varying, sometimes better, results. For example [[z-score]]s have been used to compare documents by examining how many standard deviations each ''n''-gram differs from its mean occurrence in a large collection, or [[text corpus]], of documents (which form the "background" vector). In the event of small counts, the [[g-score]] may give better results for comparing alternative models.
| |
| | |
| It is also possible to take a more principled approach to the statistics of ''n''-grams, modeling similarity as the likelihood that two strings came from the same source directly in terms of a problem in [[Bayesian inference]].
| |
| | |
| ''n''-gram-based searching can also be used for [[plagiarism detection]].
| |
| | |
| ==Other applications==
| |
| | |
| ''n''-grams find use in several areas of computer science, [[computational linguistics]], and applied mathematics.
| |
| | |
| They have been used to:
| |
| * design [[kernel trick|kernels]] that allow [[machine learning]] algorithms such as [[support vector machine]]s to learn from string data
| |
| * find likely candidates for the correct spelling of a misspelled word
| |
| * improve compression in [[data compression|compression algorithms]] where a small area of data requires ''n''-grams of greater length
| |
| * assess the probability of a given word sequence appearing in text of a language of interest in pattern recognition systems, [[speech recognition]], OCR ([[optical character recognition]]), [[Intelligent Character Recognition]] ([[Intelligent character recognition|ICR]]), [[machine translation]] and similar applications
| |
| * improve retrieval in [[information retrieval]] systems when it is hoped to find similar "documents" (a term for which the conventional meaning is sometimes stretched, depending on the data set) given a single query document and a database of reference documents
| |
| * improve retrieval performance in genetic sequence analysis as in the [[BLAST]] family of programs
| |
| * identify the language a text is in or the species a small sequence of DNA was taken from
| |
| * predict letters or words at random in order to create text, as in the [[dissociated press]] algorithm.
| |
| | |
| == Bias-versus-variance trade-off ==
| |
| What goes into picking the ''n'' for the ''n''-gram?
| |
| | |
| With ''n''-gram models it is necessary to find the right trade off between the stability of the estimate against its appropriateness. This means that trigram (i.e. triplets of words) is a common choice with large training corpora (millions of words), whereas a bigram is often used with smaller ones.
| |
| | |
| === Smoothing techniques ===
| |
| There are problems of balance weight between ''infrequent grams'' (for example, if a proper name appeared in the training data) and ''frequent grams''. Also, items not seen in the training data will be given a [[probability]] of 0.0 without [[smoothing]]. For unseen but plausible data from a sample, one can introduce [[pseudocount]]s. Pseudocounts are generally motivated on Bayesian grounds.
| |
| | |
| In practice it is necessary to ''smooth'' the probability distributions by also assigning non-zero probabilities to unseen words or n-grams. The reason is that models derived directly from the n-gram frequency counts have severe problems when confronted with any n-grams that have not explicitly been seen before -- [[PPM compression algorithm|the zero-frequency problem]]. Various smoothing methods are used, from simple "add-one" (Laplace) smoothing (assign a count of 1 to unseen n-grams; see [[Rule of succession]]) to more sophisticated models, such as [[Good-Turing discounting]] or [[Katz's back-off model|back-off model]]s. Some of these methods are equivalent to assigning a [[prior distribution]] to the probabilities of the N-grams and using [[Bayesian inference]] to compute the resulting [[posterior distribution|posterior]] N-gram probabilities. However, the more sophisticated smoothing models were typically not derived in this fashion, but instead through independent considerations.
| |
| | |
| * [[Linear interpolation]] (e.g., taking the [[weighted mean]] of the unigram, bigram, and trigram)
| |
| * [[Good-Turing]] discounting
| |
| * [[Witten-Bell discounting]]
| |
| * [[Additive smoothing|Lidstone's smoothing]]
| |
| * [[Katz's back-off model]] (trigram)
| |
| * [[Kneser-Ney smoothing]]
| |
| | |
| == See also ==
| |
| * [[Collocation]]
| |
| * [[Hidden Markov model]]
| |
| * [[n-tuple]]
| |
| * [[k-mer]]
| |
| * [[String Kernel]]
| |
| * [[MinHash]]
| |
| * [[Feature extraction]]
| |
| | |
| == References ==
| |
| {{reflist}}
| |
| * Christopher D. Manning, Hinrich Schütze, ''Foundations of Statistical Natural Language Processing'', MIT Press: 1999. ISBN 0-262-13360-1.
| |
| * Owen White, Ted Dunning, Granger Sutton, Mark Adams, J.Craig Venter, and Chris Fields. A quality control algorithm for dna sequencing projects. Nucleic Acids Research, 21(16):3829—3838, 1993.
| |
| * Frederick J. Damerau, ''Markov Models and Linguistic Theory''. Mouton. The Hague, 1971.
| |
| *{{cite conference |last=Brocardo|first=Marcelo Luiz |coauthors=Issa Traore, Sherif Saad, Isaac Woungang |url=http://www.uvic.ca/engineering/ece/isot/assets/docs/Authorship_Verification_for_Short_Messages_using_Stylometry.pdf |title=Authorship Verification for Short Messages Using Stylometry |conference= IEEE Intl. Conference on Computer, Information and Telecommunication Systems (CITS) |year=2013}}
| |
| | |
| == External links ==
| |
| * [http://ngrams.googlelabs.com/ Google's Google Book n-gram viewer] and [http://googleresearch.blogspot.com/2006/08/all-our-n-gram-are-belong-to-you.html Web n-grams database] (September 2006)
| |
| * [http://research.microsoft.com/web-ngram Microsoft's web n-grams service]
| |
| * [http://www.ngrams.info/ 1,000,000 most frequent 2,3,4,5-grams from the 425 million word [[Corpus of Contemporary American English]]]
| |
| * [http://www.peachnote.com/ Peachnote's music ngram viewer]
| |
| * [http://www.w3.org/TR/ngram-spec/ Stochastic Language Models (N-Gram) Specification] (W3C)
| |
| * [http://www.cs.columbia.edu/~mcollins/courses/nlp2011/notes/lm.pdf Michael Collin's notes on N-Gram Language Models]
| |
| | |
| {{DEFAULTSORT:N-Gram}}
| |
| [[Category:Natural language processing]]
| |
| [[Category:Computational linguistics]]
| |
| [[Category:Speech recognition]]
| |
| [[Category:Corpus linguistics]]
| |
| [[Category:Probabilistic models]]
| |