Guia de classificação de texto para Python

A tarefa MediaPipe Text Classifier permite que você classifique o texto em um conjunto de categorias definidas, como sentimento positivo ou negativo. As categorias são determinadas pelo modelo que você usa e como esse modelo foi treinado. Estas instruções mostram como usar o classificador de texto com o Python.

Para ver essa tarefa em ação, confira a demonstração da Web. Para mais informações sobre os recursos, modelos e opções de configuração dessa tarefa, consulte a Visão geral.

Exemplo de código

O código de exemplo do Classificador de texto fornece uma implementação completa dessa tarefa em Python para sua referência. Esse código ajuda você a testar essa tarefa e começar a criar seu próprio app de classificação de texto. É possível ver, executar e editar o exemplo de código do Classificador de texto usando apenas o navegador da Web.

Se você estiver implementando o classificador de texto para o Raspberry Pi, consulte o app de exemplo do Raspberry Pi (link em inglês).

Configuração

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

Pacotes

O classificador de texto usa o pacote 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 da tarefa do Classificador de texto:

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

Modelo

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

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 parâmetro model_asset_path do objeto BaseOptions, 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 a tarefa. A função create_from_options aceita valores das opções de configuração para definir as opções do classificador. Você também pode inicializar a tarefa usando a função de fábrica create_from_model_path. A funçã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 a seguir 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 ser usado para nomes de exibição fornecidos nos metadados do modelo da tarefa, se disponível. O padrão é en para inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado usando a API TensorFlow Lite Metadata Writer Código da localidade en
max_results Define o número máximo opcional de resultados de classificação com a melhor pontuação a ser retornado. Se < 0, todos os resultados disponíveis serão retornados. Qualquer número positivo -1
score_threshold Define o limite de pontuação de previsão que substitui o fornecido nos metadados do modelo (se houver). Os resultados abaixo desse valor são rejeitados. Qualquer ponto flutuante Não definido
category_allowlist Define a lista opcional de nomes de categorias permitidas. Se não estiver em branco, os resultados de classificação com nome de categoria que não estiver nesse conjunto serão filtrados. Nomes de categoria duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva com category_denylist, e o uso de ambos resulta em um 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 estiver em branco, os resultados de classificação com o nome de categoria nesse conjunto serão filtrados. Nomes de categoria duplicados ou desconhecidos são ignorados. Essa opção é mutuamente exclusiva com category_allowlist, e o uso de 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 o pré-processamento de entrada de dados, incluindo a tokenização e o pré-processamento de tensor.

Todo o pré-processamento é processado na função classify. Não é necessário fazer mais um pré-processamento do texto de entrada com antecedência.

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 classificação de texto, isso significa retornar as categorias possíveis para o texto de entrada.

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

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

Gerenciar e mostrar 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 modelo que você usa. Portanto, se você quiser categorias diferentes, escolha um modelo diferente ou treine novamente um existente.

Veja a seguir um exemplo dos dados de saída dessa 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

Este resultado foi obtido ao executar o classificador BERT no texto de entrada: "an imperfect but overall entertaining mystery".