Interfejs API NLClassifier
biblioteki zadań klasyfikuje tekst wejściowy na różne kategorie i jest wszechstronnym i konfigurowalnym interfejsem API, który obsługuje większość modeli klasyfikacji tekstu.
Kluczowe cechy interfejsu API NLClassifier
Pobiera pojedynczy ciąg znaków jako dane wejściowe, dokonuje klasyfikacji na podstawie ciągu znaków i wyników
Opcjonalna tokenizacja Regex dostępna dla tekstu wejściowego.
Możliwość konfiguracji w celu dostosowania różnych modeli klasyfikacji.
Obsługiwane modele NLClassifier
Gwarantujemy kompatybilność następujących modeli z interfejsem API NLClassifier
.
Modele ze specyfikacją
average_word_vec
utworzone przez TensorFlow Lite Model Maker dla klasyfikacji tekstu .Modele niestandardowe spełniające wymagania dotyczące kompatybilności modeli .
Uruchom wnioskowanie w Javie
Zobacz aplikację referencyjną do klasyfikacji tekstu , aby zapoznać się z przykładem użycia NLClassifier
w aplikacji na Androida.
Krok 1: Zaimportuj zależność Gradle i inne ustawienia
Skopiuj plik modelu .tflite
do katalogu zasobów modułu Android, w którym model będzie uruchamiany. 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 (NNAPI is included)
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);
Zobacz kod źródłowy , aby uzyskać więcej opcji konfiguracji NLClassifier
.
Uruchom wnioskowanie w Swift
Krok 1: Zaimportuj CocoaPods
Dodaj pod TensorFlowLiteTaskText w 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 szczegółów znajdziesz w kodzie źródłowym .
Uruchom wnioskowanie 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 szczegółów znajdziesz w kodzie źródłowym .
Uruchom wnioskowanie 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)
Zobacz kod źródłowy , aby uzyskać więcej opcji konfiguracji NLClassifier
.
Przykładowe wyniki
Oto przykład wyników klasyfikacji modelu recenzji filmowej .
Wpis: „Co za strata mojego czasu”.
Wyjście:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
Wypróbuj proste narzędzie demonstracyjne CLI dla NLClassifier z własnym modelem i danymi testowymi.
Wymagania dotyczące kompatybilności modelu
W zależności od przypadku użycia interfejs API NLClassifier
może załadować model TFLite z metadanymi modelu TFLite lub bez nich. Zobacz przykłady tworzenia metadanych dla klasyfikatorów języka naturalnego przy użyciu interfejsu API narzędzia do zapisywania metadanych TensorFlow Lite .
Kompatybilne modele powinny spełniać następujące wymagania:
Tensor wejściowy: (kTfLiteString/kTfLiteInt32)
- Dane wejściowe modelu powinny być albo surowym ciągiem wejściowym tensora kTfLiteString, albo tensorem kTfLiteInt32 dla indeksów surowego ciągu wejściowego z tokenami wyrażeń regularnych.
- Jeśli typem danych wejściowych jest kTfLiteString, dla modelu nie są wymagane żadne metadane .
- Jeśli typem danych wejściowych jest 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, zdekwantyzuj go, aby podwoić/przemieścić się na odpowiednie platformy
Może mieć opcjonalny powiązany plik w metadanych odpowiadających tensorowi wyjściowemu dla etykiet kategorii, plik powinien być zwykłym plikiem tekstowym z jedną etykietą w wierszu, a liczba etykiet powinna odpowiadać liczbie kategorii podanych w wynikach modelu. Zobacz przykładowy plik etykiety .
Tensor etykiety wyjściowej: (kTfLiteString/kTfLiteInt32)
Opcjonalny tensor wyjściowy dla etykiety dla każdej kategorii powinien mieć tę samą długość, co tensor wyniku wyjściowego. Jeśli tensor nie jest obecny, interfejs API używa indeksów punktacji jako nazw klas.
Zostanie zignorowany, jeśli powiązany plik etykiety znajduje się w metadanych tensora wyniku wyjściowego.