30/4/10

Lingüística computacional (II)






(El capítulo anterior de esta serie puede leerse aquí )


Para que el lenguaje pueda ser procesado por un ordenador de manera mecánica es necesario plasmar el funcionamiento de un idioma en un modelo formal que pueda ser manejado por una máquina. La lingüística computacional, por tanto, debe desarrollar modelos del lenguaje que permitan decidir cómo se forman las oraciones, cuáles están bien creadas, si su significado es correcto, etc. Y, además, estos modelos deben ser matemáticos, tratables por algoritmos de cálculo.

Hay dos grandes tipos de modelos del lenguaje:

a) Modelos algebraicos o axiomáticos en los que el idioma se representa por medio de símbolos que pueden ser combinados y analizados de acuerdo a la teoría de conjuntos y la lógica algebraica. Estos modelos contienen un conjunto de elementos sobre los que aplicar los cálculos (que, en primera instancia, podríamos identificar con las palabras del idioma), un conjunto de restricciones que establecen qué combinaciones de los elementos son admisibles (por ejemplo, que un sustantivo y un adjetivo deben concordar en género y número) y un conjunto de reglas que pueden aplicarse sobre los elementos y las restricciones (por ejemplo, que una frase posible es determinante+sustantivo+verbo+adjetivo) de modo que se generen oraciones válidas.

Un modelo de este tipo intenta plasmar la estructura lógica del lenguaje.

b) Modelos estadísticos en los que no se pretende una representación precisa del idioma sino que se analiza la frecuencia estadística de la aparición en el mismo de ciertas palabras, combinación de ellas, cada morfena, cada sintagma, cada categoría sintáctica, cada significado en caso de ambigüedades, etc. Si la base de datos sobre la que actúa un modelo de este tipo es suficientemente grande será muy probable que pueda encontrarse una oración o que pueda completarse otra a partir de ciertos componentes.

Las aplicaciones comerciales existentes, especialmente en el caso de los traductores computerizados, se basan más en modelos estadísticos mientras que los desarrollos del lenguaje en el ámbito de la inteligencia artificial y la búsqueda del ordenador hablante se basan en los algebraicos. Y en la creación automática de literatura es muy posible que esta aproximación sea también más posibilista.


Los modelos algebraicos

Vimos anteriormente que, simplificando, un modelo algebraico contiene tres partes fundamentales: el conjunto de símbolos, el conjunto de restricciones y el conjunto de reglas.

El conjunto de elementos es el diccionario sobre el que queremos actuar. Si se trata de una aplicación genérica, ese conjunto será el total de palabras de una idioma. Por el contrario, si se busca un programa especializado en un campo determinado (por ejemplo, un algoritmo que interactúe en el diagnóstico médico), ese corpus se reducirá a ese nicho específico, lo que simplificará el tratamiento.

Dentro del conjunto de elementos pueden existir subconjuntos complementarios. Por ejemplo, si además de comprender expresiones y crearlas en pantalla, la máquina debe escucharla y hablarla, entonces deberemos tener una base de datos fonética.

El conjunto de reglas incluirá todas aquellas formas admisibles en la construcción de frases. Así, en castellano, una regla que habría que introducir en el algoritmo sería:

SN -> (DET) + N

Ecuación que puede leerse como Un sintagma nominal se compone de un determinante opcional y un nombre.

Con esta regla se pueden formalizar enunciados como El caballo. El componente entre paréntesis significa que puede ser opcional. En el sintagma nominal anterior, sólo el sustantivo es obligatorio.

Pero también podemos fijar reglas como:

SN -> (DET)+ N+ (ADJ) para, por ejemplo, El caballo blanco

O bien:

SN -> (DET)+ (ADJ) +N+ (ADJ) para, por ejemplo, El bonito caballo blanco

En la fase de análisis, usualmente muy laboriosa, es preciso determinar todas las reglas posibles y las excepciones (que no son sino reglas adicionales).

El conjunto de restricciones debe incluir todas aquellas normas obligatorias que el lenguaje contiene. Por ejemplo, en español, debe existir concordancia de género y número por lo que la regla anterior:

SN -> (DET)+N+(ADJ) tendría una restricción, acumulada en el conjunto de restricciones, del tipo:





O, lo que es lo mismo, si el determinante tiene un valor “a” de número (que, evidentemente será masculino, femenino o neutro), el sustantivo y el adjetivo tendrán ese mismo valor. Y si el determinante tiene un valor “b” de género (que podrá tomar el estado singular o el estado plural), el sustantivo y el adjetivo tendrán ese mismo valor. A los términos a tener en cuenta dentro de las restricciones se les suele denominar rasgos

Con estos sencillos mimbres ya tendríamos una mini gramática

Si, ahora, le propusiéramos al ordenador que nos dijera si el sintagma nominal El hermoso cielo es correcto, nos contestaría que sí lo es. Porque encontraría todas las palabras en el conjunto de elementos almacenado en su memoria, hallaría que la restricción de género y número se cumple y calcularía que ese sintagma nominal encaja en la regla SN-> (DET)+N+(ADJ) almacenada en memoria, con lo que todas las condiciones se cumplirían.

Observemos ya tres problemas.

Primero, imaginemos un sintagma del tipo El bonito, ágil, hermoso caballo. Ese sintagma SN-> (DET)+(ADJ)+(ADJ)+(ADJ)+N no estaba en la base de reglas anterior pero la sentencia es correcta por lo que deberíamos añadir esta nueva regla.

Pero, un escritor imaginativo podría también escribir El bonito caballo, ágil, hermoso, excelso caballo. También es correcto pero esa regla con cuatro adjetivos no está contemplada. Deberíamos añadirla. Y así sucesivamente.

Somos rápidamente conscientes de que toda la libertad real de un idioma requeriría una explosión de reglas que llevaría rápidamente al bloqueo del sistema. Por eso, debemos incluir el concepto de recursividad, modificando las reglas para que puedan admitirla. Así, todos los casos anteriores se podrían resumir en una regla del tipo:

SN-> (DET) + &(ADJ)& + N + &(ADJ)&

Donde “&--&” indica que ese componente puede repetirse. Con esta única regla, podríamos categorizar todos estos sintagmas nominales:


El caballo blanco
El bonito caballo blanco
El ágil, bonito caballo negro
El bello, rápido caballo negro
La lejana, recóndita, aislada casa blanca
El guepardo, rápido, cruel, indómito.



La recursividad, entonces, permite la economía de reglas lo que implica una mayor rapidez de procesamiento y menor uso de memoria y potencia de cálculo. Hubo que esperar, no obstante, a que los programas informáticos permitieran dicha recursividad para poder implementar este concepto. Particularmente, PROLOG fue el hito que marcó el uso de la recursividad en informática.

El segundo problema es que, a pesar de recurrir a procesos recursivos, el volumen de reglas es tan enorme que dificulta terriblemente la creación de la base de datos que las contiene y su tratamiento informático. Excepto que se trate de un corpus muy restringido – pongamos por caso una gramática que sólo trate de comprender y expresar mensajes meteorológicos, por ejemplo- la aproximación por reglas pronto choca con límites prácticos.

Y el tercer problema que observamos con nuestra mini gramática es que ahora el ordenador es capaz de generar sintagmas nominales correctos pero no siempre con sentido. Por ejemplo, nos diría que El mar sólido es un sintagma correcto. Y lo es gramaticalmente. Pero evidentemente, no tiene sentido. Por tanto, deducimos que amén de todo lo anterior, un modelo del lenguaje debe tener contener también un submodelo semántico, que analice si el significado es correcto. Y esto es muy complicado porque incluso ese el mar sólido que, en la mayoría de los casos, es incomprensible podría tener un significado metafórico en un poema o un significado real en un relato de ciencia ficción sobre planteas lejanos con mares sólidos.


Los modelos estadísticos

Desarrollar un modelo axiomático es una tarea titánica y compleja porque, sobre todo, requiere análisis y lógica, atributos que no son propios de los ordenadores sino de las mentes humanas. Lo que una computadora hace con gran eficacia es calcular y ordenar. Para usar estas ventajas se han desarrollado los modelos estadísticos. En todos ellos, hay una base de datos de palabras y expresiones tipo. Cuanto mayor sea, más probabilidades de que los resultados sean buenos.
En un sistema de este tipo pueden existir:

- Base de datos de frases típicas, de moldes. Es el método que usábamos en el tutorial para crear poesía automática que vimos en esta entrada.
Introducir en memoria los patrones de las formas poéticas (serventesio, redondilla, soneto,…) entraría también dentro de este tipo de bases de datos. El ordenador se limitaría a rellenar los huecos de los moldes con palabras que cumplieran las restricciones.

- Almacenamiento de millones de frases, catalogándolas por frecuencia y proximidad. Usando este método, podríamos, por ejemplo, escribir al estilo de Benavente ya que el ordenador, en todo momento, recurriría a patrones usuales en ese escritor y variaría palabras para generar frases distintas pero, aún así, similares.

- Fuerza bruta, que se puede usar sobre todo en la traducción. Si es complicado traducir palabra a palabra por las ambigüedades, cambios de sentido, etc… usemos una base de datos billonaria de frases. Es muy probable que encontremos la que buscamos en ella. Y con la potencia de cálculo de las máquinas actuales, la tarea de búsqueda en un tiempo razonable es factible. Y lo será más en el futuro. En el caso ideal, si la base de datos contiene todas las frases posibles de un idioma y todas las de otro y existen relaciones biunívocas establecidas entre ambos conjuntos, la traducción será perfecta. En definitiva, este método se asemeja al que se va usando más y más en los juegos de ajedrez por ordenador en donde, amén de un algoritmo deductivo central, se almacenan millones de partidas, aperturas y finales que potencian el rendimiento.

- Retroingeniería lingüística, que se basa en deducir reglas de los millones de frases almacenadas en la base de datos. Si es complicado deducir lógicamente la gramática formal, podemos buscar frecuencias entre la miríada de datos. Si el ordenador encuentra, por ejemplo, que la regla SN->(DET)+N+(ADJ) aparece con una frecuencia del 95% deducirá que es una regla gramatical válida aún cuando el usuario no sepa nada de esa lengua. Un filólogo de Níger puede no saber español pero si su ordenador le muestra que esa regla tiene una frecuencia del 99% en español deducirá que es válida aún cuando no hable el idioma.



To be continued

(el capítulo siguiente de esta serie puede leerse en este enlace)






1 comentarios :

Jon dijo...

realmente interesante este tutorial aunque se me escapa cómo es posible programar todo esto en un ordenador.