La tarea MediaPipe Language Detector te permite identificar el idioma de una porción del texto. Estos En las instrucciones, se muestra cómo usar el detector de idioma con apps para Android. El código descrita en estas instrucciones está disponible en GitHub:
Para ver esta tarea en acción, consulta el demostración. Para obtener más información sobre las capacidades, los modelos y las opciones de configuración para completar esta tarea, consulta la Descripción general.
Ejemplo de código
El código de ejemplo de Language Detector ofrece una implementación simple de lo siguiente: a modo de referencia. Este código te ayudará a probar esta tarea y comenzar con crear tu propia función de detección de idioma. Puedes explorar Código de ejemplo del detector de idioma en GitHub.
Descarga el código
En las siguientes instrucciones, se muestra cómo crear una copia local del ejemplo usando la herramienta de línea de comandos de control de versión git.
Para descargar el código de ejemplo, haz lo siguiente:
- Clona el repositorio de Git con el siguiente comando:
git clone https://github.com/google-ai-edge/mediapipe-samples
- De forma opcional, configura tu instancia de Git para que use el resultado escaso.
Solo tienes los archivos de la app de ejemplo del detector de idioma:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
Si deseas obtener instrucciones para configurar y ejecutar un ejemplo con Android Studio, consulta las instrucciones de configuración de código de ejemplo en la Guía de configuración para Android
Componentes clave
Los siguientes archivos contienen el código crucial para la clasificación de texto App de ejemplo:
- LanguageDetectorHelper.kt: Inicializa el detector de lenguaje y controla la selección del modelo.
- ResultsAdapter.kt: Maneja y formatea los resultados de detección.
- MainActivity.kt:
Implementa la aplicación, lo que incluye llamar a
LanguageDetectorHelper
yResultsAdapter
Configuración
En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y proyectos de código específicamente para el detector de idioma. Para obtener información general configurar tu entorno de desarrollo para usar tareas de MediaPipe, como de la versión de la plataforma, consulta la Guía de configuración para Android.
Dependencias
El detector de idioma usa las bibliotecas com.google.mediapipe:tasks-text
. Agregar
dependencia al archivo build.gradle
de tu proyecto de desarrollo de apps para Android.
Puedes importar las dependencias necesarias con el siguiente código:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Modelo
La tarea del detector de idioma de MediaPipe requiere un modelo entrenado que sea compatible con este tarea. Para obtener más información sobre los modelos entrenados disponibles para el detector de idioma, consulta la sección Modelos de la descripción general de la tarea.
Selecciona y descarga el modelo; luego, guárdalo en el directorio de tu proyecto:
<dev-project-root>/src/main/assets
Especifica la ruta del modelo dentro del parámetro ModelName
.
Crea la tarea
Puedes usar una de las funciones createFrom...()
para crear la tarea. El
La función createFromOptions()
acepta las opciones de configuración para el idioma
de detección de intrusiones. También puedes inicializar la tarea con la configuración de fábrica de createFromFile()
.
. La función createFromFile()
acepta una ruta de acceso relativa o absoluta a
el archivo de modelo entrenado. Para obtener más información sobre la configuración de tareas, consulta
Opciones de configuración.
En el siguiente código, se muestra cómo crear y configurar esta tarea.
// For creating a language detector instance:
LanguageDetectorOptions options =
LanguageDetectorOptions.builder()
.setBaseOptions(
BaseOptions.builder()
.setModelAssetPath(modelPath)
.build()
)
.build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);
Puedes ver un ejemplo de cómo crear una tarea en el código de ejemplo.
LanguageDetectorHelper
función de clase initDetector()
.
Opciones de configuración
Esta tarea tiene las siguientes opciones de configuración para apps para Android:
Nombre de la opción | Descripción | Rango de valores | Valor predeterminado |
---|---|---|---|
maxResults |
Establece el número máximo opcional de predicciones lingüísticas con la puntuación más alta para el resultado. Si este valor es menor que cero, se muestran todos los resultados disponibles. | Cualquier número positivo | -1 |
scoreThreshold |
Establece el umbral de puntuación de predicción que anula el que se proporciona en los metadatos del modelo (si los hay). Se rechazarán los resultados por debajo de este valor. | Cualquier número de punto flotante | Sin establecer |
categoryAllowlist |
Establece la lista opcional de códigos de idioma permitidos. Si no está vacío,
las predicciones de idioma cuyo código de idioma no se encuentre en este conjunto serán
filtrado. Esta opción es mutuamente excluyente con
categoryDenylist , y usar ambos generará un error. |
Cualquier cadena | Sin establecer |
categoryDenylist |
Establece la lista opcional de códigos de idioma que no están permitidos. Si
Se filtrarán las predicciones de idioma no vacías cuyo código de idioma se encuentra en este conjunto.
y sale de ella. Esta opción es mutuamente excluyente con categoryAllowlist y
usar ambos dará como resultado un error. |
Cualquier cadena | Sin establecer |
Preparar los datos
El detector de idioma funciona con datos de texto (String
). La tarea maneja la entrada de datos
el procesamiento previo, incluida la asignación de token y el procesamiento previo del tensor. Todo
el procesamiento previo se controla dentro de la función detect()
. No se necesita
el procesamiento previo adicional
del texto de entrada de antemano.
String inputText = "Some input text for the language detector";
Ejecuta la tarea
El detector de idioma usa el método LanguageDetector.detect()
para procesar la entrada
del texto y predecir su idioma. Deberías usar una ejecución separada
subproceso para ejecutar la detección y evitar bloquear al usuario de Android
de la interfaz de usuario con tu app.
En el siguiente código, se muestra cómo ejecutar el procesamiento con la tarea con un subproceso de ejecución independiente.
// Predict the language of the input text.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = languageDetector.detect(text)
listener.onResult(results)
}
}
Puedes ver un ejemplo de cómo ejecutar una tarea en el código de ejemplo.
LanguageDetectorHelper
función de clase detect()
.
Cómo controlar y mostrar resultados
El detector de idioma genera un LanguageDetectorResult
que consta de una lista de
lingüísticas junto con las probabilidades de esas predicciones. El
las categorías de lenguaje se definen en el modelo, consulta la descripción general de la tarea
En la sección Modelos, encontrarás detalles sobre el modelo que estás usando.
A continuación, se muestra un ejemplo de los datos de salida de esta tarea:
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
Se obtuvo este resultado ejecutando el modelo en el texto de entrada:
"Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
Puedes consultar un ejemplo de cómo mostrar los resultados en el código de ejemplo.
ResultsAdapter
y la clase interna ViewHolder
.