Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revisar y clarificar los criterios de inclusión de términos en el diccionario #292

Open
RickieES opened this issue Aug 10, 2023 · 4 comments

Comments

@RickieES
Copy link
Collaborator

En la página del wiki Cómo colaborar con RLA ES y con el corrector ortográfico se indica que "No todas las palabras pueden incluirse en el corrector ortográfico, como es lógico" pero, a continuación, se dice que "En general, se añaden todas las palabras admitidas por el Diccionario de la Lengua Española de la RAE".

También se dice en la misma página que, para ciertos términos derivativos que no figuran como tal en el DLE de la RAE pero que están bien formadas a partir de lemas que sí se recogen en el DLE, "Aún no hemos determinado un valor umbral de frecuencia normalizada para decidir si se añade o no una palabra; recientemente, hemos descartado palabras con frecuencias normalizadas en el CORPES XXI de 0,20 apariciones por millón."

Tradicionalmente ha sido criterio del fundador de este proyecto, Santiago Bosio, no pretender que el corrector ortográfico deba contener absolutamente todos los términos, sino lo más usuales. Además del esfuerzo necesario para lograr tal meta, un argumento que se esgrimía es que un diccionario completo no sería manejable para los recursos disponibles en el sistema que hace uso del diccionario.

Ha pasado mucho tiempo desde que se plantearon los criterios de inclusión arriba expuestos y las limitaciones de recursos en los dispositivos pueden haber desaparecido... o quizá no, dependiendo de la potencia de los sistemas en los que pensemos. Si no nos limitamos solo a los PC, ahora puede haber móviles, tabletas y pequeños sistemas como Raspberry que ejecuten este software. Quizá la memoria en esos equipos sigue siendo más que suficiente, pero hay que considerar también la potencia de los procesadores, que suele estar más limitada por tratarse de equipos pensados para ejecutarse con baterías y que, aunque mejoran la potencia por vatio, tienen reducida la potencia bruta de proceso en relación a los PC.

En mi caso, no sé si las aplicaciones que ejecutan los móviles Android usan nuestro diccionario; si no lo hacen, los únicos dispositivos en los que yo uso nuestro diccionario son PC.

En cuanto al tamaño del diccionario, he descomprimido la variante "es" que publicamos en LibreOffice, he ejecutado unmunch en ella (que con el archivo .dic y el archivo .aff genera todos los lemas, incluyendo variantes de género y número, conjugaciones, enclíticos, diminutivos, aumentativos, etc.) y el resultado son estas cifras:

  • Tamaño del archivo: 15858332 bytes (algo menos de 16 MBytes).
  • Número de líneas: 1285205

Hay que suponer que los 16 MBytes ocuparán bastante más en memoria porque, por cada palabra, habrá una entrada en un array y se sumará al menos un byte de fin de línea. Pero tal cosa sería una lista plana que habría que recorrer linealmente, por lo que lo lógico es que haya algún árbol binario, lo que incrementará bastante el espacio en memoria ocupado por la estructura de datos. Con todo, supongo que no hablamos de más de unos 20-25 MBytes. Para calcular esto mejor deberíamos hacer pruebas de consumo de memoria. La forma de hacer esto se me ocurre que podría ser:

  • Desinstalar cualquier diccionario ortográfico instalado en la aplicación que queramos probar (LibreOffice, Firefox, Thunderbird, etc.).
  • Reiniciar el sistema.
  • Abrir la aplicación con un escenario o juego de datos fijo (para LO, un documento que contenga algunos términos mal escritos; para un navegador, una página en la que poder escribir texto y verificarlo), midiendo el consumo de memoria, anotando tanto la memoria usada en términos absolutos como en porcentaje del total disponible en el sistema.
  • A continuación, instalar el diccionario ortográfico, cerrar la aplicación, reiniciar el sistema y repetir el proceso.

Si hacemos algunas pruebas y publicamos aquí los resultados, tendremos seguramente las cifras suficientes para ir tomando decisiones.

¿Y cuáles serían las decisiones? Supongo que serían estas:

  • ¿Incluir todos los lemas admitidos por la RAE?
  • Si no, ¿qué criterio se usaría para incluir lemas admitidos por la RAE? Si nos basamos en la frecuencia normalizada (apariciones por millón) reportada por CORPES XXI, el criterio sería numérico y probablemente tendría que estar en un valor entre 0 y 1.
  • Lo mismo para lemas no admitidos por la RAE.
@RickieES
Copy link
Collaborator Author

He hecho la prueba que comentaba arriba con Firefox y con LibreOffice Writer. He seguido los pasos (con una pequeña diferencia: en Firefox he usado el diccionario es-ES y en LibreOffice la variante global es). El párrafo que sigue es el texto de prueba.

Este es el texto, repetido 10 veces en un mismo párrafo y con faltas de hortografia a proposito, que he husado para probar en las haplicaciones. El ovjetivo de la prueva es verificar que el corrector ortográfico funciona y que deba generar estructuras de datos en memoria para hacer su función.

Como pone el propio texto, lo he copiado 10 veces (insertando un espacio, no un salto de línea) entre cada pegado. En mi caso, el sistema ha sido Linux Mint 21.1 MATE Edition, con Intel Core i5-8250U, 15,1 GB de RAM, Firefox 116.0.2 64-bit y LibreOffice 7.3.7.2. El texto lo tenía en un documento de texto abierto con xed (el "Notepad" de MATE) más otro documento para apuntas las cifras tal cual las pego aquí:

Firefox sin corrector ortográfico: memoria 361340, 2,2% - cpu 0,2
LibreOffice sin corrector ortográfico: memoria 277628, 1,7% - cpu 2,7

Firefox con corrector ortográfico: memoria 382852, 2,4% - cpu 0,3
LibreOffice con corrector ortográfico: memoria 278420, 1,7% - cpu 3,3
286444, 1,8%

Las cifras en Firefox se acercan a lo que preveía yo (unos 20-25 MBytes). Las de LO parecen sorprendentemente menores, pero cuando haces clic con el botón secundario sobre alguno de los errores (en concreto, sobre todos los del primer bloque de texto pegado), el uso se hace un poco más real, pasando a 286444, 1,8%.

Estas son mis cifras. Estaría bien comparar con las de algunas personas más, pero si todas fueran en la misma línea, yo respondería así a las preguntas que hacía en la apertura del issue:

  • ¿Incluir todos los lemas admitidos por la RAE? --> Sí
  • Si no, ¿qué criterio se usaría para incluir lemas admitidos por la RAE? Si nos basamos en la frecuencia normalizada (apariciones por millón) reportada por CORPES XXI, el criterio sería numérico y probablemente tendría que estar en un valor entre 0 y 1. --> no aplicable
  • ¿Incluir todos los lemas NO admitidos por la RAE? --> No
  • Si no, ¿qué criterio se usaría para incluir lemas admitidos por la RAE? Si nos basamos en la frecuencia normalizada (apariciones por millón) reportada por CORPES XXI, el criterio sería numérico y probablemente tendría que estar en un valor entre 0 y 1. --> mantendría el valor de 0,2 por el momento

@Pompilos
Copy link
Contributor

Pompilos commented Aug 14, 2023

Rickie, gracias por hacer las comprobaciones. Llevo poco tiempo usando mi sistema (Elementary OS) y no sé cómo podría medir el consumo de recursos en mi caso, así que confío en tus métricas. Otra prueba que se podría hacer es comparar el tamaño del diccionario ES con el tamaño de otros muy usados como EN o FR. Si son mayores, y damos por hecho que no hay quejas sobre su rendimiento, será que el tamaño de ES se puede incrementar sin miedo.

Coincido con tus propuestas: 1) Incluir cualquier lema que figure en el DRAE, y 2) Incluir los lemas no incluidos en el DRAE cuya frecuencia según el CORPES XXI sea igual o superior a 0,2 por millón.

Un saludo.

@RickieES
Copy link
Collaborator Author

Bueno, a falta de más comentarios, voy a ir revisando y aprobando los PR que quedan para sacar la versión 2.8.

@jorgesumle
Copy link
Contributor

jorgesumle commented Sep 4, 2023

He probado yo también en Debian 12 con la versión 7.5.2.2 de LibreOffice Writer. He ejecutado lo siguiente para comprobar los cambios que ocurrían cada segundo:

while :
do
  memUsage=$(free -m | awk '/Spei/ {print $3}')
  echo "Uso de memoria : $memUsage MB"
  sleep 1
done

Efectivamente, apenas se nota en LibreOffice la diferencia. Cuando abres el programa y haces clic derecho en una palabra incorrecta hay un aumento en el uso de memoria cuando está activada la corrección automática.

Con corrector

Uso de memoria : 2748 MB
Uso de memoria : 2748 MB
Uso de memoria : 2739 MB
Uso de memoria : 2769 MB
Uso de memoria : 2767 MB
Uso de memoria : 2817 MB
Uso de memoria : 2799 MB
Uso de memoria : 2874 MB
Uso de memoria : 2892 MB
Uso de memoria : 2893 MB
Uso de memoria : 2894 MB
Uso de memoria : 2899 MB
Uso de memoria : 2919 MB
Uso de memoria : 2939 MB
Uso de memoria : 2921 MB
Uso de memoria : 2911 MB
Uso de memoria : 2918 MB
Uso de memoria : 2926 MB
Uso de memoria : 2929 MB
Uso de memoria : 2918 MB
Uso de memoria : 2919 MB
Uso de memoria : 2919 MB
Uso de memoria : 2920 MB
Uso de memoria : 2918 MB
Uso de memoria : 2920 MB

Creo que se me olvidó grabar el uso que se hacía de memoria antes de abrir el programa.

Sin corrector

Uso de memoria : 2671 MB
Uso de memoria : 2674 MB
Uso de memoria : 2677 MB
Uso de memoria : 2676 MB
Uso de memoria : 2730 MB
Uso de memoria : 2749 MB
Uso de memoria : 2755 MB
Uso de memoria : 2728 MB
Uso de memoria : 2821 MB
Uso de memoria : 2878 MB
Uso de memoria : 2878 MB
Uso de memoria : 2873 MB
Uso de memoria : 2881 MB
Uso de memoria : 2922 MB
Uso de memoria : 2920 MB
Uso de memoria : 2911 MB
Uso de memoria : 2913 MB
Uso de memoria : 2914 MB
Uso de memoria : 2915 MB

Yo también pienso que tenemos que incluir todas las palabras de la RAE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants