Guia de detecção de idiomas para Android

A tarefa Detector de idiomas do MediaPipe permite identificar o idioma de um texto. Esses mostram como usar o detector de idiomas com apps Android. O código o exemplo descrito nestas instruções está disponível em GitHub.

Para saber como essa tarefa funciona, acesse o demonstração. Para mais informações sobre recursos, modelos e opções de configuração, desta tarefa, consulte a Visão geral.

Exemplo de código

O código de exemplo do detector de linguagem fornece uma implementação simples desse tarefa para sua referência. Esse código ajuda a testar a tarefa e a começar criando seu próprio recurso de detecção de idioma. Navegue pela Exemplo de código do detector de linguagem no 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 de controle de versão 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 do Git para usar a finalização esparsa. Portanto, você tem apenas os arquivos do app de exemplo do Language Detector:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

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

Principais componentes

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

  • LanguageDetectorHelper.kt: Inicializa o detector de linguagem e processa a seleção de modelos.
  • ResultsAdapter.kt: Processa e formata os resultados da detecção.
  • MainActivity.kt (link em inglês): Implementa o aplicativo, incluindo a chamada de LanguageDetectorHelper e ResultsAdapter.

Configuração

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

Dependências

O detector de linguagem usa as bibliotecas com.google.mediapipe:tasks-text. Adicionar dependência do arquivo build.gradle do projeto de desenvolvimento de apps Android. É possível importar as dependências necessárias com o seguinte código:

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

Modelo

A tarefa 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 Language Detector, consulte na seção de visão geral da tarefa Modelos.

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

É possível usar uma das funções createFrom...() para criar a tarefa. A A função createFromOptions() aceita opções de configuração para a linguagem de detecção. Também é possível inicializar a tarefa usando a fábrica createFromFile(). função. A função createFromFile() aceita um caminho relativo ou absoluto para o arquivo do modelo treinado. Para mais informações sobre como configurar tarefas, consulte Opções de configuração.

O código abaixo 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);

É possível ver um exemplo de como criar uma tarefa no exemplo de código LanguageDetectorHelper função initDetector() da classe.

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 idiomas com maior pontuação como voltar. 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 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 códigos de idioma permitidos. Se não estiver vazio, previsões de idiomas cujo código de idioma não estiver neste conjunto serão que foram filtradas. Essa opção é mutuamente exclusiva com categoryDenylist e usar os dois resultará em um erro. Qualquer string Não definido
categoryDenylist Define a lista opcional de códigos de idiomas que não são permitidos. Se as previsões de idiomas com código nesse conjunto serão filtradas para fora. Essa opção é mutuamente exclusiva com categoryAllowlist e usar ambos resulta em erro. Qualquer string Não definido

Preparar dados

O detector de idiomas funciona com dados de texto (String). A tarefa lida com a entrada de dados incluindo a tokenização e o pré-processamento de tensores. Todos o pré-processamento é feito na função detect(). Não é necessário um pré-processamento adicional do texto de entrada.

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

Executar a tarefa

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

O código a seguir demonstra como executar o processamento com a 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)
    }
}

É possível ver um exemplo de como executar uma tarefa no exemplo de código LanguageDetectorHelper função detect() da classe.

Gerenciar e exibir resultados

O detector de linguagem gera uma LanguageDetectorResult que consiste em uma lista de previsões de idiomas e as probabilidades delas. A as categorias de idioma são definidas no modelo, consulte a visão geral da tarefa Acesse a seção Modelos para ver detalhes sobre o modelo que você está usando.

Confira abaixo um exemplo dos dados de saída desta tarefa:

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

Este resultado foi obtido executando o 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 resultados no exemplo de código ResultsAdapter classe interna ViewHolder.