- El tratamiento de la declinación de nombres personales en islandés cambia a 4 formas según el contexto
- Se desarrolló una librería de JavaScript basada en datos con capacidad de devolver el caso gramatical adecuado para el nombre ingresado
- Guardar todos los nombres directamente generaba aumento de tamaño y faltantes de datos, por lo que se resolvió usando una estructura trie y técnicas de compresión
- Gracias a la compresión trie, es posible inferir automáticamente a partir de patrones comunes y se alcanzó una base de datos muy pequeña que cubre más del 80% de los datos
- En situaciones normales muestra más de 74% de precisión, y para el sector público y casos donde se requiere precisión se ofrece una versión strict aparte
Antecedentes del problema
- En las interfaces en islandés, mostrar nombres personales presenta dificultades debido a la declinación
- En islandés, los nombres cambian de forma según los casos gramaticales nominativo, acusativo, dativo y genitivo
- La base de datos suele guardar normalmente los nombres en forma nominativa, y surgen dificultades cuando se requiere otro caso según el contexto
- Si no se usa la forma correcta, suena poco natural o forzado para un hablante nativo
Recolección y limpieza de datos
- Islandia dispone de los datos abiertos DIM (Database of Icelandic Morphology) administrados por Árnastofnun
- Los datos de declinación de nombres pueden prepararse como CSV en Kristín’s Format (formato K)
- Aunque el conjunto completo DIM tiene 7 millones de filas y es excesivamente grande, se filtran 4,500 nombres personales oficialmente aprobados, y se pueden obtener datos de declinación para poco más de 3.600
- Para cada nombre se puede construir una matriz con las formas desde nominativo hasta genitivo
Estructura base de la librería
- La implementación inicial comenzó con una función applyCase para retornar la forma adecuada a partir del arreglo nombre-formas de caso
- Sin embargo, la carga mediante simple lectura de arreglo ocupaba 30kB gzipped
- Tiene la limitación de que no responde para nombres que no están incluidos en los datos
Eliminación de duplicados y extracción de patrones
- Se extrajeron prefijos comunes entre las 4 formas de cada nombre y se almacenaron solo los conjuntos de sufijos (suffix encoding) para minimizar duplicados
- Se observó que hay muchos nombres que comparten el mismo patrón de declinación
Introducción de trie para coincidencia de patrones
- Se optimiza la asignación de valores para grupos de nombres que comparten patrones mediante una estructura trie (inserción inversa por sufijo)
- Se almacena la información de declinación solo una vez bajo patrones comunes de terminación (name endings), manteniendo alta capacidad de predicción para nombres nuevos
Compresión y optimización del trie
- Cuando los valores son iguales en cada hoja del subárbol, se asigna el valor al nodo padre y se eliminan los hijos para comprimir el árbol
- Esto redujo el número de nodos hasta un 15,4%, y el tamaño bajó a 4.01kB
- Una compresión de segundo nivel que fusiona hojas hermanas con valores idénticos en un solo nodo llevó a 3.27kB
Rendimiento y generalización del trie
- Al ingresar un nombre nuevo, es posible declinar automáticamente usando patrones similares
- En la práctica, con nombres no conocidos mostró 74% de declinación correcta y 26% de error; la tasa de error para usuarios reales fue solo 0.34%
- Cuanto mayor es la regularidad y la exhaustividad de los datos, mayor es el beneficio de la compresión y la precisión de inferencia automática
Librería real y aplicación
- Finalmente se distribuyó la librería comprimida con trie beygla
- Se ofrece un tamaño mínimo de 4.46kB y un módulo strict más estricto y completo de 15kB
- En contextos que requieren 100% de precisión, como documentos públicos, se puede elegir la versión strict; en aplicaciones web comunes, elegir la versión ligera
Conclusiones y potencial de expansión
- La compresión de datos de patrones de declinación de lenguas con trie puede aplicarse a la automatización de nombres, direcciones y otros sustantivos en otras lenguas flexivas, además del islandés
- La combinación de datos con alta regularidad y compresión trie es una forma de maximizar la eficiencia de datos y rendimiento en la automatización de la flexión morfológica
Agradecimientos
- En el desarrollo de beygla hubo retroalimentación de diversos expertos y optimizaciones
- Una compresión adicional del trie redujo el tamaño de 3.43kB a 3.27kB
Resumen
- Presenta un caso de automatización de la declinación de nombres islandeses mediante la miniaturización automática basada en patrones con una estructura trie
- Sugiere una estrategia práctica de procesamiento de datos con un equilibrio de tamaño-precisión bien planteado
Aún no hay comentarios.