Буквы N-граммы используются вместо слов по нескольким причинам:
1) Список слов, необходимых для данного языка, довольно большой, возможно, 100 000, если вы считаете быстрый, быстрый, быстрый, быстрый, быстрый, быстрый, ... как все разные слова. Для 80 языков требуется примерно в 80 раз больше слов, занимающих много места - 50+ мегабайт.
2) Количество буквенных триграмм для 26-буквенного алфавита составляет 26 ** 3 или около 17 000, а для квадраграмм (N = 4) около 450 000, охватывающих ВСЕ языки, использующие этот алфавит. Аналогичные, но несколько большие цифры для N-граммов в больших алфавитах из 30-100 символов. Для языков CJK с 4000+ букв в ханьском языке достаточно униграмм (N = 1). Для некоторых сценариев Unicode существует только один язык для каждого сценария (греческий, армянский), поэтому буквенные комбинации не нужны (так называемые нильграммы N = 0)
3) Со словами у вас нет никакой информации, когда слово отсутствует в словаре, в то время как с буквами N-грамм у вас часто есть хотя бы несколько полезных буквенных комбинаций в этом слове.
CLD2 использует квадратики для большинства сценариев Unicode (алфавитов), включая латиницу, кириллицу и арабский язык, униграммы для сценариев CJK, нильграммы для других сценариев, а также включает в себя ограниченное количество вполне различимых и довольно распространенных полных слов и пар слов для различения в сложных группах статистически похожих языков, таких как индонезийский и малайский. Буквенные биграммы и триграммы, возможно, полезны для различения небольшого количества языков (около восьми, см. Https://docs.google.com/document/d/1NtErs467Ub4yklEfK0C9AYef06G_1_9NHL5dPuKIH7k/edit), но бесполезны для различения десятков языков. Таким образом, CLD2 использует квадрограммы, связывая каждую комбинацию букв с тремя наиболее вероятными языками, использующими эту комбинацию. Это позволяет охватить 80 языков с примерно 1,5 МБ таблиц и более 160 языков более примерно с 5 МБ таблиц.