Опубликовано: 24 сентября 2024 г.
Прежде чем переводить текст с одного языка на другой, необходимо сначала определить, какой язык используется в данном тексте. Раньше для этого требовалось загрузить текст в облачный сервис. С помощью вывода на устройстве вы можете улучшить свою историю конфиденциальности. Хотя можно поставить специальную библиотеку, которая делает это, для ее загрузки потребуются дополнительные ресурсы.
Предложение API-интерфейса детектора языка и переводчика направлено на решение этой проблемы путем точной настройки модели для этой задачи с помощью API, встроенного в браузер.
Примеры использования
API детектора языка в первую очередь полезен в следующих сценариях:
- Определите язык входного текста, чтобы его можно было перевести.
- Определите язык входного текста, чтобы можно было загрузить правильную модель для задач, специфичных для языка, таких как обнаружение токсичности.
- Определите язык ввода текста, чтобы его можно было правильно пометить, например, на сайтах социальных сетей.
- Определите язык ввода текста, чтобы можно было соответствующим образом настроить интерфейс приложения. Например, на бельгийском сайте показывать интерфейс только для пользователей, говорящих по-французски.
Используйте API детектора языка
API-интерфейс Language Detector является частью более крупного семейства API-переводчика. Сначала запустите обнаружение функций, чтобы узнать, поддерживает ли браузер API Language Detector.
if ('translation' in self && 'canDetect' in self.translation) {
// The Language Detector API is available.
}
Загрузка модели
Обнаружение языка зависит от модели, настроенной для конкретной задачи обнаружения языков. Хотя API встроен в браузер, модель загружается по требованию при первой попытке сайта использовать API. В Chrome эта модель очень маленькая по сравнению с другими моделями. Фактически, он уже может присутствовать, учитывая, что эта модель также используется функциями браузера Chrome.
Чтобы проверить, готова ли модель к использованию, вызовите функцию асинхронного translation.canDetect()
. Возможны три варианта ответа:
-
'no'
: текущий браузер поддерживает API детектора языка, но в данный момент его нельзя использовать. Например, потому что на диске недостаточно свободного места для загрузки модели. -
'readily'
: текущий браузер поддерживает API детектора языка, и его можно использовать сразу. -
'after-download'
: текущий браузер поддерживает API детектора языка, но сначала необходимо загрузить модель.
Чтобы запустить загрузку и создать экземпляр детектора языка, вызовите функцию асинхронного translation.createDetector()
. Если ответом на canDetect()
был 'after-download'
, лучше всего прослушивать ход загрузки, чтобы вы могли сообщить пользователю, если загрузка займет некоторое время.
В следующем примере показано, как инициализировать детектор языка.
const canDetect = await translation.canDetect();
let detector;
if (canDetect === 'no') {
// The language detector isn't usable.
return;
}
if (canDetect === 'readily') {
// The language detector can immediately be used.
detector = await translation.createDetector();
} else {
// The language detector can be used after model download.
detector = await translation.createDetector();
detector.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await detector.ready;
}
Запустите детектор языка
API детектора языка использует модель ранжирования, чтобы определить, какой язык с наибольшей вероятностью используется в данном фрагменте текста. Ранжирование — это тип машинного обучения, цель которого — упорядочить список элементов. В этом случае API Language Detector ранжирует языки от самой высокой до самой низкой вероятности.
Функция detect()
может возвращать либо первый результат, наиболее вероятный ответ, либо перебирать ранжированных кандидатов с уровнем достоверности. Он возвращается в виде списка объектов {detectedLanguage, confidence}
. Уровень confidence
выражается как значение от 0.0
(самая низкая достоверность) до 1.0
(самая высокая достоверность).
const someUserText \= 'Hallo und herzlich willkommen\!';
const results \= await detector.detect(someUserText);
for (const result of results) {
// Show the full list of potential languages with their likelihood, ranked
// from most likely to least likely. In practice, one would pick the top
// language(s) that cross a high enough threshold.
console.log(result.detectedLanguage, result.confidence);
}
// (Output truncated):
// de 0.9993835687637329
// en 0.00038279531872831285
// nl 0.00010798392031574622
// ...
Демо
Предварительный просмотр API Language Detector в нашей демонстрации . Введите текст, написанный на разных языках, в текстовом поле.
Зарегистрируйтесь на пробную версию Origin
Зарегистрируйтесь для участия в пробной версии API Language Detector, чтобы начать тестирование этого API со своими пользователями. Эта пробная версия Origin работает с Chrome 130 по 135.
Узнайте больше о том , как работают пробные версии происхождения .
Усилия по стандартизации
API-интерфейс Language Detector был перенесен в группу сообщества W3C Web Incubator после того, как соответствующее предложение получило достаточную поддержку. API является частью более крупного предложения API перевода . Команда Chrome запросила отзыв у группы технической архитектуры W3C и запросила у Mozilla и WebKit позицию по стандартам конкретного поставщика браузера.
Поделитесь своим отзывом
Если у вас есть отзывы о реализации Chrome, сообщите об ошибке Chromium . Поделитесь своим мнением о форме API Language Detector API, прокомментировав существующую или открыв новую проблему в репозитории API перевода GitHub .