Interfejs API NLClassifier biblioteki zadań klasyfikuje tekst wejściowy w różnych kategoriach. Jest to wszechstronny i konfigurowalny interfejs API, który może obsługiwać większość modeli klasyfikacji tekstu.
Kluczowe funkcje interfejsu NLClassifier API
Przyjmuje jako dane wejściowe pojedynczy ciąg znaków, przeprowadza klasyfikację za pomocą tego ciągu i zwraca pary <etykieta, wynik=""> jako wyniki klasyfikacji.</label,>
Opcjonalna tokenizacja wyrażeń regularnych dostępna dla tekstu wejściowego.
Możliwość konfiguracji w celu dostosowania do różnych modeli klasyfikacji.
Obsługiwane modele NLClassifier
Te modele są zgodne z NLClassifierAPI.
Modele ze specyfikacją
average_word_vecutworzone przez TensorFlow Lite Model Maker do klasyfikacji tekstu.modele niestandardowe, które spełniają wymagania dotyczące zgodności modeli;
Uruchamianie wnioskowania w Javie
Przykład użycia NLClassifier w aplikacji na Androida znajdziesz w aplikacji referencyjnej do klasyfikacji tekstu.
Krok 1. Zaimportuj zależność Gradle i inne ustawienia
Skopiuj plik modelu .tflite do katalogu zasobów modułu Androida, w którym będzie uruchamiany model. Określ, że plik nie powinien być kompresowany, i dodaj bibliotekę TensorFlow Lite do pliku build.gradle modułu:
android {
// Other settings
// Specify tflite file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
Krok 2. Uruchom wnioskowanie za pomocą interfejsu API
// Initialization, use NLClassifierOptions to configure input and output tensors
NLClassifierOptions options =
NLClassifierOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setInputTensorName(INPUT_TENSOR_NAME)
.setOutputScoreTensorName(OUTPUT_SCORE_TENSOR_NAME)
.build();
NLClassifier classifier =
NLClassifier.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<Category> results = classifier.classify(input);
Więcej opcji konfigurowania NLClassifier znajdziesz w kodzie źródłowym.
Uruchamianie wnioskowania w Swift
Krok 1. Zaimportuj CocoaPods
Dodaj pod TensorFlowLiteTaskText do pliku Podfile.
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Krok 2. Uruchom wnioskowanie za pomocą interfejsu API
// Initialization
var modelOptions:TFLNLClassifierOptions = TFLNLClassifierOptions()
modelOptions.inputTensorName = inputTensorName
modelOptions.outputScoreTensorName = outputScoreTensorName
let nlClassifier = TFLNLClassifier.nlClassifier(
modelPath: modelPath,
options: modelOptions)
// Run inference
let categories = nlClassifier.classify(text: input)
Więcej informacji znajdziesz w kodzie źródłowym.
Uruchamianie wnioskowania w C++
// Initialization
NLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();
// Run inference with your input, `input_text`.
std::vector<core::Category> categories = classifier->Classify(input_text);
Więcej informacji znajdziesz w kodzie źródłowym.
Uruchamianie wnioskowania w Pythonie
Krok 1. Zainstaluj pakiet pip
pip install tflite-support
Krok 2. Korzystanie z modelu
# Imports
from tflite_support.task import text
# Initialization
classifier = text.NLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
Więcej opcji konfigurowania NLClassifier znajdziesz w kodzie źródłowym.
Przykładowe wyniki
Oto przykład wyników klasyfikacji modelu recenzji filmów.
Dane wejściowe: „What a waste of my time.”
Dane wyjściowe:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
Wypróbuj proste narzędzie demonstracyjne interfejsu wiersza poleceń do klasyfikatora NLClassifier z własnym modelem i danymi testowymi.
Wymagania dotyczące zgodności modeli
W zależności od przypadku użycia interfejs NLClassifier API może wczytać model TFLite z metadanymi modelu TFLite lub bez nich. Zobacz przykłady tworzenia metadanych dla klasyfikatorów języka naturalnego za pomocą interfejsu TensorFlow Lite Metadata Writer API.
Zgodne modele powinny spełniać te wymagania:
Tensor wejściowy: (kTfLiteString/kTfLiteInt32)
- Dane wejściowe modelu powinny być tensorem kTfLiteString z surowym ciągiem wejściowym lub tensorem kTfLiteInt32 z indeksami tokenizowanymi wyrażeniami regularnymi surowego ciągu wejściowego.
- Jeśli typ danych wejściowych to kTfLiteString, w przypadku modelu nie są wymagane metadane.
- Jeśli typ danych wejściowych to kTfLiteInt32, w metadanych tensora wejściowego należy skonfigurować
RegexTokenizer.
Tensor wyniku wyjściowego: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Obowiązkowy tensor wyjściowy dla wyniku każdej sklasyfikowanej kategorii.
Jeśli typ jest jednym z typów Int, przekształć go na typ double/float na odpowiednich platformach.
Może mieć opcjonalny powiązany plik w odpowiednich metadanych tensora wyjściowego dla etykiet kategorii. Plik powinien być zwykłym plikiem tekstowym z jedną etykietą w wierszu, a liczba etykiet powinna być zgodna z liczbą kategorii, które generuje model. Zobacz przykładowy plik etykiet.
Tensor etykiety wyjściowej: (kTfLiteString/kTfLiteInt32)
Opcjonalny tensor wyjściowy z etykietą dla każdej kategorii. Powinien mieć taką samą długość jak tensor wyniku wyjściowego. Jeśli ten tensor nie jest obecny, interfejs API używa indeksów wyników jako nazw klas.
Zostanie zignorowany, jeśli powiązany plik etykiet znajduje się w metadanych tensora wyniku wyjściowego.