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"
.