Detyra "Klasifikuesi i tekstit" ju lejon të klasifikoni tekstin në një grup kategorish të përcaktuara, të tilla si ndjenja pozitive ose negative. Kategoritë përcaktohen në bazë të modelit që përdorni dhe si është trajnuar ai model. Këto udhëzime ju tregojnë se si të përdorni Klasifikuesin e Tekstit në aplikacionet iOS. Shembulli i kodit i përshkruar në këto udhëzime është i disponueshëm në GitHub .
Ju mund ta shihni këtë detyrë në veprim duke parë këtë demonstrim në ueb . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Shembull kodi
Kodi i shembullit të MediaPipe Tasks është një zbatim bazë i një aplikacioni Text Classifier për iOS.
Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj iOS ose t'i referoheni kur modifikoni një aplikacion ekzistues. Mund t'i referoheni kodit të shembullit të Klasifikuesit të Tekstit në GitHub .
Shkarkoni kodin
Udhëzimet e mëposhtme ju tregojnë se si të krijoni një kopje lokale të kodit shembull duke përdorur mjetin e linjës së komandës git .
Për të shkarkuar kodin shembull:
Klononi depon e git duke përdorur komandën e mëposhtme:
git clone https://github.com/google-ai-edge/mediapipe-samples
Opsionale, konfiguroni shembullin tuaj të git për të përdorur arkëtimin e rrallë, në mënyrë që të keni vetëm skedarët për shembullin e aplikacionit Text Classifier:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
Pas krijimit të një versioni lokal të kodit shembull, mund të instaloni bibliotekën e detyrave MediaPipe, të hapni projektin duke përdorur Xcode dhe të ekzekutoni aplikacionin. Për udhëzime, shihni Udhëzuesin e konfigurimit për iOS .
Komponentët kryesorë
Skedarët e mëposhtëm përmbajnë kodin vendimtar për shembullin e aplikacionit të Klasifikimit të Tekstit:
- TextClassifierHelper.swift : Inicializon klasifikuesin e tekstit dhe trajton zgjedhjen e modelit.
- ViewController.swift : Zbaton UI dhe formaton rezultatet.
Konfigurimi
Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit dhe projekteve të kodit për të përdorur Klasifikuesin e Tekstit. Për informacion të përgjithshëm mbi konfigurimin e mjedisit tuaj të zhvillimit për përdorimin e detyrave të MediaPipe, duke përfshirë kërkesat e versionit të platformës, shihni udhëzuesin e konfigurimit për iOS .
varësitë
Klasifikuesi i tekstit përdor bibliotekën MediaPipeTasksText
, e cila duhet të instalohet duke përdorur CocoaPods. Biblioteka është e pajtueshme me të dy aplikacionet Swift dhe Objective-C dhe nuk kërkon ndonjë konfigurim shtesë specifik për gjuhën.
Për udhëzime për instalimin e CocoaPods në macOS, referojuni udhëzuesit të instalimit të CocoaPods . Për udhëzime se si të krijoni një Podfile
me pods-et e nevojshme për aplikacionin tuaj, referojuni Përdorimit të CocoaPods .
Shtoni podin MediaPipeTasksText në Podfile
duke përdorur kodin e mëposhtëm:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Nëse aplikacioni juaj përfshin objektiva testimi të njësisë, referojuni Udhëzuesit të konfigurimit për iOS për informacion shtesë mbi konfigurimin e skedarit tuaj Podfile
.
Model
Detyra MediaPipe Text Classifier kërkon një model të trajnuar që është në përputhje me këtë detyrë. Për më shumë informacion rreth modeleve të trajnuara të disponueshme për Klasifikuesin e Tekstit, shihni seksionin Modelet e përmbledhjes së detyrave.
Zgjidhni dhe shkarkoni një model dhe shtoni atë në drejtorinë e projektit tuaj duke përdorur Xcode. Për udhëzime se si të shtoni skedarë në projektin tuaj Xcode, referojuni Menaxhimi i skedarëve dhe dosjeve në projektin tuaj Xcode .
Përdorni veçorinë BaseOptions.modelAssetPath
për të specifikuar shtegun drejt modelit në paketën tuaj të aplikacionit. Për një shembull kodi, shihni seksionin tjetër.
Krijo detyrën
Ju mund të krijoni detyrën Klasifikuesi i tekstit duke thirrur një nga inicializuesit e tij. Inicializuesi TextClassifier(options:)
vendos vlerat për opsionet e konfigurimit.
Nëse nuk keni nevojë për një Klasifikues Teksti të inicializuar me opsione të personalizuara të konfigurimit, mund të përdorni iniciatorin TextClassifier(modelPath:)
për të krijuar një Klasifikues Teksti me opsionet e paracaktuara. Për më shumë informacion rreth opsioneve të konfigurimit, shihni Përmbledhjen e konfigurimit .
Kodi i mëposhtëm tregon se si të ndërtohet dhe konfigurohet kjo detyrë.
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)
Objektivi-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];
Opsionet e konfigurimit
Kjo detyrë ka opsionet e mëposhtme të konfigurimit për aplikacionet iOS:
Emri i opsionit | Përshkrimi | Gama e vlerave | Vlera e paracaktuar |
---|---|---|---|
displayNamesLocale | Vendos gjuhën e etiketave për t'u përdorur për emrat e shfaqur të dhëna në meta të dhënat e modelit të detyrës, nëse disponohet. Parazgjedhja është en për anglisht. Ju mund të shtoni etiketa të lokalizuara në meta të dhënat e një modeli të personalizuar duke përdorur API-në e shkrimtarit metadata TensorFlow Lite | Kodi lokal | sq |
maxResults | Vendos numrin maksimal opsional të rezultateve të klasifikimit me pikët më të mira për t'u kthyer. Nëse < 0, të gjitha rezultatet e disponueshme do të kthehen. | Çdo numër pozitiv | -1 |
scoreThreshold | Vendos pragun e rezultatit të parashikimit që tejkalon atë të dhënë në meta të dhënat e modelit (nëse ka). Rezultatet nën këtë vlerë refuzohen. | Çdo noton | Nuk është vendosur |
categoryAllowlist | Vendos listën opsionale të emrave të kategorive të lejuara. Nëse nuk janë bosh, rezultatet e klasifikimit emri i kategorisë së të cilave nuk është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me categoryDenylist dhe duke përdorur të dyja rezulton në një gabim. | Çdo varg | Nuk është vendosur |
categoryDenylist | Vendos listën opsionale të emrave të kategorive që nuk lejohen. Nëse nuk janë bosh, rezultatet e klasifikimit emri i kategorisë së të cilave është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me categoryAllowlist dhe duke përdorur të dyja rezultatet në një gabim. | Çdo varg | Nuk është vendosur |
Përgatitni të dhënat
Klasifikuesi i tekstit punon me të dhëna teksti. Detyra trajton parapërpunimin e hyrjes së të dhënave, duke përfshirë parapërpunimin e tokenizimit dhe tensorit.
Të gjitha parapërpunimit trajtohen brenda funksionit classify(text:)
. Nuk ka nevojë për përpunim shtesë të tekstit të hyrjes paraprakisht.
Swift
let text = "The input text to be classified."
Objektivi-C
NSString *text = @"The input text to be classified.";
Drejtoni detyrën
Për të ekzekutuar Klasifikuesin e Tekstit, përdorni metodën classify(text:)
. Klasifikuesi i tekstit kthen kategoritë e mundshme për tekstin hyrës.
Swift
let result = try textClassifier.classify(text: text)
Objektivi-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
Shënim : Detyra bllokon fillin aktual derisa të përfundojë ekzekutimin e konkluzioneve në tekst. Për të shmangur bllokimin e fillit aktual, ekzekutoni përpunimin në një fill në sfond duke përdorur kornizat iOS Dispatch ose NSOoperation .
Trajtoni dhe shfaqni rezultatet
Pas ekzekutimit të konkluzionit, detyra e Klasifikimit të Tekstit kthen një objekt TextClassifierResult
i cili përmban listën e kategorive të mundshme për tekstin hyrës. Kategoritë përcaktohen nga modeli që përdorni, kështu që nëse doni kategori të ndryshme, zgjidhni një model tjetër ose rikualifikoni një ekzistues.
Më poshtë tregon një shembull të të dhënave dalëse nga kjo detyrë:
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
Ky rezultat është marrë duke ekzekutuar klasifikuesin BERT në tekstin hyrës: "an imperfect but overall entertaining mystery"
.
Skedari ViewController.swift në kodin e shembullit tregon se si të shfaqen rezultatet e zbulimit të kthyera nga detyra.