Python 文字分類指南

MediaPipe 文字分類器工作可讓您將文字分類到一組定義的類別, 例如正面或負面情緒類別是由模型決定 以及訓練模型的方式以下說明 編寫文字分類器

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

程式碼範例

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

如果您要實作 Raspberry Pi 專用的 Text Classifier,請參閱 Raspberry Pi 範例 app

設定

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

套件

文字分類器使用 mediapipe pip 套件。您可以安裝 具有以下依附元件:

$ python -m pip install mediapipe

匯入

匯入下列類別即可存取文字分類器工作函式:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

型號

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

選取並下載模型,然後儲存在本機目錄中:

model_path = '/absolute/path/to/text_classifier.tflite'

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

base_options = BaseOptions(model_asset_path=model_path)

建立工作

MediaPipe 文字分類器工作會使用 create_from_options 函式設定 工作。create_from_options 函式接受設定值 用來設定分類項選項的選項您也可以使用 create_from_model_path 工廠函式。create_from_model_path 函式接受訓練模型檔案的相對或絕對路徑。 如要進一步瞭解設定選項,請參閱 設定選項

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

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

設定選項

這項工作有下列 Android 應用程式設定選項:

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

準備資料

文字分類器支援文字 (str) 資料。這個工作會處理資料輸入 預先處理作業,包括符記化和張量預先處理。

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

input_text = 'The input text to be classified.'

執行工作

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

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

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

處理及顯示結果

文字分類器會輸出包含清單的 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"