Guia de classificação de texto para Web

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 para apps da Web e JavaScript.

Para conferir essa tarefa em ação, confira a demonstração. 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 JavaScript 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 código de exemplo do Classificador de texto usando apenas o navegador da Web.

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

Pacotes JavaScript

O código do classificador de texto está disponível no pacote @mediapipe/tasks-text. Você pode encontrar essas bibliotecas nos links fornecidos no Guia de configuração da plataforma.

É possível instalar os pacotes necessários com o seguinte código para preparo local usando o seguinte comando:

npm install @mediapipe/tasks-text

Para implantar em um servidor, use um serviço de rede de fornecimento de conteúdo (CDN, na sigla em inglês), como o jsDelivr, para adicionar código diretamente à página HTML, da seguinte maneira:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

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 no diretório do projeto:

<dev-project-root>/assets/bert_text_classifier.tflite

Especifique o caminho do modelo com o parâmetro modelAssetPath do objeto baseOptions, conforme mostrado abaixo:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

Criar a tarefa

Use uma das funções TextClassifier.createFrom...() do Classificador de texto para preparar a tarefa para executar inferências. Você pode usar a função createFromModelPath() com um caminho relativo ou absoluto para o arquivo de modelo treinado. O exemplo de código abaixo demonstra o uso da função TextClassifier.createFromOptions(). Para mais informações sobre as opções de configuração disponíveis, consulte Opções de configuração.

O código a seguir demonstra como criar e configurar essa tarefa:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

Opções de configuração

Essa tarefa tem as seguintes opções de configuração para aplicativos da Web e JavaScript:

Nome da opção Descrição Intervalo de valor Valor padrão
displayNamesLocale 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
maxResults 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
scoreThreshold 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
categoryAllowlist 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 categoryDenylist, e o uso de ambos resulta em um erro. Qualquer string Não definido
categoryDenylist 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 categoryAllowlist, 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 (String). A tarefa lida com o pré-processamento da entrada de dados, incluindo a tokenização e o pré-processamento do 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.

const inputText = "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.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

Gerenciar e mostrar resultados

O classificador de texto gera um TextClassifierResult que contém a 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".