文字分類工作可讓您將文字分類到一組已定義的類別、 例如正面或負面情緒類別是依據 以及您所使用的模型及訓練方式這些操作說明 如何在 iOS 應用程式中使用文字分類器。在這些容器中 如需操作說明,請前往 GitHub。
如要查看這項工作的實際運作情形,請參閱這個網頁 示範。適用對象 進一步瞭解 請參閱 總覽:
程式碼範例
MediaPipe Tasks 範例程式碼是文字分類器的基本實作 App Engine 應用程式
你可以將這個應用程式做為起點,開始使用 iOS 應用程式,也可以參照這個應用程式 做出決定如需文字分類程式的範例程式碼 為 GitHub。
下載程式碼
以下說明如何建立範例的本機副本 git 指令列工具編寫程式碼。
如要下載範例程式碼,請按照下列步驟操作:
使用下列指令複製 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/ios/
建立範例程式碼的本機版本後,您可以安裝 MediaPipe 工作程式庫、使用 Xcode 開啟專案,然後執行應用程式。適用對象 操作說明,請參閱 iOS 設定指南。
重要元件
下列檔案包含 Text Classifier 範例的重要程式碼 應用程式:
- TextClassifierHelper.swift: 初始化文字分類器並處理模型選項。
- ViewController.swift: 實作 UI 並將結果設定格式。
設定
本節說明設定開發環境的重要步驟,以及 程式碼專案使用 Text Classifier。如需設定 使用 MediaPipe 工作 (包括平台版本) 的開發環境 規定,請參閱 iOS 設定指南。
依附元件
文字分類器使用 MediaPipeTasksText
程式庫 (必須安裝)
開發應用程式這個程式庫同時與 Swift 和 Objective-C 應用程式相容
且不需要額外設定任何特定語言
如需在 macOS 上安裝 CocoaPods 的操作說明,請參閱 CocoaPods
安裝指南。
有關如何建立包含所需 Pod 的 Podfile
的操作說明
請參閱使用
CocoaPods
使用下列程式碼在 Podfile
中新增 MediaPipeTasksText Pod:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
如果您的應用程式包含單元測試目標,請參閱設定指南:
iOS,進一步瞭解設定方式
您的 Podfile
。
型號
MediaPipe 文字分類器工作需要經過訓練且彼此相容的模型 透過這項工作如要進一步瞭解 Text Classifier,請參閱工作總覽模型 專區。
選取並下載模型,然後用 Xcode 將模型新增到專案目錄。 如需將檔案新增至 Xcode 專案的操作說明,請參閱管理 Xcode 中的檔案和資料夾 專案。
使用 BaseOptions.modelAssetPath
屬性指定模型的路徑
。如需程式碼範例,請參閱下一節。
建立工作
您可以呼叫其中一個初始化器,建立文字分類工作工作。
「TextClassifier(options:)
」初始化器會設定用於設定的值
只要設定成「自動重新啟動」
和「在主機維護期間」選項即可
如果不需要透過自訂設定初始化文字分類器
您可以使用 TextClassifier(modelPath:)
初始化器建立
附有預設選項的文字分類器。進一步瞭解設定
選項,請參閱設定總覽。
下列程式碼示範如何建構及設定這項工作。
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
設定選項
這項工作有下列 iOS 應用程式設定選項:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
displayNamesLocale |
設定標籤語言,供
工作模型的中繼資料 (如有)。以下項目的預設值為 en :
英語。您可以在自訂模型的中繼資料中加入經本地化的標籤
使用 TensorFlow Lite Metadata Writer API
| 語言代碼 | en |
maxResults |
將最高分數分類結果的選用數量上限設為 傳回。如果0,系統會傳回所有可用的結果。 | 任何正數 | -1 |
scoreThreshold |
設定預測分數門檻,此門檻會覆寫 模型中繼資料 (如有)低於這個值的結果遭到拒絕。 | 任何浮點值 | 未設定 |
categoryAllowlist |
設定允許使用的類別名稱清單 (選用)。如果非空白
如果類別名稱不在這個組合中,就會由此
過濾掉。系統會忽略重複或不明的類別名稱。
這個選項與 categoryDenylist 互斥,
這兩個都會造成錯誤。 |
任何字串 | 未設定 |
categoryDenylist |
設定不允許使用的類別名稱清單 (選填)。如果
非空白的分類結果如果屬於這個集合的類別名稱,系統就會加以篩選
。系統會忽略重複或不明的類別名稱。這個選項會互相影響
只使用 categoryAllowlist 且同時使用兩者都會發生錯誤。 |
任何字串 | 未設定 |
準備資料
文字分類器支援文字資料。這個工作會處理資料輸入 預先處理作業,包括符記化和張量預先處理。
所有預先處理作業都在 classify(text:)
函式中處理。由於沒有
需要事先對輸入文字進行額外預先處理
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
執行工作
如要執行文字分類器,請使用 classify(text:)
方法。文字分類器
會傳回輸入文字的可能類別。
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
注意:在執行推論完成前,工作會阻斷目前的執行緒 例如文字說明為避免封鎖目前的執行緒,請在 使用 iOS 的背景執行緒 調度或 NSOperation 架構。
處理及顯示結果
執行推論時,文字分類器工作會傳回 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"
。
ViewController.swift ,示範如何顯示偵測結果 從工作傳回的字串