Chrome如何知道网页所用的语言?


10

我刚刚在Google Chrome浏览器中打开了一个网页,上面写着“此网页为日语,您要翻译吗?”。

要求翻译可能会将内容发送给Google,但是首先要如何识别语言?这是在浏览器中本地完成的吗?还是这还会将页面发送给Google?如果是这样,是否不应该先征求我的许可?该页面本身没有用于指示语言的标记,它是一个内部Intranet页面,因此我完全不确定Google是否有权访问其内容。


这个问题为什么Chrome的误判页面是在不同的语言,并提供翻译?在计算器上给出了一串关于此主题的更多信息,特别是接受的答案埃米尔
欧文布莱克

Answers:


10

Chrome浏览器可以通过查看许多页面上因素来识别或至少猜测页面语言:

这可以在本地完成,而无需任何进一步的互联网连接或向Google报告。

内容的翻译肯定会将页面内容发送到Google服务器进行翻译。


我曾经在Chrome浏览器中查看过XML文件,它告诉我正在以某种欧洲语言(比利时人)浏览网页。这将向我暗示对文本进行了一些分析,在我的情况下出现了一些错误。我看不到为什么英语XML会有编码来表示比利时语。但是是的,对于像日语这样的东西,编码将是无用的。
杰克逊

UTF-8对日本人来说是什么礼物?
Thilo

@CamJackson我确定这不是在暗示比利时人……也许是荷兰人和chrome发现了单个字母“ij”
Peter

1
这不完全是通过页面编码。我有一个博客(英文),该博客收到了大量的俄罗斯垃圾评论。通常,当我查看垃圾桶时,Chrome会提示我翻译页面。(对我而言)显然是在检查内容,并且被“其他语言”的内容触发超过一定百分比阈值。
ale

1
@Thilo,不是UTF-8表示日语,但是如果页面上很大一部分字符都来自Unicode的日语范围,那么您就会找到答案(自动检测语言总是可以猜测的) 。我没有发现检查字符编码的明显方法,但我认为它没有(或者至少需要)将页面发送到服务器进行检测。您看到chrome.dll最近的尺寸了吗?很大!我最近没有浏览过(大规模)代码,但是毫无疑问,有一个或两个内置的语言检测功能(并不难)。
Synetech 2011年

1

该函数称为DeterminePageLanguage。在文件中components/translate/core/language_detection/language_detection_util.cc

Chrome首先检查HTML lang属性,如果不存在,则检查Content-LanguageHTTP标头。然后从中得到预测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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.