Integra el clasificador de lenguaje natural BERT

La API de BertNLClassifier de la Biblioteca de tareas es muy similar a NLClassifier. que clasifica el texto de entrada en diferentes categorías, con la excepción de que esta API especialmente diseñadas para modelos relacionados con BERT que requieren Wordpiece y Asignación de tokens de oraciones fuera del modelo de TFLite.

Funciones clave de la API de BertNLClassifier

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

  • Lleva a cabo Wordpiece fuera del gráfico. o Oración las asignaciones de token en el texto de entrada.

Modelos BertNLClassifier compatibles

Los siguientes modelos son compatibles con la API de BertNLClassifier.

Ejecuta inferencias en Java

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

Copia el archivo de modelo .tflite en el directorio de recursos del módulo de Android. en la que se ejecutará el modelo. Especificar que el archivo no debe comprimirse 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 Text Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}

Paso 2: Ejecuta la inferencia con la API

// Initialization
BertNLClassifierOptions options =
    BertNLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertNLClassifier classifier =
    BertNLClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Category> results = classifier.classify(input);

Consulta la fuente código para obtener más información.

Ejecuta la inferencia en Swift

Paso 1: Importa CocoaPods

Agrega el pod de TensorFlowLiteTaskText en el Podfile

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

Paso 2: Ejecuta la inferencia con la API

// Initialization
let bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

// Run inference
let categories = bertNLClassifier.classify(text: input)

Consulta la fuente código para obtener más información.

Ejecuta inferencias en C++

// Initialization
BertNLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::CreateFromOptions(options).value();

// Run inference with your input, `input_text`.
std::vector<core::Category> categories = classifier->Classify(input_text);

Consulta la fuente código para obtener más información.

Ejecuta la inferencia en Python

Paso 1: Instala el paquete pip

pip install tflite-support

Paso 2: Usa el modelo

# Imports
from tflite_support.task import text

# Initialization
classifier = text.BertNLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

Consulta la fuente código si quieres obtener más opciones para configurar BertNLClassifier.

Resultados de ejemplo

A continuación, se muestra un ejemplo de los resultados de clasificación de reseñas de películas mediante el uso de MobileBert de Model Maker.

Entrada: "Es un viaje encantador y conmovedor"

Resultado:

category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'

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

Requisitos de compatibilidad del modelo

La API de BetNLClassifier espera un modelo de TFLite con el modelo de TFLite obligatorio Metadatos.

Los metadatos deben cumplir con los siguientes requisitos:

  • input_process_units para el tokenizador de Wordpiece/Sentencepiece

  • 3 tensores de entrada con nombres “ids” y “mask” y "segment_ids" para la salida de el tokenizador

  • 1 tensor de salida de tipo float32, con un archivo de etiquetas adjunto opcionalmente. Si un se adjuntó el archivo de etiquetas, debe ser un archivo de texto sin formato con una etiqueta por línea y el número de etiquetas debe coincidir con el número de categorías como los resultados del modelo.