Guia de detecção de idiomas para Android

Com a tarefa Detector de idioma do MediaPipe, você identifica o idioma de um texto. Estas instruções mostram como usar o Detector de idioma com apps Android. O exemplo de código descrito nestas instruções está disponível no GitHub.

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 detector de idioma oferece uma implementação simples dessa tarefa para referência. Este código ajuda você a testar essa tarefa e começar a criar seu próprio recurso de detecção de idioma. Confira o código de exemplo do detector de linguagem (em inglês) no GitHub.

Fazer o download do código

As instruções a seguir mostram como criar uma cópia local do código de exemplo usando a ferramenta de linha de comando de controle de versões git.

Para fazer o download do código de exemplo:

  1. Clone o repositório git usando o seguinte comando:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Como opção, configure sua instância git para usar o checkout esparso, para que você tenha apenas os arquivos do app de exemplo do Detector de idiomas:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Para saber como configurar e executar um exemplo com o Android Studio, consulte as instruções de configuração do código de exemplo no Guia de configuração para Android.

Principais componentes

Os arquivos a seguir contêm o código essencial para o app de exemplo de classificação de texto:

Configuração

Nesta seção, descrevemos as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código especificamente para usar o Detector de idiomas. Para ter informações gerais sobre como configurar seu ambiente de desenvolvimento para usar tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte o Guia de configuração para Android.

Dependências

O detector de idiomas usa as bibliotecas com.google.mediapipe:tasks-text. Adicione essa dependência ao arquivo build.gradle do projeto de desenvolvimento do app Android. Importe as dependências necessárias com o seguinte código:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

Modelo

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

Selecione e faça o download do modelo e armazene-o no diretório do projeto:

<dev-project-root>/src/main/assets

Especifique o caminho do modelo no parâmetro ModelName.

Criar a tarefa

Use uma das funções createFrom...() para criar a tarefa. A função createFromOptions() aceita opções de configuração do detector de idioma. Você também pode inicializar a tarefa usando a função de fábrica createFromFile(). A função createFromFile() aceita um caminho relativo ou absoluto para o arquivo de modelo treinado. Para mais informações sobre como configurar tarefas, consulte Opções de configuração.

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

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

Você pode ver um exemplo de como criar uma tarefa na função initDetector() da classe LanguageDetectorHelper de exemplo.

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
maxResults Define o número máximo opcional de previsões de idioma com pontuação mais alta a serem retornadas. Se esse valor for menor que zero, 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 códigos de idioma permitidos. Se o valor não estiver vazio, as previsões de idioma com código de idioma que não estiver nesse conjunto serão filtradas. Essa opção é mutuamente exclusiva com categoryDenylist, e o uso de ambos resulta em erro. Qualquer string Não definido
categoryDenylist Define a lista opcional de códigos de idioma que não são permitidos. Se não estiver em branco, as previsões de idioma com código de idioma nesse conjunto serão filtradas. Essa opção é mutuamente exclusiva com categoryAllowlist, e o uso de ambos resulta em um erro. Qualquer string Não definido

preparar dados

O detector de idioma funciona com dados de texto (String). 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 detect(). Não é necessário fazer outro pré-processamento do texto de entrada.

String inputText = "Some input text for the language detector";

Executar a tarefa

O detector de idioma usa o método LanguageDetector.detect() para processar o texto de entrada e prever o idioma do texto. Use uma linha de execução separada para realizar a detecção e evitar o bloqueio da linha de execução da interface do usuário Android com seu app.

O código a seguir demonstra como executar o processamento com o modelo de tarefa usando uma linha de execução separada.

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

Veja um exemplo de como executar uma tarefa na função detect() da classe LanguageDetectorHelper de exemplo.

Gerenciar e mostrar resultados

O detector de idioma gera um LanguageDetectorResult que consiste em uma lista de previsões de idioma com as probabilidades dessas previsões. As categorias de idioma são definidas no modelo. Consulte a seção Modelos de visão geral da tarefa para detalhes sobre o modelo que você está usando.

Veja a seguir um exemplo dos dados de saída dessa tarefa:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

Esse resultado foi obtido com a execução do modelo no texto de entrada: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent.".

Confira um exemplo de como exibir os resultados no exemplo de código da classe ResultsAdapter e da classe interna ViewHolder.