Language Detector API を使用して言語を検出する

Language Detector API は、Web サイトまたはブラウザー拡張機能の JavaScript コードから、Microsoft Edge に組み込まれているモデルを使用してテキストの言語を検出できる実験的な Web API です。

詳細な内容:

概要

Language Detector API の概要については、次を参照してください。

Translator API で Language Detector API を使用する

ユーザーが指定したテキストを別の言語に翻訳しやすくするには、Language Detector API と Translator API を組み合わせて使用します。

Translator API の詳細については、「Translator API を 使用してテキストを翻訳する」を参照してください。

Language Detector API の可用性

Language Detector API は、Microsoft Edge Canary または Dev チャネルの開発者プレビューとして、バージョン 147.0.3897.0 以降で利用できます。 Microsoft Edge (ベータ、開発、またはカナリア) のプレビュー チャネルをダウンロードするには、[ Microsoft Edge Insider になる] に移動します。

Language Detector API の利点

Language Detector API では、モデルの入力と出力が使用されているのと同じデバイスで実行される言語検出モデル (つまり、ローカル) が使用されます。 このアプローチには、クラウドベースのソリューションと比較して次の利点があります。

  • コストの削減: クラウド言語検出サービスの使用に関連するコストはありません。

  • ネットワークの独立性: 初期モデルのダウンロード以外に、この API を使用して言語を検出する場合のネットワーク待機時間はなく、デバイスがオフラインのときに API を使用することもできます。

  • プライバシーの強化: モデルへのデータ入力はデバイスから離れることはなく、他の AI モデルをトレーニングするために収集されることはありません。

言語検出モデルは、API が Microsoft Edge で初めて使用されるときにダウンロードされ、その後ブラウザー内のすべての Web サイトで共有されます。 このモデルには、サードパーティのフレームワークに関する知識を必要とせず、人工知能 (AI) または Machine Learning (ML) の専門知識を必要としない単純な Web API を介してアクセスします。

Language Detector API の代替手段

より高度な機能を使用して、クラウドベースの言語検出サービスにネットワーク要求を送信できます。AI 言語のドキュメントAzure参照してください

デバイス上の代替手段として、Prompt API は、Microsoft Edge に組み込まれている小さな言語モデルを使用して、より多くのカスタム シナリオを提供します。 「Prompt API を使用して組み込みの言語モデルをプロンプトする」を参照してください。

免責事項

他の機械学習モデルと同様に、Microsoft Edge の言語検出モデルは、短いテキストや単一の単語など、特定の入力に対して不正確または信頼性の低い結果を生成する可能性があります。

モデルの可用性

Web サイトが Language Detector API を初めて呼び出す場合は、モデルの初回ダウンロードが必要です。 新しい Language Detector API セッションを作成するときに、monitor オプションを使用してモデルのダウンロードを監視できます。以下 の「モデルのダウンロードの進行状況を監視する (モニター)」を参照してください。

Language Detector API を有効にする

Microsoft Edge で Language Detector API を使用するには、次のようにフラグを設定します。

  1. Microsoft Edge で、[ edge://version] に移動し、Microsoft Edge の Canary または Dev プレビュー チャネルなど、Microsoft Edge のバージョン 147.0.3897.0 以降を使用していることを確認します。

    Microsoft Edge (ベータ、開発、またはカナリア) のプレビュー チャネルをダウンロードするには、[ Microsoft Edge Insider になる] に移動します。

  2. そのバージョンの Microsoft Edge で、新しいタブまたはウィンドウを開き、[ edge://flags] に移動します。

  3. 上部の [ 検索フラグ ] テキスト ボックスで、「 言語検出 Web プラットフォーム API」と入力します。

    ブラウザーのフラグ ページ

    次のフラグが一覧表示されます。

    • 言語検出 Web プラットフォーム API

      このエントリには、 #edge-language-detection-api ( edge://flags/#edge-language-detection-api へのリンク) が表示されます。

  4. [ 言語検出 Web プラットフォーム API] で、[有効] を選択 します

    右下に[ 再起動 ]ボタンが表示されます。

  5. [ 再起動 ] ボタンをクリックします。

動作する例を見る

Language Detector API の動作を確認し、この API を使用する既存のコードを表示するには:

  1. 上記のように、Language Detector API を有効にします

  2. Microsoft Edge Canary または Dev で、新しいウィンドウまたはタブで Language Detector API プレイグラウンド に移動します。

  3. 上部の情報バナーで、状態をチェックします。最初は"オンデバイス API と使用可能なモデル" と読み取られます。

  4. [ 分析するテキスト ] テキスト ボックスで、必要に応じてテキストを変更できます。

  5. [ 言語の検出 ] ボタンをクリックします。

    モデルは、テキストの言語の検出を開始します。

    出力は、ページの応答セクションで生成されます。

    出力には次が表示されます。

    • 検出された言語の名前。
    • どの言語の確実性の割合。

    設定と [検出] ボタンを含む Language Detector デモ ページ

関連項目:

Language Detector API を使用する

次のセクションでは、Language Detector API の使用について説明します。

Language Detector API が有効になっているかどうかを確認する

Web サイトのコードで Language Detector API を使用する前に、LanguageDetector オブジェクトの存在をテストすることで、API が有効になっていることをチェックします。

if (!LanguageDetector) {
  // The Language Detector API is not available.
} else {
  // The Language Detector API is available.
}

モデルを使用できるかどうかを確認する (availability())

Language Detector API は、モデルとモデル ランタイムが Microsoft Edge によってダウンロードされている場合に使用できます。

API を使用できるかどうかをチェックするには、次のavailability()を呼び出します。

const availability = await LanguageDetector.availability();

if (availability == "unavailable") {
  // The model is not available.
}

if (availability == "downloadable" || availability == "downloading") {
  // The model can be used, but it needs to be downloaded first.
}

if (availability == "available") {
  // The model is available and can be used.
}

新しいセッションを作成する (create())

セッションを作成すると、モデルを使用できるように、言語検出モデルをメモリに読み込むようブラウザーに指示されます。 言語を検出する前に、 create() メソッドを使用して新しいセッションを作成します。

// Create a Language Detector session.
const session = await LanguageDetector.create();

モデル セッションをカスタマイズするには、create() メソッドにオプションを渡します:

// Create a Language Detector session with options.
const session = await LanguageDetector.create({
  expectedInputLanguages: ["en", "es", "fr"]
  monitor: monitorProgress
});

利用可能なオプションは以下のとおりです。

オプション 説明
expectedInputLanguages 言語コードの配列。 ユース ケースを検出できる必要がある特定の言語がある場合は、[ expectedInputLanguages ] オプションに含めます。 これにより、Microsoft Edge は、必要に応じて、精度を向上させるために追加のリソースをダウンロードできます。 言語コードは BCP 47 形式である必要があります (たとえば、英語の場合は "en" 、スペイン語の場合は "es" 、フランス語の場合は "fr" )。
monitor モデルのダウンロードの進行状況を監視するために使用される関数。 以下 の「モデルのダウンロードの進行状況を監視する (モニター)」を参照してください。

モデルのダウンロードの進行状況を監視する (monitor)

monitor オプションを使用して、モデルのダウンロードの進行状況を追跡できます。 これは、モデルが使用されるデバイスにまだ完全にダウンロードされていない場合に役立ち、ユーザーが待機する必要があることを Web サイトに通知します。

// Create a Language Detector session with the monitor option to monitor the
// model download.
const session = await LanguageDetector.create({
  monitor: m => {
    // Use the monitor object argument to add a listener for the 
    // downloadprogress event.
    m.addEventListener("downloadprogress", event => {
      // The event is an object with the loaded and total properties.
      if (event.loaded == event.total) {
        // The model is fully downloaded.
      } else {
        // The model is still downloading.
        const percentageComplete = (event.loaded / event.total) * 100;
      }
    });
  }
});

Language Detector API を実行する (detect())

モデル セッションを作成したら、テキストの言語を検出できます。 Language Detector API には、言語を検出するための detect() メソッドが用意されています。

// Create a Language Detector session.
const session = await LanguageDetector.create();

// Detect the language of the text.
const results = await session.detect(someUserText);

// Use the results.
for (const result of results) {
  // Show the full list of potential languages with their likelihood, ranked
  // from most likely to least likely.
  console.log(result.detectedLanguage, result.confidence);
}

detect() メソッドは、言語検出結果の配列に解決される promise を返します。 各結果は、次のプロパティを持つオブジェクトです。

プロパティ 説明
detectedLanguage 検出された言語の BCP 47 言語タグ (たとえば、英語の場合は "en" 、スペイン語の場合は "es" 、未確定の場合は "und" )。
confidence 検出の信頼度を示す 0.0 から 1.0 までの数値。 値が大きいほど、信頼度が高いことを示します。

結果は、最初に最も可能性の高い言語で、降順の信頼度で並べ替えられます。 結果配列の最後のエントリは、常に 未確定 言語 ("und") です。 配列の undetermined メンバーは、テキストがモデルで認識されている言語のいずれにも含まれていないという信頼度を表します。

信頼度スコアを理解する

Language Detector API によって返される信頼度スコアには、次の特性があります。

  • 範囲: 各信頼度スコアは、0 (最も低い信頼度) から 1 (最高信頼度) までの数値で、包括的です。

  • 並べ替えられた結果: 結果は、最高信頼度から最低信頼度に並べ替えられます。

  • 低信頼度フィルター: 非常に低い信頼度を持つ言語は、ノイズを減らすために自動的に除外されます。 低信頼度は通常、1% 未満、または "未確定" カテゴリよりも低い信頼度です。

  • スコアの合計: 低確率言語は結果から省略されるため、すべての信頼度スコアの合計が 1 未満になる可能性があります。

セッションを破棄する (destroy())

言語を検出した後、セッションを破棄します。 これにより、モデルをメモリからアンロードできるように、言語モデルは不要であることがブラウザーに認識されます。

セッションは、次の 2 つの方法で破棄できます:

  • destroy() メソッドを使用すると。
  • AbortController を使用すると。

詳細は以下のとおりです。

を呼び出してセッションを破棄する destroy()

LanguageDetector セッションでdestroy()を呼び出してセッションを破棄するには:

const session = await LanguageDetector.create();

// Later, destroy the session by using the destroy method.
session.destroy();

を使用してセッションを破棄する AbortController

AbortController オブジェクトを作成してセッションを破棄するには、LanguageDetector セッションを作成し、abort()を呼び出します。

// Create an AbortController object.
const controller = new AbortController();

// Create a Language Detector session and pass the 
// AbortController object by using the signal option.
const session = await LanguageDetector.create({
  signal: controller.signal
});

// Later, perhaps when the user interacts with the UI, destroy the session by
// calling the abort() function of the AbortController object.
controller.abort();

フィードバックの送信

次のことについて学習することに興味があります。

  • Language Detector API を使用するシナリオの範囲。
  • API または言語検出モデルで発生する問題。
  • 他のタスク固有の組み込み API が役に立つかどうか。

シナリオと達成するタスクに関するフィードバックを送信するには、 Language Detector API フィードバックの問題にコメントを追加します。

代わりに API を使用する際に問題が発生した場合は、リポジトリに報告してください

また、W3C Web Machine Learning ワーキング グループ リポジトリの Language Detector API の設計に関するディスカッションに投稿することもできます。

関連項目

Microsoft Edge を取得する:

Github:

Azureドキュメント:

Demos リポジトリ: