共用方式為


使用 Language Detector API 偵測語言

語言偵測 API 是一個實驗性的網頁 API,允許你利用 Microsoft Edge 內建的模型,從你網站或瀏覽器擴充功能中的 JavaScript 程式碼中,偵測文字語言。

詳細內容:

簡介

關於語言偵測器 API 的入門資訊,請參見:

使用語言偵測器 API 搭配翻譯器 API

為了方便將使用者提供的文字翻譯成其他語言,請將語言偵測器 API 與翻譯器 API 結合使用。

想了解翻譯器 API,請參考: 用翻譯器 API 翻譯文字

語言偵測器 API 的可用性

語言偵測器 API 從 147.0.3897.0 版本起,作為開發者預覽版可於 Microsoft Edge Canary 或 Dev 頻道提供。 若要下載 Microsoft Edge (Beta、開發版或 Canary) 的預覽頻道,請前往 「成為 Microsoft Edge Insider」。

語言偵測器 API 的優點

語言偵測器 API 使用語言偵測模型,運行於同一裝置,該裝置的輸入與輸出 (本地) 。 此方法相較於雲端解決方案有以下優點:

  • 降低成本: 使用雲端語言偵測服務是免費的。

  • 網路獨立性: 除了初始模型下載外,使用此 API 偵測語言時不會有網路延遲,且在裝置離線時也能使用。

  • 提升隱私: 輸入到模型的資料不會離開裝置,也不會被收集來訓練其他 AI 模型。

語言偵測模型會在 Microsoft Edge 首次使用 API 時下載,隨後在瀏覽器中的所有網站共享。 該模型透過簡單的網頁 API 存取,無需第三方框架知識,也不需要人工智慧 (AI) 或機器學習 (機器學習) 專業知識。

語言偵測器 API 的替代方案

你可以將網路請求傳送到具備更先進功能的雲端語言偵測服務;請參閱 Azure AI 語言文件

作為裝置端替代方案,Prompt API 提供更多自訂情境,內建於 Microsoft Edge 的小型語言模型;請參見 Prompt,一個內建 Prompt API 的語言模型

免責聲明

與其他機器學習模型一樣,Microsoft Edge 的語言偵測模型可能對某些輸入(如短文字或單字)產生不準確或不可靠的結果。

模型可用性

網站首次呼叫語言偵測器 API 時,需先下載模型。 你可以在建立新的語言偵測器 API 會話時,使用監控選項來監控模型下載;詳見下方 「監控模型下載進度 (監控) 」。

啟用語言偵測器 API

要在 Microsoft Edge 中使用語言偵測器 API,請設定旗標如下:

  1. 在 Microsoft Edge 中,請前往 edge://version,並確保你使用的是 Microsoft Edge 的 147.0.3897.0 版本或更新版本,例如 Microsoft Edge 的 Canary 或 Dev 預覽頻道。

    若要下載 Microsoft Edge (Beta、開發版或 Canary) 的預覽頻道,請前往 「成為 Microsoft Edge Insider」。

  2. 在該版本的 Microsoft Edge 中,開啟一個新分頁或視窗,然後前往 edge://flags

  3. 在頂端的 搜尋旗標 文字框中,開始輸入 「語言偵測網頁平台 API」:

    瀏覽器的旗標頁面

    以下旗幟列出:

    • 語言偵測網頁平台 API

      本條目顯示 #edge-language-detection-api 連結至 edge://flags/#edge-language-detection-api) 的 (。

  4. 語言偵測網頁平台 API 中,選擇 啟用

    右下角 顯示一個重新啟動 按鈕。

  5. 點擊 重新啟動 按鈕。

請參考工作範例

要查看語言偵測器 API 的運作,以及查看使用此 API 的現有程式碼:

  1. 啟用上述語言偵測器 API

  2. 在 Microsoft Edge Canary 或 Dev 中,請在新視窗或分頁中進入 語言偵測器 API 的遊樂場

  3. 在最上方的資訊橫幅中,查看狀態:最初顯示: 裝置上可用的 API 與型號。

  4. 在「 文字分析 」視窗中,你可以選擇性地更改文字內容。

  5. 點擊 偵測語言 按鈕。

    模型開始偵測文本的語言。

    輸出會在頁面的回應區產生。

    輸出顯示:

    • 偵測到的語言名稱。
    • 哪種語言的確定性百分比。

    語言偵測器示範頁面,附有設定和偵測按鈕

另請參閱:

  • /built-in-ai/ - 內建 AI 遊樂場示範的原始碼與說明文件。

使用語言偵測器 API

接下來的章節將介紹使用 Language Detector API。

檢查語言偵測器 API 是否啟用

在使用網站程式碼中的語言偵測器 API 前,請先檢查該 API 是否啟用,並測試該物件的存在 LanguageDetector

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

請確認該模型是否可用於 (availability())

語言偵測器 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 選項追蹤模型下載進度。 當模型尚未完全下載到將使用的裝置時,這很有用,可以提醒網站用戶應該等待。

// 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;
      }
    });
  }
});

(detect()) 執行語言偵測器 API

建立模型會話後,你可以偵測文字語言。 語言偵測器 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() 方法回傳一個承諾,該承諾解析為一組語言偵測結果。 每個結果都是一個具有以下性質的物件:

屬性 描述
detectedLanguage 例如,檢測到的語言的BCP 47語言標籤 ("en" 英語、 "es" 西班牙語或 "und" 未確定) 。
confidence 介於0.0到1.0之間的數值,表示偵測的置信水準。 數值越高表示信心越高。

結果依信心度由高至低排序,最可能的語言排在前。 結果陣列的最後一項總是未 確定 的語言, ("und") 。 undetermined陣列中的成員代表該文本不使用模型已知任何語言的百分比信心度。

理解信心分數

語言偵測器 API 回傳的信賴分數具有以下特性:

  • 範圍: 每個信心分數為介於0 (最低信心) 到1 (最高信心) 之間的數字,包含在內。

  • 排序結果: 結果依置信度由高至低排序。

  • 低信心過濾: 信心度極低的語言會自動被過濾掉,以減少雜訊。 低信心 通常低於1%,或比「未確定」類別更低。

  • 分數總和: 所有信心分數的總和可能小於1,因為結果中省略了低機率語言。

摧毀一場 (destroy())

偵測到語言後,摧毀會話。 這讓瀏覽器知道你不再需要語言模型,這樣模型就能從記憶體中卸載。

你可以用兩種不同的方式摧毀一場遊戲:

  • 透過使用這個 destroy() 方法。
  • 透過使用 AbortController.

詳情如下。

透過呼叫銷毀會話 destroy()

要用 session 呼叫來摧毀一個 session destroy()LanguageDetector

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 會有用。

若要針對你的情境和想完成的任務發送回饋,請在 語言偵測器 API 回饋問題中添加評論。

如果你發現使用 API 時有任何問題,請向倉庫回報。

你也可以參與 W3C 網路機器學習工作小組倉庫中關於語言偵測器 API 設計的討論。

另請參閱

取得 Microsoft Edge:

GitHub:

Azure docs:

Demos repo: