網頁的文字分類指南

MediaPipe 文字分類器工作可讓您將文字分類到一組定義的類別, 例如正面或負面情緒類別是由模型決定 以及訓練模型的方式以下說明 適用於網頁和 JavaScript 應用程式的文字分類器。

您可以前往 demo」。 如要進一步瞭解功能、模型 請參閱總覽一文。

程式碼範例

Text Classifier 的範例程式碼提供了 方便您參考。這個程式碼可協助您測試這項工作 立即開始打造自己的文字分類應用程式您可以查看、執行 編輯文字分類器範例程式碼 只要使用網路瀏覽器即可。

設定

本節說明設定開發環境的重要步驟,以及 專門使用 Text Classifier 編寫程式碼專案。如需 設定使用 MediaPipe Tasks 的開發環境,包括 平台版本需求,請參閱 網頁版設定指南

JavaScript 套件

如需文字分類碼,請前往 @mediapipe/tasks-text敬上 套件。你可以透過 平台 設定指南

您可以使用下列程式碼安裝必要套件進行本機測試 使用以下指令:

npm install @mediapipe/tasks-text

如要部署至伺服器,可以使用內容傳遞工具 服務,例如 jsDelivr, 直接將程式碼新增到 HTML 網頁,如下所示:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

型號

MediaPipe 文字分類器工作需要經過訓練且與此模型相容的模型。 工作。如要進一步瞭解文字分類器可用的已訓練模型,請參閱: 工作總覽的「模型」一節

選取並下載模型,然後將模型儲存在專案目錄中:

<dev-project-root>/assets/bert_text_classifier.tflite

使用 baseOptions 物件 modelAssetPath 指定模型路徑 參數,如下所示:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

建立工作

使用其中一個文字分類器 TextClassifier.createFrom...() 函式進行以下操作: 準備執行推論的工作。您可以使用 createFromModelPath() 內含已訓練模型檔案的相對或絕對路徑。程式碼 下列範例說明如何使用 TextClassifier.createFromOptions() 函式。如要進一步瞭解可用的設定選項,請參閱 設定選項

下列程式碼示範如何建構及設定這項工作:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

設定選項

這項工作包含以下網頁和 JavaScript 設定選項 應用程式:

選項名稱 說明 值範圍 預設值
displayNamesLocale 設定標籤語言,供 工作模型的中繼資料 (如有)。以下項目的預設值為 en: 英語。您可以在自訂模型的中繼資料中加入經本地化的標籤 使用 TensorFlow Lite Metadata Writer API 語言代碼 en
maxResults 將最高分數分類結果的選用數量上限設為 傳回。如果0,系統會傳回所有可用的結果。 任何正數 -1
scoreThreshold 設定預測分數門檻,此門檻會覆寫 模型中繼資料 (如有)低於這個值的結果遭到拒絕。 任何浮點值 未設定
categoryAllowlist 設定允許使用的類別名稱清單 (選用)。如果非空白 如果類別名稱不在這個組合中,就會由此 過濾掉。系統會忽略重複或不明的類別名稱。 這個選項與 categoryDenylist 互斥, 這兩個都會造成錯誤。 任何字串 未設定
categoryDenylist 設定不允許使用的類別名稱清單 (選填)。如果 非空白的分類結果如果屬於這個集合的類別名稱,系統就會加以篩選 。系統會忽略重複或不明的類別名稱。這個選項會互相影響 只使用 categoryAllowlist 且同時使用兩者都會發生錯誤。 任何字串 未設定

準備資料

文字分類器支援文字 (String) 資料。該工作會處理 資料輸入預先處理,包括代碼化和 Tensor 預先處理

所有預先處理作業都在 classify() 函式中處理。不需要 以便事先對輸入文字進行額外預先處理

const inputText = "The input text to be classified.";

執行工作

文字分類器使用 classify() 函式觸發推論。文字 「分類」意指傳回輸入文字的可能類別,

下列程式碼示範如何使用 工作執行處理程序 模型

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

處理及顯示結果

文字分類器會輸出包含清單的 TextClassifierResult 可能符合輸入文字的類別這些類別是由 操作方式,如果想不同的類別,請選擇不同的模式 也能重新訓練現有素材資源

以下範例顯示這項工作的輸出資料範例:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

此結果是藉由對輸入文字執行 BERT-classifier 取得: "an imperfect but overall entertaining mystery"