¿Qué es el lenguaje natural?

Myriam Barnés
helloleia
Published in
5 min readMar 14, 2017

Entendiendo lenguaje como lengua, la RAE lo define como: “sistema de comunicación verbal”, es decir, un lenguaje es una estructura que nos permite comunicarnos unos con otros. La forma puede ser muy distinta e incluso el medio de expresión; ejemplos de lenguajes tenemos los idiomas, los lenguajes de programación, el lenguaje de gestos, el braille, el élfico e incluso las claves que se inventan los niños cuando juegan a los espías puede considerarse un lenguaje, llamémosle secreto. Lo importante de todo esto es que la información pueda fluir y ser entendida entre las partes implicadas en la comunicación. Hasta aquí perfecto, pero ¿podemos hablarle a una máquina en español y que nos entienda?

¿Cómo funciona el lenguaje?

Como veníamos diciendo, lo importante del lenguaje, sea cual sea, es que comunique. Para ello, siempre necesitamos un emisor, un receptor y un canal. En el caso de una conversación en español el emisor sería una persona, el receptor otra persona y el canal, el habla. En un lenguaje de programación el emisor podríamos decir que es la persona que escribe el código, el receptor sería el ordenador que puede leer ese mensaje escrito, comprenderlo/compilarlo y hacer lo que se le pide, el canal sería la escritura.

Una vez definidos los tres componentes básicos para que se produzca la comunicación necesitamos tener algo que comunicar, a eso lo llamaremos mensaje. En el acto de comunicación podemos tener varios mensajes que transmitir y a su vez cada mensaje puede tener varios atributos. Por ejemplo, si digo “quiero cantar”, estoy transmitiendo el mensaje de querer cantar, con el atributo de que la persona con el deseo soy yo. Si dijera: “quiero cantar muy fuerte” o “quiero cantar una canción de EdSheeran”, sigue siendo un solo mensaje, puesto que no hay deseos ni acciones distintas a querer cantar; “muy fuerte” o “una canción de EdSheeran” serían atributos del mensaje que lo hacen más conciso o enfatizan el deseo. Por otro lado, si digo: “quiero cantar y bailar”, estaría transmitiendo dos mensajes distintos e independientes, el “deseo de cantar” y el “deseo de bailar”.

El último punto a tener en cuenta es lo que los lingüistas llaman semántica, es decir, para que el mensaje se entienda necesitamos saber qué significa su contenido. En el caso del lenguaje de programación es muy fácil de ver, el ordenador sólo entiende lo que previamente conoce, incluso no quieras poner DOCUMENT.WRITE(‘’) en lugar de document.write(‘’) porque te dirá que error, ¡que eso no es lo mismo!

Los lenguajes humanos, sin embargo, aunque tienen que estar previamente definidos, son sistemas mucho más abiertos, tenemos mil maneras de decir la misma cosa y a veces no las conocemos todas pero podemos intuirlas. Un ejemplo muy claro se puede ver con el mensaje de “estar de acuerdo”, ya que ,diga el emisor “vale”, “valeeee :)”, “ok”, “perfecto”, “estupendo”, “entendido”, “¡genial!” o muchas más cosas, el receptor entenderá que le parece bien. A esta manera más compleja, pero propia de los humanos de comunicarse, es a la que se llama lenguaje natural.

¿Cómo hacemos que KittyBus nos entienda?

Un chatbot es un programa/aplicación/máquina que utiliza aprendizaje automático (machine learning, una rama de la inteligencia artificial) para interpretar el lenguaje natural y dar las respuestas. Puede tener la interfaz que más nos guste, en este caso Facebook Messenger, y como cualquier otro programa tendrá un montón de código para darle las instrucciones, la diferencia es que cada vez que reciba información llamará a un “natural language classifier” que será capaz de interpretar la información.

Volvemos aquí al concepto de mensaje, lo que queramos transmitir lo llamaremos “intent” y toda la información que necesitemos para completar el mensaje, los atributos, es lo que llamaremos “entities”. El procesador de lenguaje natural tiene como función detectar intents con sus respectivos entites, que una vez entendidos guían al programa para realizar las distintas acciones. En KittyBus por ejemplo, un intent sería “cuánto tiempo le queda a mi autobús” y los entities “número de parada” y “número de autobús”.

Un intent solo puede ejecutarse si se tienen todos los entities necesarios, una vez que se le da una frase, para resolverla el bot deberá:

  • Reconocer el intent.
  • Reconocer los entities que le han sido dados.
  • Reconocer qué entites le faltan y preguntar por ellos.

Si el bot no está lo suficientemente entrenado para reconocerlo todo de golpe, lo mejor será guiar la conversación para que al usuario le sea cómodo y el procesador pueda entenderlo. En el caso de “cuánto tiempo le queda al autobús” esa es la manera en la que actúa KittyBus:

  • Entiende el intent al darle una parada y tiene el entity correspondiente al número de parada.
  • Busca entonces la parada para asegurarse de que existe y te pregunta por el número de autobús.
  • Al pulsar el usuario en la respuesta predeterminada obtiene el entity que le falta y da la respuesta.

Si no queda claro, aquí, Guli cuenta detenidamente cómo crearon un chatbot para Cabify en un hackaton.

Enseñar a comunicarse.

Internamente, el procesador de lenguaje natural está formado por una serie de redes y conexiones que emulan las neuronales, lo que llamamos machine learning, que permiten en este caso la interpretación del lenguaje. Sin embargo, cuanto tú lo utilizas, podríamos decir que está en “fase bebé”, es decir, será capaz de interpretar cuando se le enseñe a relacionar conceptos.

Así, igual que un niño va a poco a poco aprendiendo palabras según lo que oye y el feedback de sus padres y profesores, un chatbot necesita entrenamiento para aprender a diferenciar los intents según las infinitas maneras que tenemos los humanos de decir las cosas. Educarlo supone darle ejemplos de lo que está bien y lo que está mal, dándole feedback según las respuestas que él mismo dé a aquellos con quienes hable. Enseñar a hablar a un bot no significa crear un lenguaje nuevo, si no que sea capaz de emular el lenguaje humano.

A día de hoy, KittyBus sabe cuándo llega tu autobús, las paradas cercanas y las que tienes guardadas en favoritos. Sin embargo, a veces se lía, por lo que necesitamos que tenga muchas conversaciones y así poder guiarle en lo que responda bien y lo que responda regular.

Si nos quieres ayudar a mejorarlo solo tienes que hablar con él: http://m.me/kittybusmadrid

Si habéis leído hasta aquí ¡muchas gracias! :)

--

--

Myriam Barnés
helloleia

Mathematician, writer and designer. | Stories rule the world. ✨