Przewodnik po klasyfikacji tekstu w Pythonie

Zadanie MediaPipe Text Classifier umożliwia klasyfikowanie tekstu w zdefiniowanych kategoriach, np. pozytywnego lub negatywnego nastawienia. Kategorie są określane przez model i o tym, jak został wytrenowany. Z tych instrukcji dowiesz się, jak korzystać lub klasyfikatora tekstu w Pythonie.

Aby zobaczyć, jak działa to zadanie, wyświetl Prezentacja w przeglądarce. Więcej informacji o możliwościach, modelach i modelach dotyczących opcji konfiguracji tego zadania, zobacz Omówienie.

Przykładowy kod

Przykładowy kod klasyfikatora tekstu zapewnia pełną implementację w Pythonie. Ten kod pomoże Ci przetestować to zadanie i uzyskać rozpoczął tworzenie własnej aplikacji do klasyfikacji tekstu. Możesz wyświetlać, uruchamiać edytuj klasyfikator tekstu przykładowy kod tylko za pomocą przeglądarki.

Jeśli implementujesz klasyfikator tekstu dla Raspberry Pi, zapoznaj się z Przykład Raspberry Pi

Konfiguracja

W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu, w których używany jest Text Classifier. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym: wymagań wersji platformy, patrz Przewodnik po konfiguracji Pythona

Pakiety

Klasyfikator tekstu używa pakietu pip mediapipe. Możesz zainstalować z następującymi zależnościami:

$ python -m pip install mediapipe

Importy

Aby uzyskać dostęp do funkcji klasyfikacji 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 zadanie. Więcej informacji o dostępnych wytrenowanych modelach na potrzeby klasyfikacji tekstu znajdziesz w dokumentacji, która opisuje zapoznaj się z omówieniem zadania sekcją Modele.

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ą obiektu BaseOptions model_asset_path Jak poniżej:

base_options = BaseOptions(model_asset_path=model_path)

Tworzenie zadania

Zadanie MediaPipe Text Classifier używa funkcji create_from_options do skonfigurowania zadanie. Funkcja create_from_options akceptuje wartości konfiguracji aby ustawić opcje klasyfikatora. Możesz też zainicjować zadanie za pomocą polecenia funkcji fabrycznej create_from_model_path. create_from_model_path przyjmuje ścieżkę względną lub bezwzględną do pliku wytrenowanego 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 zawiera 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 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
max_results Ustawia opcjonalną maksymalną liczbę wyników klasyfikacji na . Jeśli < 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 polu metadane modelu (jeśli występują). Wyniki poniżej tej wartości zostały odrzucone. Dowolna liczba zmiennoprzecinkowa Nie ustawiono
category_allowlist 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ą category_denylist i korzysta z funkcji skutkuje to błędem. Dowolne ciągi Nie ustawiono
category_denylist 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 category_allowlist, co spowoduje błąd. Dowolne ciągi Nie ustawiono

Przygotuj dane

Klasyfikator tekstu działa z danymi tekstowymi (str). 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. Nie ma potrzeby aby wstępnie przetworzyć tekst wejściowy.

input_text = 'The input text to be classified.'

Uruchamianie zadania

Klasyfikator tekstu używa funkcji classify do aktywowania wnioskowania. Tekst klasyfikację, oznacza to zwrócenie możliwych kategorii dla tekstu wejściowego.

Ten kod pokazuje, jak wykonać przetwarzanie za pomocą zadania model atrybucji.

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

Obsługa i wyświetlanie wyników

Klasyfikator tekstu zwraca obiekt TextClassifierResult zawierający listę możliwych kategorii tekstu wejściowego. Kategorie są określane przez tag używanego modelu. Jeśli chcesz mieć inne kategorie, wybierz inny, lub ponowne wytrenowanie istniejącej.

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"