¡El Día de la Comunidad de ML es el 9 de noviembre! Únase a nosotros para recibir actualizaciones de TensorFlow, JAX, y más Más información

Integrar clasificador de lenguaje natural

Del Biblioteca de tareas NLClassifier texto de entrada clasifica API en diferentes categorías, y es un versátil y API configurable que puede manejar la mayoría de los modelos de clasificación de texto.

Características clave de la API de NLClassifier

  • Toma una sola cadena como entrada, realiza la clasificación con la cadena y las salidas pares como resultados de clasificación.

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

  • Configurable para adaptar diferentes modelos de clasificación.

Modelos de NLClassifier compatibles

Los siguientes modelos están garantizados para ser compatible con el NLClassifier API.

Ejecutar inferencia en Java

Ver la aplicación de referencia de clasificación de textos para un ejemplo de cómo utilizar NLClassifier en una aplicación para Android.

Paso 1: Importa la dependencia de Gradle y otras configuraciones

Copiar el .tflite archivo del modelo para el directorio activo del módulo de Android en la que se ejecuta el modelo. Especifica que el archivo no se debe comprimir, y añadir la biblioteca TensorFlow Lite para el módulo de build.gradle archivo:

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

Paso 2: ejecutar inferencia usando la API

// Initialization, use NLClassifierOptions to configure input and output tensors
NLClassifierOptions options = NLClassifierOptions.builder().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);

Ver el código fuente para más opciones para configurar NLClassifier .

Ejecutar inferencia en Swift

Paso 1: Importar CocoaPods

Agregue el pod TensorFlowLiteTaskText en Podfile

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

Paso 2: ejecutar inferencia usando 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)

Ver el código fuente para más detalles.

Ejecutar inferencia en C ++

// Initialization
NLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();

// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);

Ver el código fuente para más detalles.

Resultados de ejemplo

Aquí es un ejemplo de los resultados de la clasificación del modelo reseña de la película .

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

Producción:

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

Pruebe la sencilla herramienta de demostración CLI para NLClassifier con sus propios datos del modelo y de prueba.

Requisitos de compatibilidad del modelo

Dependiendo del caso de uso, la NLClassifier API puede cargar un modelo TFLite con o sin TFLite modelo de metadatos . Ver ejemplos de creación de metadatos para clasificadores de las lenguas naturales utilizando el API escritor TensorFlow Lite metadatos .

Los modelos compatibles deben cumplir los siguientes requisitos:

  • Tensor de entrada: (kTfLiteString / kTfLiteInt32)

    • La entrada del modelo debe ser una cadena de entrada sin formato del tensor kTfLiteString o un tensor kTfLiteInt32 para los índices tokenizados de expresiones regulares de la cadena de entrada sin formato.

    • Si el tipo de entrada es kTfLiteString, sin metadatos se requiere para el modelo.

    • Si el tipo de entrada es kTfLiteInt32, un RegexTokenizer necesita ser instalado en la entrada del tensor de metadatos .

  • 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 de Int, descuantificarlo para duplicar / flotar a las plataformas correspondientes

    • Puede tener un archivo asociado opcional en la salida del tensor está correspondientes metadatos de las etiquetas de categoría, el archivo debe ser un archivo de texto plano con una etiqueta por línea y el número de etiquetas debe coincidir con el número de categorías como los resultados de los modelos. Ver el archivo de etiquetas exmaple .

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

    • El 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 índices de puntuación como nombres de clase.

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