Dibujo Sintáctico en Análisis Linguístico
Dibujo Sintáctico en Análisis Linguístico
Análisis sintáctico
Índice
Esquema 3
Ideas clave 4
4.1. Introducción y objetivos 4
4.2. Sintaxis 5
4.3. Gramáticas de estructura sintagmática 8
4.4. Ambigüedad en el análisis sintáctico 9
4.5. Métodos para el análisis sintáctico, basados en la
programación dinámica 11
© Universidad Internacional de La Rioja (UNIR)
A fondo 33
Test 36
Esquema
© Universidad Internacional de La Rioja (UNIR)
Objetivos
«Del lat. tardío syntaxis, y este del gr. σύνταξις sýntaxis, de συντάσσειν
syntássein “disponer conjuntamente”, “ordenar”. 1. f. Gram. Parte de la
gramática que estudia el modo en que se combinan las palabras y los grupos
que estas forman para expresar significados, así como las relaciones que se
establecen entre todas esas unidades».
El análisis sintáctico
Árbol sintáctico
Es el resultado del análisis sintáctico. Sus nodos son los constituyentes sintácticos y
las hojas, las palabras que componen la oración analizada. La estructura jerárquica
del árbol permite observar que un constituyente está formado por una o varias
palabras y por otros constituyentes.
Información sintáctica
Para indicar que en español un elemento que sea un sintagma nominal, por
ejemplo, está compuesto por dos elementos, un determinante y un nombre
(colocados en este orden específico) se puede utilizar la siguiente regla:
𝑆𝑆𝑆𝑆 → 𝐷𝐷𝐷𝐷𝐷𝐷 𝑁𝑁
Donde:
lenguaje natural.
Por lo que en las gramáticas de dependencias se modelan los elementos léxicos y las
relaciones existentes entre estos elementos, tal como se muestra en el último
apartado.
Las páginas señaladas corresponden al apartado «1.2. Las gramáticas formales» del
capítulo indicado para el estudio de esta sección».
© Universidad Internacional de La Rioja (UNIR)
Al final, el analizador sintáctico que obtiene esos dos resultados debe optar por
resolver la ambigüedad eligiendo uno de los árboles sintácticos como salida del
proceso de análisis.
Por lo tanto, esos analizadores deben ser capaces de elegir un único resultado
correcto del análisis de entre la multitud de resultados posibles.
Sin embargo, esto no representa un problema ya que una gramática libre de contexto
se puede transformar en una gramática CNF sin perder expresividad.
El primer paso del algoritmo CKY es convertir la gramática libre de contexto en una
gramática CNF. Para ello, todas aquellas reglas que cumplen por defecto con las
condiciones de una CNF (esto es, que a la derecha tengan dos símbolos no terminales
o un símbolo terminal) son directamente copiadas a la nueva gramática. El resto de
las reglas que no cumplen con las condiciones de una gramática CNF son
transformadas como se describe a continuación.
Aquellas reglas que mezclan símbolos terminales y no terminales son alteradas con
la introducción de un no símbolo terminal comodín que involucra únicamente el
símbolo terminal original. Por ejemplo, una regla para un verbo en infinitivo en inglés
© Universidad Internacional de La Rioja (UNIR)
como INF-VP → to VP sería sustituida por las dos reglas INF-VP → TO VP y TO → to.
Ahora sí, estas nuevas reglas cumplen las condiciones de una gramática CNF.
Las reglas con más de dos términos en el lado derecho se normalizan a través de la
introducción de nuevos símbolos no terminales que extienden las secuencias más
largas en varias reglas nuevas. Formalmente:
A→BCγ
Entonces, si tenemos una regla como la anterior, podemos reemplazar el par más a
la izquierda de los símbolos no terminales con un nuevo símbolo no terminal e
introducir las siguientes nuevas reglas:
A → X1 γ
X1 → B C
Este proceso se puede repetir tantas veces como sea necesario hasta alcanzar reglas
de una longitud 2. La elección del par de símbolos no terminales a reemplazar es
puramente arbitraria; cualquier procedimiento sistemático que resulte en reglas
binarias es adecuado. Una vez se hayan convertido todas las reglas en binarias se
añaden a la nueva gramática, finalizando aquí el proceso de conversión a CNF.
© Universidad Internacional de La Rioja (UNIR)
Una vez tengamos la gramática en formato CNF, podemos aplicar el algoritmo CKY,
el cual nos permite llevar a cabo el proceso de reconocimiento sintáctico. Con nuestra
gramática en CNF, cada nodo no terminal por encima del nivel de categoría
gramatical en un árbol sintáctico tendrá exactamente dos hijos. Se puede usar una
matriz de dos dimensiones para codificar la estructura de todo un árbol.
Para una frase de longitud 𝑛𝑛, trabajaremos con la parte superior triangular de una
matriz:
(𝑛𝑛 + 1) 𝑥𝑥 (𝑛𝑛 + 1)
Cada celda [𝑖𝑖, 𝑗𝑗] de esta matriz contiene el conjunto de símbolos no terminales que
representan todos los constituyentes sintácticos que abarcan posiciones de entrada
desde 𝑖𝑖 hasta 𝑗𝑗. Ya que nuestro sistema de indexación comienza en 0, se deduce que
la celda que representa la entrada completa reside en la posición [0, 𝑛𝑛] de la matriz.
Dado que cada entrada no terminal en nuestra tabla tiene dos hijos en el análisis
sintáctico, podemos decir que:
Para cada constituyente sintáctico representado por una entrada [𝑖𝑖, 𝑗𝑗], tiene que
© Universidad Internacional de La Rioja (UNIR)
haber una posición en la entrada 𝑘𝑘, que puede ser dividida en dos partes de tal
manera que:
𝑖𝑖 < 𝑘𝑘 < 𝑗𝑗
Dada una posición 𝑘𝑘:
Para ello, se procederá de abajo hacia arriba de manera que, a la hora de rellenar la
celda [𝑖𝑖, 𝑗𝑗], las celdas que pueden contener partes que podrían contribuir a esta
entrada de la tabla (las celdas a la izquierda y debajo) deben estar ya rellenas.
La Figura 4 muestra el caso general de rellenado de la celda [𝑖𝑖, 𝑗𝑗]. En cada partición,
el algoritmo considera si los contenidos de las dos celdas pueden ser combinados de
modo que se cumpla alguna de las reglas de la gramática.
© Universidad Internacional de La Rioja (UNIR)
Figura 4. Todas las posibles formas de rellenar la celda [𝑖𝑖, 𝑗𝑗] en la tabla CKY. Fuente: Jurafsky y Martin, 2009.
Figura 5. Matriz del análisis sintáctico al aplicar el algoritmo CKY. Fuente: Jurafsky y Martin, 2009.
La Figura 5 muestra la matriz del análisis sintáctico completo para la frase «Book
the flight through Houston» cuando se utiliza la gramática en formato CNF
presentada en la Figura 6 y 7 para realizar el reconocimiento sintáctico.
© Universidad Internacional de La Rioja (UNIR)
Figura 6. Gramática libre de contexto (columna izquierda) y en formato CNF (columna derecha) y
lexicón (abajo) para realizar el análisis sintáctico en lengua inglesa. Fuente: Jurafsky y Martin, 2009.
Finalmente, llegamos a la fase de análisis sintáctico. Hay que tener en cuenta que el
algoritmo mostrado en la Figura 3 es un reconocedor sintáctico, no un analizador
sintáctico. Por tanto, para convertirlo en un analizador capaz de devolver todos los
El primer cambio es aumentar las entradas de la tabla de manera que cada símbolo
no terminal esté emparejado con punteros a las entradas de la tabla de las que se
derivaron (parecido a como se muestra en la Figura 8 del ejemplo ilustrativo 2).
El segundo cambio consiste en permitir múltiples versiones del mismo símbolo no
terminal para ser introducidos en la tabla (véase la Figura 8).
Con estos cambios, el cuadro completo contiene todos los posibles análisis sintácticos
para una entrada dada. Devolver un único análisis sintáctico arbitrario consiste en la
elección de una oración 𝑆𝑆 de la celda [0, 𝑛𝑛] y luego recuperar de forma recursiva sus
constituyentes sintácticos de la tabla.
En el vídeo Paso 3 del algoritmo CKY: análisis sintáctico se explicará el tercer paso del
algoritmo CKY, donde se realiza la decodificación o la obtención de los distintos
árboles sintácticos a partir de la matriz que se ha creado anteriormente.
𝑃𝑃(𝛼𝛼 → 𝛽𝛽|𝛼𝛼) = =
∑𝛾𝛾 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶(𝛼𝛼 → 𝛾𝛾) 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶(𝛼𝛼)
Como la mayor parte de las oraciones son ambiguas, es decir, tienen múltiples análisis
sintácticos, tenemos que mantener una cuenta separada para cada análisis sintáctico
de una oración y ponderar cada uno de estos recuentos parciales por la probabilidad
del análisis sintáctico en el que aparece. Pero para obtener las probabilidades para
ponderar las reglas, debemos tener ya un analizador sintáctico probabilístico, lo cual
nos lleva a un problema recurrente.
Comenzar con un analizador sintáctico con probabilidades iguales para cada regla.
Seguidamente, analizar la frase.
Calcular la probabilidad para cada análisis sintáctico.
Utilizar estas probabilidades para ponderar los contadores.
Reestimar las probabilidades de cada regla, y así sucesivamente, hasta que
nuestras probabilidades converjan.
La versión probabilística del algoritmo CKY, igual que el algoritmo CKY básico, utiliza
una gramática CNF (Chomsky Normal Form). Sin embargo, en la versión probabilística,
cada regla está anotada con la probabilidad de que se cumpla dicha regla.
Por lo tanto, el primer paso del algoritmo CKY probabilístico consiste en convertir
las reglas de una gramática libre de contexto anotada con probabilidades al formato
CNF. Para realizar este proceso se aplica un método análogo al utilizado para el
algoritmo CKY básico. En la conversión de las reglas al formato CNF, además de aplicar
los criterios explicados en la sección anterior, se deben recalcular las probabilidades
de modo que la probabilidad asociada a cada posible árbol resultante del análisis
sintáctico de la oración permanezca constante para la nueva gramática CNF.
En el segundo paso del algoritmo CKY probabilístico, y una vez se tienen las reglas
en formato CNF, se crearía una matriz similar a la del CKY básico, pero con una
dimensión adicional. Recordemos que en el CKY básico cada celda de la matriz
contenía una lista con los constituyentes sintácticos para cada palabra. En el caso CKY
probabilístico, cada celda tiene una dimensión adicional que se utiliza para indexar
cada constituyente sintáctico. Específicamente, para una frase de longitud 𝑛𝑛
(palabras) y una gramática que contiene 𝑉𝑉 símbolos no terminales (constituyentes
sintácticos), tendríamos una matriz (𝑛𝑛 + 1) 𝑥𝑥 (𝑛𝑛 + 1) 𝑥𝑥 𝑉𝑉. El valor de cada una de
las celdas corresponde en este caso a la probabilidad de cada constituyente o símbolo
no terminal para cada palabra.
Ejemplo ilustrativo 3
Figura 10. Matriz para el análisis sintáctico aplicando el algoritmo CKY probabilístico. Fuente:
Jurafsky y Martin, 2009.
Figura 11. Gramática de la lengua inglesa en formato CNF donde cada regla está anotada con la
probabilidad y que se utiliza para realizar el análisis sintáctico. Fuente: Jurafsky y Martin, 2009.
En el vídeo Algoritmo CKY probabilístico se explicará este, que amplía el CKY clásico y
permite añadir probabilidades para obtener la probabilidad de cada uno de los
árboles sintácticos codificados en la matriz.
Una gramática valencial modela las dependencias entre los elementos léxicos de
una oración y, de este hecho, proviene su nombre de gramática de dependencias.
Ejemplo ilustrativo 1
Figura 13. Árbol sintáctico que representan el resultado del análisis sintáctico utilizando una
gramática de estructura sintagmática. Fuente: Jurafsky y Martin, 2009.
Entre las ventajas que tienen estas gramáticas aparece su habilidad para trabajar con
idiomas que son morfológicamente ricos y dónde se tiene libertad para ordenar las
palabras de distinta manera dentro de una misma oración. En estos casos, se pueden
tener, por ejemplo, objetos gramaticales que pueden aparecer bien antes o bien
después de un adverbio de lugar.
Figura 14. Lista de algunas de las posibles relaciones gramaticales que pueden aparecer con las gramáticas de
dependencias. Fuente: Jurafsky y Martin, 2009.
Siempre hay un único nodo raíz que no tiene arcos que llevan a él.
Excepto para el nodo raíz, los demás nodos tienen un único arco que lleva a ellos.
Hay un único camino entre el nodo raíz y los demás vértices V.
Con esto se garantiza que cada palabra tenga un único head, que la estructura de
dependencia esté conectada, y que haya un único nodo raíz desde el que se pueda
partir para seguir un camino único hacia cualquiera de las palabras de la frase. Junto
con esto, aparece otra propiedad en los arcos head-dependent denominada
proyectividad. Esta se da si existe un camino entre el head y todas las palabras que
© Universidad Internacional de La Rioja (UNIR)
Partiendo de esto, una de las aproximaciones más conocidas para las gramáticas de
dependencias es el transitioned-based dependency parsing. Con este algoritmo,
ilustrado en la siguiente figura, se tienen distintos elementos: una pila donde están
los elementos sobre los que se hace el análisis, un buffer con los tokens que todos los
tokens sobre los que no se ha hecho aún el análisis, y un oráculo que dará como salida
la acción concreta que hacer dentro de la iteración del algoritmo. Las acciones que
puede llevar a cabo el oráculo se dividen en tres:
© Universidad Internacional de La Rioja (UNIR)
Figura 16. Esquema del algoritmo de transitioned-based dependency parsing. Fuente: Jurafsky y Martin, 2009.
Figura 17. Ejemplo de salida para cada iteración del algoritmo transitioned-based dependency parsing. Fuente:
Jurafsky y Martin, 2009.
El punto fundamental es la creación del oráculo; es decir, cómo tener un sistema que
determine en cada paso cuál de las tres acciones se deben ejecutar. Este se puede
generar mediante el uso de algoritmos de aprendizaje supervisado entrenados sobre
© Universidad Internacional de La Rioja (UNIR)
Kasami, T. (1965). An efficient recognition and syntax analysis algorithm for context-
free languages. (Informe No. R-257). Universidad de Illinois.
RAE. (s. f.). Sintaxis. En Diccionario de la lengua española (actualización de la 23ª ed.).
[Link]
Eisner, J. (1996). Three new probabilistic models for dependency parsing: An exploration.
Proceedings of the 16th International Conference on Computational Linguistics (COLING-
96), 340-345. [Link]
Para completar el estudio de esta sección puedes leer las páginas 199-206 del
siguiente libro: Técnicas de procesamiento de lenguaje.
En este vídeo se verá desde donde parte el análisis sintáctico utilizando una estrategia
ascendente y la búsqueda en profundidad. Se parte de las palabras que forman la
oración y se va creando el árbol sintáctico hacia arriba.
En este vídeo se verá cómo se crea el árbol de abajo hacia arriba a partir de las
palabras hasta que llegamos a la composición completa. Al realizar la búsqueda en
anchura se irá desarrollando el árbol por niveles
© Universidad Internacional de La Rioja (UNIR)
2. Indica las afirmaciones correctas sobre los métodos para el análisis sintáctico-
basados en programación dinámica:
A. Tratan el problema de la ambigüedad estructural.
B. Buscan soluciones óptimas a subproblemas que permiten encontrar la
solución al problema en su conjunto.
C. Devuelven un único resultado para el análisis sintáctico.
D. Los posibles árboles sintácticos debidos a la ambigüedad estructural se
representan como subproblemas.