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

公開日: 2024 年 9 月 24 日

テキストをある言語から別の言語に翻訳する前に、まず、指定されたテキストで使用されている言語を決定する必要があります。以前は、テキストをクラウド サービスにアップロードする必要がありました。デバイス上での推論により、プライバシー ストーリーを改善できます。特定のライブラリを配布することは可能ですが、ダウンロードするには追加のリソースが必要になります。

Language Detector and Translator API の提案は、このタスクに合わせてモデルを微調整し、API をブラウザに組み込むことで、この課題を解決することを目的としています。

サンプル ユースケース

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 は、ランキング モデルを使用して、特定のテキストで使用されている可能性が高い言語を特定します。ランキングは ML の一種で、その目的はアイテムのリストを並べ替えることです。この場合、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 トライアルに登録して、この API をユーザーでテストします。このオリジン トライアルは Chrome 130~135 で実施されます。

詳しくは、オリジン トライアルの仕組みをご覧ください。

標準化の取り組み

Language Detector API は、対応する提案が十分なサポートを受けた後、W3C ウェブ インキュベーター コミュニティ グループに移動されました。この API は大規模な Translation API の提案の一部です。Chrome チームは W3C Technical Architecture Group にフィードバックを求め、特定のブラウザ ベンダーの標準的なポジショニングについて MozillaWebKit に尋ねました。

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

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

リソース