Tipos de ficheiros do corrector Hunspell de galego

From Proxecto Trasno

Ir a «Guía de desenvolvemento do corrector Hunspell de galego».

No código fonte do corrector Hunspell de galego existen tres tipos de ficheiro distintos:

  • Ficheiros de regras («.aff»).
  • Ficheiros de vocabulario («.dic»).
  • Ficheiros de suxestións («.rep»).
Nota: Aqueles familiarizados con Hunspell decataranse de que no corrector para galego temos un tipo de ficheiro «de máis». Os ficheiros «.rep» conteñen as expresións «REP» que en Hunspell van no ficheiro «.aff».
Esta separación evítanos a necesidade de actualizar o número de regras de formación de suxestións (a primeira orde «REP») cada vez que engadimos e eliminamos suxestións. Isto facilita o traballo distribuído no código fonte do corrector, e ao mesmo tempo facilita a optimización dos ficheiros do corrector (fai doado evitar liñas repetidas).
Unha vez construído, o corrector é un corrector Hunspell puro, cun ficheiro «.aff» e outro «.dic» (ningún «.rep»).

Ficheiros de regras de formación de palabras[edit]

Os ficheiros «.aff» definen regras de formación de palabras mediante sufixos (principalmente) e prefixos. Para información sobre como funcionan ditas regras, é recomendable botarlle unha ollada a algún ficheiro «.aff» (por exemplo, «src/norma/regras.aff») e ir consultando a documentación oficial de Hunspell ao tempo que se estuda o ficheiro fonte.

O ficheiro «src/norma/regras.aff», concretamente, contén ao principio unha serie de opcións e parámetros xerais de Hunspell que non teñen que ver coa formación de palabras. Porén, son opcións que, en principio, non debería facer falta modificar.

No corrector Hunspell para galego, cada grupo de regras de sufixos (ou prefixos) leva asignado un código numérico. A continuación vai unha lista de intervalos de números reservados para os distintos módulos que fornecen regras de formación de palabras:

  • norma: 0 → 1000
  • unidades: 1001 → 1010
  • trasno: 1011 → 1020

Ficheiros de vocabulario[edit]

Os ficheiros «.dic» fornecen unha lista de núcleos de palabras, e asócianos a códigos de regras de formación de palabras (definidas en ficheiros «.aff»), e a información sobre a palabra. A sintaxe que se emprega é a seguinte:

<palabra>/<regra1>,<regra2>,<regra3> <información>

Por exemplo, no caso de «palabra/s», a entrada no ficheiro de vocabulario sería a seguinte:

palabra/10 po:substantivo feminino

Onde:

  • «palabra» é o núcleo da palabra. Nótese que o concepto de núcleo de Hunspell («palabra») non ten nada que ver co concepto lingüístico de lexema («palabr»).
  • «10» é unha regra de formación de palabra. Concretamente, esta regra está definida en «src/norma/regras.aff», e úsase para a formación do plural na meirande parte dos casos, aínda que existen máis regras para a formación do plural noutro tipo de palabras (11, 12, 13). Para saber que regra usar, léanse os comentarios sobre a definición de cada regra, nos ficheiros fonte das regras.
  • «po:substantivo feminino» indica que a categoría gramatical da palabra e mailas palabras derivadas é «substantivo feminino».

Para máis información sobre os ficheiros de vocabulario, consúltese a documentación oficial de Hunspell.

Ficheiros de suxestións[edit]

Os ficheiros «.rep» conteñen regras de formación de suxestións a partir de palabras incorrectas.

Cando Hunspell se atopa cunha palabra incorrecta, e o usuario solicita suxestións para corrixila, Hunspell aplícalle á palabra incorrecta unha serie de regras de substitución que resultan en novas palabras. Se esas novas palabras son correctas, fornécense como suxestións.

Por exemplo, unha regra de substitución pode ser:

y i

Cando Hunspell se atopase coa palabra incorrecta «mayo», probaría a substituír o «y» por un «i», e como a palabra «maio» é correcta, forneceríaa como suxestión para substituír «mayo». Pero se Hunspell atopase a palabra incorrecta «myself», como «miself» tampouco é correcta, a regra anterior non tería ningún efecto.

Á hora de escribir regras de substitución, cómpre ter claro os seguintes puntos:

  • As regras de substitución só poden ter dúas cadeas de caracteres, separadas por un espazo en branco. É dicir, «<cadea> <cadea>». Máis cadeas supoñen unha regra incorrecta.
  • A cadea orixinal (a parte incorrecta) só pode conter unha palabra, dado que Hunspell é un corrector ortográfico (palabra por palabra) e non é capaz de analizar palabras en grupos. Por exemplo, non é posible definir unha regra para suxerir «quid pro quo» como corrección para «cuid pro cúo». Aínda que sí poderían definirse unha regra para suxerir «quid» como corrección para «cuid», e «quo» como corrección para «cúo».
    Nota: Tamén hai que ter en conta que, para que o corrector considere correcta a expresión «quid pro quo», ten que considerar correctas as tres palabras por separado: «quid», «pro» e «quo».
  • Na cadea orixinal poden empregarse os símbolos ^ e $ para indicar o principio e o final dunha palabra respectivamente. Por exemplo, «^im in» suxeriría «intocable» para substituír «imtocable», pero non suxeriría «sin» para substituír «sim».
  • Na cadea de substitución (a suxestión) si que é posible indicar espazos, pero debe usarse o guión baixo para tal fin. Por exemplo, a regra pàra suxerir «vinte e cinco» como substitución para «vintecinco» sería «^vintecinco$ vinte_e_cinco».
  • Por suposto, Hunspell non pode saber se unha palabra é correcta ou non segundo o contexto. Por exemplo, se ben o uso de «abate» como substantivo é incorrecto, de nada serve fornecer unha regra de suxestión «abate → abade» xa que «abate» é unha forma correcta do verbo «abater», e Hunspell considerará sempre como correcta a palabra.

Conxugacións verbais[edit]

As regras de substitucións de verbos poden chegar ser bastante complicadas. Ás veces non abonda con fornecer o lexema do verbo incorrecto e mailo lexema do verbo correcto, senón que hai que considerar todas as posíbeis conxugacións que pode ter o verbo incorrecto, e comparalas coa forma correcta.

Para comparalas, é recomendable o uso dunha ferramenta de conxugación como a de Cilenis. Esta ferramenta permite obter a conxugación que correspondería ao verbo incorrecto se en realidade fose correcto, e por suposto a conxugación do verbo correcto. Poñendo cada conxugación nunha xanela do navegador web, unha en cada lado da pantalla, poden comprobarse as diferencias entre combinacións de tempo e persoa para as dúas conxugacións, e observar a diferenza real que hai entre elas.


Categoría:Corrector Hunspell de galego