Guida al rilevamento della lingua per Android

L'attività MediaPipe Language Detector ti consente di identificare la lingua di una porzione di testo. Questi le istruzioni mostrano come usare il rilevatore della lingua con le app per Android. Il codice descritto in queste istruzioni è disponibile su GitHub.

Puoi vedere questa attività in azione visualizzando la demo. Per ulteriori informazioni su funzionalità, modelli e opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio per Language Detector fornisce un'implementazione semplice di questo come riferimento. Questo codice è utile per testare l'attività e iniziare creando la tua funzionalità di rilevamento della lingua. Puoi sfogliare Codice di esempio del rilevatore di lingua su GitHub.

Scarica il codice

Le seguenti istruzioni mostrano come creare una copia locale dell'esempio utilizzando lo strumento a riga di comando git per il controllo della versione.

Per scaricare il codice di esempio:

  1. Clona il repository git utilizzando il comando seguente:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Facoltativamente, configura l'istanza Git in modo da utilizzare il pagamento sparso, in modo da avere solo i file dell'app di esempio Language Detector:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Per istruzioni su come configurare ed eseguire un esempio con Android Studio, consulta le istruzioni di configurazione del codice di esempio nella Guida alla configurazione per Android.

Componenti chiave

I seguenti file contengono il codice fondamentale per la classificazione del testo app di esempio:

Configurazione

Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e per i progetti di codice specificatamente per l'uso di Language Detector. Per informazioni generali su configurare l'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta Guida alla configurazione per Android.

Dipendenze

Language Detector utilizza le librerie com.google.mediapipe:tasks-text. Aggiungi questo al file build.gradle del progetto di sviluppo di app per Android. Puoi importare le dipendenze richieste con il seguente codice:

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

Modello

L'attività di rilevamento del linguaggio MediaPipe richiede un modello addestrato che sia compatibile con dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per Language Detector, vedi la panoramica delle attività nella sezione Modelli.

Seleziona e scarica il modello, quindi archivialo nella directory del progetto:

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

Specifica il percorso del modello all'interno del parametro ModelName.

Crea l'attività

Puoi utilizzare una delle funzioni di createFrom...() per creare l'attività. La La funzione createFromOptions() accetta le opzioni di configurazione per la lingua rilevatore. Puoi anche inizializzare l'attività utilizzando il valore di fabbrica createFromFile() personalizzata. La funzione createFromFile() accetta un percorso relativo o assoluto per del modello addestrato. Per ulteriori informazioni sulla configurazione delle attività, consulta Opzioni di configurazione.

Il codice seguente illustra come creare e configurare questa attività.

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

Puoi vedere un esempio di come creare un'attività nel codice LanguageDetectorHelper di classe initDetector().

Opzioni di configurazione

Questa attività include le seguenti opzioni di configurazione per le app per Android:

Nome opzione Descrizione Intervallo di valori Valore predefinito
maxResults Imposta il numero massimo facoltativo di previsioni per lingua con il punteggio più alto su per tornare indietro. Se questo valore è inferiore a zero, vengono restituiti tutti i risultati disponibili. Qualsiasi numero positivo -1
scoreThreshold Imposta la soglia del punteggio di previsione che sostituisce quella fornita in gli eventuali metadati del modello. I risultati al di sotto di questo valore vengono rifiutati. Qualsiasi numero in virgola mobile Non impostato
categoryAllowlist Consente di impostare l'elenco facoltativo dei codici lingua consentiti. Se il campo non è vuoto, le previsioni linguistiche il cui codice lingua non è in questo set saranno esclusi. Questa opzione si esclude a vicenda con categoryDenylist e l'utilizzo di entrambi generano un errore. Qualsiasi stringa Non impostato
categoryDenylist Consente di impostare un elenco facoltativo di codici lingua non consentiti. Se non vuote, le previsioni del linguaggio il cui codice lingua è incluso in questo set verranno filtrate fuori. Questa opzione si esclude a vicenda con categoryAllowlist e se utilizzi entrambi, genera un errore. Qualsiasi stringa Non impostato

Preparazione dei dati

Language Detector funziona con i dati di testo (String). L'attività gestisce l'input dei dati pre-elaborazione, tra cui la tokenizzazione e la pre-elaborazione dei tensori. Tutti la pre-elaborazione viene gestita all'interno della funzione detect(). Non è necessario un'ulteriore pre-elaborazione del testo di input.

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

Esegui l'attività

Language Detector utilizza il metodo LanguageDetector.detect() per elaborare l'input del testo e prevedere la lingua del testo. Dovresti usare un'esecuzione separata thread per eseguire il rilevamento al fine di evitare di bloccare l'utente Android thread di interfaccia con la tua app.

Il codice seguente mostra come eseguire l'elaborazione con l'attività utilizzando un thread di esecuzione separato.

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

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

Puoi vedere un esempio di come eseguire un'attività nel codice LanguageDetectorHelper di classe detect().

Gestire e visualizzare i risultati

Il rilevatore della lingua restituisce un LanguageDetectorResult composto da un elenco di previsioni linguistiche insieme alle probabilità di queste previsioni. La le categorie di lingue sono definite nel modello; consulta la panoramica dell'attività Sezione Modelli per informazioni dettagliate sul modello utilizzato.

Di seguito è riportato un esempio dei dati di output di questa attività:

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

Questo risultato è stato ottenuto eseguendo il modello sul testo di input: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent.".

Puoi vedere un esempio di come visualizzare i risultati nel codice ResultsAdapter e ViewHolder classe interna.