Guia de classificação de texto para Python

A tarefa MediaPipe Text Classifier permite classificar textos em um conjunto de categorias definidas. como sentimentos positivos ou negativos. As categorias são determinadas pelo modelo que você usa e como esse modelo foi treinado. Estas instruções mostram como usar o Text Classifier com Python.

Para saber como essa tarefa funciona, acesse o Demonstração na Web. Para mais informações sobre os recursos, modelos e de configuração dessa tarefa, consulte a Visão geral.

Exemplo de código

O código de exemplo para o classificador de texto fornece uma implementação completa em Python para sua referência. Esse código ajuda a testar a tarefa começou a criar seu próprio app de classificação de texto. Você pode exibir, executar e editar o classificador de texto exemplo de código usando apenas seu navegador da Web.

Se você estiver implementando o classificador de texto para o Raspberry Pi, consulte a Exemplo do Raspberry Pi app.

Configuração

Esta seção descreve as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código especificamente para usar o classificador de texto. Para informações gerais a configuração do seu ambiente de desenvolvimento para usar o MediaPipe Tasks, incluindo requisitos de versão da plataforma, consulte Guia de configuração para Python.

Pacotes

O classificador de texto usa o pacote pip mediapipe. Você pode instalar essas dependências com o seguinte:

$ python -m pip install mediapipe

Importações

Importe as seguintes classes para acessar as funções de tarefa do Text Classifier:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

Modelo

A tarefa do classificador de texto do MediaPipe requer um modelo treinado que seja compatível com essa tarefa. Para mais informações sobre modelos treinados disponíveis para o classificador de texto, consulte na seção de visão geral da tarefa Modelos.

Selecione e faça o download de um modelo e armazene-o em um diretório local:

model_path = '/absolute/path/to/text_classifier.tflite'

Especifique o caminho do modelo com o objeto BaseOptions model_asset_path , conforme mostrado abaixo:

base_options = BaseOptions(model_asset_path=model_path)

Criar a tarefa

A tarefa do classificador de texto do MediaPipe usa a função create_from_options para configurar o tarefa. A função create_from_options aceita valores para configuração. para definir as opções do classificador. Também é possível inicializar a tarefa usando a função de fábrica create_from_model_path. O create_from_model_path aceita um caminho relativo ou absoluto para o arquivo de modelo treinado. Para mais informações sobre as opções de configuração, consulte Opções de configuração.

O código abaixo demonstra como criar e configurar essa tarefa.

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

Opções de configuração

Esta tarefa tem as seguintes opções de configuração para apps Android:

Nome da opção Descrição Intervalo de valor Valor padrão
display_names_locale Define o idioma dos rótulos a serem usados para nomes de exibição fornecidos no metadados do modelo da tarefa, se disponíveis. O padrão é en para inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado usando a API Metadata Writer do TensorFlow Lite; Código da localidade en
max_results Define o número máximo opcional de resultados da classificação com maior pontuação como voltar. Se < 0, todos os resultados disponíveis serão retornados. Qualquer número positivo -1
score_threshold Define o limite de pontuação da previsão que substitui o fornecido no os metadados do modelo (se houver). Resultados abaixo desse valor são rejeitados. Qualquer flutuação Não definido
category_allowlist Define a lista opcional de nomes de categorias permitidos. Se não estiver vazio, resultados de classificação cujo nome de categoria não esteja neste conjunto serão que foram filtradas. Nomes de categorias duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva com category_denylist e usando os dois resultarão em erro. Qualquer string Não definido
category_denylist Define a lista opcional de nomes de categorias que não são permitidos. Se não vazio, os resultados de classificação cujo nome de categoria estiver neste conjunto serão filtrados para fora. Nomes de categorias duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusivo com category_allowlist e usar ambos resulta em um erro. Qualquer string Não definido

Preparar dados

O classificador de texto funciona com dados de texto (str). A tarefa lida com a entrada de dados incluindo a tokenização e o pré-processamento de tensores.

Todo o pré-processamento é feito na função classify. Não é necessário para pré-processamento adicional do texto de entrada.

input_text = 'The input text to be classified.'

Executar a tarefa

O classificador de texto usa a função classify para acionar inferências. Para texto classificação, isso significa retornar as categorias possíveis para o texto de entrada.

O código a seguir demonstra como executar o processamento com a tarefa um modelo de machine learning.

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

Gerenciar e exibir resultados

O classificador de texto gera um objeto TextClassifierResult que contém uma lista de categorias possíveis para o texto de entrada. As categorias são definidas pelo o modelo que você usa. Portanto, se quiser categorias diferentes, escolha um modelo diferente, ou treinar novamente um que já existe.

Confira abaixo um exemplo dos dados de saída desta tarefa:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

Esse resultado foi gerado executando o classificador BERT no texto de entrada: "an imperfect but overall entertaining mystery"