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. W tych instrukcjach pokazujemy, jak korzystać z klasyfikatora tekstu w aplikacjach internetowych i JavaScript.
Aby zobaczyć, jak działa to zadanie, obejrzyj prezentację. 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 języku JavaScript. Ten kod ułatwia przetestowanie tego zadania i rozpoczęcie tworzenia własnej aplikacji do klasyfikacji tekstu. Możesz wyświetlać, uruchamiać i edytować przykładowy kod Text Classifier tylko w przeglądarce.
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 aplikacji internetowych.
Pakiety JavaScript
Kod klasyfikatora tekstu jest dostępny w pakiecie @mediapipe/tasks-text
. Te biblioteki możesz znaleźć i pobrać za pomocą linków dostępnych w przewodniku po konfiguracji platformy.
Wymagane pakiety możesz zainstalować za pomocą tego polecenia na potrzeby lokalnego środowiska wykonawczego, korzystając z tego polecenia:
npm install @mediapipe/tasks-text
Jeśli chcesz przeprowadzić wdrożenie na serwerze, możesz użyć usługi sieci dostarczania treści (CDN), takiej jak jsDelivr, aby dodać kod bezpośrednio do strony HTML, wykonując te czynności:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
crossorigin="anonymous"></script>
</head>
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 projektu:
<dev-project-root>/assets/bert_text_classifier.tflite
Określ ścieżkę modelu za pomocą parametru modelAssetPath
obiektu baseOptions
, jak poniżej:
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
Tworzenie zadania
Użyj 1 z funkcji klasyfikatora tekstu TextClassifier.createFrom...()
, aby przygotować zadanie do uruchamiania wnioskowania. Możesz użyć funkcji createFromModelPath()
ze ścieżką względną lub bezwzględną do wytrenowanego pliku modelu. W poniższym przykładzie kodu pokazano korzystanie z funkcji TextClassifier.createFromOptions()
. Więcej informacji o dostępnych opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.
Ten kod pokazuje, jak skompilować 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 następujące opcje konfiguracji dla aplikacji internetowych i JavaScript:
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 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 |
maxResults |
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 |
scoreThreshold |
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 |
categoryAllowlist |
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, categoryDenylist i ich użycie kończy się błędem. |
Dowolne ciągi | Nie ustawiono |
categoryDenylist |
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 categoryAllowlist , a korzystanie z obu daje błąd. |
Dowolne ciągi | Nie ustawiono |
Przygotuj dane
Klasyfikator tekstu obsługuje dane tekstowe (String
). 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.
const inputText = "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ń.
// 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 generuje element 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"
.