L'API NLClassifier della libreria delle attività classifica il testo di input in diverse categorie ed è un'API versatile e configurabile in grado di gestire la maggior parte dei modelli di classificazione del testo.
Funzionalità principali dell'API NLClassifier
Accetta una singola stringa come input, esegue la classificazione con la stringa e genera coppie <label, score=""> come risultati della classificazione.</label,>
Tokenizzazione Regex facoltativa disponibile per il testo di input.
Configurabile per adattare diversi modelli di classificazione.
Modelli NLClassifier supportati
I seguenti modelli sono garantiti per essere compatibili con l'API NLClassifier.
Il modello di classificazione del sentiment delle recensioni di film.
Modelli con specifiche
average_word_veccreate da TensorFlow Lite Model Maker per la classificazione del testo.Modelli personalizzati che soddisfano i requisiti di compatibilità dei modelli.
Esegui l'inferenza in Java
Consulta l'app di riferimento per la classificazione del testo per un esempio di come utilizzare NLClassifier in un'app per Android.
Passaggio 1: importa la dipendenza Gradle e altre impostazioni
Copia il file del modello .tflite nella directory degli asset del modulo Android
in cui verrà eseguito il modello. Specifica che il file non deve essere compresso e
aggiungi la libreria TensorFlow Lite al file build.gradle del modulo:
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'
}
Passaggio 2: esegui l'inferenza utilizzando l'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);
Consulta il codice
sorgente
per altre opzioni di configurazione di NLClassifier.
Esegui l'inferenza in Swift
Passaggio 1: importa CocoaPods
Aggiungi il pod TensorFlowLiteTaskText in Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Passaggio 2: esegui l'inferenza utilizzando l'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)
Per ulteriori dettagli, consulta il codice sorgente.
Esegui l'inferenza in 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);
Per ulteriori dettagli, consulta il codice sorgente.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto pip
pip install tflite-support
Passaggio 2: utilizza il modello
# Imports
from tflite_support.task import text
# Initialization
classifier = text.NLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
Consulta il codice
sorgente
per altre opzioni di configurazione di NLClassifier.
Risultati di esempio
Ecco un esempio dei risultati della classificazione del modello di recensione cinematografica.
Input: "Che perdita di tempo."
Output:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
Prova il semplice strumento demo CLI per NLClassifier con il tuo modello e i tuoi dati di test.
Requisiti di compatibilità del modello
A seconda del caso d'uso, l'API NLClassifier può caricare un modello TFLite con o senza metadati del modello TFLite. Consulta
gli esempi di creazione di metadati per classificatori del linguaggio naturale utilizzando l'API
TensorFlow Lite Metadata Writer.
I modelli compatibili devono soddisfare i seguenti requisiti:
Tensore di input: (kTfLiteString/kTfLiteInt32)
- L'input del modello deve essere una stringa di input non elaborata del tensore kTfLiteString o un tensore kTfLiteInt32 per gli indici tokenizzati con espressioni regolari della stringa di input non elaborata.
- Se il tipo di input è kTfLiteString, non sono necessari metadati per il modello.
- Se il tipo di input è kTfLiteInt32, è necessario configurare un
RegexTokenizernei metadati del tensore di input.
Tensore del punteggio di output: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Tensore di output obbligatorio per il punteggio di ogni categoria classificata.
Se il tipo è uno dei tipi Int, eseguine la dequantizzazione in double/float per le piattaforme corrispondenti
Può avere un file associato facoltativo nel tensore di output Metadata corrispondente per le etichette delle categorie. Il file deve essere un file di testo normale con un'etichetta per riga e il numero di etichette deve corrispondere al numero di categorie come output del modello. Vedi il file di etichette di esempio.
Tensore delle etichette di output: (kTfLiteString/kTfLiteInt32)
Tensore di output facoltativo per l'etichetta di ogni categoria, deve avere la stessa lunghezza del tensore del punteggio di output. Se questo tensore non è presente, l'API utilizza gli indici di punteggio come nomi delle classi.
Verrà ignorato se il file di etichette associato è presente nei metadati del tensore del punteggio di output.