Skip to content

Generar diccionario corrector

Ismael Olea edited this page Aug 24, 2023 · 6 revisions

Este instructivo está escrito para sistemas operativos GNU/Linux, dado que las herramientas son scripts escritos en Bash.

El público objetivo son los miembros del equipo de desarrollo y cualquier persona que desee participar directamente en los detalles técnicos del mantenimiento de los diccionarios.

Para empezar a trabajar necesitas una copia local del repositorio de trabajo del proyecto:

git clone https://github.com/sbosio/rla-es.git

Si ya tienes una copia local debes asegurarte de estar a la última versión y no tener cambios propios pendientes:

cd rla-es
git fetch
git checkout master
git pull

La herramienta básica es el script bash herramientas/make_dict.sh:

$ herramientas/make_dict.sh --ayuda

Sintaxis de la orden: herramientas/make_dict.sh [opciones]
Las opciones pueden ser las siguientes:

--listado-regiones
    Muestra todas las regiones de las variantes del español
    más importantes expresadas con su código CLDR.

--rae | -r
    Incluir únicamente las palabras pertenecientes al
    diccionario de la Real Academia Española.

--localizacion LOC | -l LOC
    Crea un diccionario para la localización LOC.
    El argumento LOC debe ser un código CLDR de localización
    implementado (es_AR, es_ES, es_MX, etc). Cada diccionario
    se produce dentro del directorio productos/ emapquetado en
    forma de extensión de LibreOffice (oxt) y de Mozilla (xpi).

--configurar | -c
    Asistente para configurar herramientas/make_dict.sh modificando
    el contenido del fichero .versiones.cfg

--changelog | -C
    Extrae de la actividad del repositorio git el resumen de cambios
    de la última edición para usarlos en Changelog.txt.

--publicar-version | -P)
    Asistente para la publicación de una versión oficial de RLA-ES.

--todas | -t
    Generar diccionarios para todas las localizaciones registradas.
    Igual que la anterior pero para todas las variantes LOC

--subir-a-LibreOffice | -L
    Actualiza el repositorio de diccionarios de LibreOffice con la
    última versión de los productos del proyecto.
    Debe usarse después de haber generado todos los diccionarios con
    la opcion --todas.

Con make_dict.sh se pueden generar todos los diccionarios del proyecto compatibles con hunspell y empaquetados para LibreOffice, productos Mozilla y aplicaciones compatibles con estos.

Configuración

make_dict.sh necesita de una pequeña configuración, en el fichero .versiones.cfg que tendrá un contenido parecido a:

# asignación de variables en lenguaje shell de Bash
#
# CORRECTOR, versión de la edición actual del corrector ortográfico
CORRECTOR="2.8"

# SEPARACION, versión de la edición actual del patrón de silabeo
SEPARACION="0.2"

# SINONIMOS, versión de la edición actual del patrón de silabeo
SINONIMOS="24/02/2013"

# LO_DICTIONARIES_GIT, ruta a la copia local de https://gerrit.libreoffice.org/admin/repos/dictionaries
LO_DICTIONARIES_GIT="/home/olea/git/libreoffice-dictionaries/dictionaries/"

Las variables CORRECTOR, SEPARACION, SINONIMOS son necesarias porque son productos con orígenes diferentes y acarrean su propia nomenclatura de versiones.

La variable LO_DICTIONARIES_GIT sólo es necesaria para mandar contribuciones al repositorio de diccionarios de LibreOffice. Si sólo quieres colaborar internamente con RLA-ES no necesitas configurarla.

Puedes crear el fichero .versiones.cfg con la orden herramientas/make_dict.sh --configurar.

Generación del diccionario

Nuestro corrector ortográfico está disponible para cada código CLDR del español. Para conocer los códigos:

$ herramientas/make_dict.sh --listado-regiones

Códigos CLDR de las variantes del español contempladas:
es es_AR es_BO es_CL es_CO es_CR es_CU es_DO es_EC es_ES es_GQ es_GT es_HN es_MX es_NI es_PA es_PE es_PH es_PR es_PY es_SV es_US es_UY es_VE

En función de las opciones elegidas la herramienta puede elegir una variante particular o todas. En cualquier caso siempre creará ambos empaquetados OXT (LibreOffice y compatibles) XPI (Mozilla y compatibles). La única diferencia importante entre ambos formatos es que el paquete OXT también incluye reglas de separación silábica y sinónimos. Los productos creados estarán disponible en la carpeta productos/.

Ejemplo de creación de un sólo diccionario

Creación del diccionario para México (es_MX):

$ herramientas/make_dict.sh --localizacion es_MX
La configuración actual del proyecto en el fichero .versiones.cfg:
Corrector: 2.8
Separación: 0.2
Sinónimos: 24/02/2013
Repositorio «dictionaries» de LibreOffice: /home/olea/git/libreoffice-dictionaries/dictionaries/
¿La configuración es correcta? (s/n): s
Creando un diccionario para la localización 'es_MX'...
Creando el fichero de afijos:
¡listo!
Creando la lista de lemas etiquetados... ¡listo!
Creando /home/olea/git/rla-es/productos/es_MX.oxt ¡listo!
Creando /home/olea/git/rla-es/productos/es_MX.xpi ¡listo!
Proceso finalizado.

Los dos ficheros están disponibles en la carpeta productos/.

Creación de todos los diccionarios

Sencillamente:

herramientas/make_dict.sh --todas

Y, de nuevo, todos los ficheros estarán disponibles en productos/.

Cómo probar un diccionario

Durante el desarrollo nos interesa comprobar que los diccionarios funcionan según lo esperado. Una aproximación puede ser instalar la extensión en LibreOffice y comprobar en un documento el comportamiento del corrector. Otra aproximación es hacerlo directamente en la línea de órdenes con la herramienta hunspell.

Primero hay que extraer el diccionario para que pueda ser manejado por hunspell:

unzip productos/es_MX.xpi *aff *dic -d tmp

Después preparamos un fichero de texto puro, con cualquier editor, que contenga las palabras o textos a usar en la prueba y que puede llamarse, por ejemplo, prueba.txt.

hunspell -d tmp/dictionaries/es-MX -l prueba.txt

Así invocado, hunspell sólo devolverá las palabras que no reconozca en el diccionario elegido. El procedimiento puede aplicarse a cualquier variante idiomática.

También podemos hacer consultas interactivas, en las que hunspell también mostrará información y sugerencias relacionados:

hunspell -d tmp/dictionaries/es-MX 

Ejemplo de sesión de publicación de nueva edición de los diccionarios

Más allá del caso de ser un colaborador interno del proyecto, así sería una sesión de publicación oficial de los diccionarios RLA-ES. Realmente sólo es de utilidad para el equipo de mantenimiento del proyecto.

# antes, actualizar el número de versión en .versiones.cfg

herramientas/make_dict.sh --changelog

# actualizar a mano Changelog.txt

herramientas/make_dict.sh --publicar-version
herramientas/make_dict.sh --todas

# en Github creamos la nueva versión

herramientas/make_dict.sh  --subir-a-LibreOffice

cd $RUTA_LIBREOFFICE/dictionaries/
git push origin hunspell-es-VERSION:refs/for/master