¿Qué es el Natural Language Processing?

Natural Language Processing hace referencia al procesamiento del lenguaje natural por ordenador. En él se incluye la traducción de un idioma a otro, pero también del reconocimiento de un lenguaje hablado o de las respuestas automáticas a determinadas preguntas. En este tipo de tareas los ordenadores tienen ciertos problemas de comprensión, ya que se centran, sobre todo, en el significado de cada una de las palabras por separado. De este modo, a los programas de traducción les resulta complicado captar diferencias entre los términos ocasionadas por factores como la ambigüedad y la polisemia, entre otros.

Por medio de la disciplina del Natural Language Processing, los ordenadores aprenden a entender el significado de aquellas secciones de texto que guardan relación entre sí, tales como modismos o frases, y a usarlos debidamente. Esto no solo resulta de utilidad en el caso de las traducciones o de los chats conversacionales, sino también a la hora de ejecutar comandos de voz o al generar el lenguaje hablado para poderse comunicar, por ejemplo, con personas invidentes. Asimismo, a la hora de resumir textos largos o extraer determinada información de grandes cantidades de texto, los ordenadores necesitan comprender las relaciones lingüísticas existentes.

¿Cómo funciona el Natural Language Processing?

Independientemente de si se trata de una traducción automática o de la interacción con un bot conversacional, el aspecto común a todos los métodos de procesamiento del lenguaje natural es que tienen en cuenta las jerarquías que definen las relaciones entre las palabras. Esto resulta algo complicado debido a que muchas palabras son polisémicas, es decir, que tienen dos o más significados, como por ejemplo capital (ciudad más importante de un país o patrimonio), cura (sacerdote o tratamiento médico) o sierra (herramienta o formación rocosa). 

Este tipo de dificultades es el responsable de que el procesamiento natural del lenguaje sea uno de los campos más complejos de la informática. A menudo, la lengua está cargada de dobles sentidos y su comprensión requiere amplios conocimientos sobre el contexto en el que se usa. Muchos usuarios pueden conocer por cuenta propia la comunicación desigual que tiene lugar con los chats conversacionales, que se usan cada vez más como sustitutos de los chats en línea en el ámbito de la atención al cliente. A pesar de todo, los ordenadores entienden el lenguaje humano cada vez mejor. Para enseñarles la lengua, los lingüistas computacionales recurren a las diferentes áreas de la lingüística:

  • La morfología se ocupa de la composición de las palabras y de sus relaciones con otras palabras.
  • La sintaxis define el modo en que las palabras se unen para formar frases.
  • La semántica hace referencia tanto al significado de las palabras como al de los grupos de palabras.
  • La pragmática se hace eco del contexto en el que se llevan a cabo las locuciones lingüísticas.
  • La fonología se ocupa de la estructura fonética del lenguaje hablado y es importante para el reconocimiento de la voz.

Etiquetado gramatical o Part-Of-Speech Tagging (POST)

El primer paso en el Natural Language Processing está relacionado con la morfología y consiste en determinar la función de cada palabra por separado. A la mayoría de la gente, una forma simplificada de este proceso le resulta familiar desde el colegio, donde se aprende que las palabras pueden clasificarse en sustantivos, verbos o adjetivos. Sin embargo, el hecho de determinar la función de cada palabra no es una tarea sencilla para los ordenadores, ya que las palabras pueden cambiar de función dependiendo de la frase en la que se colocan.

Para desglosar esa ambigüedad se puede recurrir a diversos métodos: los más antiguos se basan en extensos corpus de textos como el Brown Corpus o el British National Corpus. Estos están formados por millones de palabras etiquetadas y de las que se pueden deducir normas de aprendizaje para el etiquetado de palabras. Mediante el Brown Corpus se pudo, por ejemplo, crear la norma de que los verbos dejen de tener función de predicado cuando van precedidos de un artículo.

Los nuevos programas de etiquetado emplean algoritmos de autoaprendizaje, lo que significa que sobreentienden las normas de los corpus de texto existentes de manera automática y las utilizan para definir otras funciones de palabras. Uno de los ejemplos más populares de métodos de etiquetado basados en dichos algoritmos es Brill Tagger, un método que primero define la función más frecuente en la frase para después, con ayuda de reglas, deducir el resto de funciones de las palabras. Una regla podría ser: si la primera palabra de una frase es un nombre propio, la segunda será, probablemente, un verbo. En una frase del tipo “Jan ha comprado un libro”, la palabra “ha” podría clasificarse como verbo.

Parse trees (árboles de análisis sintáctico)

En el paso siguiente se emplearán los conocimientos extraídos de la sintaxis para entender la estructura de las oraciones. Para ello, la lingüística computacional utiliza diagramas de análisis sintáctico con los que se pueden dividir las oraciones en sintagmas. Algunos ejemplos de estos sintagmas son los sintagmas nominales, que están formados por un nombre propio o por un sustantivo o artículo, o los sintagmas verbales, cuyo núcleo es un verbo.

En inglés se designa con el término de parsing a la división de las oraciones en sintagmas, y, en consecuencia, los árboles de análisis sintáctico reciben la denominación de parse trees. Cada idioma tiene su propia gramática, lo que significa que en cada lengua los sintagmas se forman de una manera diferente y la jerarquía de los sintagmas funciona de un modo distinto. La gramática de un idioma puede programarse a mano en los programas informáticos, o se puede aprender mediante los corpus de textos, que pueden servir para dejar constancia de la estructura de las oraciones.

Semántica

El tercer paso del Natural Language Processing es el que llevan a cabo los desarrolladores en el ámbito de la semántica. Aun cuando tanto el etiquetado como la función sintáctica de una palabra son similares, puede ocurrir que la palabra en cuestión tenga varios significados posibles, como podemos ver en el siguiente ejemplo:

Hay un niño sentado en el banco de la plaza

El banco concede créditos a muchas personas

Una persona que tenga buenos conocimientos lingüísticos sobre la lengua española, puede saber de inmediato que en la primera oración la palabra “banco” hace referencia al asiento en el que nos podemos sentar y en la segunda se habla del lugar en el que se realizan operaciones financieras. Esto, sin embargo, no es fácil de determinar en el caso de los ordenadores, puesto que estos no reconocen la ambigüedad y es muy difícil que la aprendan.

Por lo tanto, en la mayoría de los casos los ordenadores intentan determinar el significado de una palabra con ayuda de las palabras que le preceden o le siguen. De este modo, pueden aprender que si la palabra “banco” va seguida de “plaza”, se trata de un asiento y en el caso de que “banco” vaya seguida de “créditos”, estaremos hablando de la entidad financiera. Estas diferencias pueden aprehenderse mediante el uso de corpus de textos, en los que el significado de cada palabra se reproduce con exactitud. 

En términos generales, el Natural Language Processing es una especialidad muy compleja: en ella, los ordenadores tienen que hacer frente a casos concretos y, en el caso de las palabras ambiguas, existe la probabilidad de que el ordenador la interprete erróneamente. En el ámbito de la pragmática, en particular, todavía pueden hacerse muchas mejoras, ya que en el caso del contexto en el que se expresa la frase, se trata generalmente de un contexto mundano o, como mínimo, de un contexto que requiere amplios conocimientos sobre el propio entorno. Si hilamos un poco más fino, la ironía, el sarcasmo y las metáforas humorísticas son conceptos especialmente complicados de entender para los ordenadores, aun cuando ya se hayan hecho los primeros intentos para clasificarlos.

Herramientas para el procesamiento del lenguaje natural

Quien quiera establecer un primer contacto con el Natural Language Processing puede recurrir a las diversas y prácticas herramientas e instrucciones online. Decidir cuál es la herramienta que mejor se adecúa a las necesidades de cada uno depende del idioma en sí y de los métodos de procesamiento del lenguaje natural que se quieran usar. A continuación te presentamos algunas de estas herramientas de código abierto:

  • Natural Language Toolkit es una colección de herramientas para el Natural Language Processing escritas en Python. Estas permiten el acceso a más de 100 corpus de texto para idiomas como inglés, portugués, polaco, holandés, catalán y vasco. Además, Natural Language Toolkit también sirve para llevar a cabo diferentes funciones de edición de textos, como el etiquetado gramatical (Part-Of-Speech Tagging), el análisis sintáctico, la tokenización (definición de radicales, un paso preliminar usado a menudo para el procesamiento del lenguaje natural) y la justificación de textos (wrapping). La herramienta Natural Language Toolkit también ofrece una introducción a la programación, así como documentación detallada, y está destinada tanto para estudiantes universitarios como para profesores e investigadores.
  • Stanford NLP Group Software: este es uno de los grupos de investigación líderes en el ámbito del Natural Language Processing y ofrece diferentes herramientas, con las que se pueden determinar las formas básicas de las palabras (tokenización), las funciones de las palabras (etiquetado gramatical o Part-Of-Speech Tagging) y la estructura de las oraciones (parsing). Todo ello se complementa con herramientas para procesos más complejos como el aprendizaje profundo (deep learning), en el que se presta atención al contexto de las oraciones. A este respecto, el Stanford CoreNLP recoge la mayoría de funciones básicas. Como dato adicional, todos los programas del Stanford NLP Group están escritos en Java y disponibles para diversos idiomas, entre ellos inglés, chino, alemán, francés y español.
  • Visualtext es un conjunto de herramientas escritas en NLP++, un lenguaje de programación propio para el Natural Language Processing. Este lenguaje de programación está especialmente desarrollado para los llamados deep text analyzers es decir, para los análisis de texto profundo que son necesarios para obtener conocimientos universales (información sobre el medio ambiente y la sociedad). Visualtext sirve para extraer información de grandes cantidades de texto, por lo que en este caso la herramienta permite, por ejemplo, compilar textos largos, pero también recopilar eventos sobre temas concretos y de diferentes páginas web y colocarlos en una misma vista general. Visualtext también da la posibilidad de utilizarse de manera gratuita para fines no comerciales.