Optimizan diccionario finés-inglés: de 3 GB a 10 MB

Fuentes: Replacing a 3 GB SQLite database with a 10 MB FST (finite state transducer) binary

Este artículo cuenta cómo un desarrollador optimizó dramáticamente un diccionario finés-inglés llamado Taskusanakirja (tsk). El problema original era realizar búsquedas prefijas instantáneas en un idioma altamente agglutinativo como el finlandés, donde una sola palabra puede generar más de cien formas flexionadas mediante sufijos. La primera implementación usó un trie en Go, que funcionó bien para cientos de miles de entradas, pero con 40-60 millones de formas flexionadas necesarias para el finlandés, el consumo de memoria se volvió inviable. La solución temporal fue usar SQLite con FTS (Full Text Search), ocupando 3 GB de descarga. El desarrollador decidió reescribir el proyecto en Rust utilizando FST (Finite State Transducer), una estructura de datos que representa autómatas de estado finito compactos para conjuntos ordenados de cadenas. A diferencia de los tries, los FST comprimen tanto prefijos como sufijos, lo cual es ideal para idiomas con muchas terminaciones comunes que se repiten constantemente. El resultado fue una reducción de tamaño de 300 veces: de 3 GB a apenas 10 MB. Esta optimización permetió que el diccionario completo cupiera en cualquier laptop antigua, cumpliendo con el objetivo original de ser una 'bolsquista digital' portable. El proyecto demuestra cómo elegir la estructura de datos correcta puede transformar radicalmente la eficiencia de una aplicación.