Answers:
Chrome浏览器可以通过查看许多页面上因素来识别或至少猜测页面语言:
这可以在本地完成,而无需任何进一步的互联网连接或向Google报告。
内容的翻译肯定会将页面内容发送到Google服务器进行翻译。
chrome.dll
最近的尺寸了吗?很大!我最近没有浏览过(大规模)代码,但是毫无疑问,有一个或两个内置的语言检测功能(并不难)。
该函数称为DeterminePageLanguage
。在文件中components/translate/core/language_detection/language_detection_util.cc
Chrome首先检查HTML lang
属性,如果不存在,则检查Content-Language
HTTP标头。然后从中得到预测cld3
。
在简洁的语言,探测器V3(或CLD 3)是语言识别神经网络模型。自述文件指出:
推理代码从输入文本中提取字符ngram,并计算每个字符出现的次数。例如,如下图所示,如果输入文本为“ banana”,则提取的三元组之一为“ ana”,而相应的分数为2/4。将ngram散列到一个较小范围内的id,每个id由训练期间估计的密集嵌入矢量表示。
该模型根据分数对与每个ngram类型对应的嵌入进行平均,然后将平均后的嵌入进行级联以生成嵌入层。
因此,从本质上讲,他们下载了一堆网站的副本,并付钱给某人查看这些网站上的文字,并说出他们所用的语言。接下来,他们将文字拆分为n克(n个字母的组),依此类推并使用神经网络学习n元语法分布与语言之间的映射。
所以现在它们有2个变量:
language
通过HTML或标题设置(请注意,如果同时存在HTML属性,则HTML属性优先) cld_language
这是根据页面上字母组的频率进行的预测然后,我们编写了一系列if语句(我编辑了它们发送有关语言不匹配的分析数据的部分)
if (language.empty()) {
return cld_language;
}
if (cld_language == kUnknownLanguageCode) {
return language;
}
if (CanCLDComplementSubCode(language, cld_language)) {
return cld_language;
}
if (IsSameOrSimilarLanguages(language, cld_language)) {
return language;
}
if (MaybeServerWrongConfiguration(language, cld_language)) {
return cld_language;
}
// Content-Language value might be wrong because CLD says that this page is
// written in another language with confidence. In this case, Chrome doesn't
// rely on any of the language codes, and gives up suggesting a translation.
return kUnknownLanguageCode;
CLD3很小,在本地运行。实际上,它是开源的,他们分发了预先训练的模型(尽管没有提供训练模型的代码和使用的数据)。您可以在项目中使用它。
甚至还有原始C ++代码的Python绑定(非官方且无需维护)(您需要安装Cython)
pip install cld3