A tarefa Classificador de texto permite classificar um texto em um conjunto de categorias definidas, como sentimentos positivos ou negativos. As categorias são determinadas com base o modelo que você usa e como esse modelo foi treinado. Essas instruções mostram como usar o classificador de texto em apps iOS. O exemplo de código descrito estão disponíveis em GitHub.
Para saber como essa tarefa funciona, acesse este site demonstração. Para mais informações sobre os recursos, modelos e opções de configuração do para essa tarefa, consulte Visão geral.
Exemplo de código
O código de exemplo do MediaPipe Tasks é uma implementação básica de um classificador de texto para iOS.
Você pode usar o app como ponto de partida para seu próprio app iOS ou consultá-lo ao modificar um aplicativo existente. Consulte o exemplo de código do classificador de texto ativado GitHub.
Fazer o download do código
As instruções a seguir mostram como criar uma cópia local do exemplo. usando a ferramenta de linha de comando git.
Para fazer o download do código de exemplo:
Clone o repositório git usando o seguinte comando:
git clone https://github.com/google-ai-edge/mediapipe-samples
Opcionalmente, configure sua instância git para usar a finalização esparsa. Assim, você terá apenas os arquivos do aplicativo de exemplo do Classificador de texto:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
Depois de criar uma versão local do código de exemplo, você pode instalar o do MediaPipe, abra o projeto usando o Xcode e execute o app. Para instruções, consulte o Guia de configuração do iOS.
Principais componentes
Os arquivos a seguir contêm o código essencial para o exemplo do Text Classifier. aplicativo:
- TextClassifierHelper.swift: Inicializa o classificador de texto e processa a seleção de modelos.
- ViewController.swift: Implementa a interface e formata os resultados.
Configuração
Esta seção descreve as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código para usar o Text Classifier. Para informações gerais sobre como configurar sua ambiente de desenvolvimento para usar tarefas do MediaPipe, incluindo a versão da plataforma , consulte o Guia de configuração para iOS.
Dependências
O classificador de texto usa a biblioteca MediaPipeTasksText
, que precisa ser instalada
usando o CocoaPods. A biblioteca é compatível com aplicativos Swift e Objective-C
e não requer configuração específica do idioma.
Para instruções sobre como instalar o CocoaPods no macOS, consulte a documentação do CocoaPods
guia de instalação (em inglês).
Para instruções sobre como criar um Podfile
com os pods necessários para
aplicativo, consulte Usar
CocoaPods.
Adicione o pod do MediaPipeTasksText no Podfile
usando o seguinte código:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Se o app incluir destinos de teste de unidade, consulte o Guia de configuração do
iOS para mais informações sobre a configuração
seu Podfile
.
Modelo
A tarefa do classificador de texto do MediaPipe requer um modelo treinado que seja compatível a essa tarefa. Para mais informações sobre os modelos treinados disponíveis para Classificador de texto, consulte a visão geral da tarefa Modelos .
Selecione e faça o download de um modelo e adicione-o ao diretório do projeto usando o Xcode. Para instruções sobre como adicionar arquivos ao seu projeto Xcode, consulte Como gerenciar arquivos e pastas no seu Xcode projeto.
Use a propriedade BaseOptions.modelAssetPath
para especificar o caminho para o modelo.
no seu pacote de apps. Para conferir um exemplo de código, consulte a próxima seção.
Criar a tarefa
É possível criar a tarefa Text Classifier chamando um dos inicializadores dela. A
O inicializador TextClassifier(options:)
define valores para a configuração.
.
Se você não precisa de um classificador de texto inicializado com configuração personalizada
você pode usar o inicializador TextClassifier(modelPath:)
para criar um
Classificador de texto com as opções padrão. Para mais informações sobre configurações
opções, consulte Visão geral da configuração.
O código abaixo demonstra como criar e configurar essa tarefa.
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
Opções de configuração
Esta tarefa tem as seguintes opções de configuração para apps iOS:
Nome da opção | Descrição | Intervalo de valor | Valor padrão |
---|---|---|---|
displayNamesLocale |
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 |
maxResults |
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 |
scoreThreshold |
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 |
categoryAllowlist |
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 categoryDenylist e usando
os dois resultarão em erro. |
Qualquer string | Não definido |
categoryDenylist |
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 categoryAllowlist e usar ambos resulta em um erro. |
Qualquer string | Não definido |
Preparar dados
O Text Classificador funciona com dados de texto. 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(text:)
. Não há
sem precisar de pré-processamento adicional
do texto de entrada.
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
Executar a tarefa
Para executar o classificador de texto, use o método classify(text:)
. Classificador de texto
retorna as categorias possíveis para o texto de entrada.
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
Observação: a tarefa bloqueia a linha de execução atual até terminar a inferência no texto. Para evitar o bloqueio da linha de execução atual, execute o processamento em um linha de execução em segundo plano usando o iOS Dispatch ou NSOperation frameworks.
Gerenciar e exibir resultados
Ao executar a inferência, a tarefa do classificador de texto retorna um TextClassifierResult
.
Objeto que contém a lista de categorias possíveis para o texto de entrada. A
como as categorias são definidas pelo modelo usado.
categorias, escolher 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"
A ViewController.swift no arquivo de exemplo no código de exemplo demonstra como exibir os resultados da detecção retornados da tarefa.