AI を組み込んだ言語検出

公開日: 2024 年 9 月 24 日、最終更新日: 2025 年 5 月 20 日

商品の解説 ウェブ 拡張機能 Chrome ステータス インテント
MDN Chrome 138 Chrome 138 表示 発送予定

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

Language Detector API はクライアントサイドで動作するため、ユーザーのプライバシーを保護できます。これを実行する特定のライブラリを配布することは可能ですが、ダウンロードに追加のリソースが必要になります。

言語検出を使用する場合

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

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

始める

Language Detector API は Chrome 138 安定版から利用できます。機能検出を実行して、ブラウザが Language Detector API をサポートしているかどうかを確認します。

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

ハードウェア要件を確認する

Chrome でこれらの API を使用して機能を操作するデベロッパーとユーザーには、次の要件があります。他のブラウザでは動作要件が異なる場合があります。

言語検出 API と翻訳 API は、パソコン版 Chrome で動作します。これらの API はモバイル デバイスでは動作しません。Prompt API、Summarizer API、Writer API、Rewriter API は、次の条件を満たす場合に Chrome で動作します。

  • オペレーティング システム: Windows 10 または 11、macOS 13 以降(Ventura 以降)、Linux。Gemini Nano を使用する API は、Android 版 Chrome、iOS 版 Chrome、ChromeOS 版 Chrome ではまだサポートされていません。
  • ストレージ: Chrome プロファイルを含むボリュームに 22 GB 以上。
  • GPU: 4 GB を超える VRAM。
  • ネットワーク: 無制限のデータ通信または従量制でない接続。

Gemini Nano の正確なサイズは若干異なる場合があります。現在のサイズを確認するには、chrome://on-device-internals にアクセスして [モデルのステータス] に移動します。リストに表示された [ファイルパス] を開いて、モデルのサイズを確認します。

モデルのダウンロード

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

モデルを使用できる状態かどうかを確認するには、非同期の LanguageDetector.availability() 関数を呼び出して、結果の Promise を調べます。考えられる回答は次の 3 つです。

  • "unavailable": リクエストされたオプションがサポートされていないか、モデルをプロンプトできません。
  • "downloadable": リクエストはサポートされていますが、セッションを作成する前に追加のダウンロードが必要です。これらのダウンロードには、言語モデルやファインチューニングが含まれる場合があります。
  • "downloading": リクエストがサポートされており、ダウンロードが進行中です。セッションを作成する前に、ダウンロードを完了する必要があります。
  • "available": リクエストはサポートされており、セッションを作成できます。

ダウンロードをトリガーして言語検出器をインスタンス化するには、非同期の LanguageDetector.create() 関数を呼び出します。availability() へのレスポンスが 'downloadable' または 'downloading' の場合、ダウンロードの進行状況をリッスンして、ダウンロードに時間がかかる場合にユーザーに通知できるようにすることをおすすめします。

次の例は、言語検出器を初期化する方法を示しています。

const availability = await LanguageDetector.availability();

let detector;
if (availability === 'unavailable') {
  // The language detector isn't usable.
  return;
}
if (availability === 'available') {
  // The language detector can immediately be used.
  detector = await LanguageDetector.create();
} else {
  // The language detector can be used after model download.
  detector = await LanguageDetector.create({
    monitor(m) {
      m.addEventListener('downloadprogress', (e) => {
        console.log(`Downloaded ${e.loaded * 100}%`);
      });
    },
  });
  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
// ...

API Playground

API プレイグラウンドで Language Detector API を試すことができます。テキストエリアにさまざまな言語で書かれたテキストを入力します。

標準化の労力

Chrome チームは W3C Technical Architecture Group にフィードバックを求め、MozillaWebKit に標準の立場を尋ねました。

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

Language Detector API を使用して構築したものをぜひお見せください。XYouTubeLinkedIn で、ウェブサイトやウェブ アプリケーションを共有してください。

Chrome の実装についてフィードバックがある場合は、Chromium のバグを報告してください。