Zadanie Klasyfikator tekstu pozwala sklasyfikować tekst według zdefiniowanych kategorii, np. pozytywnego lub negatywnego nastawienia. Kategorie są określane na podstawie używany model i sposób jego wytrenowania. Te instrukcje pokazują, jak używać klasyfikatora tekstu w aplikacjach na iOS. Przykładowy kod opisany w instrukcje są dostępne na GitHub
Aby zobaczyć, jak działa to zadanie, wejdź na tę stronę wersji demonstracyjnej. Dla: więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania, zobacz Przegląd.
Przykładowy kod
Przykładowy kod MediaPipe Tasks to podstawowa implementacja klasyfikatora tekstu na iOS.
Możesz użyć tej aplikacji jako punktu wyjścia dla własnej aplikacji na iOS lub skorzystać z niej podczas modyfikowania istniejącej aplikacji. Możesz skorzystać z przykładowego kodu klasyfikatora tekstu włączono GitHub
Pobieranie kodu
Poniżej znajdziesz instrukcje tworzenia lokalnej kopii przykładu. za pomocą narzędzia wiersza poleceń git.
Aby pobrać przykładowy kod:
Sklonuj repozytorium git za pomocą tego polecenia:
git clone https://github.com/google-ai-edge/mediapipe-samples
Opcjonalnie możesz skonfigurować instancję git tak, aby wykorzystywała rozproszony proces płatności, aby tylko pliki przykładowej aplikacji Text Classifier:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
Po utworzeniu lokalnej wersji przykładowego kodu możesz zainstalować z biblioteki zadań MediaPipe, otwórz projekt za pomocą Xcode i uruchom aplikację. Dla: instrukcje znajdziesz w Przewodniku po konfiguracji na iOS.
Kluczowe elementy
Poniższe pliki zawierają kluczowy kod przykładowego klasyfikatora tekstu aplikacja:
- TextClassifierHelper.swift: Inicjuje klasyfikator tekstu i obsługuje wybór modelu.
- ViewController.swift: Implementuje interfejs i formatuje wyniki.
Konfiguracja
W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu, w których będą używane klasyfikatory tekstu. Ogólne informacje o konfigurowaniu środowisko programistyczne do używania zadań MediaPipe, w tym wersja platformy wymagania znajdziesz w przewodniku konfiguracji dla iOS.
Zależności
Klasyfikator tekstu korzysta z biblioteki MediaPipeTasksText
, którą należy zainstalować
za pomocą CocoaPods. Biblioteka jest zgodna z aplikacjami Swift i Objective-C.
i nie wymaga żadnej dodatkowej konfiguracji.
Instrukcje instalowania CocoaPods w macOS znajdziesz w CocoaPods
przewodnik instalacji.
Aby dowiedzieć się, jak utworzyć Podfile
z podami niezbędnymi dla Twojego
aplikacji można znaleźć w sekcji Korzystanie
CocoaPods.
Dodaj pod MediaPipeTasksText w Podfile
przy użyciu tego kodu:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Jeśli Twoja aplikacja zawiera cele testów jednostkowych, zapoznaj się z przewodnikiem po konfiguracji
iOS, gdzie znajdziesz dodatkowe informacje o konfigurowaniu
Podfile
.
Model
Zadanie MediaPipe Text Classifier wymaga wytrenowanego modelu, który jest zgodny w tym zadaniu. Aby uzyskać więcej informacji o dostępnych wytrenowanych modelach dla Klasyfikator tekstu, zobacz omówienie zadania Modele .
Wybierz i pobierz model, a następnie dodaj go do katalogu projektu za pomocą Xcode. Instrukcje dodawania plików do projektu Xcode znajdziesz w sekcji Zarządzanie pliki i foldery w Xcode projekt.
Użyj właściwości BaseOptions.modelAssetPath
, aby określić ścieżkę do modelu
w pakiecie aplikacji. Przykładowy kod znajdziesz w następnej sekcji.
Tworzenie zadania
Zadanie klasyfikacji tekstu możesz utworzyć, wywołując jeden z jego inicjatorów.
Inicjator TextClassifier(options:)
ustawia wartości konfiguracji
.
Jeśli nie potrzebujesz klasyfikatora tekstu zainicjowanego z niestandardową konfiguracją
możesz użyć inicjatora TextClassifier(modelPath:)
do utworzenia
Klasyfikator tekstu z opcjami domyślnymi. Więcej informacji o konfiguracji
Więcej informacji znajdziesz w artykule Omówienie konfiguracji.
Poniższy kod pokazuje, jak skompilować i skonfigurować to zadanie.
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];
Opcje konfiguracji
To zadanie zawiera te opcje konfiguracji aplikacji na iOS:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
displayNamesLocale |
Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w kolumnie
metadane modelu zadania, jeśli są dostępne. Wartość domyślna to en dla
Angielski. Do metadanych modelu niestandardowego możesz dodać zlokalizowane etykiety
za pomocą interfejsu TensorFlow Lite Metadata Writer API.
| Kod języka | en |
maxResults |
Ustawia opcjonalną maksymalną liczbę wyników klasyfikacji na . Jeśli < 0 – zostaną zwrócone wszystkie dostępne wyniki. | Dowolne liczby dodatnie | -1 |
scoreThreshold |
Ustawia próg wyniku prognozy, który zastępuje próg podany w polu metadane modelu (jeśli występują). Wyniki poniżej tej wartości zostały odrzucone. | Dowolna liczba zmiennoprzecinkowa | Nie ustawiono |
categoryAllowlist |
Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli pole nie jest puste,
wyniki klasyfikacji, których nazwa kategorii nie znajduje się w tym zbiorze, zostaną
zostały odfiltrowane. Zduplikowane lub nieznane nazwy kategorii są ignorowane.
Ta opcja nie działa z usługą categoryDenylist i korzysta z funkcji
skutkuje to błędem. |
Dowolne ciągi | Nie ustawiono |
categoryDenylist |
Ustawia opcjonalną listę nazw kategorii, które nie są dozwolone. Jeśli
niepuste, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane
na zewnątrz. Zduplikowane lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemna
tylko w polu categoryAllowlist , co spowoduje błąd. |
Dowolne ciągi | Nie ustawiono |
Przygotuj dane
Klasyfikator tekstu działa z danymi tekstowymi. Zadanie obsługuje wprowadzanie danych w tym wstępnego przetwarzania danych, w tym tokenizacji i tensorów.
Całe wstępne przetwarzanie odbywa się w ramach funkcji classify(text:)
. Brak
konieczne jest wstępne wstępne przetwarzanie tekstu wejściowego.
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
Uruchamianie zadania
Aby uruchomić klasyfikator tekstu, użyj metody classify(text:)
. Klasyfikator tekstu
zwraca możliwe kategorie wpisanego tekstu.
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
Uwaga: zadanie blokuje bieżący wątek, dopóki nie zakończy działającego wnioskowania. na tekst. Aby uniknąć zablokowania bieżącego wątku, wykonaj przetwarzanie w wątek w tle na urządzeniach z iOS Dispatch lub NSOperation zasad.
Obsługa i wyświetlanie wyników
Po uruchomieniu wnioskowania zadanie Klasyfikator tekstu zwraca wartość TextClassifierResult
.
który zawiera listę możliwych kategorii tekstu wejściowego.
kategorie są definiowane przez używany model, więc jeśli chcesz,
kategorii, wybrać inny model lub ponownie wytrenować istniejący.
Poniżej znajdziesz przykładowe dane wyjściowe tego zadania:
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
Ten wynik można uzyskać, uruchamiając klasyfikator BERT na tekście wejściowym:
"an imperfect but overall entertaining mystery"
ViewController.swift w przykładowym kodzie pokazującym, jak wyświetlić wyniki wykrywania zwrócony z zadania.