Zadanie Klasyfikatora tekstu MediaPipe pozwala sklasyfikować tekst według zdefiniowanych kategorii, takich jak nastawienie pozytywne lub negatywne. Kategorie określają używany model i sposób jego trenowania. Te instrukcje pokazują, jak korzystać z klasyfikatora tekstu w Pythonie.
Aby zobaczyć, jak działa to zadanie, obejrzyj prezentację w wersji internetowej. Więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania znajdziesz w artykule Omówienie.
Przykładowy kod
Przykładowy kod narzędzia Text Classifier zawiera pełną implementację tego zadania w Pythonie dla ułatwienia. Ten kod ułatwia przetestowanie tego zadania i rozpoczęcie tworzenia własnej aplikacji do klasyfikacji tekstu. Możesz wyświetlić, uruchomić i edytować przykładowy kod aplikacji do klasyfikacji tekstu za pomocą przeglądarki.
Jeśli wdrażasz klasyfikator tekstu dla Raspberry Pi, zapoznaj się z przykładową aplikacją Raspberry Pi.
Konfiguracja
W tej sekcji opisujemy najważniejsze czynności, jakie należy wykonać, aby skonfigurować środowisko programistyczne i projekty kodu związane konkretnie z korzystaniem z Klasyfikatora tekstu. Ogólne informacje o konfigurowaniu środowiska programistycznego na potrzeby zadań MediaPipe, w tym o wymaganiach dotyczących wersji platformy, znajdziesz w przewodniku konfiguracji dla Pythona.
Pakiety
Klasyfikator tekstu korzysta z pakietu pip mediapipe. Możesz zainstalować te zależności za pomocą:
$ python -m pip install mediapipe
Importowane dane
Aby uzyskać dostęp do funkcji zadań Klasyfikatora tekstu, zaimportuj te klasy:
from mediapipe.tasks import python
from mediapipe.tasks.python import text
Model
Zadanie MediaPipe Text Classifier wymaga wytrenowanego modelu zgodnego z tym zadaniem. Więcej informacji o dostępnych wytrenowanych modelach Klasyfikatora tekstu znajdziesz w sekcji poświęconej modelom na temat zadań.
Wybierz i pobierz model, a następnie zapisz go w katalogu lokalnym:
model_path = '/absolute/path/to/text_classifier.tflite'
Określ ścieżkę modelu za pomocą parametru model_asset_path
obiektu BaseOptions
, jak poniżej:
base_options = BaseOptions(model_asset_path=model_path)
Tworzenie zadania
Zadanie MediaPipe Text Classifier korzysta z funkcji create_from_options
do konfigurowania tego zadania. Funkcja create_from_options
akceptuje wartości opcji konfiguracji, aby ustawić opcje klasyfikatora. Możesz też zainicjować zadanie za pomocą funkcji fabrycznej create_from_model_path
. Funkcja create_from_model_path
akceptuje ścieżkę względną lub bezwzględną do wytrenowanego pliku modelu.
Więcej informacji o opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.
Poniższy kod pokazuje, jak skompilować i skonfigurować to zadanie.
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)
Opcje konfiguracji
To zadanie ma te opcje konfiguracji aplikacji na Androida:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
display_names_locale |
Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna w języku angielskim to en . Za pomocą TensorFlow Lite MetadataWriter API możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego.
| Kod języka | en |
max_results |
Określa opcjonalną maksymalną liczbę zwracanych wyników klasyfikacji o najwyższych wynikach. Jeśli wartość jest mniejsza niż 0, zostaną zwrócone wszystkie dostępne wyniki. | Dowolne liczby dodatnie | -1 |
score_threshold |
Ustawia próg wyniku prognozy, który zastępuje próg podany w metadanych modelu (jeśli istnieją). Wyniki poniżej tej wartości zostały odrzucone. | Dowolna liczba zmiennoprzecinkowa | Nie ustawiono |
category_allowlist |
Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli nie będzie pusty, wyniki klasyfikacji, których nazwy kategorii nie ma w tym zbiorze, zostaną odfiltrowane. Zduplikowane i nieznane nazwy kategorii są ignorowane.
Ta opcja wzajemnie się wyklucza, category_denylist i ich użycie kończy się błędem. |
Dowolne ciągi | Nie ustawiono |
category_denylist |
Ustawia opcjonalną listę niedozwolonych nazw kategorii. Jeśli pole nie jest puste, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane. Zduplikowane i nieznane nazwy kategorii są ignorowane. Ta opcja wzajemnie się wyklucza z category_allowlist , a korzystanie z obu daje błąd. |
Dowolne ciągi | Nie ustawiono |
Przygotuj dane
Klasyfikator tekstu obsługuje dane tekstowe (str
). To zadanie obsługuje wstępne przetwarzanie danych wejściowych, w tym tokenizację i wstępne przetwarzanie tensorów.
Przetwarzanie wstępne jest realizowane w ramach funkcji classify
. Nie ma potrzeby wcześniejszego wstępnego przetwarzania tekstu wejściowego.
input_text = 'The input text to be classified.'
Uruchamianie zadania
Klasyfikator tekstu używa funkcji classify
do aktywowania wnioskowania. W przypadku klasyfikacji tekstu oznacza to zwracanie możliwych kategorii dla tekstu wejściowego.
Poniższy kod pokazuje, jak wykonać przetwarzanie za pomocą modelu zadań.
with python.text.TextClassifier.create_from_options(options) as classifier:
classification_result = classifier.classify(text)
Obsługa i wyświetlanie wyników
Klasyfikator tekstu generuje obiekt TextClassifierResult
zawierający listę możliwych kategorii tekstu wejściowego. Kategorie są definiowane przez używany przez Ciebie model, więc jeśli chcesz korzystać z innych kategorii, wybierz inny model lub ponownie wytrenuj istniejący.
Poniżej znajdziesz przykład danych wyjściowych z 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
Wynik można uzyskać, uruchamiając klasyfikator BERT na tekście wejściowym: "an imperfect but overall entertaining mystery"
.