Notación gramatical
La estructura básica de los patrones gramaticales es la siguiente:
Posición(Elemento=Valor)
La posición hace referencia a la distancia (en número de palabras) entre el token que se está analizando y el token sobre el que se expresa una condición.1 Este valor puede ser positivo, cuando el token que debe evaluarse es posterior al token analizado, o negativo, cuando el token por analizar es anterior al evaluado. Por ejemplo, el valor -1 corresponde al token inmediatamente anterior y el valor +1 corresponde al inmediatamente posterior. El ejemplo 1 aclara cómo va cambiando este parámetro conforme se analizan sucesivamente los token de una oración.
Palabra |
Ambos |
guardaban |
hacía |
rato |
un |
profundo |
silencio |
. |
Etiqueta |
pn0mp000 |
vmii3p0 |
vmii3s0 |
ncms000 |
di0ms0 |
aq0ms0 |
ncms000 |
Fp |
Lema |
ambos |
guardar |
hacer |
rato |
uno |
profundo |
silencio |
. |
Posición |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Ejemplo 1. Posición 1 en una oración de muestra. |
Al analizar el primer token de esta oración (ejemplo 2), la palabra Ambos, la posición 1 la ocupa la palabra guardaban; la posición 2, la palabra hacía; la posición 3, la palabra rato, etc. Dado que sólo se tienen en cuenta los elementos de la oración, no es posible utilizar valores negativos, ya que ningún token precede a Ambos. Por tanto, si alguna condición remite a un token con una posición negativa, la aplicación considera que no se cumple dicha condición.
Palabra |
Ambos |
guardaban |
hacía |
rato |
un |
profundo |
silencio |
. |
Etiqueta |
pn0mp000 |
vmii3p0 |
vmii3s0 |
ncms000 |
di0ms0 |
aq0ms0 |
ncms000 |
Fp |
Lema |
ambos |
guardar |
hacer |
rato |
uno |
profundo |
silencio |
. |
Posición |
-1 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
Ejemplo 2. Posición 2 en una oración de muestra. |
Al analizar el segundo token de esta oración –la palabra guardaban– la palabra hacía ocupa la posición 1; la palabra rato, la posición 2; la palabra un, la posición 3, etc. Ahora sí es posible utilizar un valor negativo para la posición -1, que corresponde a la palabra Ambos. Además de los valores estrictamente numéricos, para indicar la posición también se puede usar los siguientes códigos:
- x: todos los token de la oración.
- a: todos los token anteriores al token 0.
- p: todos los token posteriores al token 0.
El siguiente miembro de una condición de un patrón gramatical es el elemento, que hace referencia al dato exacto que se evalúa y puede tomar uno de los siguientes valores:
- P: el valor literal del token.
- L: el lema asignado al token.
- N: el número del token.
- G: el género del token.
- M: si el token empieza en mayúscula.
- E: la etiqueta que se ha asignado al token.
Cuando se evalúa la etiqueta asignada al token, tras el código E hay que añadir un número que especifique el carácter de la etiqueta que se desea evaluar. Por ejemplo, E1 corresponde al primer carácter de la etiqueta, que indica la categoría gramatical, y E2 corresponde al segundo carácter de la etiqueta que, por ejemplo, en las etiquetas correspondientes a nombres, indica si se es común o propio. Este miembro es uno de los que permiten ampliar fácilmente esta notación en el futuro, ya que puede definir nuevos códigos que especifiquen otras propiedades de los token.
El último miembro de la condición es el valor que debe ostentar el elemento evaluado para que la condición sea cierta. Para proporcionar mayor flexibilidad, se puede anteponer a este valor el carácter * (para representar el operador lógico NOT) y que indica que la condición se considera cierta cuando el elemento NO tiene el valor indicado. Otra posibilidad, más avanzada, es utilizar una referencia a una lista definida previamente, en lugar de un valor concreto. Por ejemplo, si definimos la lista colores={verde, rojo, azul} y especificamos que el valor que debe tomar el elemento es L:colores, la condición se considera cierta cuando el elemento evaluado es igual a verde, rojo o azul.
Estas condiciones pueden escribirse secuencialmente, sin necesidad de separador para formar un patrón gramatical. Por ejemplo, el patrón 0(E1=v) contiene una sola condición que especifica que el primer carácter de la etiqueta debe ser v, es decir, que el token evaluado debe ser un verbo. En la oración de muestra del ejemplo 2, la búsqueda de este patrón gramatical daría como resultado las palabras guardaban y hacía, ya que ambas están etiquetadas como verbos. El patrón 0(E1=n)-1(E1=a) es un patrón gramatical con dos condiciones, que especifican que estamos buscando los casos en los que la palabra analizada (0) es un nombre (n) y la palabra anterior (-1) es un adjetivo (a). En la oración de muestra, este patrón se daría en el caso de silencio, que viene precedido por el adjetivo profundo, pero no en el caso de rato, ya que la palabra que lo precede es un verbo.