Распознавание языка

Веб-функции: Определитель языка

Language Detector API – это клиентский веб-API, предназначенный для определения языка заданной текстовой строки. Поскольку обнаружение выполняется локально в браузере, это повышает конфиденциальность пользователей и снижает потребность в тяжелых внешних библиотеках или дорогостоящих вызовах на стороне сервера.

Основные примеры использования

  • Подготовка к переводу. Определение исходного языка перед отправкой текста переводчику.
  • Безопасность и фильтрация. Загрузка определенных моделей для таких задач, как обнаружение токсичности.
  • Специальные возможности. Пометка контента правильным атрибутом lang для программ чтения с экрана.
  • Локализация интерфейса. Настройка интерфейса приложения на основе языка ввода пользователя.

Требования к оборудованию и системе

  • ОС: Windows 10/11, macOS 13+, Linux или Chromebook Plus.
  • Хранилище: 22 ГБ свободного места (модель удаляется, если свободного места становится меньше 10 ГБ).
  • ОЗУ/ЦП: 16 ГБ ОЗУ и не менее 4 ядер ЦП.
  • Видеопамять: не менее 4 ГБ, если используется графический процессор.

Руководство по внедрению

1. Управление моделями и активация пользователей

Прежде чем создавать экземпляр детектора или запускать скачивание, проверьте доступность модели.

ОБЯЗАТЕЛЬНО. Создание экземпляра детектора языка или запуск скачивания модели с помощью LanguageDetector.create() ДОЛЖНЫ инициироваться жестом пользователя (например, нажатием кнопки), чтобы предотвратить NotAllowedError, когда модель находится в состоянии downloadable или downloading.

// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();

if (availability !== 'unavailable') {
  button.addEventListener('click', async () => {
    const detector = await LanguageDetector.create({
      monitor(m) {
        m.addEventListener('downloadprogress', (e) => {
          console.log(`Downloaded ${e.loaded * 100}%`);
        });
      },
    });
  });
}

2. Обнаружение бега

API возвращает ранжированный список возможных языков с оценкой достоверности от 0.0 до 1.0.

const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);

for (const result of results) {
  // result.detectedLanguage (e.g., 'de')
  // result.confidence (e.g., 0.999)
  console.log(result.detectedLanguage, result.confidence);
}

Не используйте детектор для очень коротких фраз или отдельных слов, так как точность значительно снижается.

Безопасность и окружающая среда

  • Окна iframe. Для доступа к API в междоменных окнах iframe требуется явное правило разрешений.

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • Веб-воркеры. В настоящее время API не доступен в веб-воркерах из-за сложностей с правилами разрешений.

  • Конфиденциальность. Во время обнаружения данные не отправляются в Google или третьим лицам.

Резервная стратегия

Перед использованием проверьте, доступен ли объект LanguageDetector в глобальной области видимости:

if ('LanguageDetector' in self) {
  // The Language Detector API is supported.
} else {
  // Execute fallback strategy
}

Если API LanguageDetector не поддерживается или проверка доступности возвращает 'unavailable', необходимо корректно выполнить откат:

  1. Резервный удаленный API. Перенаправьте запрос на определение языка конечной точке сервера или облачному API, например Vertex AI Gemini API.
  2. Постепенное сокращение. Отключите элементы и кнопки распознавания языка и сообщите пользователю, что клиентское распознавание в настоящее время не поддерживается в этом браузере. Это позволит предотвратить необработанные исключения и сбои.