言語の検出

ウェブ機能: 言語検出機能

Language Detector API は、指定されたテキスト文字列の言語を識別するように設計されたクライアントサイドのウェブ API です。ブラウザでローカルに検出を行うことで、ユーザーのプライバシーが強化され、重い外部ライブラリやコストのかかるサーバーサイド呼び出しの必要性が軽減されます。

主なユースケース

  • 翻訳の準備: テキストを翻訳者に送信する前に、ソース言語を特定します。
  • 安全性とフィルタリング: 有害性検出などのタスクに特定のモデルを読み込みます。
  • ユーザー補助: スクリーン リーダー向けに、正しい lang 属性を使用してコンテンツにラベルを付ける。
  • UI のローカライズ: ユーザーの入力言語に基づいてアプリケーション インターフェースを調整します。

ハードウェアとシステム要件

  • OS: Windows 10 / 11、macOS 13 以降、Linux、Chromebook Plus。
  • ストレージ: 22 GB の空き容量(空き容量が 10 GB を下回ると、モデルは削除されます)。
  • RAM / CPU: 16 GB RAM、4 個以上の CPU コア。
  • VRAM: GPU を使用する場合は 4 GB 以上。

実装ガイド

1. モデル管理とユーザー アクティベーション

検出機能をインスタンス化したり、ダウンロードをトリガーしたりする前に、モデルが利用可能かどうかを確認します。

必須: 言語検出機能のインスタンス化または LanguageDetector.create() を使用したモデルのダウンロードのトリガーは、モデルが downloadable 状態または downloading 状態のときに NotAllowedError が発生しないように、ユーザー ジェスチャー(ボタンのクリックなど)によって開始しなければなりません。

// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();

if (availability !== 'unavailable') {
  button.addEventListener('click', async () => {
    const detector = await LanguageDetector.create({
      monitor(m) {
        m.addEventListener('downloadprogress', (e) => {
          console.log(`Downloaded ${e.loaded * 100}%`);
        });
      },
    });
  });
}

2. ランニング検出

API は、0.0~1.0 の信頼スコアとともに、可能性のある言語のランク付けされたリストを返します。

const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);

for (const result of results) {
  // result.detectedLanguage (e.g., 'de')
  // result.confidence (e.g., 0.999)
  console.log(result.detectedLanguage, result.confidence);
}

非常に短いフレーズや単一の単語に検出機能を使用すると、精度が大幅に低下するため、使用しないでください。

セキュリティと環境

  • iframe: クロスオリジンの iframe が API にアクセスするには、明示的な権限ポリシーが必要です。

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • ウェブワーカー: 権限ポリシーが複雑なため、現在、この API はウェブワーカーでは利用できません。

  • プライバシー: 検出プロセス中に Google や第三者にデータが送信されることはありません。

代替戦略

使用する前に、LanguageDetector オブジェクトがグローバル スコープで使用可能かどうかを確認します。

if ('LanguageDetector' in self) {
  // The Language Detector API is supported.
} else {
  // Execute fallback strategy
}

LanguageDetector API がサポートされていない場合、または可用性チェックで 'unavailable' が返された場合は、適切にフォールバックする必要があります。

  1. リモート API フォールバック: 検出リクエストをサーバー エンドポイントまたはクラウド API(Vertex AI Gemini API など)にリダイレクトして、言語を識別します。
  2. グレースフル デグラデーション: 言語検出の要素やボタンを無効にし、このブラウザではクライアントサイドの検出が現在サポートされていないことをユーザーに通知して、未処理の例外やクラッシュを防ぎます。