Я только что открыл веб-страницу в Google Chrome, и там написано: «Эта страница на японском языке, вы хотите перевести ее?».
Запрос на перевод предположительно отправит содержимое в Google, но как определить язык в первую очередь? Это делается локально, в браузере? Или это также отправляет страницу в Google? Если да, то не нужно ли мне сначала спрашивать разрешения? Сама страница не имеет разметки для указания языка, и это внутренняя страница внутренней сети, так что я совсем не уверен, что Google должен иметь доступ к ее контенту.
Ответы:
Браузер Chrome может определить или, по крайней мере, угадать язык страницы, взглянув на ряд факторов на странице:
Это может быть сделано локально без какого-либо дальнейшего подключения к Интернету или отчетности в Google.
Перевод контента определенно отправит контент страницы на серверы Google для перевода.
источник
chrome.dll
недавно? Это огромная! Недавно я не просматривал (массивный) код, но, без сомнения, есть функция или две встроенные функции для определения языка (это не так сложно).Функция называется
DeterminePageLanguage
. Это в файлеcomponents/translate/core/language_detection/language_detection_util.cc
Сначала Chrome проверяет атрибут HTML,
lang
а если его нет, он проверяетContent-Language
заголовок HTTP . Тогда он получает прогноз отcld3
.V3 Compact Language Detector (или CLD3) представляет собой нейронную модель сети для идентификации языка. README заявляет:
По сути, они загрузили копии группы сайтов и заплатили кому-то, чтобы они посмотрели текст на этих сайтах и сказали, на каком языке они написаны. Затем они разбили текст на n-граммы (группы из n букв) и так далее. и использовал нейронную сеть для изучения соответствия между распределениями n-граммы и языками.
Так что теперь у них есть 2 переменные:
language
который устанавливается либо из HTML, либо из заголовка (напомним, что атрибут HTML имеет приоритет, если оба присутствуют)cld_language
который является прогнозом, основанным на частотах групп букв на страницеЗатем мы попали в эту серию операторов if (я отредактировал ту часть, где они отправляют аналитические данные о несоответствиях языков)
CLD3 маленький и запускается локально. Фактически, это открытый исходный код, и они распространяют предварительно обученную модель (хотя код для обучения модели и используемые ими данные недоступны). Вы можете использовать его в своих проектах.
Есть даже привязки Python (неофициальные и не поддерживаемые) для исходного кода C ++ (вам нужно установить Cython )
источник