Análisis Lingüístico

Rubén Rodríguez Abril

En este artículo ofrecemos una breve introducción a los procedimientos de análisis de texto que son la base sobre la que se construye el Procesamiento del Lenguaje Natural, y que servirán de punto de partida para los artículos venideros.

Análisis Linguístico

Por lo general, en los procedimientos de procesado de lenguaje escrito el primer paso a realizar es el de análisis del texto, que como su propio nombre indica, se encarga de descomponer el texto de entrada en otros elementos más pequeños. Estos elementos sirven a su vez de entrada para las fases posteriores del procedimiento, que son las encargadas de extraer la información. Por ejemplo, en los sistemas de traducción automática basados en el aprendizaje profundo, es común que el texto se rompa en palabras o grupos de palabras. Y que estas palabras sean transformadas a su vez en vectores 1-a-N con los que se alimenta la red.

Este análisis del texto puede ser de tres tipos: léxico, morfológico y sintáctico

Análisis Léxico

El análisis léxico consiste en la división de la cadena de entrada en bloques de caracteres denominadas “lexemas” o “tokens”. La definición de lexema que da la ciencia de la computación es ligeramente diferente a la que proporciona la lingüística. En el primero de los casos, es un simple bloque de caracteres al que se atribuye un determinado valor; en el segundo caso, consiste en la unidad mínima con significado léxico que no presenta morfemas gramaticales (por ejemplo, las raíces de los sustantivos; el ‘gat’ de ‘gato’, ‘gata’, ‘gatera’, etc…).

Por lo general, en Procesamiento del Lenguaje Natural (NLP por sus siglas en inglés) estos lexemas suelen equivaler a palabras individuales, separadas entre sí por espacios y signos de puntuación, pero pueden también venir conformados por grupos de palabras denominados n-gramas (bigrama, trigrama, etc.). Como ejemplo de bigramas podemos citar ‘árboles verdes’ o ‘casas blancas’, y entre los trigramas se encontrarían expresiones como ‘las tejas verdes’ o ‘los caballos rápidos’. Cuando estos grupos de palabras se articulan gramaticalmente en torno a un núcleo sintáctico reciben el nombre de sintagmas.

De texto a vector

La división del texto en palabras es realizada por un programa denominado scanner, cuya potencia computacional es similar a la de un autómata de estado finito. El scanner rompe las cadenas de texto en aquellos puntos donde hay delimitadores, que son caracteres que separan a unas palabras de otras, como espacios, puntos o retornos de carro. El resultado es un array de lexemas, que a su vez pueden ser transformados en vectores 1-a-N (one-hot), cuyos componentes son todos nulos salvo uno de ellos, cuyo valor es la unidad.

Transformación de un texto en un vector 1 a N.

Cada lexema está vinculado a un vector 1 a N. Los lexemas no tienen por qué ser palabras aisladas. Pueden ser frases completas como es la del ejemplo. Evidentemente estos vectores llegan a ser extremadamente largos.

Análisis Morfológico

Es usual que en muchos procedimientos de NLP el análisis léxico venga acompañado de un análisis morfológico, en el que a cada lexema se le asigna un valor, una categoría semántica. Así, en los lenguajes naturales (como el español o el francés), las palabras pueden clasificarse en sustantivos, adjetivos o adverbios, entre otros. En los lenguajes de programación, los lexemas se agrupan en palabras clave (for, if, then..), separadores, ({,}) operadores (+, -, <), y demás categorías. El programa que realiza el análisis morfológico se denomina evaluador (evaluator).

Análisis Sintáctico

Denominamos análisis sintáctico a aquel que describe la estructura gramatical interna de una oración, dando como resultado una estructura arborescente denominada “árbol sintáctico”. En el plano de los lenguajes naturales, las palabras de una oración compleja son agrupadas en sintagmas que a su vez se agrupan en oraciones, que pueden estar subordinadas las unas respecto de las otras (‘el país que está situado en el mar cuya costa es…’). En el ámbito de la computación, el análisis sintáctico es realizado por un programa denominado parser y tiene una extraordinaria importancia a la hora de definir estructuras recursivas como funciones, subrutinas, o bucles anidados.

Análisis sintáctico de una fórmula matemática

Supongamos una fórmula matemática como puede ser:

a×(4+b)-tanh(π)

contiene una serie de tokens como pueden ser 4, , tanh o (. A su vez, estos tokens pueden estructurarse por un parser en un árbol sintáctico como es el siguiente:

Producción de una fórmula aritmética aplicando reglas de producción libres de contexto.

Sistemas de Aprendizaje Profundo

En el ámbito del aprendizaje profundo, el análisis sintáctico es realizado de un modo implícito por los propios modelos de redes neuronales artificiales (redes neuronales recurrentes, transformadores, etc…). La red únicamente tiene que ser alimentada con arrays de tokens (palabras o n-gramas), y es el propio modelo el que induce la estructura de la oración y realiza a partir de la misma la tarea que se le tiene encomendada (por ejemplo, la traducción a máquina), tal y como veremos en los próximos artículos.