Language identification


In natural language processing, language identification or language guessing is the problem of determining which natural language given content is in. Computational approaches to this problem view it as a special case of text categorization, solved with various statistical methods.

Overview

Logical approach

A common non-statistical intuitive approach is to look for common letter combinations, or distinctive diacritics or punctuation.

Statistical approach

There are several statistical approaches to language identification.
An older statistical method by Grefenstette was based on the frequency of short n-grams, which are often function morphemes. For example, "ing" is more common in English than in French, while the sequence "que" is more common in French. Given a new page found on the Web, one counts the number of occurrences of each such short sequence and picks the language whose frequency table it matches the most.
One technique is to compare the compressibility of the text to the compressibility of texts in a set of known languages. This approach is known as mutual information based distance measure. The same technique can also be used to empirically construct family trees of languages which closely correspond to the trees constructed using historical methods. Mutual information based distance measure is essentially equivalent to more conventional model-based methods and is not generally considered to be either novel or better than simpler techniques.
Another technique, as described by Cavnar and Trenkle and Dunning is to create a language n-gram model from a "training text" for each of the languages. These models can be based on characters or encoded bytes ; in the latter, language identification and character encoding detection are integrated. Then, for any piece of text needing to be identified, a similar model is made, and that model is compared to each stored language model. The most likely language is the one with the model that is most similar to the model from the text needing to be identified. This approach can be problematic when the input text is in a language for which there is no model. In that case, the method may return another, "most similar" language as its result. Also problematic for any approach are pieces of input text that are composed of several languages, as is common on the Web.
, a commonly used baseline method is via the fastText library, which has comparable classification accuracy as deep learning techniques, but much faster.

Identifying similar languages

One of the great bottlenecks of language identification systems is to distinguish between closely related languages. Similar languages like Bulgarian and Macedonian or Indonesian and Malay present significant lexical and structural overlap, making it challenging for systems to discriminate between them.
In 2014 the DSL shared task has been organized providing a dataset containing 13 different languages in six language groups: Group A, Group B, Group C, Group D, Group E, Group F. The best system reached performance of over 95% results. Results of the DSL shared task are described in Zampieri et al. 2014.

Software

  • Apache OpenNLP includes char n-gram based statistical detector and comes with a model that can distinguish 103 languages
  • Apache Tika contains a language detector for 18 languages