Zadanie MediaPipe Text Classifier umożliwia klasyfikowanie tekstu w określonych kategoriach, takich jak pozytywne lub negatywne nastawienie. Kategorie są określane przez model, z którego korzystasz, i sposób jego trenowania. Z tych instrukcji dowiesz się, jak używać klasyfikatora tekstu w aplikacjach internetowych i JavaScript.
Możesz zobaczyć to zadanie w działaniu, oglądając demo. Więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania znajdziesz w omówieniu.
Przykładowy kod
Przykładowy kod klasyfikatora tekstu zawiera pełną implementację tego zadania w JavaScript. Ten kod pomoże Ci przetestować to zadanie i zacząć tworzyć własną aplikację do klasyfikacji tekstu. Możesz wyświetlać, uruchamiać i edytować przykład klasyfikatora tekstu w przeglądarce.
Konfiguracja
W tej sekcji opisujemy najważniejsze kroki konfigurowania środowiska programistycznego i projektów kodu pod kątem korzystania z klasyfikatora tekstu. Ogólne informacje o konfigurowaniu środowiska programistycznego do korzystania z MediaPipe Tasks, w tym wymagania dotyczące wersji platformy, znajdziesz w przewodniku po konfiguracji na potrzeby internetu.
Pakiety JavaScript
Kod klasyfikatora tekstu jest dostępny w pakiecie
@mediapipe/tasks-text. Te biblioteki możesz znaleźć i pobrać, korzystając z linków podanych w przewodniku po konfiguracji platformy.
Wymagane pakiety możesz zainstalować za pomocą tego kodu w przypadku lokalnego środowiska testowego za pomocą tego polecenia:
npm install @mediapipe/tasks-text
Jeśli chcesz wdrożyć kod na serwerze, możesz użyć usługi sieci dostarczania treści (CDN), np. jsDelivr, aby dodać kod bezpośrednio do strony HTML w ten sposób:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
crossorigin="anonymous"></script>
</head>
Model
Zadanie klasyfikatora tekstu MediaPipe wymaga wytrenowanego modelu, który jest z nim zgodny. Więcej informacji o dostępnych wytrenowanych modelach klasyfikatora tekstu znajdziesz w sekcji Modele w omówieniu zadania.
Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:
<dev-project-root>/assets/bert_text_classifier.tflite
Określ ścieżkę modelu za pomocą parametru baseOptions obiektu modelAssetPath, jak pokazano poniżej:
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
Tworzenie zadania
Użyj jednej z funkcji klasyfikatora tekstu TextClassifier.createFrom...(), aby przygotować zadanie do uruchomienia wnioskowania. Funkcji createFromModelPath() możesz używać ze ścieżką względną lub bezwzględną do wytrenowanego pliku modelu. Poniższy przykład kodu pokazuje, jak używać funkcji TextClassifier.createFromOptions(). Więcej informacji o dostępnych opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.
Poniższy kod pokazuje, jak utworzyć i skonfigurować to zadanie:
async function createClassifier() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textClassifier = await TextClassifier.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
},
maxResults: 5
}
);
}
createClassifier();
Opcje konfiguracji
To zadanie ma te opcje konfiguracji w przypadku aplikacji internetowych i aplikacji napisanych w języku JavaScript:
| Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
|---|---|---|---|
displayNamesLocale |
Ustawia język etykiet, które mają być używane w przypadku wyświetlanych nazw podanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna to en w przypadku języka angielskiego. Możesz dodać zlokalizowane etykiety do metadanych modelu niestandardowego za pomocą interfejsu TensorFlow Lite Metadata Writer API.
| Kod języka | en |
maxResults |
Ustawia opcjonalną maksymalną liczbę wyników klasyfikacji o najwyższych wynikach, które mają zostać zwrócone. Jeśli wartość jest mniejsza od 0, zwracane są wszystkie dostępne wyniki. | dowolne liczby dodatnie, | -1 |
scoreThreshold |
Ustawia próg wyniku prognozy, który zastępuje próg podany w metadanych modelu (jeśli taki istnieje). Wyniki poniżej tej wartości są odrzucane. | Dowolna liczba zmiennoprzecinkowa | Nie ustawiono |
categoryAllowlist |
Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli nie jest pusta, wyniki klasyfikacji, których nazwa kategorii nie znajduje się w tym zbiorze, zostaną odfiltrowane. Zduplikowane lub nieznane nazwy kategorii są ignorowane.
Ta opcja wyklucza się wzajemnie z opcją categoryDenylist, a użycie obu powoduje błąd. |
Dowolne ciągi | Nie ustawiono |
categoryDenylist |
Ustawia opcjonalną listę nazw kategorii, które są niedozwolone. Jeśli ten zbiór nie jest pusty, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane. Zduplikowane lub nieznane nazwy kategorii są ignorowane. Ta opcja wyklucza się wzajemnie z opcją categoryAllowlist, a użycie obu powoduje błąd. |
Dowolne ciągi | Nie ustawiono |
Przygotuj dane
Klasyfikator tekstu działa na danych tekstowych (String). Zadanie obsługuje wstępne przetwarzanie danych wejściowych, w tym tokenizację i przetwarzanie wstępne tensorów.
Całe przetwarzanie wstępne jest obsługiwane w funkcji classify(). Nie musisz wcześniej dodatkowo przetwarzać tekstu wejściowego.
const inputText = "The input text to be classified.";
Uruchamianie zadania
Klasyfikator tekstu używa funkcji classify() do wywoływania 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 zadania.
// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
inputText
);
Obsługa i wyświetlanie wyników
Klasyfikator tekstu zwraca TextClassifierResult, która zawiera listę możliwych kategorii dla tekstu wejściowego. Kategorie są zdefiniowane przez używany model, więc jeśli chcesz mieć inne kategorie, wybierz inny model lub ponownie wytrenuj istniejący.
Poniżej znajdziesz przykład danych wyjściowych 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 został uzyskany przez uruchomienie klasyfikatora BERT na tekście wejściowym:
"an imperfect but overall entertaining mystery"