A tarefa MediaPipe Text Classifier permite classificar texto em um conjunto de categorias definidas, como sentimento positivo ou negativo. As categorias são determinadas pelo modelo usado e como ele foi treinado. Estas instruções mostram como usar o classificador de texto para apps da Web e JavaScript.
Para ver essa tarefa em ação, acesse 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 exemplo de código do classificador de texto oferece uma implementação completa dessa tarefa em JavaScript para sua referência. Esse código ajuda a testar a tarefa e começar a criar seu próprio app de classificação de texto. Você pode visualizar, executar e editar o classificador de texto exemplo usando apenas o navegador da Web.
Configuração
Esta seção descreve as etapas principais para configurar seu ambiente de desenvolvimento e projetos de código especificamente para usar o classificador de texto. Para informações gerais sobre como configurar seu ambiente de desenvolvimento para usar as tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte o guia de configuração para a Web.
Pacotes JavaScript
O código do classificador de texto está disponível no
@mediapipe/tasks-text
pacote. Você pode encontrar e fazer o download dessas bibliotecas nos links fornecidos no
guia de configuração
da plataforma.
Para instalar os pacotes necessários com o código a seguir para o preparo local, use o comando abaixo:
npm install @mediapipe/tasks-text
Se você quiser fazer a implantação em um servidor, use um serviço de rede de distribuição de conteúdo (CDN, na sigla em inglês), como o jsDelivr, para adicionar código diretamente à sua 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 MediaPipe Text Classifier requer um modelo treinado compatível com ela. Para mais informações sobre os modelos treinados disponíveis para o classificador de texto, consulte a seção Modelos da 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 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 serem usados para os nomes de exibição fornecidos nos
metadados do modelo da tarefa, se disponível. O padrão é en para
inglês. Você pode adicionar rótulos localizados aos metadados de um modelo personalizado
usando a API TensorFlow Lite Metadata Writer
| Código de localidade | en |
maxResults |
Define o número máximo opcional de resultados de classificação com maior pontuação a serem retornados. Se for < 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 flutuante | Não definido |
categoryAllowlist |
Define a lista opcional de nomes de categorias permitidos. Se não estiver vazia, os resultados de classificação cujo nome de categoria não estiver nesse conjunto serão filtrados. Nomes de categorias 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 vazia, os resultados de classificação cujo nome de categoria estiver nesse conjunto serão filtrados. Nomes de categorias 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 processa o pré-processamento de entrada de dados, incluindo tokenização e pré-processamento de tensor.
Todo o pré-processamento é processado na função classify(). Não é necessário pré-processar o texto de entrada.
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
);
Processar 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 usado. Portanto, se você quiser categorias diferentes, escolha um modelo diferente ou treine novamente um modelo existente.
Confira 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
Esse resultado foi obtido executando o classificador BERT no texto de entrada:
"an imperfect but overall entertaining mystery".