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

發布日期:2024 年 9 月 24 日

將文字翻譯成其他語言之前,您必須先判斷該文字使用的是哪種語言。先前,翻譯作業需要將文字上傳至雲端服務,在伺服器上執行翻譯,然後下載結果。

Language Detector API 會在裝置上使用推論,讓您改善隱私權說明。雖然可以提供可執行此操作的特定程式庫,但需要額外的資源才能下載。

可用性

使用範例

Language Detector API 主要適用於下列情況:

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

使用 Language Detector API

Language Detector API 屬於 Translator API 大型系列的一部分。首先,請執行功能偵測功能,查看瀏覽器是否支援語言偵測工具 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':目前的瀏覽器支援 Language Detector 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;
}

執行語言偵測器

語言偵測器 API 會使用排名模型,判斷特定文字最有可能使用哪種語言。「排名」是一種機器學習技術,目標是為項目清單排序。在本例中,語言偵測器 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
// ...

示範

示範中預覽 Language Detector API。在文字方塊中輸入不同語言的文字。

標準化作業

相關提案獲得足夠支持後,Language Detector API 已移至 W3C Web Incubator Community Group。這個 API 是更大型的 Translation API 提案的一部分。

Chrome 團隊向 W3C 技術架構小組索取意見回饋,並請 MozillaWebKit 提供標準立場。

提供意見

如果您對 Chrome 的實作方式有任何意見,請回報 Chromium 錯誤。如要針對 Language Detector API 的 API 形狀提供意見,請在 Translation API GitHub 存放區中對現有問題發表意見,或開啟新的問題。