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:
- Clona il repository git utilizzando il comando seguente:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 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:
- LanguageDetectorHelper.kt: Inizializza il rilevatore del linguaggio e gestisce la selezione del modello.
- ResultsAdapter.kt: Gestisce e formatta i risultati del rilevamento.
- MainActivity.kt:
Implementa l'applicazione, incluse le chiamate a
LanguageDetectorHelper
eResultsAdapter
.
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.