使用內建 AI 技術偵測語言

發布日期:2024 年 9 月 24 日,上次更新時間:2025 年 5 月 20 日

Browser Support

  • Chrome: 138.
  • Edge: not supported.
  • Firefox: not supported.
  • Safari: not supported.

Source

如要將文字從一種語言翻譯成另一種語言,請先判斷指定文字使用的語言。先前翻譯時,必須將文字上傳至雲端服務、在伺服器上執行翻譯,然後下載結果。

Language Detector API 在用戶端運作,因此可保護使用者隱私。雖然可以運送執行這項作業的特定程式庫,但需要額外資源才能下載。

語言偵測功能的使用時機

語言偵測器 API 主要適用於下列情況:

  • 判斷輸入文字的語言,以便翻譯。
  • 判斷輸入文字的語言,以便載入正確的模型來執行特定語言的工作,例如偵測惡意言論。
  • 判斷輸入文字的語言,以便正確標示,例如在線上社群網站中。
  • 判斷輸入文字的語言,以便相應調整應用程式介面。舉例來說,在比利時網站上,只向說法文的使用者顯示相關介面。

開始使用

執行功能偵測,確認瀏覽器是否支援 Language Detector API。

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

下載模型

語言偵測功能會使用經過微調的模型,專門偵測語言。雖然 API 是在瀏覽器中建構,但模型會在網站首次嘗試使用 API 時,依需求下載。相較於其他模型,這個模型在 Chrome 中非常小。這個模型可能已存在,因為其他 Chrome 功能也會使用。

如要判斷模型是否已可使用,請呼叫非同步 LanguageDetector.availability() 函式。如果對 availability() 的回應是 downloadable,請監聽下載進度並通知使用者,因為下載可能需要一段時間。

如要觸發下載並例項化語言偵測器,請檢查使用者啟用。然後呼叫非同步 LanguageDetector.create() 函式。

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

執行語言偵測器

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 遊樂場

API 試驗場中試用 Language Detector API。在文字區域中輸入以不同語言撰寫的文字。

權限政策、iframe 和 Web Worker

根據預設,Language Detector API 僅適用於頂層視窗,以及與頂層視窗同源的 iframe。您可以使用 Permission Policy allow="" 屬性,將 API 存取權委派給跨來源 iframe:

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Language Detector API by
  setting the `allow="language-detector"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="language-detector"></iframe>

Language Detector API 不適用於 Web Worker。這是因為要為每位工作人員建立負責文件,以檢查權限政策狀態,相當複雜。

提供意見

我們很想瞭解您使用 Language Detector API 打造的內容。歡迎在 XYouTubeLinkedIn 上分享您的網站和網路應用程式。

如要對 Chrome 的實作方式提供意見,請回報 Chromium 錯誤