L'API NLClassifier de la bibliothèque de tâches classe le texte saisi dans différentes catégories. Il s'agit d'une API polyvalente et configurable qui peut gérer la plupart des modèles de classification de texte.
Principales fonctionnalités de l'API NLClassifier
Prend une seule chaîne en entrée, effectue la classification avec la chaîne et génère des paires <label, score=""> comme résultats de classification.</label,>
La tokenisation Regex facultative est disponible pour le texte saisi.
Configurable pour s'adapter à différents modèles de classification.
Modèles NLClassifier compatibles
Les modèles suivants sont garantis d'être compatibles avec l'API NLClassifier.
Modèle de classification des sentiments des critiques de films.
Modèles avec spécification
average_word_veccréés par TensorFlow Lite Model Maker pour la classification de texte.Des modèles personnalisés qui répondent aux exigences de compatibilité des modèles.
Exécuter une inférence en Java
Pour découvrir un exemple d'utilisation de NLClassifier dans une application Android, consultez l'application de référence sur la classification de texte.
Étape 1 : Importer la dépendance Gradle et d'autres paramètres
Copiez le fichier de modèle .tflite dans le répertoire des éléments du module Android dans lequel le modèle sera exécuté. Spécifiez que le fichier ne doit pas être compressé et ajoutez la bibliothèque TensorFlow Lite au fichier build.gradle du module :
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'
}
Étape 2 : Exécutez l'inférence à l'aide de 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);
Pour découvrir d'autres options de configuration de NLClassifier, consultez le code source.
Exécuter l'inférence en Swift
Étape 1 : Importer CocoaPods
Ajouter le pod TensorFlowLiteTaskText dans le fichier Podfile
target 'MySwiftAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end
Étape 2 : Exécutez l'inférence à l'aide de 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)
Pour en savoir plus, consultez le code source.
Exécuter une inférence en 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);
Pour en savoir plus, consultez le code source.
Exécuter l'inférence en Python
Étape 1 : Installez le package pip
pip install tflite-support
Étape 2 : Utiliser le modèle
# Imports
from tflite_support.task import text
# Initialization
classifier = text.NLClassifier.create_from_file(model_path)
# Run inference
text_classification_result = classifier.classify(text)
Pour découvrir d'autres options de configuration de NLClassifier, consultez le code source.
Exemples de résultats
Voici un exemple des résultats de classification du modèle d'analyse des sentiments pour les avis sur les films.
Entrée : "Quelle perte de temps !"
Résultat :
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
Essayez l'outil de démonstration simple de l'interface de ligne de commande pour NLClassifier avec votre propre modèle et vos données de test.
Exigences de compatibilité des modèles
Selon le cas d'utilisation, l'API NLClassifier peut charger un modèle TFLite avec ou sans métadonnées de modèle TFLite. Consultez des exemples de création de métadonnées pour les classificateurs de langage naturel à l'aide de l'API TensorFlow Lite Metadata Writer.
Les modèles compatibles doivent répondre aux exigences suivantes :
Tenseur d'entrée : (kTfLiteString/kTfLiteInt32)
- L'entrée du modèle doit être un Tensor kTfLiteString (chaîne d'entrée brute) ou un Tensor kTfLiteInt32 (indices de la chaîne d'entrée brute tokenisée par expression régulière).
- Si le type d'entrée est kTfLiteString, aucune métadonnée n'est requise pour le modèle.
- Si le type d'entrée est kTfLiteInt32, un
RegexTokenizerdoit être configuré dans les métadonnées du Tensor d'entrée.
Tenseur de score de sortie : (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
Tensor de sortie obligatoire pour le score de chaque catégorie classée.
Si le type est l'un des types Int, déquantifiez-le en double/float pour les plates-formes correspondantes.
Peut avoir un fichier associé facultatif dans les métadonnées correspondantes du Tensor de sortie. Pour les libellés de catégorie, le fichier doit être un fichier en texte brut avec un libellé par ligne, et le nombre de libellés doit correspondre au nombre de catégories générées par le modèle. Consultez l'exemple de fichier de libellés.
Tensor de libellé de sortie : (kTfLiteString/kTfLiteInt32)
Tensor de sortie facultatif pour le libellé de chaque catégorie. Il doit avoir la même longueur que le Tensor de score de sortie. Si ce Tensor n'est pas présent, l'API utilise les index de score comme noms de classe.
Sera ignoré si le fichier de libellé associé est présent dans les métadonnées du Tensor de score de sortie.