Integra el clasificador de Natural Language

La API de NLClassifier de la Biblioteca de tareas clasifica el texto de entrada en diferentes categorías y es una API versátil y configurable que puede controlar la mayoría de los modelos de clasificación de texto.

Funciones clave de la API de NLClassifier

  • Toma una sola cadena como entrada, realiza la clasificación con la cadena y genera pares <label, score=""> como resultados de la clasificación.</label,>

  • Tokenización de regex opcional disponible para el texto de entrada.

  • Se puede configurar para adaptar diferentes modelos de clasificación.

Modelos de NLClassifier compatibles

Se garantiza que los siguientes modelos son compatibles con la API de NLClassifier.

Ejecuta la inferencia en Java

Consulta la app de referencia de clasificación de texto para ver un ejemplo de cómo usar NLClassifier en una app para Android.

Paso 1: Importa la dependencia de Gradle y otros parámetros de configuración

Copia el archivo del modelo .tflite en el directorio de recursos del módulo de Android en el que se ejecutará el modelo. Especifica que el archivo no se debe comprimir y agrega la biblioteca de TensorFlow Lite al archivo build.gradle del módulo:

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'
}

Paso 2: Ejecuta la inferencia con la 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 el código fuente para obtener más opciones para configurar NLClassifier.

Ejecuta la inferencia en Swift

Paso 1: Importa CocoaPods

Agrega el pod de TensorFlowLiteTaskText en Podfile

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end

Paso 2: Ejecuta la inferencia con la 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)

Consulta el código fuente para obtener más detalles.

Ejecuta la inferencia 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);

Consulta el código fuente para obtener más detalles.

Ejecuta la inferencia en Python

Paso 1: Instala el paquete pip

pip install tflite-support

Paso 2: Cómo usar el modelo

# 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 el código fuente para obtener más opciones para configurar NLClassifier.

Resultados de ejemplo

Este es un ejemplo de los resultados de clasificación del modelo de opiniones sobre películas.

Entrada: "Qué pérdida de tiempo".

Resultado:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

Prueba la sencilla herramienta de demostración de la CLI para NLClassifier con tu propio modelo y datos de prueba.

Requisitos de compatibilidad del modelo

Según el caso de uso, la API de NLClassifier puede cargar un modelo de TFLite con o sin metadatos del modelo de TFLite. Consulta ejemplos de cómo crear metadatos para clasificadores de lenguaje natural con la API de TensorFlow Lite Metadata Writer.

Los modelos compatibles deben cumplir con los siguientes requisitos:

  • Tensor de entrada: (kTfLiteString/kTfLiteInt32)

    • La entrada del modelo debe ser una cadena de entrada sin procesar del tensor kTfLiteString o un tensor kTfLiteInt32 para los índices tokenizados de regex de la cadena de entrada sin procesar.
    • Si el tipo de entrada es kTfLiteString, no se requiere ningún objeto Metadata para el modelo.
    • Si el tipo de entrada es kTfLiteInt32, se debe configurar un RegexTokenizer en los metadatos del tensor de entrada.
  • Tensor de puntuación de salida: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • Tensor de salida obligatorio para la puntuación de cada categoría clasificada.

    • Si el tipo es uno de los tipos Int, se debe desantificar a doble o flotante para las plataformas correspondientes.

    • Puede tener un archivo asociado opcional en el objeto Metadata correspondiente del tensor de salida para las etiquetas de categorías. El archivo debe ser un archivo de texto sin formato con una etiqueta por línea, y la cantidad de etiquetas debe coincidir con la cantidad de categorías que genera el modelo. Consulta el archivo de etiquetas de ejemplo.

  • Tensor de etiquetas de salida: (kTfLiteString/kTfLiteInt32)

    • Tensor de salida opcional para la etiqueta de cada categoría, debe tener la misma longitud que el tensor de puntuación de salida. Si este tensor no está presente, la API usa los índices de puntuación como nombres de clase.

    • Se ignorará si el archivo de etiquetas asociado está presente en los metadatos del tensor de puntuación de salida.