Chrome に組み込まれた AI による言語検出

公開日: 2024 年 9 月 24 日

テキストをある言語から別の言語に翻訳する前に、まずそのテキストで使用されている言語を特定する必要があります。以前は、翻訳を行うには、テキストをクラウド サービスにアップロードし、サーバーで翻訳してから、結果をダウンロードする必要がありました。

Language Detector API はデバイス上の推論を使用するため、プライバシー保護を強化できます。これを実行する特定のライブラリを配布することは可能ですが、ダウンロードする追加のリソースが必要になります。

対象

オリジン トライアルに登録する

Language Detector API の使用を開始する手順は次のとおりです。

  1. Google の生成 AI の使用禁止に関するポリシーに同意する。
  2. Language Detector API オリジン トライアルに移動します。
  3. [登録] をクリックし、フォームに入力します。
    • [ウェブ オリジン] フィールドに、オリジンまたは拡張機能 ID chrome-extension://YOUR_EXTENSION_ID を指定します。
  4. 送信するには、[登録] をクリックします。
  5. 提供されたトークンをコピーし、トライアルを有効にするオリジンまたは拡張機能のファイルのすべてのウェブページに追加します。
  6. Language Detection API の使用を始める。

詳しくは、オリジン トライアルの利用を開始する方法をご覧ください。

localhost のサポートを追加

オリジン トライアル中に localhost で Language Detection API にアクセスするには、Chrome を最新バージョンに更新する必要があります。続いて、次の手順を実行します。

  1. Windows、Mac、Linux のいずれかのプラットフォームで Chrome を開きます。
  2. chrome://flags/#language-detection-apiに向かいます。
  3. [有効] を選択します。
  4. [再起動] をクリックするか、Chrome を再起動します。

サンプル ユースケース

Language Detector API は、主に次のシナリオで役立ちます。

  • 入力テキストの言語を特定して翻訳できるようにします。
  • 入力テキストの言語を特定して、有害なコンテンツの検出などの言語固有のタスクに適したモデルを読み込むことができます。
  • オンライン ソーシャル ネットワーキング サイトなどで、入力テキストに正しくラベルを付けられるように、入力テキストの言語を特定します。
  • 入力テキストの言語を特定して、アプリのインターフェースを適切に調整できるようにします。たとえば、ベルギーのサイトで、フランス語を話すユーザーに関連するインターフェースのみを表示します。

Language Detector API を使用する

Language Detector API は、Translator API の大きなファミリーの一部です。まず、機能検出を実行して、ブラウザが Language Detector API をサポートしているかどうかを確認します。

if ('translation' in self && 'canDetect' in self.translation) {
  // The Language Detector API is available.
}  

モデルのダウンロード

言語検出は、言語検出の特定のタスク用にファインチューニングされたモデルに依存します。API はブラウザに組み込まれていますが、モデルはサイトが API の使用を初めて試行したときにオンデマンドでダウンロードされます。Chrome では、このモデルは他のモデルと比較して非常に小さいです。実際、このモデルは Chrome ブラウザの機能でも使用されているため、すでに存在している可能性があります。

モデルが使用可能かどうかを確認するには、非同期の translation.canDetect() 関数を呼び出します。回答は次の 3 つです。

  • 'no': 現在のブラウザは Language Detector API をサポートしていますが、現時点では使用できません。たとえば、モデルをダウンロードするのに十分な空きディスク容量がないためです。
  • 'readily': 現在のブラウザは Language Detector API をサポートしており、すぐに使用できます。
  • 'after-download': 現在のブラウザは Language Detector 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;
}

言語検出ツールを実行する

Language Detector API は、ランキング モデルを使用して、特定のテキストで使用されている可能性が高い言語を特定します。ランキングは、アイテムのリストを並べ替えることを目的とする機械学習の一種です。この場合、Language Detector API は、言語の確率を高いものから低いものにランク付けします。

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
// ...

デモ

デモで Language Detector API をプレビューします。テキスト エリアに、さまざまな言語で記述されたテキストを入力します。

標準化の取り組み

Language Detector API は、対応する提案が十分なサポートを受けた後、W3C ウェブ インキュベーター コミュニティ グループに移行されました。この API は、より大規模な Translation API プロポーザルの一部です。

Chrome チームは W3C 技術アーキテクチャ グループにフィードバックをリクエストし、MozillaWebKit に標準に関する立場を尋ねました。

フィードバックをお寄せください

Chrome の実装についてフィードバックがある場合は、Chromium バグを報告してください。Language Detector API の API シェイプに関するフィードバックは、Translation API GitHub リポジトリで既存の問題にコメントするか、新しい問題を報告してください。