8. EL LENGUAJE DE REGLAS GRAMATICALES

Anuncio
Capítulo VIII: El Lenguaje de Reglas Gramaticales
8. EL LENGUAJE DE REGLAS GRAMATICALES
8.0 Introducción al lenguaje de reglas.
Un elemento de regla será aquello que se encuentre entre dos espacios en
blanco.
Una regla puede estar compuesta por un solo elemento o por varios
elementos uno detrás de otro con espacios en blanco intermedios ; siempre que
se encuentren en la misma línea y que no sobrepasemos los 256 caracteres todo
formará una sola regla gramatical.
Para nosotros una regla será cada una de las líneas válidas de los
ficheros de reglas. En los ficheros de reglas puede haber también líneas de
comentario y líneas en blanco.
8.1 Estudio de los distintos elementos del lenguaje de reglas.
✦
Palabra
Palabra es un grupo de caracteres alfanuméricos, con la condición de
que empiece por una letra. Una palabra, además de caracteres alfanuméricos
puede contener cualquier símbolo que nos se clasifique como signo de
70
Capítulo VIII: El Lenguaje de Reglas Gramaticales
puntuación excepto : guiones ‘-‘ , subrayados ‘_’ y apóstrofes ‘\’’ (en inglés
para indicar genitivo sajón) .
En el proceso de comparación de la palabra leída del texto con la palabra
de nuestra regla nos es indiferente si los caracteres están en mayúsculas o
minúsculas. No somos “case sensitive” .
Ejemplo de regla :
word
Vamos comparando todas las palabras del texto con ésta y cuando sean
iguales, se cumple la regla. Sin importarnos si es una está en mayúscula y la
otra en minúscula.
En cambio si delante de la palabra leída del texto hubiera algún signo de
puntuación, la regla no se cumpliría. En este caso, si quisiéramos verificar la
igualdad, sería necesario completar la regla con algún otro elemento del
lenguaje de reglas.
✦
@
Este símbolo cuando aparece delante de una palabra supone la negación
de la palabra, buscamos palabras del texto que no coincidan con la palabra de
la regla. Teniendo en cuenta que dos palabras no serán iguales cuando difieran
en algún carácter, no siendo suficiente para la desigualdad que uno de los
caracteres esté en mayúscula y el otro en minúscula.
71
Capítulo VIII: El Lenguaje de Reglas Gramaticales
También hemos de tener en cuenta que si la comparación se realiza con
una palabra del texto que lleve un signo de puntuación delante, aunque la
palabra de la regla sea idéntica a la leída, el resultado de la comparación será
negativo.
Ejemplo de regla :
@word
✦
?
Delante de una palabra el signo cierre de interrogación busca que la
palabra de la regla sea igual a la del texto pero en este caso sí distinguimos
entre mayúsculas y minúsculas, sí somos “case sensitive”. Por supuesto, se
sigue cumpliendo que un signo de puntuación delante de la palabra leída del
texto destruye la posible igualdad.
Ejemplo de regla :
?Word
72
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
¿
Ésta es la negación del elemento anterior, buscamos aquellos términos
del texto que sean diferentes a la palabra de la regla. Siendo diferentes desde el
momento en unos caracteres vayan en mayúscula y otros en minúscula. Y como
siempre, también en el caso de haber algún signo de puntuación delante de la
palabra extraída del texto.
Ejemplo de regla :
¿Word
✦
-
El guión delante de una palabra indica que estamos buscando una
terminación, que la palabra de la regla, en realidad, es una terminación y como
tal iremos haciendo las comparaciones con las palabras del texto.
No vamos a distinguir entre mayúsculas y minúsculas. Pero un signo de
puntuación delante de la palabra del texto desharía la posible identidad.
Ejemplo de regla :
-tion
73
Capítulo VIII: El Lenguaje de Reglas Gramaticales
El guión puede combinarse con otros elementos diferentes para formar
un único elemento de la regla como veremos más adelante.
✦
#
La almohadilla es la negación del elemento anterior. Buscamos aquellos
términos del texto cuya terminación no coincida con la especificada en la regla.
No es sensible a las mayúsculas y minúsculas, pero sí a la existencia de signos
de puntuación delante de la palabra del texto a comparar.
Ejemplo de regla :
# tion
La almohadilla paralelamente al caso del guión se puede combinar con
varios elementos diferentes para dar lugar a un único elemento de regla.
✦
+
Indica que lo que le sigue es una categoría sintáctica. Las categorías
sintácticas pueden ser de dos tipos : genéricas (en este caso lo que sigue al signo
‘+’ es una cadena alfabética) o concretas (en este caso lo que será un número de
categoría lo que seguirá al signo ‘+‘) . O sea, la palabra del texto es buscada en
el diccionario y se comprueba que pueda tener la categoría especificada en la
regla.
74
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Los números de categoría concreta son las siguientes :
10 nombre singular.
11 nombre plural.
12 nombre cuyo singular y plural coinciden.
13 abreviaturas, acrónimos y siglas.
14 genitivos sajones.
20 adjetivo en grado positivo.
21 adjetivo en grado comparativo.
22 adjetivo en grado superlativo.
30 pronombre.
40 adverbio.
50 verbo en infinitivo.
51 verbo en tercera persona del singular.
52 verbo en pasado.
53 verbo en participio.
54 verbo en gerundio.
60 interjección.
70 conjunción.
80 preposición.
90 artículo indeterminado.
91 artículo determinado.
75
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Las categorías genéricas serán :
nombre, engloba las categorías concretas:
10, 11, 12 , 13 y 14.
adjetivo, engloba las categorías concretas:
20, 21 y 22.
pronombre, que engloba la categoría concreta:
30.
adverbio, engloba la categoría concreta:
40.
verbo, engloba las categorías concretas:
50, 51 y 52.
interjeccion, que engloba la categoría concreta:
60.
conjuncion, engloba la categoría concreta:
70.
preposicion, engloba la categoría concreta:
80.
pronombre, que engloba la categoría concreta:
30.
articulo, que engloba las categorías concretas:
90 y 91.
76
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Las categorías genéricas se escribirán en los ficheros de reglas sin tildes,
en el caso de que las llevaran.
Ejemplos de reglas :
+nombre
+adjetivo
+52
+20
El signo ‘+’ puede combinarse con otros elementos diferentes para
formar un único elemento de la regla, como posteriormente veremos. Es un
elemento sensible a la presencia de algún signo de puntuación delante del
termino leído de la entrada.
✦
!
Este elemento es la negación del anterior. Exigimos que la palabra del
texto tenga una categoría diferente de la especificada. O mejor dicho, que no
pueda tener dicha categoría. Al igual que en el caso anterior puede ir seguido
de categorías genéricas y concretas. Las categorías genéricas y concretas son las
mismas que en el caso anterior.
77
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplos de reglas :
!nombre
!adjetivo
!52
!20
El signo ‘ !’ puede combinarse con otros elementos diferentes para
formar un único elemento de regla. Es un elemento sensible a la presencia de
signo de puntuación delante de la palabra sobre la cual aplicamos la regla.
✦
+categoría-genérica_categoria-concreta
Este es un elemento de regla formado a partir de los anteriores. Implica
que la palabra debe de tener la categoría genérica indicada, pero no la concreta.
Se deben de cumplir las dos condiciones a la vez sobre el mismo vocablo de
entrada.
Ejemplo de regla :
+nombre_11
La palabra tomada del flujo entrada tiene que cumplir ser
nombre y no ser la categoría concreta 11 , así, la palabra debe ser nombre
y no ser plural.
78
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Es sensible a la presencia de signos de puntuación delante del elemento
del texto a evaluar. Es un elemento de regla compuesto. Los elementos
compuestos se forman enlazando con el subrayado ‘_’ .
✦
&
Nos indica que hemos de encontrar un signo de puntuación, que sigue
a este símbolo, en el flujo de entrada .
El formato general sería :
✦
&signo
Siendo el caso del punto un caso especial. Pues no puede ir
solo, detrás ha de llevar un modificador : ‘+’ o ‘-‘ :
✦
&.+
Indica que el signo que buscamos es un terminador
de frase : un punto, un cierre de interrogación, o un cierre
de admiración : ‘.’, ‘ ?’ o ‘ !’.
✦
&.-
Aquí el signo buscado es exclusivamente el punto :
‘.’.
79
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplos de regla :
&.+
&.&,
&;
✦
$
Nos indica que hemos de encontrar un signo de puntuación, que ha de
ser diferente del que sigue al símbolo. Es la negación del ‘&’.
El formato general sería :
✦
$signo
Siendo el caso del punto un caso especial. Pues no puede ir
solo, detrás ha de llevar un modificador : ‘+’ o ‘-‘ :
✦
$.+
Indica que el signo que buscamos es cualquiera que
no sea un terminador de frase : un punto, un cierre de
interrogación, o un cierre de admiración : ‘.’, ‘ ?’ o ‘ !’.
80
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
$.-
Aquí el signo buscado ha de ser diferente al
punto : ‘.’.
Ejemplos de regla :
$.+
$.$,
✦
[lista]
Buscamos la palabra leída del texto en la lista contenida en el fichero.
Esta lista está formada por reglas, pudiendo estas reglas ser simples, las
formadas por un solo elemento ; o complejas, formadas por el encadenamiento
de varios elementos. Estos elementos pueden ser de cualquier tipo, de los
vistos hasta ahora o de los que vamos a ir estudiando más adelante. Una lista,
por supuesto, puede contener en sus reglas más listas, que a su vez pueden
contener a otras. El límite de anidamientos posibles, teóricamente, no existe.
Una vez que encontramos la palabra del texto en la lista, se detiene la
búsqueda. Habrá una regla por línea del fichero.
81
Capítulo VIII: El Lenguaje de Reglas Gramaticales
El nombre de la lista es el nombre del fichero que la contiene sin
extensión, el programa automáticamente le añadirá la extensión ‘.rgl’. Tenemos
que tener cuidado con esto, pues, al crear el fichero de la lista, es necesario
poner la extensión, aunque luego en las reglas los llamemos de forma
abreviada.
Dentro de una lista podemos tener reglas referentes a signos : ‘&’ y ‘$’.
Ejemplo de regla en la página siguiente:
[fichero1]
El contenido de fichero1 podría ser :
&, the
is -ed
+nombre_11 +51 [fichero2]
El resultado de aplicar esta regla sería positivo si la palabra del
texto que vamos a analizar, cumple alguna de las reglas contenidas en
el fichero1.
Evidentemente,
las
reglas
como :
+nombre_11
+51
[fichero2], implican un proceso de avance del puntero sobre el texto. Si
se cumpliera, habríamos avanzado al menos tres palabras de texto, en
función, claro está, del contenido de fichero2 y de posibles
anidamientos posteriores.
82
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
<lista>
Es la negación del elemento anterior.
Buscamos la palabra leída del texto en la lista contenida en el fichero.
Esta lista está formada por reglas, pudiendo estas reglas ser : simples (las
formadas por un solo elemento) o complejas (formadas por el encadenamiento
de varios elementos). Estos elementos pueden ser de cualquier tipo, de los
vistos hasta ahora o de los que vamos a ir estudiando más adelante. Una lista,
por supuesto, puede contener en sus reglas más listas, que a su vez pueden
contener a otras. El límite de anidamientos posibles, teóricamente, no existe. El
tipo de listas permitidas para los anidamientos son tanto las positivas como las
negativas. Habrá una regla por línea del fichero.
El nombre de la lista es el nombre del fichero que la contiene sin
extensión, el programa automáticamente le añadirá la extensión ‘.rgl’. Tenemos
que tener cuidado con esto, pues al crear el fichero de la lista es necesario poner
la extensión, aunque luego en las reglas los llamemos de forma abreviada.
Dentro de una lista podemos tener reglas referentes a signos : ‘&’ y ‘$’.
83
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo0 de regla :
<fichero1>
El contenido de fichero1 podría ser :
&, that
are -ing
+verbo_51 the [fichero2]
El resultado de aplicar esta regla sería positivo, si la palabra del
texto que vamos a analizar no cumple ninguna de las reglas contenidas
en el fichero1.Evidentemente, las reglas como : +verbo_51 the [fichero2],
implican un proceso de avance del puntero sobre el texto. Si se
cumpliera, habríamos avanzado al menos tres palabras de texto, en
función, claro está, del contenido de fichero2 y de posibles anidamientos
posteriores. Pero aquí a diferencia del tipo de lista anterior ‘[ ]’, si se
cumple alguna de las reglas contenidas en el fichero1, el resultado de la
regla ‘<>’ será negativo. Quedando el puntero del texto en el punto de
partida inicial, por lo que tendremos que retroceder todo lo que hayamos
avanzado en el interior del fichero1 y anidamientos posteriores. Si no se
cumplieran ninguna de las reglas del interior de fichero1, entonces el
resultado de aplicar ‘<>’ positivo. Avanzaríamos una palabra en el flujo
de entrada o no en función de que termino haya sido el comparado con
‘<>’. Si la comparación ha sido realizada con una palabra simplemente,
sin que vaya delante ningún signo de puntuación, avanzaríamos una
palabra en el flujo de entrada. En cambio, si la comparación ha sido
realizada con una palabra que lleva delante un
84
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Continuación del ejemplo0 :
signo de puntuación, aunque el resultado de aplicar la regla haya
sido positivo, no avanzamos en el flujo de entrada, dado que,
claramente, ninguna de las reglas anteriores podrían ser aplicadas a una
palabra que fuera precedida por un signo de puntuación.
Ejemplo1 de texto con regla aplicada :
Texto : “ cinema. The film”
Regla : +nombre <fichero1>
Contenido de fichero1 :
+verbo
+preposicion
En este caso, la regla se cumple sobre el texto pues después de la
palabra “cinema”, que sí que es un nombre, no aparece ninguna palabra
con la categoría nombre o con la categoría preposición. Después de la
palabra “cinema” lo que tenemos es un punto, por eso no avanzaremos
en el flujo de lectura y nos quedaremos en “. The “ para pasar aplicar la
siguiente regla.
85
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo2 de texto con regla aplicada :
Texto : “. The film”
Regla : <fichero2> +nombre
Contenido de fichero2 :
+adjetivo
-ing
Ahora, vemos que “. The “ cumplen el contenido de la lista
negativa, por lo tanto aunque haya un punto delante de la palabra “The
“, sería necesario avanzar en el texto y pasar a “film” para poder aplicar
sobre esta la siguiente parte de la regla : +nombre. Tal y como está la
regla escrita ahora el resultado sería negativo.
✦
*<lista>
Elemento que funciona de manera parecida al anterior con la diferencia
del modo de avance en el texto de entrada. Aquí, si la palabra objeto de la
comparación lleva un signo de puntuación delante, sí que avanzaremos. Es útil
cuando la lista negativa va al comienzo de una regla compuesta de varios
elementos.
86
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Retomando el ejemplo2 del elemento anterior, en el que vimos la
necesidad de esta modificación .
Texto : “. The film”
Regla : *<fichero2> +nombre
Contenido de fichero2 :
+adjetivo
-ing
Ahora, la regla sí que se cumpliría pues después de aplicar
‘*<fichero2>’ a “. The”, avanzaríamos en el flujo de entrada y
aplicaríamos ‘+nombre’ a la palabra “film”.
✦
-terminación_[lista]
Este elemento de regla es un elemento compuesto. Formado a partir del
símbolo de terminación ‘-‘, enlazado con una lista positiva a través del
subrayado ‘_’.
Su significado sería : que la palabra tenga la terminación
indicada y que, además, cumpla alguna de las condiciones contenidas en la
lista.
En este tipo de lista que forma parte de un elemento compuesto, no se
permiten reglas o condiciones que impliquen un avance en el flujo del texto de
87
Capítulo VIII: El Lenguaje de Reglas Gramaticales
entrada, pues
son condiciones que ha de cumplir la palabra que estamos
inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la
condición principal, que sería la terminación, sobre un mismo elemento del
texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación
pedida y cumple alguna de las condiciones de la lista ; una vez que se cumple
una condición de la lista, no seguimos inspeccionado el resto.
Por lo tanto, si se cumple la regla global, avanzamos una palabra en el
flujo de entrada.
Ejemplo de regla :
-ing_[fichero1]
El contenido de fichero1 :
+preposicion
[fichero2]
El contenido del fichero2 :
+verbo
+conjuncion
Estamos pidiendo que la palabra tenga la terminación ‘ing’ y que,
al mismo tiempo, pueda ser preposición o que cumpla alguna de las
reglas (condiciones) incluidas dentro de la lista : ‘[fichero2]’.
88
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
-terminación_<lista>
Este elemento de regla es un elemento compuesto, especular respecto al
anterior. Formado a partir del símbolo de terminación ‘-‘, enlazado con una
lista negativa a través del subrayado ‘_’. Su significado sería : que la palabra
tenga la terminación indicada y que, además, no cumpla ninguna de las
condiciones contenidas en la lista.
En este tipo de lista que forma parte de un elemento compuesto, no se
permiten reglas o condiciones que impliquen un avance en el flujo del texto de
entrada, pues
son condiciones que ha de cumplir la palabra que estamos
inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la
condición principal, que sería la terminación, sobre un mismo elemento del
texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación
pedida y no cumple ninguna de las condiciones de la lista.
Por lo tanto, si se cumple la regla global, avanzaremos una palabra en el
flujo de entrada.
Ejemplo de regla :
89
Capítulo VIII: El Lenguaje de Reglas Gramaticales
El contenido del fichero2 :
-ing_<fichero1>
going
El contenido
doing de fichero1 :
making
+preposicion
reading
[fichero2]
Estamos pidiendo que la palabra tenga la terminación ‘ing’ y que
al mismo tiempo no pueda ser preposición y que no esté en el fichero2.
✦
#terminación_[lista]
Este elemento de regla es un elemento compuesto. Formado a partir del
símbolo de negación de terminación ‘#‘, enlazado con una lista positiva a través
del subrayado ‘_’. Su significado sería : que la palabra no tenga la terminación
indicada y que además cumpla alguna de las condiciones contenidas en la lista.
En este tipo de lista que forma parte de un elemento compuesto, no se
permiten reglas o condiciones que impliquen un avance en el flujo del texto de
entrada, pues son condiciones que ha de cumplir la palabra que estamos
inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la
condición principal, que sería la terminación, sobre un mismo elemento del
texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación
pedida y cumple alguna de las condiciones de la lista, una vez que se cumple
una condición de la lista no seguimos inspeccionado el resto.
90
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Por lo tanto, si se cumple la regla global, avanzamos una palabra en el
flujo de entrada.
Ejemplo de regla :
# ing_[fichero1]
El contenido de fichero1 :
+preposicion
[fichero2]
El contenido del fichero2 :
+verbo
+conjuncion
+adverbio
besides
Estamos pidiendo que la palabra no tenga la terminación ‘ing’ y
que al mismo tiempo pueda ser preposición o que cumpla alguna de las
reglas (condiciones) incluidas dentro de la lista : ‘[fichero2]’.
✦
#terminación_<lista>
91
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Este elemento de regla es un elemento compuesto, especular respecto al
anterior. Formado a partir del símbolo de negación de terminación ‘#‘,
enlazado con una lista negativa a través del subrayado ‘_’.
Su significado
sería : que la palabra no tenga la terminación indicada y que además no cumpla
ninguna de las condiciones contenidas en la lista.
En este tipo de lista que forma parte de un elemento compuesto, no se
permiten reglas o condiciones que impliquen un avance en el flujo del texto de
entrada, pues son condiciones que ha de cumplir la palabra que estamos
inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la
condición principal, que sería la terminación, sobre un mismo elemento del
texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación
pedida y no cumple ninguna de las condiciones de la lista.
Por lo tanto, si se cumple la regla global, avanzaremos una palabra en el
flujo de entrada.
Ejemplo de regla :
#ing_<fichero1>
El contenido de fichero1 :
+preposicion
[fichero2]
92
Capítulo VIII: El Lenguaje de Reglas Gramaticales
El contenido del fichero2 :
+conjuncion
about
Estamos pidiendo que la palabra no tenga la terminación ‘-ing’ y
que al mismo tiempo no pueda ser preposición y que no esté en el
fichero2 (que no cumpla ninguna de las reglas contenidas en el
fichero2).
✦
[lista1]_[lista2]
Elemento compuesto por dos listas positivas enlazadas por un
subrayado ‘_’. Su significado es: que la palabra cumpla alguna regla de la
primera lista y luego, a su vez, alguna otra de la segunda.
Dentro de estas lista2 no se permiten reglas que impliquen avances de
lectura sobre el texto. En cambio, en la lista1 sí que se permiten avances, pero
aunque el resultado sea positivo siempre se retrocede la última palabra leída
para que sea a esta palabra a la que se pasen a aplicar las reglas de la lista2 . Si
se cumplen las reglas de las dos listas a la vez, entonces avanzaremos esta
última palabra.
93
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo de regla :
[fichero1]_[fichero2]
Contenido fichero1 :
the
[lista-terminaciones]
Contenido lista-terminaciones :
-ment
-ness
-tion
-ity
Contenido fichero2 :
+nombre
+adjetivo
La regla pide que haya un ‘the’ y que la palabra siguiente tenga
alguna de las terminaciones de la lista de terminaciones y además
pueda tener alguna de las categorías indicadas en el fichero2.
✦
[lista1]_<lista2>
94
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Elemento compuesto por dos listas una positiva y otra negativa
enlazadas por un subrayado ‘_’. Su significado es: que la palabra cumpla
alguna regla de la primera lista y luego, a su vez, no cumpla ninguna de las de
la segunda.
Dentro de estas lista2 no se permiten reglas que impliquen avances de
lectura sobre el texto. En cambio, en la lista1 sí que se permiten avances pero,
aunque el resultado sea positivo, siempre se retrocede la última palabra leída
para que sea a esta palabra a la que se pasen a aplicar las reglas de la lista2 . Si
se cumplen alguna de las reglas de la primera lista y ninguna de la segunda
lista, entonces avanzaremos esta última palabra.
Ejemplo de regla :
[fichero1]_<fichero2>
Contenido fichero1 :
the
[lista-terminaciones]
Contenido lista-terminaciones :
-ment
-ness
95
Capítulo VIII: El Lenguaje de Reglas Gramaticales
-tion
-ity
Contenido fichero2 :
+nombre
+adjetivo
La regla pide que haya un ‘the’ y que la palabra siguiente tenga alguna
de las terminaciones de la lista de terminaciones y no tenga ninguna de las
categorías indicadas en la lista segunda.
✦
<lista1>_[lista2]
Elemento compuesto por dos listas la primera negativa y la segunda
positiva enlazadas por un subrayado ‘_’. Su significado es: que la palabra no
cumpla ninguna de las reglas de la primera lista y luego a su vez si cumpla
alguna de la segunda.
Dentro de la lista2 no se permiten reglas que impliquen avances de lectura
sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.
96
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo de regla :
<fichero1>_[fichero2]
Contenido fichero1 :
-ment
-ness
-tion
-ity
Contenido fichero2 :
+nombre
+adjetivo
La regla pide que la palabra no tenga ninguna de las
terminaciones del fichero1 y además obliga a tener alguna de las
categorías indicadas en el fichero2.
✦
<lista1>_<lista2>
Elemento compuesto por dos listas negativas enlazadas por un
subrayado ‘_’. Su significado es: que la palabra no cumpla ninguna regla de la
primera lista y luego, a su vez, no cumpla ninguna de las de la segunda.
97
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Dentro de la lista2 no se permiten reglas que impliquen avances de
lectura sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.
Ejemplo de regla :
<fichero1>_<fichero2>
Contenido fichero1 :
+nombre
+adjetivo
Contenido fichero2 :
-ment
-ness
-tion
-ity
La regla pide que la palabra no tenga ninguna de las categorías
del fichero1 y que además no tenga ninguna de las terminaciones
indicadas en la lista segunda.
98
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
*<lista1>_[lista2]
Elemento compuesto por dos listas la primera es negativa y la segunda
es positiva, enlazadas por un subrayado ‘_’. Su significado es: que la palabra
no cumpla ninguna de las reglas de la primera lista y luego a su vez si cumpla
alguna de la segunda.
Funciona casi igual que su versión sin asterisco, sólo que aquí, sí
empezáramos a aplicar la regla en un signo seguido de palabra y, si la regla se
cumpliera (en función de lo que hubiera dentro de lista1), el signo desaparece
(saltamos el signo) y ya la siguiente regla se aplicaría desde la palabra que
había después del signo.
Dentro de la lista2 no se permiten reglas que impliquen avances de
lectura sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.
Ejemplo de regla :
*<fichero1>_[fichero2]
Contenido fichero1 :
-ment
-ness
-tion
-ity
Contenido fichero2 :
+nombre
+adjetivo
99
Capítulo VIII: El Lenguaje de Reglas Gramaticales
La regla pide que la palabra no tenga ninguna de las
terminaciones del fichero1 y además obliga a tener alguna de las
categorías indicadas en el fichero2. Si aplicáramos la regla sobre el
texto :
, the theatre
Claramente la secuencia de texto : ‘,the’ cumple la regla, pero al
aplicar esta regla la siguiente se empezaría a aplicar en el texto : ‘ the
theatre’ (como vemos el signo ha desaparecido).
✦
*<lista1>_<lista2>
Elemento compuesto por dos listas negativas enlazadas por un
subrayado ‘_’. Su significado es: que la palabra no cumpla ninguna regla de la
primera lista y luego a su vez no cumpla ninguna de las de la segunda.
Funciona casi igual que su versión sin asterisco, solo que aquí si
empezáramos a aplicar la regla en un signo seguido de palabra, si la regla se
cumpliera (en función de lo que hubiera dentro de lista1), el signo desaparece
(saltamos el signo) y ya la siguiente regla se aplicaría desde la palabra que
había después del signo.
Dentro de la lista2 no se permiten reglas que impliquen avances de
lectura sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.
100
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo de regla :
*<fichero1>_<fichero2>
Contenido fichero1 :
+nombre
+adjetivo
Contenido fichero2 :
-ment
-ness
-tion
-ity
La regla pide que la palabra no tenga ninguna de las categorías
del fichero1 y que además no tenga ninguna de las terminaciones
indicadas en la lista segunda. Si aplicáramos la regla sobre el texto :
, the theatre
Claramente la secuencia de texto : ‘,the’ cumple la regla pero al
aplicar esta regla la siguiente se empezaría a aplicar en el texto : ‘ the
theatre’, como vemos el signo ha desaparecido.
101
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
+categoría_[lista]
Elemento compuesto por una categoría, que puede ser tanto genérica
como concreta (numérica), unida mediante un subrayado ‘_’ con una lista
positiva ‘[ ]’.
El significado es: que la palabra a comparar tenga la categoría
especificada y además cumpla alguna de las reglas de la lista.
Como todas las listas de un elemento de regla compuesto, en este caso no
están permitidas las reglas que conlleven un avance de lectura en el texto.
Ejemplo de reglas :
+nombre_[fichero1]
+11_[fichero1]
Contenido fichero1 :
-ment
-ness
-tion
-ity
En este caso exigimos
que la palabra tenga las categorías
exigidas y que además cumpla alguna de las reglas contenidas en
fichero1. En fichero1 podríamos tener terminaciones por ejemplo.
102
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
+categoría_<lista>
Elemento compuesto por una categoría, que puede ser tanto genérica
como concreta (numérica), unida mediante un subrayado ‘_’ con una lista
negativa ‘<>’.
El significado es: que la palabra a comparar tenga la categoría
especificada y además no cumpla ninguna de las reglas de la lista.
Como todas las listas de un elemento de regla compuesto, en este caso no
están permitidas las reglas que conlleven un avance de lectura en el texto.
Ejemplo de reglas :
+nombre_<fichero1>
+11_<fichero1>
Contenido fichero1 :
-ment
-ness
-tion
En este caso exigimos
que la palabra tenga las categorías
exigidas y que además no cumpla ninguna de las reglas contenidas en
fichero1. En fichero1 podríamos tener terminaciones por ejemplo. 0 sea,
que la palabra tenga la categoría pero que no tenga ninguna de las
terminaciones especificadas en la lista.
103
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
!categoría_[lista]
Elemento compuesto por una negación de categoría, que puede ser tanto
genérica como concreta (numérica), unida mediante un subrayado ‘_’ con una
lista positiva ‘[]’.
El significado es: que la palabra a comparar no tenga la categoría
especificada y además cumpla alguna de las reglas de la lista.
Como todas las listas de un elemento de regla compuesto, en este caso no
están permitidas las reglas que conlleven un avance de lectura en el texto.
Ejemplo de reglas :
!nombre_[fichero1]
!11_[fichero1]
Contenido fichero1 :
-ment
-ness
-tion
-ity
En este caso exigimos que la palabra no tenga las categorías
exigidas y que además cumpla alguna de las reglas contenidas en
fichero1. En fichero1 podríamos tener terminaciones por ejemplo.
104
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
!categoría_<lista>
Elemento compuesto por una negación de categoría, que puede ser tanto
genérica como concreta (numérica), unida mediante un subrayado ‘_’ con una
lista negativa ‘<>’.
El significado es: que la palabra a comparar no tenga la categoría
especificada y además no cumpla ninguna de las reglas de la lista.
Como todas las listas de un elemento de regla compuesto, en este caso no
están permitidas las reglas que conlleven un avance de lectura en el texto.
Ejemplo de reglas :
!nombre_<fichero1>
!11_<fichero1>
Contenido fichero1 :
-ment
-ness
-tion
En este caso exigimos que la palabra no tenga las categorías
exigidas y que además no cumpla ninguna de las reglas contenidas en
fichero1. En fichero1 podríamos tener terminaciones por ejemplo. 0 sea,
que la palabra no tenga la categoría pero que no tenga ninguna de las
terminaciones especificadas en la lista.
105
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
:[lista1][lista2][lista3]
Elemento compuesto por los dos puntos ‘ :’ seguidos de tres lista
positivas todo ello sin espacios intermedios.
Su significado sería : Avanza en el texto de entrada hasta encontrar
alguno de los elementos o reglas de la lista1, que serían las condiciones de
parada del avance ; en este proceso de avance , a su vez, vamos comprobando
las condiciones o reglas de la lista2 y por cada ocurrencia se incrementará un
contador asociado a cada una de las condiciones. Al llegar a alguna condición
de parada de la lista1, comprobamos que el número de ocurrencias de las
condiciones de la lista2 se corresponden con las especificas en la lista3. En caso
afirmativo, el resultado de la regla sería positivo ; si no, aunque hayamos
encontrado alguna de las condiciones de parada, al no cumplirse los
requerimientos referentes a las condiciones de la lista2, el resultado sería
negativo.
Es un elemento o regla útil para distinguir diferentes tipos de oraciones,
pues podemos leer el texto de punto a punto, comprobado condiciones.
Vamos a analizar detenidamente las diferentes partes de este elemento :
[lista1]
Esta lista contiene la condición o condiciones que buscamos, son
las condiciones de parada. Se va avanzando en el texto hasta encontrar
una de ellas o, en su defecto, un terminador de frase : ‘.’, ‘ ?’ o ‘ !’. Así, no
podremos saltarnos los signos de puntuación que sean terminadores de
frase. No podremos aplicar ninguna regla que implique dos oraciones
diferentes. Si encontráramos un terminador de frase antes que las
106
Capítulo VIII: El Lenguaje de Reglas Gramaticales
condiciones de parada, detenemos el proceso de lectura y el resultado
del la regla sería negativo. Hay una condición por línea del fichero.
[lista2]
Esta lista contiene una serie de condiciones o reglas que se irán
comprobando durante el proceso de búsqueda de las condiciones de
parada. Existe un número máximo posible de condiciones a comprobar,
este número máximo es una constante definida en el programa, sujeta a
un posible cambio. En este momento la constante está fijada en 10. En
cualquier caso, no hay nada que impida aumentarla. Pero teniendo en
cuenta que las condiciones pueden ser a su vez listas : ‘[ ]’ o ‘< >’ ; no
tenemos muchas limitaciones para poder comprobar un gran numero de
elementos o condiciones. Por cada ocurrencia de cada una de estas
condiciones, se va incrementando un contador asociado. Al alcanzar
alguna de las condiciones de terminación se compararán estos
contadores con los modificadores de la lista3 y, si son compatibles, el
resultado sería positivo ; si no, sería negativo. Hay una condición por
línea del fichero. Todas las condiciones o reglas irán dadas en positivo,
será el modificador numérico quien se encargue de negarlas.
[lista3]
Esta lista contiene modificadores numéricos de las condiciones de
la lista2. Es una lista que va en paralelo con la lista2. Hay un
modificador numérico por cada condición de la lista2. Si el número de
modificadores fuese diferente al numero de condiciones (reglas) de la
lista2, se produciría un error sintáctico. Hay un modificador por línea
del fichero.
107
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Se ha implementado un sencillo lenguaje para estos modificadores
numéricos :
0
La condición de la lista2 correspondiente no puede ocurrir
ninguna vez. Así, las condiciones de la lista2 se dan siempre en positivo.
número
La condición de la lista2 correspondiente ha de ocurrir este
número concreto de veces.
#número
La condición de la lista2 correspondiente ha de ocurrir ‘al menos’
este número de veces.
?número
La condición de la lista2 correspondiente ha de ocurrir como
máximo este número de veces. Puede no ocurrir ninguna vez.
108
Capítulo VIII: El Lenguaje de Reglas Gramaticales
¿número
La condición de la lista2 correspondiente ha de ocurrir como
máximo este número de veces, pero al menos una vez. Aquí no
incluimos el cero.
Ejemplo de regla :
:[fichero1][fichero2][fichero3]
Contenido fichero1 :
&.+
Contenido fichero2 :
[conjunciones]
Contenido fichero3 :
0
Contenido conjunciones :
Todas las conjunciones coordinantes.
109
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Esta regla va leyendo buscado terminadores de frase, o sea, de
punto a punto, luego leemos por oraciones. En este proceso de lectura
vamos a ir comprobando todas las palabras que vayamos leyendo y
comprobando si están en el fichero2. Este fichero2 contiene las
condiciones a comprobar (en este caso sólo una condición, una lista
[conjunciones],otro fichero, que contiene las conjunciones coordinantes).
Al final, para que el resultado de la regla sea positivo, tenemos que
comprobar que el número de ocurrencias de la condición coincide con
las indicadas por el modificador. En este caso, el modificador es ‘0’,
luego estamos pidiendo que no haya ninguna conjunción de punto a
punto.
En esta regla nos encontramos con una situación curiosa : al dar la
posibilidad de ir avanzando de oración en oración, aunque el resultado sea
negativo, no debemos de retroceder en el flujo de lectura y empezar a aplicarla
de nuevo desde la palabra siguiente, pues si lo hiciéramos así, llegaría un
momento en el que la oración siempre cumpliría la regla aplicada.
Volviendo al ejemplo de regla anterior de las conjunciones coordinantes,
si aplicásemos la regla al texto :
“I wrote the paper and read the article.
Claramente, si vamos avanzando de palabra en palabra llegará un
momento en el que lleguemos al punto terminador de regla sin haber
encontrado una conjunción coordinante en medio, y así, con todas las frases.
Por lo tanto, esta regla será necesario que vaya sola en el fichero de
reglas. Ya que no permite la aplicación de otras reglas, que se apliquen a una
110
Capítulo VIII: El Lenguaje de Reglas Gramaticales
palabra, sobre el trozo de texto en el que ella ha avanzado. Si queremos
aplicarla junto a otras reglas que se apliquen a una palabra, o junto a otras
reglas del mismo tipo, tendríamos que poder retroceder en el flujo de lectura ;
esto se consigue mediante una modificación de la regla.
Otra peculiaridad de la regla es que no se permite el anidamiento dentro
de
una
regla
del
mismo
tipo.
No
permitimos
una instrucción
:[lista4][lista5][lista6] dentro de otra instrucción similar :[lista1][lista2][lista3].
✦
*[lista1][lista2][lista3]
Modificación de la regla anterior que en el caso de resultado negativo sí
que retrocedería en el flujo de entrada. El funcionamiento es idéntico excepto
en lo referente al retroceso en caso de resultado negativo de la regla.
Este retroceso nos permitirá juntar esta regla, en el mismo fichero, con
más reglas del mismo tipo ; por ejemplo, para buscar distintos modelos de un
mismo tipo de frase. También sería posible mezclar esta regla con otras reglas
de otro tipo, que implique una lectura palabra a palabra, pero esto no es
conveniente. No es conveniente porque todas las palabras leídas desde el
principio de la aplicación de
*[lista1][lista2][lista3] hasta que se encuentran
alguno de los terminadores de ‘[lista1]’, quedan fuera del ámbito de las reglas
más simples. Si queremos aplicar alguna regla más simple en este proceso de
lectura de oración en oración, esta regla de palabra en palabra debe ser
introducida dentro de ‘[lista2]’, como parte de elemento a contabilizar dentro
de la regla compleja ‘*[lista1][lista2][lista3]’. Si no lo hacemos así estamos
expuestos a tener unos resultados erróneos.
111
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo de fichero con reglas de este tipo :
*[lista1][lista2][lista3]
*[lista4][lista5][lista6]
*[lista7][lista8][lista9]
Así, cuando alguna de las reglas sea errónea se retrocede en el flujo de
entrada y volvemos a aplicar desde el mismo punto del texto las siguientes.
Pero la configuración anterior entraría en un bucle. Supongamos que no
se cumple ninguna de las reglas, en este caso, al aplicar la última retrocedemos
y volveríamos a aplicar la primera desde el mismo lugar del texto y así
indefinidamente.
Por lo tanto una configuración correcta del fichero sería :
*[lista1][lista2][lista3]
*[lista4][lista5][lista6]
[lista7][lista8][lista9]
Así, en el caso en que la última fuera errónea no se retrocedería en
el flujo. Y se podría empezar a aplicar la primera regla desde un punto
diferente del texto.
Aquí tampoco se permite el anidamiento dentro de una regla del mismo
tipo.
No
permitimos
una
*:[lista4][lista5][lista6]
dentro
de
otra *:[lista1][lista2][lista3] o de :[lista1][lista2][lista3].
112
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
.
El punto es en realidad, más que una regla un modificador de regla,
puede ir delante de otra regla alterando su funcionamiento. Su significado es :
avanza en el texto hasta encontrar la regla modificada, en caso de que sea una
regla positiva ; ó avanza hasta el siguiente signo de puntuación cumpliéndose
siempre una regla en el caso de que sea negativa (o avanza hasta el siguiente
signo de puntuación sin encontrar lo que indique la regla negativa) .
El supone una avance en el fichero de texto de entrada desde donde
empezamos a aplicarla hasta el siguiente signo de puntuación ,queda claro que
las reglas que empiecen por ‘.’ no van a saltarse los
signos de puntuación. Y
son indiferentes al signo de puntuación que sea. Tal y como hemos dicho hay
dos casos :
REGLA POSTIVA
Encuentra la regla especificada antes de llegar al siguiente signo
de puntuación. Avanzamos leyendo hasta encontrar la regla pedida,
siendo en este caso el resultado positivo y quedándonos en la última
palabra que cumple la regla ; en cambio , si encontrásemos antes un
signo de puntuación, el resultado sería negativo y retrocederíamos hasta
donde hemos empezado a leer.
REGLA NEGATIVA
Avanza en leyendo en el fichero hasta el siguiente signo de
puntuación sin encontrar lo especificado en la regla negativa o
expresado de otro modo : avanza hasta el siguiente signo de puntuación
113
Capítulo VIII: El Lenguaje de Reglas Gramaticales
cumpliendo todas las palabras la regla negativa, si llegamos a una
palabra que no cumpliera la regla negativa retrocederíamos hasta donde
hemos empezado a leer y el resultado sería negativo. Si hemos llegado al
punto, nos quedamos en él y el resultado sería positivo.
Ejemplo1 :
.+adjetivo +nombre
Esta regla avanza en texto de entrada buscando un adjetivo y si
lo encontrase antes de un signo de puntuación comprueba que la
palabra siguiente sea un nombre.
Ejemplo2 :
. !adjetivo
Aquí avanzamos hasta el siguiente signo de puntuación y para
que el resultado sea positivo no debemos encontrar ninguna palabra
que pudiera ser adjetivo antes de llegar a él.
Las combinaciones permitidas son :
.palabra
.-terminación
.@palabra
.-terminación-[lista]
114
Capítulo VIII: El Lenguaje de Reglas Gramaticales
.-terminacion-<lista>
.!nºcategoría_[lista]
.# terminación
.!nºcategoría-<lista>
.# terminación_[lista]
.[lista]
.# terminación_<lista>
.[lista1]_[lista2]
. ?palabra
.[lista1]_<lista2>
.¿palabra
.<lista>
.+categoría
.*<lista>
.+categoría_[lista]
.<lista1>_[lista2]
.+categoría_<lista>
.<lista1>_<lista2>
.+categoría_nºcategoría
.*<lista1>_[lista2]
.+nºcategoría
.*<lista1>_<lista2>
.+nºcategoría_[lista]
.&.+
.+nºcategoría-<lista>
.&.-
.!categoría
.&signo (distinto del punto)
.!categoría_[lista]
-$.+
.!categoría_<lista>
.$.-
.!nºcategoría
.$signo (distinto del punto)
Tan solo comentar el significado de :
.&signo
Avanza hasta el siguiente signo de puntuación y que éste sea
igual al especificado.
.$signo
Avanza hasta el siguiente signo de puntuación y que éste sea
diferente al especificado.
115
Capítulo VIII: El Lenguaje de Reglas Gramaticales
En cualquier caso, un elemento de regla que vaya precedido de un
punto, puede ir seguido de cualquier otro elemento de regla, inclusive otro
elemento precedido de punto.
✦
=
Este al igual que en el caso anterior de ‘.’, más que un nuevo elemento
de regla ‘=’ es un modificador de los ya existentes. Su significado es : no
importa que al aplicar la regla delante de la palabra que tenemos del texto haya
algún signo de puntuación. O sea, en este caso con un ‘=’ delante del elemento
de regla venimos a decir que nos es indiferente que haya o que no haya algún
signo de puntuación delante de la palabra sobre la que empezamos a aplicar la
regla.
Ejemplo :
=the
En este ejemplo buscamos la palabra ‘the’ sin importarnos que
delante pueda haber un punto, una coma o cualquier otro signo de
puntuación.
Las combinaciones permitidas son :
=palabra
=-terminación-[lista]
=@palabra
=-terminacion-<lista>
=-terminación
=#terminación
116
Capítulo VIII: El Lenguaje de Reglas Gramaticales
=# terminación_[lista]
=$signo (distinto
=# terminación_<lista>
del punto)
= ?palabra
= :[lista1][lista2][lista3]
=¿palabra
=*[lista1][lista2][lista3]
=+categoría
=.palabra
=+categoría_[lista]
=.@palabra
=+categoría_<lista>
=.-terminación
=+categoría_nºcategoría
=.-terminación-[lista]
=+nºcategoría
=.-terminacion-<lista>
=+nºcategoría_[lista]
=.#terminación
=+nºcategoría-<lista>
=.#terminación_[lista]
=!categoría
=.#terminación_<lista>
=!categoría_[lista]
=. ?palabra
=!categoría_<lista>
=.¿palabra
=!nºcategoría
=.+categoría
=!nºcategoría_[lista]
=.+categoría_[lista]
=!nºcategoría-<lista>
=.+categoría_<lista>
=[lista]
=.+categoría_nºcategoría
=[lista1]_[lista2]
=.+nºcategoría
=[lista1]_<lista2>
=.+nºcategoría_[lista]
=<lista>
=.+nºcategoría-<lista>
=*<lista>
=.!categoría
=<lista1>_[lista2]
=.!categoría_[lista]
=<lista1>_<lista2>
=.!categoría_<lista>
=*<lista1>_[lista2]
=.!nºcategoría
=*<lista1>_<lista2>
=.!nºcategoría_[lista]
=&.+
=.!nºcategoría-<lista>
=&.-
=.[lista]
=&signo (distinto
=.[lista1]_[lista2]
del punto)
=.[lista1]_<lista2>
=$.+
=.<lista>
=$.-
=.*<lista>
117
Capítulo VIII: El Lenguaje de Reglas Gramaticales
=.<lista1>_[lista2]
=.&signo (distinto
=.<lista1>_<lista2>
del punto)
=.*<lista1>_[lista2]
=.$.+
=.*<lista1>_<lista2>
=.$.-
=.&.+
=.$signo (distinto
=.&.-
del punto)
Si colocamos el ‘=’ delante de ‘.’, indica que da igual que haya un signo
delante de la palabra de comienzo de aplicación de la regla .elemento_regla :
nosotros vamos a avanzar hasta el siguiente.
✦
%
Éste al igual que en el caso anterior de ‘=’, más que un nuevo elemento
de regla ‘%’ es un modificador de los ya existentes. Su significado es : no
importa que al aplicar la regla delante de la palabra que tenemos del texto haya
algún signo de puntuación, siempre que este signo no sea un terminador de
frase : ‘.’,’ ?’, ‘!’.
O sea, en este caso con un ‘%’ delante del elemento de regla venimos a
decir que nos es indiferente que haya o que no haya algún signo de puntuación
delante de la palabra sobre la que empezamos a aplicar la regla, siempre que
ese signo no sea un terminador de frase.
118
Capítulo VIII: El Lenguaje de Reglas Gramaticales
Ejemplo :
%the
En este ejemplo buscamos la palabra ‘the’ sin importarnos que
delante pueda haber cualquier
signo de puntuación que no sea
terminador de frase.
Las combinaciones permitidas son:
%palabra
%+nºcategoría_[lista]
%@palabra
%+nºcategoría-<lista>
%-terminación
%!categoría
%-terminación-[lista]
%!categoría_[lista]
%-terminacion-<lista>
%!categoría_<lista>
%# terminación
%!nºcategoría
%# terminación_[lista]
%!nºcategoría_[lista]
%# terminación_<lista>
%!nºcategoría-<lista>
% ?palabra
%[lista]
%¿palabra
%[lista1]_[lista2]
%+categoría
%[lista1]_<lista2>
%+categoría_[lista]
%<lista>
%+categoría_<lista>
%*<lista>
%+categoría_nºcategoría
%<lista1>_[lista2]
%+nºcategoría
%<lista1>_<lista2>
119
Capítulo VIII: El Lenguaje de Reglas Gramaticales
%*<lista1>_[lista2]
%.+nºcategoría
%*<lista1>_<lista2>
%.+nºcategoría_[lista]
%&.+
%.+nºcategoría-<lista>
%&.-
%.!categoría
%&signo (distinto
%.!categoría_[lista]
del punto)
%.!categoría_<lista>
%$.+
%.!nºcategoría
%$.-
%.!nºcategoría_[lista]
%$signo (distinto
%.!nºcategoría-<lista>
del punto)
%.[lista]
% :[lista1][lista2][lista3]
%.[lista1]_[lista2]
%*[lista1][lista2][lista3]
%.[lista1]_<lista2>
%.palabra
%.<lista>
%.@palabra
%.*<lista>
%.-terminación
%.<lista1>_[lista2]
%.-terminación-[lista]
%.<lista1>_<lista2>
%.-terminacion-<lista>
%.*<lista1>_[lista2]
%.# terminación
%.*<lista1>_<lista2>
%.# terminación_[lista]
%.&.+
%.# terminación_<lista>
%.&.-
%. ?palabra
%.&signo (distinto
%.¿palabra
del punto)
%.+categoría
%.$.+
%.+categoría_[lista]
%.$.-
%.+categoría_<lista>
%.$signo (distinto
%.+categoría_nºcategoría
del punto)
Si colocamos el ‘%’ delante de ‘.’ indica que da igual que haya un signo,
distinto del terminador de frase delante de la palabra de comienzo de
aplicación de la regla ‘.’elemento_regla : nosotros vamos a avanzar hasta el
siguiente.
120
Capítulo VIII: El Lenguaje de Reglas Gramaticales
✦
|
Es un modificador de elementos de regla. Indica que la regla que viene
después se comprobará en el texto y, tanto si es cierta como si no, retrocedemos
en el flujo de lectura y la siguiente regla comienza en el mismo punto en el que
hemos comenzado a aplicar este elemento con modificador ‘|’elemento_regla.
Dicho de otro modo sería : “mira que lo que haya delante se corresponda con la
regla, pero solo quiero que mires no que se avance en la lectura del fichero”.
Ejemplo :
[determinantes] +adjetivo +adjetivo +adjetivo |+nombre
En este ejemplo buscamos que la primera palabra este en una
lista de determinantes, que luego haya tres adjetivos en cadena y
miramos que después del último haya un nombre. Si el resultado de la
regla fuera positivo, la siguiente regla se empezaría a aplicar desde el
nombre mirado. Así después de esta regla podríamos tener otra que
fuera : ’ +nombre +verbo’ por ejemplo.
Las combinaciones permitidas serian :
|palabra
|-terminación
|@palabra
|-terminación-[lista]
121
Capítulo VIII: El Lenguaje de Reglas Gramaticales
|-terminacion-<lista>
|$.+
|# terminación
|$.-
|# terminación_[lista]
|$signo (distinto
|# terminación_<lista>
del punto)
| ?palabra
| :[lista1][lista2][lista3]
|¿palabra
|*[lista1][lista2][lista3]
|+categoría
|.palabra
|+categoría_[lista]
|.@palabra
|+categoría_<lista>
|.-terminación
|+categoría_nºcategoría
|.-terminación-[lista]
|+nºcategoría
|.-terminacion-<lista>
|+nºcategoría_[lista]
|.#terminación
|+nºcategoría-<lista>
|.#terminación_[lista]
|!categoría
|.#terminación_<lista>
|!categoría_[lista]
|. ?palabra
|!categoría_<lista>
|.¿palabra
|!nºcategoría
|.+categoría
|!nºcategoría_[lista]
|.+categoría_[lista]
|!nºcategoría-<lista>
|.+categoría_<lista>
|[lista]
|.+categoría_nºcategoría
|[lista1]_[lista2]
|.+nºcategoría
|[lista1]_<lista2>
|.+nºcategoría_[lista]
|<lista>
|.+nºcategoría-<lista>
|*<lista>
|.!categoría
|<lista1>_[lista2]
|.!categoría_[lista]
|<lista1>_<lista2>
|.!categoría_<lista>
|*<lista1>_[lista2]
|.!nºcategoría
|*<lista1>_<lista2>
|.!nºcategoría_[lista]
|&.+
|.!nºcategoría-<lista>
|&.-
|.[lista]
|&signo (distinto
|.[lista1]_[lista2]
del punto)
|.[lista1]_<lista2>
122
Capítulo VIII: El Lenguaje de Reglas Gramaticales
|.<lista>
|=!categoría_[lista]
|.*<lista>
|=!categoría_<lista>
|.<lista1>_[lista2]
|=!nºcategoría
|.<lista1>_<lista2>
|=!nºcategoría_[lista]
|.*<lista1>_[lista2]
|=!nºcategoría-<lista>
|.*<lista1>_<lista2>
|=[lista]
|.&.+
|=[lista1]_[lista2]
|.&.-
|=[lista1]_<lista2>
|.&signo (distinto
|=<lista>
del punto)
|=*<lista>
|.$.+
|=<lista1>_[lista2]
|.$.-
|=<lista1>_<lista2>
|.$signo (distinto
|=*<lista1>_[lista2]
del punto)
|=*<lista1>_<lista2>
|=palabra
|=&.+
|=@palabra
|=&.-
|=-terminación
|=&signo (distinto
|=-terminación-[lista]
del punto)
|=-terminacion-<lista>
|=$.+
|=# terminación
|=$.-
|=# terminación_[lista]
|=$signo (distinto
|=# terminación_<lista>
del punto)
|= ?palabra
|= :[lista1][lista2][lista3]
|=¿palabra
|=*[lista1][lista2][lista3]
|=+categoría
|=.palabra
|=+categoría_[lista]
|=.@palabra
|=+categoría_<lista>
|=.-terminación
|=+categoría_nºcategoría
|=.-terminación-[lista]
|=+nºcategoría
|=.-terminacion-<lista>
|=+nºcategoría_[lista]
|=.#terminación
|=+nºcategoría-<lista>
|=.#terminación_[lista]
|=!categoría
|=.#terminación_<lista>
123
Capítulo VIII: El Lenguaje de Reglas Gramaticales
|=. ?palabra
|%palabra
|=.¿palabra
|%@palabra
|=.+categoría
|%-terminación
|=.+categoría_[lista]
|%-terminación-[lista]
|=.+categoría_<lista>
|%-terminacion-<lista>
|=.+categoría_nºcategoría
|%#terminación
|=.+nºcategoría
|%#terminación_[lista]
|=.+nºcategoría_[lista]
|%#terminación_<lista>
|=.+nºcategoría-<lista>
|% ?palabra
|=.!categoría
|%¿palabra
|=.!categoría_[lista]
|%+categoría
|=.!categoría_<lista>
|%+categoría_[lista]
|=.!nºcategoría
|%+categoría_<lista>
|=.!nºcategoría_[lista]
|%+categoría_nºcategoría
|=.!nºcategoría-<lista>
|%+nºcategoría
|=.[lista]
|%+nºcategoría_[lista]
|=.[lista1]_[lista2]
|%+nºcategoría-<lista>
|=.[lista1]_<lista2>
|%!categoría
|=.<lista>
|%!categoría_[lista]
|=.*<lista>
|%!categoría_<lista>
|=.<lista1>_[lista2]
|%!nºcategoría
|=.<lista1>_<lista2>
|%!nºcategoría_[lista]
|=.*<lista1>_[lista2]
|%!nºcategoría-<lista>
|=.*<lista1>_<lista2>
|%[lista]
|=.&.+
|%[lista1]_[lista2]
|=.&.-
|%[lista1]_<lista2>
|=.&signo (distinto
|%<lista>
del punto)
|%*<lista>
|=.$.+
|%<lista1>_[lista2]
|=.$.-
|%<lista1>_<lista2>
|=.$signo (distinto
|%*<lista1>_[lista2]
del punto
|%*<lista1>_<lista2>
124
Capítulo VIII: El Lenguaje de Reglas Gramaticales
|%&.+
|%.+nºcategoría_[lista]
|%&.-
|%.+nºcategoría-<lista>
|%&signo (distinto
|%.!categoría
del punto)
|%.!categoría_[lista]
|%$.+
|%.!categoría_<lista>
|%$.-
|%.!nºcategoría
|%$signo (distinto
|%.!nºcategoría_[lista]
del punto)
|%.!nºcategoría-<lista>
|% :[lista1][lista2][lista3]
|%.[lista]
|%*[lista1][lista2][lista3]
|%.[lista1]_[lista2]
|%.palabra
|%.[lista1]_<lista2>
|%.@palabra
|%.<lista>
|%.-terminación
|%.*<lista>
|%.-terminación-[lista]
|%.<lista1>_[lista2]
|%.-terminacion-<lista>
|%.<lista1>_<lista2>
|%.# terminación
|%.*<lista1>_[lista2]
|%.# terminación_[lista]
|%.*<lista1>_<lista2>
|%.# terminación_<lista>
|%.&.+
|%. ?palabra
|%.&.-
|%.¿palabra
|%.&signo (distinto
|%.+categoría
del punto)
|%.+categoría_[lista]
|%.$.+
|%.+categoría_<lista>
|%.$.-
|%.+categoría_nºcategoría
|%.$signo (distinto
|%.+nºcategoría
del punto)
8.1.1 Comentarios sobre las reglas contenidas por las listas
que van precedidas de subrayado : ‘_[lista]’ y ‘_<lista>’
Como ya dijimos, en la explicación de las diferentes reglas, los
ficheros de listas precedidas de subrayado solo pueden contener reglas
125
Capítulo VIII: El Lenguaje de Reglas Gramaticales
que no impliquen avance de lectura en el texto, pues su función es
comprobar algo sobre una palabra que ya ha cumplido la primera parte
de la regla. Así, a parte de reglas que impliquen avances de lectura,
tampoco tienen sentido reglas relacionadas con signos de puntuación.
Y, en cualquier caso, las posibles listas que puedan contener en sus
sucesivos anidamientos tendrán que tener las mismas restricciones.
Las combinaciones permitidas van a ser :
palabra
+nºcategoría_[lista]
@palabra
+nºcategoría-<lista>
-terminación
!categoría
-terminación-[lista]
!categoría_[lista]
-terminacion-<lista>
!categoría_<lista>
# terminación
!nºcategoría
# terminación_[lista]
!nºcategoría_[lista]
# terminación_<lista>
!nºcategoría-<lista>
?palabra
[lista]
¿palabra
[lista1]_[lista2]
+categoría
[lista1]_<lista2>
+categoría_[lista]
<lista>
+categoría_<lista>
<lista1>_[lista2]
+categoría_nºcategoría
<lista1>_<lista2>
+nºcategoría
En el supuesto de que dentro de estas listas tuviéramos una regla como :
‘the +nombre +verbo’,
donde,
por sí solos, los elementos de la regla no
implican avance, pero juntos suponen un avance de tres palabras, sólo
procesaríamos el primer elemento de la regla. Por lo tanto, hay que tener
cuidado con lo que se escribe dentro de estas listas.
126
Capítulo VIII: El Lenguaje de Reglas Gramaticales
8.2 Comentarios sobre el análisis de una palabra precedida
de signo de puntuación .
Al intentar aplicar cualquier regla a una palabra precedida de signo de
puntuación, en principio, el resultado será negativo. Excepto en aquellas reglas
que procesan signo.
Las combinaciones que procesan signo son :
[lista]
.[lista1]_<lista2>
[lista1]_[lista2]
.<lista>
[lista1]_<lista2>
.*<lista>
<lista>
.<lista1>_[lista2]
*<lista>
.<lista1>_<lista2>
<lista1>_[lista2]
.*<lista1>_[lista2]
<lista1>_<lista2>
.*<lista1>_<lista2>
*<lista1>_[lista2]
.&.+
*<lista1>_<lista2>
.&.-
&.+
.&signo(distintodel punto)
&.-
.$.+
&signo (distinto del punto)
.$.-
$.+
.$signo (distinto del punto)
$.$signo (distinto del punto)
=REGLA
:[lista1][lista2][lista3]
*:[lista1][lista2][lista3]
%REGLA
.[lista]
| REGLA QUE PROCESE
.[lista1]_[lista2]
SIGNOS
127
Capítulo VIII: El Lenguaje de Reglas Gramaticales
8.3
Resumen
de
las
posibles
combinaciones
de
los
modificadores de reglas : ‘.’, ’=’, ’%’, ’ *’ y ‘|’.
✦
.
Este símbolo puede llevar detrás cualquier cosa excepto :
‘=’,
’%’,
’|’,
’*’,
’ :’,
y a si mismo ‘.’.
✦
=
Este símbolo puede llevar detrás cualquier cosa excepto :
’%’,
’|’,
y a si mismo ‘=’.
✦
%
Este símbolo puede llevar detrás cualquier cosa excepto :
’=’,
’|’,
128
Capítulo VIII: El Lenguaje de Reglas Gramaticales
y a si mismo ‘%’.
✦
|
Este símbolo puede llevar detrás cualquier cosa excepto :
a si mismo ‘ |’.
✦
*
Este símbolo solo puede llevar detrás :
’<’,
’:’
✦
Cualquier símbolo.
En cualquier caso, ningún símbolo podrá llevar detrás a sí
mismo.
8.4 Conclusiones.
Como vemos los ficheros de reglas son totalmente flexibles y
configurables por el usuario, siendo fácil cambiarlos. Queda abierto todo un
campo de investigación en la mejora de las reglas gramaticales.
129
Capítulo VIII: El Lenguaje de Reglas Gramaticales
8.5 Ejemplo de fichero de reglas.
"VOZ PASIVA"
=@there [vbe] -ed |<v5-0>
=@there [vbe] +53 |<v5-0>
=@there [vbe] +52 |<v5-0>
=@there [vbe] [adverbio] -ed |<v5-0>
=@there [vbe] [adverbio] +53 |<v5-0>
=@there [vbe] [adverbio] +52 |<v5-0>
and -ed |<v5-0>
and +53 |<v5-0>
"vbe= verbo to be en todos sus tiempos, en activa y pasiva, en afirmativa"
"y negativa"
"v5-0 = elementos que no pueden ir detrás de un participio en pasiva"
"porque presentan ambigüedad: +nombre +verbo y [adj-cad] +nombre +verbo"
"adverbio = +adverbio y -ly"
130
Descargar