透過 Chrome 內建的 AI 技術偵測語言

發布日期:2024 年 9 月 24 日

將文字翻譯成其他語言之前,您必須先判斷該文字使用的是哪種語言。先前,這項操作需要將文字上傳至雲端服務。透過裝置端推論,您可以改善隱私權狀況。雖然可以提供可執行此操作的特定程式庫,但需要額外的資源才能下載。

語言偵測器和譯者 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() 函式。可能會收到三種回應:

  • 'no':目前的瀏覽器支援 Language Detector API,但目前無法使用。例如,因為可用磁碟空間不足,無法下載模型。
  • 'readily':目前的瀏覽器支援 Language Detector API,可立即使用。
  • 'after-download':目前的瀏覽器支援語言偵測器 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 會使用排名模型,判斷特定文字內容最有可能使用哪種語言。「排名」是一種機器學習技術,目標是為項目清單排序。在本例中,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。在文字方塊中輸入不同語言的文字。

註冊 Origins 試用版

如要開始為使用者測試這個 API,請註冊 Language Detector API 試用版。這項來源試用從 Chrome 130 到 135 版執行。

進一步瞭解來源試用的運作方式

標準化工作量

相應提案獲得足夠的支援後,Language Detector API 已移至 W3C Web Incubator 社群群組。這個 API 屬於大型 Translation API 提案。Chrome 團隊向 W3C 技術架構團隊要求提供意見,並要求 MozillaWebKit 詢問特定瀏覽器供應商的標準定位資訊。

提供意見

如果您對 Chrome 的實作方式有任何意見,請回報 Chromium 錯誤。歡迎對 Language Detector API 的 API 功能提供意見,也可以前往 Translation API GitHub 存放區開啟新問題。

資源