Chromeはページの言語をどのようにして知るのですか?


10

Google ChromeでWebページを開いたところ、「このページは日本語です。翻訳しますか?」と表示されます。

翻訳を依頼すると、おそらくコンテンツがGoogleに送信されますが、そもそも言語はどのように特定されているのでしょうか。これはブラウザでローカルに行われますか?それとも、ページをGoogleに送信しますか?もしそうなら、私は最初に許可を求められるべきではないのですか?ページ自体には言語を示すマークアップがなく、内部のイントラネットページであるため、Googleがそのコンテンツにアクセスできる必要があるかどうかはまったくわかりません。


回答:


10

Chromeブラウザーは、ページ上のいくつかの要因を確認することにより、ページの言語を識別または少なくとも推測できます。

これは、インターネットに接続したり、Googleに報告したりすることなく、ローカルで実行できます。

コンテンツの翻訳は間違いなく、翻訳のためにページコンテンツをGoogleサーバーに送信します。


私はかつてChromeでXMLファイルを表示していたのですが、ページを表示していると言われました。ヨーロッパ言語、ベルギーでしょうか。これは、テキストの分析が行われることを示唆しており、私の場合は少し間違っていました。なぜ英語のXMLにベルギー語を示すエンコードがあったのかわかりません。しかし、はい。日本語のようなものでは、エンコーディングは完全に無料です。
カムジャクソン

UTF-8はどのようにして日本人にプレゼントされますか?
Thilo、2011年

@CamJackson私はそれがベルギーを示唆していないと確信しています...多分それはオランダ人で、クロムは単一の文字「ij」を見つけました
Peter Smit

1
それは完全にページのエンコーディングによるものではありません。かなりの量のロシア語コメントスパムを受け取るブログ(英語)があります。スパムバケットを表示していると、Chromeからページを翻訳するように求められることがよくあります。それは明らかに(私にとって)コンテンツを調べており、「他の言語」のコンテンツでトリガーされるのは、特定の割合のしきい値を超えています。
エール

1
@Thilo、それが日本語であることを示すのはUTF-8ではありませんが、ページ上の文字の大部分が日本語のUnicodeの範囲からのものである場合は、答えがあります(自動言語検出は常に推測作業です) 。文字エンコーディングをチェックする明らかな方法に失敗しても、検出のためにページをサーバーに送信する(または少なくとも必要がある)とは思いません。chrome.dll最近のサイズを見ましたか?でかい!私は最近(大規模な)コードを調べていませんが、言語検出用の組み込み関数が1つまたは2つあることは間違いありません(それほど難しくありません)。
Synetech、2011年

1

関数が呼び出されDeterminePageLanguageます。ファイルにありますcomponents/translate/core/language_detection/language_detection_util.cc

Chromeは最初にHTML lang属性を確認し、存在しない場合はContent-LanguageHTTPヘッダーを確認します。次に、から予測を取得しcld3ます。

コンパクト言語検出器V3(またはCLD3)は、言語識別のためのニューラルネットワークモデルです。READMEには次のように記載されています。

推論コードは、入力テキストから文字ngramを抽出し、それぞれが出現する時間の割合を計算します。たとえば、下の図に示すように、入力テキストが「banana」の場合、抽出されたトライグラムの1つは「ana」であり、対応する分数は2/4です。ngramはハッシュされて狭い範囲内のIDになり、各IDはトレーニング中に推定された密な埋め込みベクトルによって表されます。

モデルは、フラクションに従って各ngramタイプに対応する埋め込みを平均化し、平均化された埋め込みを連結して埋め込みレイヤーを作成します。

だから、基本的に、彼らはウェブサイトの束のコピーをダウンロードし、それらのウェブサイト上のテキストを見て誰かを支払い、彼らが書かれているどのような言語と言う。次は、彼らがにテキストを分割するnグラム(のグループNの文字)などニューラルネットワークを使用して、n-gram分布と言語間のマッピングを学習しました。

したがって、これらには2つの変数があります。

  • language 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.