Реализация автоматического определения языка текста

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Реализация автоматического определения языка текста
Простой
~1 день
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Реализация автоматического определения языка текста

Определение языка — базовая задача NLP, решаемая за миллисекунды. Используется как первый шаг в мультиязычных пайплайнах: прежде чем применять языко-специфичную модель, нужно знать, на каком языке текст.

Инструменты и выбор

fasttext lid.176.bin — промышленный стандарт. Модель Facebook, распознаёт 176 языков:

import fasttext
model = fasttext.load_model("lid.176.bin")
predictions = model.predict("Привет, как дела?", k=3)
# (('__label__ru', '__label__bg', '__label__mk'), array([0.99, 0.003, 0.002]))

Latency: < 1ms. Размер модели: 1.8MB (bin) или 131MB (ftz). Accuracy: 97%+ для текстов > 20 слов.

langdetect (Python): порт Google Language Detection, 55 языков. Недостаток: недетерминированный (разные результаты при повторных запусках без фиксации seed).

langid.py: 97 языков, детерминированный, хуже fasttext на коротких текстах.

lingua-py: лучшая точность для коротких текстов (1–10 слов), 75 языков.

Сложные случаи

  • Смешанный текст (code-switching): «Встречаемся в 5pm на zoom call» — технически русский, но с английскими вставками. Стратегия: определить доминирующий язык, не пытаться сегментировать по-языково для коротких текстов
  • Короткие тексты (< 5 слов): точность падает у всех моделей. Для критичных случаев используйте lingua-py или ансамбль
  • Близкородственные языки: русский/болгарский/сербский, испанский/португальский — источник основных ошибок

Применение в мультиязычном пайплайне

def process_multilingual(text: str):
    lang = detect_language(text)  # "ru", "en", "de"

    router = {
        "ru": russian_pipeline,
        "en": english_pipeline,
        "de": german_pipeline,
    }
    pipeline = router.get(lang, default_pipeline)
    return pipeline.run(text)

Для production: кэширование результатов определения языка по хэшу текста — повторные запросы без вызова модели.