• No se han encontrado resultados

Sistemas conversacionales orientados a una funci´ on

2. Estado del arte:

2.4. Sistemas conversacionales

2.4.2. Sistemas conversacionales orientados a una funci´ on

Este tipo de chatbots no tratan de seguir un n´umero indefinido de turnos en una conversaci´on, sino que tienen un objetivo concreto en un contexto determinado y quieren obtener alg´un tipo de informaci´on de las frases que introducen los usuarios. Seg´un su objetivo, se pueden distinguir [19]:

Los que buscan realizar una funci´on concreta, como reservar una entrada para ver una pel´ıcula en el cine.

Los que se centran en contestar preguntas, como “¿Qu´e restaurantes cercanos hay?” y en base a la respuesta tratar alg´un tipo de continuaci´on como “¿Cu´ales de ellos son de comida china?”

Los que sirven como un asistente personal, que son una mezcla de las funcio- nes de los dos anteriores, con ejemplos representativos en los asistentes para smartphones como Siri.

En la literatura se hace tambi´en una distinci´on entre los chatbots que reciben del usuario lenguaje natural hablado en vez de escrito, requiriendo los primeros modelos de tratamiento diferentes para extraer informaci´on del formato de audio. En este estado del arte no nos vamos a centrar en esos modelos de reconocimiento de voz, pero podemos encontrar una review actual de ellos en [64].

Representaci´on en marcos

Uno de los puntos importantes que tienen este tipo de chatbots y que difiere de los anteriores es la representaci´on de la informaci´on. Dado que en este caso se va a tratar con una base de datos o una fuente de informaci´on de la que poder sacar las respuestas a las preguntas del usuario, es necesario estructurar el tipo de datos que trata el sistema.

Para representar esta informaci´on, se utilizan modelos basados en marcos. De- pendiendo del sistema que sea, un marco modelar´a el objetivo concreto que trata de buscar el sistema. Por ejemplo, en la figura 9 se muestra un posible marco pa- ra representar direcciones de puntos de inter´es en una ciudad. Cada punto tiene asociado slots con la calle, la distancia a la que est´an, el tipo de punto, el nombre y el estado del tr´afico en su direcci´on. La conversaci´on posterior muestra c´omo la informaci´on acerca de estos slots es extra´ıda de las frases que introduce el usuario para su posterior uso y c´omo se debe orientar la conversaci´on para obtener estos datos y proporcionar una respuesta.

Fig. 9: Ejemplo mostrado en [60] de una base de conocimiento y un sistema de marcos para representar puntos de inter´es.

Una estructura de marcos adecuada al problema facilita centrarse en qu´e in- formaci´on ha de extraerse de cada frase. Por eso, la estructura de control de la conversaci´on estar´a centrada alrededor de los marcos que hayamos creado. Esta es- tructura ha sido, tradicionalmente, parecida a una m´aquina de estados finita. Si tomamos como referencia el anterior ejemplo de un posible marco para un chatbot de direcciones, podr´ıamos sacar una estructura de control parecida a la de la figura

10 para guiar las conversaciones. En ella, cada estado tiene una forma diferente de tratar las frases entrantes de cara a tratar un elemento concreto del sistema de mar- cos, y tiene una forma de responder orientada al siguiente estado al que vayamos a llegar. No es necesario que cada estado trate un ´unico slot, o que haya un mayor o menor n´umero de estados, cada caso se adecuar´a a sus necesidades. Tambi´en es posible tratar con varios tipos de marcos, pero en este caso el sistema requerir´a extraer m´as informaci´on para poder completarlos, lo que har´a la conversaci´on m´as larga o el tipo de frases que se pueden procesar m´as complejas.

Fig. 10: Posible estructura de control en base al ejemplo de marco en la figura 9 El cambio entre estados puede hacerse en base a la frase que introduzca el usuario, si tenemos que diferenciar entre una funci´on u otra, o en base a los resultados que obtengamos de lo pedido por el usuario, si podemos completar la funci´on que tengamos que hacer o si nos faltan datos. Una ventaja de dividir la conversaci´on en estados diferenciables es que el modelo de procesado de lenguaje se puede dividir en sistemas m´as peque˜nos orientados a su funci´on de comprensi´on y generaci´on concreta. Estos sistemas son m´as f´aciles de desarrollar y de mantener que un s´olo sistema que cubra todos los casos de procesamiento de lenguaje. Para completar los marcos que nos permitan realizar la funci´on del chatbot, se utiliza comprensi´on del lenguaje natural para extraer informaci´on de las frases y movernos entre estados.

T´ecnicas de NLU

Los modelos de comprensi´on var´ıan en funci´on de si estamos tratando lenguaje escrito o hablado, pero el objetivo subyacente es el mismo. Lo la comprensi´on busca es poder rellenar los slots de los marcos del sistema que nos permitan poder realizar nuestra funci´on. Por ejemplo, en el caso de un chatbot que permite reservar un vuelo de avi´on, se querr´a rellenar un marco con el origen y destino del usuario, el d´ıa de ida, el d´ıa de vuelta y el precio que est´a dispuesto a pagar. Para esto, hace falta analizar las frases que ha introducido el usuario, obtener datos de ellas y preguntar si es necesario por los datos que falten. Si el dominio del chatbot es m´as amplio, tal vez haga falta identificar tambi´en la funci´on que quiere realizar el usuario y cu´ales son los marcos que debemos rellenar seg´un su intenci´on.

Uno de los m´etodos cl´asicos de localizaci´on y extracci´on de informaci´on de una frase es mediante reglas sem´anticas [28]. Estas reglas sem´anticas son creadas a mano con, normalmente, gram´aticas libres de contexto (CFG) capaces de reconocer ele- mentos dentro de una frase. Las CFG consisten en una serie de producciones con una parte izquierda donde s´olo aparece un s´ımbolo no terminal y una parte derecha con las posibles derivaciones de ese s´ımbolo. Cada regla de la gram´atica consiste en una estructura que puede ser reconocida por estas derivaciones y representada como etiquetas en un ´arbol de derivaci´on. Las gram´aticas pueden ir desde tener unas po- cas producciones hasta tener bases de varios miles de ellas, pero cuanto m´as escalan m´as complicadas son de mantener y puede afectar a su rendimiento.

Una vez se tiene la gram´atica capaz de reconocer un tipo de frases en concreto, es necesario un algoritmo de parsing para recorrer las palabras de la frase que in- troduzcamos dentro de las posibles producciones de la gram´atica. Lo que diferencia un parser de otro es el orden en el que eval´uan las producciones: si es desde arriba a abajo, es decir, desde los s´ımbolos iniciales de la gram´atica hasta los s´ımbolos terminales, o de abajo arriba, si eval´ua las palabras iniciales primero o si empieza por las ´ultimas o la regla que utiliza para elegir la pr´oxima derivaci´on a probar. No hay un parser que sea m´as efectivo que cualquier otro, en cada ´ambito concreto y con cada tipo de frases puede variar el rendimiento. De cara a un nuevo problema, hay que probar cu´al de los parsers posibles es el m´as eficaz.

Cuando ha terminado el parsing se obtiene un ´arbol de derivaci´on con la fra- se original con cada palabra etiquetada como la derivaci´on a la que corresponde. Este ´arbol puede recorrerse para encontrar las etiquetas correspondientes a datos que pueden rellenar los slots dentro de nuestros marcos. La principal ventaja de este tipo de sistemas es su alta precisi´on, ya que si una frase es reconocida por la gram´atica, vamos a poder extraer sin ning´un problema toda la informaci´on necesa- ria. Sin embargo, conforme el dominio de la aplicaci´on se hace m´as amplio, crece en gran medida el esfuerzo necesario para crear reglas que reconozcan todas las frases posibles a las que se puede enfrentar el sistema, y mantenerlo se vuelve mas costoso. Otra posibilidad de dise˜no extendida es el uso de aprendizaje autom´atico para identificar el tipo de pregunta que le han hecho al sistema y la posici´on de los datos relevantes en la frase.

Para identificar el tipo de frase que nos presentan, lo m´as com´un es tener un sistema de clasificaci´on del tema de la pregunta basado en n-gramas. Este sistema puede tener cualquier tipo de clasificador subyacente, desde un modelo de espacio de vectores que clasifique por distancia relativa entre frases hasta modelos de regresi´on log´ıstica o redes neuronales. Este m´odulo de identificaci´on se har´ıa en el caso de tener un dominio amplio en el que es posible realizar m´as de un tipo de preguntas dife- rentes. Para llevar esto a cabo, primero necesitamos una base de preguntas de cada tipo de manera que podamos crear los modelos de clasificaci´on de las nuevas pre- guntas entrantes. Por tanto, es necesario alg´un m´etodo de obtener estas preguntas, ya sea realiz´andolas a mano con ayuda de personas con conocimientos ling¨u´ısticos o recogi´endolas a partir de la clasificaci´on manual de las preguntas introducidas por los usuarios con el tiempo.

Despu´es de reconocer el tipo de frase, si es necesario, hay que poder extraer los datos relevantes de cada tipo de frase. Aparte de los m´etodos cl´asicos de gram´aticas, se pueden emplear t´ecnicas conjuntas de aprendizaje autom´atico y alg´un tipo de reglas o ´unicamente basadas machine learning.

Un ejemplo de m´etodo h´ıbrido [28] consiste en comenzar entrenando un clasifica- dor que reconozca cu´ando hay un tipo concreto de dato en una frase y posteriormente aplicar ´unicamente las reglas adecuadas a ese tipo de dato en la frase. Por ejemplo, si tenemos un sistema que trabaja de alg´un modo con direcciones, podemos entre- nar un clasificador que nos diga si en una frase en concreto aparece este dato o no. Para esto necesitaremos un dataset de frases etiquetadas binariamente si aparece direcciones en ellas o no, un tipo de etiquetado sencillo. Una vez el sistema reconoz- ca la existencia de este dato en una frase pueden entrar en funcionamiento reglas espec´ıficas para este caso, como la b´usqueda del dato espec´ıfico en base a los mar- cadores que lo preceden o busc´andolo en un diccionario de posibles direcciones, por ejemplo. Esto permite ser selectivo con el tipo de reglas de extracci´on que se aplican a una frase, por lo que tendremos la precisi´on del uso de reglas con un poco de m´as flexibilidad al no tener que amoldar todas las reglas a funcionar con cualquier tipo de frase.

La otra opci´on es utilizar tambi´en aprendizaje autom´atico tambi´en para obtener los datos relevantes de las frases [10]. El caso h´ıbrido de antes es posible convertirlo en uno que s´olo emplea clasificadores si entrenamos tambi´en uno por cada dato que queremos extraer. En este caso, el dataset deber´a tener etiquetado en cada ejemplo el dato espec´ıfico que se obtendr´ıa para cada clasificador y aplicarle los que correspondan seg´un el resultado de los datos que aparecen en una frase.

Aparte del uso de m´ultiples clasificadores, tambi´en se pueden usar otras t´ecnicas que no separen la identificaci´on de la existencia de un dato con la extracci´on del mismo. Aqu´ı la clave est´a en proporcionar datasets de ejemplos etiquetados espec´ıfi- camente para poder realizar estas dos funciones al mismo tiempo. La aproximaci´on m´as popular en estos casos con los modelos Seq2Seq, que tratan de encontrar una equivalencia entre la secuencia de palabras de la frase inicial con la secuencia de palabras de los datos buscados.

Una posible forma de conseguir esto es utilizando redes neuronales profundas o recurrentes capaces de encontrar estas equivalencias entre una frase y los datos que contiene [60]. Para poder entrenar las redes hace falta etiquetar los ejemplos del dataset de modo que tras tokenizar la cadena, cada token tenga asociado un tag si corresponde o no a un slot que se quiera llenar. De este modo, tendremos cadenas en las que tengamos marcados los datos ´utiles de cara a entrenar la red para que esta sea capaz de identificarlos y extraerlos, uniendo en un s´olo paso la identificaci´on del objetivo del usuario, la localizaci´on de informaci´on y su extracci´on para rellenar slots de un marco. Un ejemplo de esta arquitectura usando una red recurrente se puede encontrar en [25]. Un posible etiquetado para el corpus es el llamado “IOB” (Inside Outside Beginning). Este consiste en marcar todos los tokens que no sean parte de un dato como “O”, los tokens con los que comienza un dato como “B” y los que son parte de un dato como “I”. Este tagging se puede refinar a˜nadiendo

informaci´on de qu´e tipo de dato es en los tags de “B” y “I”, como en el ejemplo 11. Aqu´ı aparecen los datos que llenar´ıan un slot definidos, como la fecha con B-Fe y I-Fe o el destino con B-Des. El resto de palabras que no aportan nada a la hora de rellenar el marco quedan etiquetadas como O.

Fig. 11: Ejemplo de un etiquetado IOB en una frase.

Para que este tipo de t´ecnica sea posible, hace falta un proceso de obtenci´on de una base de preguntas amplia y un tiempo dedicado al etiquetado de cada pregunta. Una posible opci´on es la implementaci´on de un sistema cl´asico de reglas primero e ir recopilando todas las preguntas que le vayan haciendo al sistema, de modo que al etiquetarlas se pueda ir generando el dataset necesario para poder aplicar este modelo. Adem´as, este proceso es costoso de cara a la red neuronal necesaria, que tendr´a una estructura compleja y requerir´a de bastante tiempo para entrenarse.

T´ecnicas de NLG

Como ocurr´ıa en los sistemas exclusivamente de generaci´on de lenguaje, es ne- cesario pasar por dos fases: la de determinaci´on del contenido (sentence planner) y la de realizaci´on de la frase (surface realizer). La diferencia en este caso, es que la planificaci´on del contenido que debe tener la frase de respuesta viene determinada por el control de estados del sistema, por lo que s´olo habr´a que centrarse en la forma de realizar estas respuestas.

Una de las aproximaciones cl´asicas para la resoluci´on de este problema es me- diante el uso de frases deslexicalizadas [43]. Este es un modelo basado en un corpus de respuestas generadas en conversaciones humano-humano en el que las caracter´ısti- cas relacionadas con slots del marco correspondiente se sustituyen por tokens en las frases. Un ejemplo de una frase de un posible corpus ser´ıa: “¿A qu´e [tipo de lugar] le gustar´ıa ir el [d´ıa del evento]?”, el cu´al podr´ıa ser rellenado con informaci´on del marco actual como “¿A qu´ecine le gustar´ıa ir el viernes?”. Para obtener este cor- pus, se parte de frases de conversaciones humano-humano en las cuales se sustituyen los datos referentes a slots por su token correspondiente, lo que llamamos el proceso de deslexicalizaci´on.

Una vez visto este sistema de corpus de frases deslexicalizadas, la diferencia entre unas aproximaciones u otras es la forma de generar nuevas frases a partir del corpus. La aproximaci´on m´as b´asica es la de simplemente rellenar los huecos de los tokens con la informaci´on de los slots del marco, lo que ser´ıa equivalente a un sistema de plantillas aplicado a esta arquitectura. Este sistema es lo m´as simple que se puede aplicar, y se basa exclusivamente en lo extenso que sea el corpus para el n´umero de frases que es capaz de generar.

Para conseguir m´as variabilidad en las frases generadas, se trata de emplear las frases del corpus para generar otras nuevas que sigan siendo v´alidas, as´ı como el uso

en ocasiones de frases iguales a las encontradas en ´el. De nuevo, se tienen dos posibles aproximaciones seg´un la tecnolog´ıa que se use: los m´etodos basados en reglas y los m´etodos estoc´asticos.

La generaci´on basada en reglas vuelve a basarse en el uso de gram´aticas libres de contexto para generar frases adecuadas en un contexto espec´ıfico. Dependiendo de la determinaci´on de contenido hecha por el sistema, habr´a que crear una gram´atica para cada situaci´on de generaci´on posible. La gram´atica final deber´a se capaz de ge- nerar las frases del corpus, as´ı como mezclas entre las que sea posible, produciendo finalmente frases similares con o sin tokens, seg´un corresponda. El proceso de ge- neraci´on a partir de una gram´atica es similar al del parsing top-down, pero en este caso se crea un s´olo ´arbol de derivaci´on, el cual genera la frase deslexicalizada de respuesta. Tambi´en se puede hacer de manera recursiva y generar tantas frases como sea capaz la gram´atica. A partir de un corpus, la creaci´on de una gram´atica para un ´

ambito espec´ıfico no es un proceso muy costoso, pero mantenerla en el tiempo pue- de volverse complicado si esta crece desproporcionadamente. Este m´etodo tambi´en asegura la generaci´on de frases v´alidas siempre que la gram´atica no sea err´onea.

La otra aproximaci´on se basa en el uso de m´etodos estad´ısticos o de modelos de redes neuronales para la generaci´on de nuevas frases en base al corpus. Los m´etodos estad´ısticos generan los n-gramas m´as probables en cada situaci´on seg´un el corpus [43]. Un ejemplo de este tipo de modelos ser´ıa la aplicaci´on con redes de Markov o un k-NN, que construyen modelos de la probabilidad de aparici´on de determinadas palabras tras un n-grama, con lo que van generando frases similares, o en ocasiones iguales, a las proporcionadas en el corpus. La mayor pega de estos sistemas es que si no est´an adecuadamente entrenados, las frases que generan pueden ser err´oneas o carecer de sentido. Esta es la raz´on de que hagan falta corpus extensos y una evaluaci´on minuciosa del sistema para comprobar que la generaci´on de lenguaje es aceptable y no proporciona respuestas incoherentes.

Las estrategias de generaci´on m´as recientes en este ´ambito se basan en emplear redes neuronales profundas o recurrentes para la generaci´on de respuestas en base a la frase de entrada [59]. La idea es conseguir que la red aprenda la relaci´on entre los marcos de una frase con un n´umero dado de slots llenos con las frases que se pueden

Documento similar