MediaPipe 文字分類器工作可讓您將文字分類到一組定義的類別, 例如正面或負面情緒類別是由模型決定 以及訓練模型的方式以下說明 文字分類器與 Android 應用程式搭配使用
您可以前往 demo」。 如要進一步瞭解功能、模型 請參閱總覽一文。
程式碼範例
Text Classifier 的範例程式碼提供了這種簡單的實作方式 做為參考的任務這個程式碼可協助您測試這項工作並開始進行 建立自己的文字分類應用程式您可以瀏覽 文字分類器程式碼範例 。
下載程式碼
如要下載範例程式碼,請按照下列步驟操作:
- 使用下列指令複製 git 存放區:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 您也可以選擇設定 Git 執行個體,以使用稀疏結帳功能。
所以您只擁有 Text Classifier 範例應用程式的檔案:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/android
如需使用 Android Studio 設定及執行範例的操作說明, 請參閱「 Android 設定指南。
重要元件
以下檔案包含有關文字分類的重要程式碼 範例應用程式:
- TextClassifierHelper.kt - 初始化文字分類器並處理模型選項。
- MainActivity.kt:
實作應用程式,包括呼叫
TextClassifierHelper
和ResultsAdapter
。 - ResultsAdapter.kt: 處理結果並設定格式。
設定
本節說明設定開發環境的重要步驟,以及 專門使用 Text Classifier 編寫程式碼專案。如需 設定使用 MediaPipe Tasks 的開發環境,包括 平台版本需求,請參閱 Android 設定指南。
依附元件
文字分類器使用 com.google.mediapipe:tasks-text
程式庫。新增此項目
Android 應用程式開發專案的 build.gradle
檔案的依附元件。
您可以使用下列程式碼匯入必要的依附元件:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
型號
MediaPipe 文字分類器工作需要經過訓練且與此模型相容的模型。 工作。如要進一步瞭解文字分類器可用的已訓練模型,請參閱: 工作總覽的「模型」一節。
選取並下載模型,然後儲存在專案中assets
目錄:
<dev-project-root>/src/main/assets
使用 BaseOptions.Builder.setModelAssetPath()
方法指定路徑
要使用的模型如需程式碼範例,請參閱下一節。
建立工作
使用其中一個文字分類器 TextClassifier.createFrom...()
函式進行以下操作:
準備執行推論的工作。您可以使用 createFromFile()
內含已訓練模型檔案的相對或絕對路徑。程式碼
下列範例說明如何使用 TextClassifier.createFromOptions()
函式。如要進一步瞭解可用的設定選項,請參閱
設定選項。
下列程式碼示範如何建構及設定這項工作。
// no directory path required if model file is in src/main/assets:
String currentModel = "text_classifier_model.tflite";
fun initClassifier() {
val baseOptionsBuilder = BaseOptions.builder()
.setModelAssetPath(currentModel)
try {
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder = TextClassifier.TextClassifierOptions.builder()
.setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textClassifier = TextClassifier.createFromOptions(context, options)
} catch (e: IllegalStateException) { // exception handling
}
}
您可以在程式碼範例中查看如何建立任務的範例
TextClassifierHelper
initClassifier()
類別函式。
設定選項
這項工作有下列 Android 應用程式設定選項:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
displayNamesLocale |
設定標籤語言,供
工作模型的中繼資料 (如有)。以下項目的預設值為 en :
英語。您可以在自訂模型的中繼資料中加入經本地化的標籤
使用 TensorFlow Lite Metadata Writer API
| 語言代碼 | en |
maxResults |
將最高分數分類結果的選用數量上限設為 傳回。如果0,系統會傳回所有可用的結果。 | 任何正數 | -1 |
scoreThreshold |
設定預測分數門檻,此門檻會覆寫 模型中繼資料 (如有)低於這個值的結果遭到拒絕。 | 任何浮點值 | 未設定 |
categoryAllowlist |
設定允許使用的類別名稱清單 (選用)。如果非空白
如果類別名稱不在這個組合中,就會由此
過濾掉。系統會忽略重複或不明的類別名稱。
這個選項與 categoryDenylist 互斥,
這兩個都會造成錯誤。 |
任何字串 | 未設定 |
categoryDenylist |
設定不允許使用的類別名稱清單 (選填)。如果
非空白的分類結果如果屬於這個集合的類別名稱,系統就會加以篩選
。系統會忽略重複或不明的類別名稱。這個選項會互相影響
只使用 categoryAllowlist 且同時使用兩者都會發生錯誤。 |
任何字串 | 未設定 |
準備資料
文字分類器支援文字 (String
) 資料。這個工作會處理資料輸入
預先處理作業,包括符記化和張量預先處理。
所有預先處理作業都在 classify()
函式中處理。不需要
以便事先對輸入文字進行額外預先處理
String inputText = "The input text to be classified.";
執行工作
文字分類器使用 TextClassifier.classify()
函式執行
推論出使用單獨的執行執行緒執行分類
以避免影響應用程式的 Android 使用者介面執行緒。
下列程式碼示範如何使用 工作執行處理程序 建構機器學習模型
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = textClassifier.classify(text)
listener.onResult(results)
}
}
您可以在程式碼範例中查看如何執行工作的範例
TextClassifierHelper
classify()
類別函式。
處理及顯示結果
文字分類器會輸出包含清單的 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"
。
您可以在程式碼範例中查看如何顯示結果的範例
ResultsAdapter
類別和 ViewHolder
內部類別。