Решения для идентификации языка
Задача идентификации языка (Language identification, Language Detection) состоит в автоматическом определении языка, на котором написан текст. Можно получить наиболее вероятный язык для фрагмента входного текста или набор возможных языков-кандидатов с соответствующими вероятностями.
Согласно данным крупнейшего в мире каталога языков Ethnologue, по состоянию на 2022 год на Земле насчитывается 5500 языков, относящихся к 142 различным языковым семьям.
Топ-15 языков по контенту
Википедия имеет версии страниц на 300+ языков. По статистике Web3Techs всего на 15 языках написано более 90% всего контента в Интернете.
Список универсальных идентификаторов языка, доступных локально
Подборка современных решений определения языка по тексту, с уклоном на Python / CLI. Одна из проблем: чем короче фрагмент текста, тем сложнее точно определить язык. Поэтому добавлен комментарий по отношению к коротким сообщениям, когда известно.
- Fasttext lid.176 - определяет 176 языков, одно из самых эффективных, точных и быстрых решений. Есть сжатая версия - 917kB, минимум оперативки использует. Хорошо для коротких текстов.
- Fasttext lid218e HF версия модели на 217 языков.
- OpenLID - 201 язык, основан на Fasttext с открытым датасетом, есть инструменты для трейна
- GlotLID - более 1600 языков, основан на Fasstext
- pycld2 - (Python Bindings to CLD2) 165 языков, быстрее fasttext, минимум оперативной памяти
- Compact Language Detector v3 (CLD3) - 107 языков, Python версия, хуже для коротких текстов, медленнее CLD2 и Fasttext
- Langdetect - 55 языков, хорошо для коротких текстов, очень медленный
- langid.py - 97 языков, хуже для коротких текстов, есть инструменты трейна, медленный
- Lingua.py - 75 языков, хорошо для коротких текстов, опирается как на правила, так и на статистические методы, но не использует словари.
- Guess-language - 60 языков (не обновляется)
Существует мнение, что чем больше языков определяется, тем выше вероятность ошибок.
Специализированные идентификаторы
Как бы хороши ни были универсальные идентификаторы языка, разработчики создают специализированные детекторы для разных языков.
- IndicLID - 47 классов индийского языка, 22 языка конституции Индии с поддержкой латинского написания.
- fastlangid - направлена на обеспечение более высокой точности в японском, корейском и китайском языках по сравнению с оригинальной моделью Fasttext
- Equilid - 70 языков, распознает язык в социальных сетях, уделяя особое внимание короткому тексту. Распознает диалектическую речь носителей языка и другое.
- AfroLID - идентификация 517 африканских языков и их вариаций
Скорость определения языка
Более подробное сравнение производительности на датасете tatoeba-sentences-2021-06-05
Точность определения языка
В тесте на датасете Tatoeba-sentences-2021-06-05, который содержит 300 языков получены такие усредненные результаты. По ссылке доступны также таблицы результатов с метриками.
Если посмотреть на таблицы метрик, то можно обнаружить, что практически все решения хорошо определяют топ 15 языков с точностью от 0.97 и выше.
Где почитать сравнения решений
Идентификаторы языка через публичные API сервисы
Определение языка широко распространенная задача в API сервисах. Многие API сервисы могут предлагать определение языка на базе указанных выше решений. Здесь же будут перечисляться уникальные онлайн решения, которые недоступны в локальном режиме.
- Wikimedia API for 200+ languages - Перейти в API
- Google ML Kit - 110 языков, также определяет арабский, болгарский, греческий, хинди, японский, русский и китайский написанные латиницей.
- Language Detection Microsoft Azure - 120 языков, 12 индийских языков латиницей
- AWS - 104 языка
Статья будет регулярно обновляться и дополнятся новыми подробностями. Если нашли неточность в описании - буду рад поправкам. Также вы можете подписаться на мой ТГ-канал, где я делюсь своими находками и опытом.
Последнее дополнение - 11 февраля 2024