Je pense que les réponses les plus détaillées peuvent être trouvées dans les travaux approfondis de Mehryar Mohri sur le sujet. Voici un lien vers l'une de ses diapositives de conférence sur le sujet: http://www.cims.nyu.edu/~mohri/amls/lecture_3.pdf
Le problème de la détection du langage est que le langage humain (mots) a une structure. Par exemple, en anglais, il est très courant que la lettre «u» suive la lettre «q», alors que ce n'est pas le cas en arabe translittéré. Les n-grammes fonctionnent en capturant cette structure. Ainsi, certaines combinaisons de lettres sont plus probables dans certaines langues que dans d'autres. C'est la base de la classification en n grammes.
Le sac de mots, en revanche, dépend de la recherche dans un grand dictionnaire et essentiellement de la mise en correspondance des modèles. Il y a deux inconvénients principaux ici: 1) chaque langue devrait avoir un dictionnaire complet de mots dans le fichier, ce qui prendrait un temps relativement long à rechercher, et 2) le sac de mots échouera si aucun des mots de l'ensemble de formation est inclus dans l'ensemble de test.
En supposant que vous utilisez des bigrammes (n = 2) et qu'il y a 26 lettres dans votre alphabet, alors il n'y a que 26 ^ 2 = 676 bigrammes possibles pour cet alphabet, dont beaucoup ne se produiront jamais. Par conséquent, le "profil" (pour utiliser les mots du détecteur de langue) pour chaque langue nécessite une très petite base de données. Un classificateur de sac de mots, d'autre part, aurait besoin d'un dictionnaire complet pour CHAQUE langue afin de garantir qu'une langue puisse être détectée en fonction de la phrase qui lui a été donnée.
Donc, en bref - chaque profil de langue peut être rapidement généré avec un espace de fonctionnalités relativement petit. Fait intéressant, les n-grammes ne fonctionnent que parce que les lettres ne sont pas dessinées dans une langue - c'est un levier explicite.
Remarque: l'équation générale du nombre de n-grammes pour les mots est l ^ n où l est le nombre de lettres de l'alphabet.
Les lettres N-grammes sont utilisées à la place des mots pour plusieurs raisons:
1) La liste des mots nécessaires pour une langue donnée est assez grande, peut-être 100 000 si vous considérez rapide, plus rapide, plus rapide, à jeun, rapide, jeûne, ... comme tous les mots différents. Pour 80 langues, vous avez besoin d'environ 80 fois plus de mots, ce qui prend beaucoup de place - plus de 50 mégaoctets.
2) Le nombre de trigrammes de lettres pour un alphabet à 26 lettres est de 26 ** 3 soit environ 17 000 et pour les quadgrammes (N = 4) environ 450 000 couvrant TOUTES les langues utilisant cet alphabet. Des nombres similaires mais un peu plus grands pour les N-grammes dans des alphabets plus grands de 30 à 100 caractères. Pour les langues CJK avec plus de 4000 lettres dans le script Han, les unigrammes (N = 1) sont suffisants. Pour certains scripts Unicode, il n'y a qu'une seule langue par script (grec, arménien), donc aucune combinaison de lettres n'est nécessaire (soi-disant nil-grammes N = 0)
3) Avec les mots, vous n'avez aucune information quand on vous donne un mot qui n'est pas dans le dictionnaire, alors qu'avec la lettre N-grammes vous avez souvent au moins quelques combinaisons de lettres utiles dans ce mot.
CLD2 utilise des quadgrammes pour la plupart des scripts Unicode (alphabets), y compris le latin, le cyrillique et l'arabe, des unigrammes pour les scripts CJK, des nilgrammes pour d'autres scripts, et comprend également un nombre limité de mots complets et de paires de mots assez distinctifs et assez courants pour distinguer dans des groupes difficiles de langues statistiquement similaires, comme l’indonésien et le malais. Les bigrammes et trigrammes de lettres sont peut-être utiles pour distinguer un petit nombre de langues (environ huit, voir https://docs.google.com/document/d/1NtErs467Ub4yklEfK0C9AYef06G_1_9NHL5dPuKIH7k/edit), mais sont inutiles pour distinguer des dizaines de langues. Ainsi, CLD2 utilise des quadgrammes, associant à chaque combinaison de lettres les trois langues les plus susceptibles d'utiliser cette combinaison. Cela permet de couvrir 80 langues avec environ 1,5 Mo de tables et 160 langues plus en détail avec environ 5 Mo de tables.
la source