В разработке нового алгоритма мы отошли от старого метода определения языка по списку заранее загруженных в наш глоссарий слов. Этот алгоритм хорошо определяет язык небольших текстов, предложений и даже отдельных слов, однако при определении языка объемных текстов, в процессе вычисления накапливается ошибка и результат существенно искажается случайным образом. Это возникает из-за одинакового написания коротких или популярных, а соответственно, наиболее частотных слов в разных языках и использования в них одинаковых букв.
Новый алгоритм требует большего объема текста для определения языка, однако ошибка определения уменьшается при увеличении объема исходных данных. Чем больше объем загруженного текста, тем больше итераций совершается по поиску вхождений в текст маркеров.
Определитель Guesser.ru находит маркеры нескольких языков и начинается процесс накопления веса каждого из языков. Каждый потенциально определенный язык суммирует вес маркера умноженный на кол-во вхождений этого маркера в текст. По окончании работы алгоритма, определитель языка сравнивает веса и выдает таблицу языков с вероятностью их определения.
Однако, при достаточно типичном для нескольких языков тексте, например, написанном на русском/болгарском, немецком/голландском, испанском/французском языках, набор веса каждого из "конкурирующих" языков идет практически с одним темпом. В результате определения языка текста мы получаем набор языков с очень близкими или вообще совпадающими значениями.
Для компенсации маркеров для похожих по написанию языков, мы разработали и применили метод вычисления уникальности (по отношению к другим языкам) найденного в тексте маркера и таким образом смогли организовать "точки" обнуления вероятности накопленной ошибки. С этим дополнением, определитель может существенно повысить вероятность распознавания того языка, который имеет больше всего совпадений с текстом уникальных маркеров. Для большинства определяемых языков, к которым составлены таблицы маркеров, точность определения приближается к 98%. Если ни один алгоритм не дает приемлемого результата - обратитесь за услугой ручной идентификации языка.
Дополнительным достоинством определителя языка Guesser.ru является то, что его алгоритм может работать с многоязычными текстами, т.к. результатом работы является не один единственный язык, определенный с наибольшей вероятностью, а таблица языков с рассчитанной вероятностью их определения.