Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND SYSTEM TO AUTOMATICALLY TRAIN A CHATBOT USING DOMAIN CONVERSATIONS
Document Type and Number:
WIPO Patent Application WO/2021/074459
Kind Code:
A1
Abstract:
The present disclosure relates to techniques for automatically training a chatbot using utterances not understood by the chatbot itself and thus improving its understanding in a fast, effective and unsupervised way. This disclosure implements techniques to update new intents, to create further new ones, and to modify the dialog manager so that these new responses can be provided. Existing intents can be updated with non-understood messages in three different ways: 1) when the user is asked to reformulate his or her request due to the chatbot not understanding the user, and the confidence of the new intent is greater than the confidence threshold, and the new detected intent is the same as the previous intent; 2) when the user accepts the response suggested by the chatbot; and 3) when the agent accepts the response suggested by the chatbot. New intents, on the other hand, can be automatically created and associated with real answers provided by human agents. These two strategies used simultaneously allow unsupervised training of a dialog system as a whole. The benefits of this approach are twofold: 1) there is no need for human intervention to improve the chatbot (unsupervised training), and 2) the variation introduced in the model comes from real data, not from utterances produced artificially by a human.

Inventors:
RICO RÓDENAS JORGE (ES)
Application Number:
PCT/ES2019/070703
Publication Date:
April 22, 2021
Filing Date:
October 16, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SIGMA TECH S L (ES)
International Classes:
G06F40/35; G06Q10/10
Foreign References:
US20160071517A12016-03-10
US10366336B22019-07-30
US20040111253A12004-06-10
Other References:
JASON BRENIER: "Amplifying User Intelligence with Chatbot Feedback Loops", 12 December 2018 (2018-12-12), XP055705555, Retrieved from the Internet [retrieved on 20200616]
ASHKTORAB ZAHRA ET AL: "Resilient Chatbots Repair Strategy Preferences for Conversational Breakdowns", HUMAN FACTORS IN COMPUTING SYSTEMS, ACM, 2 PENN PLAZA, SUITE 701NEW YORKNY10121-0701USA, 2 May 2019 (2019-05-02), pages 1 - 12, XP058449396, ISBN: 978-1-4503-5970-2, DOI: 10.1145/3290605.3300484
BRADEN HANCOCK ET AL: "Learning from Dialogue after Deployment: Feed Yourself, Chatbot!", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 16 January 2019 (2019-01-16), XP081369264
TUR ET AL.: "Active learning for spoken language understanding", IEEE INTERNATIONAL CONFERENCE ON ACOUSTICS, SPEECH AND SIGNAL PROCESSING 2003 -ICASSP'03
Attorney, Agent or Firm:
ELZABURU, S.L.P. (ES)
Download PDF:
Claims:
REIVINDICACIONES

1 . Un método no supervisado para entrenar un sistema de diálogo, comprendiendo: recibir, mediante un procesador de lenguaje natural, un primer enunciado de un usuario, donde el primer enunciado representa una petición del usuario; determinar, mediante el procesador de lenguaje natural, una primera intención que se corresponde con el primer enunciado, donde el primer enunciado tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; comparar, mediante un procesador de lenguaje natural, el valor de confianza para la primera intención con un umbral; responder, mediante un gestor de diálogo, al usuario en respuesta a la determinación de que el valor de confianza para la primera intención es mayor que el umbral; indicar, mediante un gestor de diálogo, al usuario que repita la petición en respuesta a la determinación de que el valor de confianza de la primera intención es menor que el umbral; recibir, mediante el procesador de lenguaje natural, un segundo enunciado del usuario; determinar, mediante el procesador de lenguaje natural, una segunda intención que se corresponde con el segundo enunciado, donde la segunda intención tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado de segundo enunciado se corresponda con la intención; comparar, mediante el procesador de lenguaje natural, el valor de confianza para la segunda intención con un umbral; comparar, mediante el procesador de lenguaje natural, la primera intención con la segunda intención en respuesta a la determinación de que el valor de confianza de la segunda intención es mayor que el umbral; y actualizar la base de datos usada para el procesador de lenguaje natural con el primer enunciado, donde la base de datos es actualizada en respuesta a la determinación de que el valor de confianza de la segunda intención es mayor que el umbral y en respuesta a que la primera intención y la segunda intención coinciden.

2. El método de la reivindicación 1 que determina una primera intención además comprende determinar una o más intenciones que se corresponden con el primer enunciado, donde esa o cada una de esas intenciones tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponde con la intención; e identificar la primera intención de una o más intenciones que se corresponden con el primer enunciado, donde la primera intención tiene el valor de confianza más alto entre la una o más intenciones que se corresponden con el primer enunciado.

3. El método de la reivindicación 1 , en el que el gestor de diálogo se implementa mediante una máquina de estados finitos.

4. El método de la reivindicación 1 , en el que se determina una segunda intención comprende determinar además una o más intenciones que se corresponden con el segundo enunciado, donde cada una de la o las intenciones tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del segundo enunciado se corresponda con la intención; y la identificación de una segunda intención de la o las intenciones que se corresponden con el segundo enunciado, donde la segunda intención tiene el valor más alto respecto a la o las intenciones que se corresponden con el segundo enunciado.

5. El método de la reivindicación 1 comprende además la sugerencia de una respuesta al usuario como la determinación de que el valor de confianza de la segunda intención es menor que el umbral.

6. El método de la reivindicación, en el que la sugerencia a una respuesta del usuario además comprende el cálculo de puntuaciones de intenciones posibles, donde la puntuación de una intención dada es una función del valor de confianza asociado con la intención dada y una probabilidad de aparición de la intención dada en la conversación; la selección de una intención con la puntuación más alta de las intenciones posibles; y la formulación de una respuesta usando la intención seleccionada.

7. El método de la reivindicación además comprendeactualizar la intención seleccionada en la base de datos usada por el procesador de lenguaje natural con la primera intención cuando el usuario acepta la respuesta.

8. El método de la reivindicación 5 además comprendetransferir, mediante el gestor de diálogo, al usuario a una persona cuando el usuario no acepta la respuesta sugerida.

9. El método de la reivindicación 8 además comprende seleccionar a personas de un grupo de personas basándose en la intención seleccionada y transferir el usuario a la persona seleccionada. 10. Un método no supervisado para entrenar un sistema de diálogo además comprende: recibir, mediante un procesador de lenguaje natural un primer enunciado donde el primer enunciado representa una petición del usuario; determinar, mediante el procesador de lenguaje natural, una primera intención que se corresponde con el primer enunciado, donde la primera intención tiene un valor de confianza que indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; comparar, mediante el procesador de lenguaje natural, el valor de confianza de la primera intención un umbral; determinar, mediante el procesador de lenguaje natural, una intención sugerida basada en parte de la primera intención, donde la determinación de la intención sugerida es hecha en respuesta a la determinación de que el valor de confianza de la primera intención es menor que el umbral; sugerir, mediante un gestor de diálogo, una respuesta al usuario, donde la respuesta es derivada de la intención seleccionada y la sugerencia de la respuesta es hecha en respuesta a la determinación de que el valor de confianza de la primera intención es menor que el umbral; recibir mediante el gestor de diálogo una respuesta a la respuesta del usuario; y actualizar la intención sugerida en una base de datos usando el procesador de lenguaje natural con el primer enunciado cuando el usuario acepta la respuesta sugerida.

11. El método de la reivindicación 10 en el que la determinación de una primera intención comprende además determinar una o más intenciones que se corresponden con el primer enunciado usando aprendizaje automático, donde cada uno de esa o más intenciones tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; e identificar la primera intención de una o más intenciones que se corresponden con el primer enunciado, donde la primera intención tiene el valor de confianza más alto entre la o las intenciones que se corresponden con el primer enunciado.

12. El método de la reivindicación 10 en el que la determinación de la intención sugerida comprende además el cálculo de la puntuación de intenciones posibles; y la selección de una intención con la puntuación más alta de las intenciones posibles, donde la puntuación de una intención dada es una función del valor de confianza de la intención dada y la probabilidad de aparición de la intención dada en la conversación.

13. El método de la reivindicación 10 además comprende transferir, mediante el gestor de diálogo, al usuario a la persona cuando el usuario no acepta la respuesta sugerida.

14. El método de la reivindicación 13 comprende además generar, mediante el gestor de diálogo, posibles respuestas para la persona usando el primer enunciado y el contexto del primer enunciado en la conversación en curso; y presentar a la persona, mediante el gestor de diálogo las posibles respuestas generadas.

15. El método de la reivindicación 14 comprende además la generación de posibles respuestas calculado puntuaciones para intenciones posibles, donde la puntuación para una intención dada es una función del valor de confianza asociado con la intención dada y la probabilidad de aparición de la intención dada en la conversación.

16. El método de la reivindicación 14 comprende además: recibir, mediante el gestor de diálogo, un input de la persona en respuesta a la presentación de las posibles respuestas generadas; comparar, mediante el gestor de diálogo, el input con las posibles respuestas generadas; determinar que el input es una respuesta seleccionada de las posibles respuestas generadas; identificar una intención asociada con la respuesta seleccionada; y actualizar la intención identificada en la base de datos usada por el procesador de lenguaje natural con el primer enunciado.

17. Un método no supervisado para el entrenamiento de un sistema de diálogo comprende: conectar, mediante un gestor de diálogo, un usuario de un sistema de diálogo con una persona; recibir, mediante un gestor de diálogo, un primer enunciado del usuario, donde el primer enunciado representa una petición del usuario; generar, mediante un gestor de diálogo, respuestas posibles para la persona usando el primer enunciado y el contexto del primer enunciado en una conversación en curso presentar, mediante un gestor de diálogo las posibles respuestas generadas a la persona recibir, mediante un gestor de diálogo, una nueva respuesta de la respuesta donde la nueva respuesta no coincide con ninguna de las posibles respuestas generadas; y actualizar el modelo usado por el gestor de diálogo con la nueva respuesta.

18. El método de la reivindicación 17 comprende además: calcular, mediante el gestor de diálogo una métrica de similitud semántica entre la nueva respuesta y las respuestas en el modelo usado por el gestor de diálogo; identificar, mediante el gestor de diálogo, una respuesta particular en el modelo que es las más parecida a la respuesta nueva; y actualizar, mediante el gestor de diálogo, el modelo usado por el gestor de diálogo con la nueva respuesta cuando la métrica de similitud semántica entre la nueva respuesta y la respuesta particular está por debajo de un umbral máximo y por encima de un umbral mínimo.

19. El método de la reivindicación 17 comprende además: determinar, mediante un procesador de lenguaje natural, una primera intención que se corresponde con la primera intención, donde la primera intención tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; comparar, mediante el procesador de lenguaje natural, el valor de confianza de la primera intención con un umbral; y conectar, mediante el gestor de diálogo, al usuario con la persona en respuesta a la determinación de que el valor de confianza de la primera intención está por debajo del umbral.

20. El método de la reivindicación 17 comprende además responder, mediante el gestor de diálogo, al usuario en respuesta a la determinación de que el valor de confianza de la primera intención es mayor que el umbral.

21 . El método de la reivindicación 17 comprende además generar posibles respuestas calculando puntuaciones para intenciones posibles, donde la puntuación de una intención dada es una función del valor de confianza asociada con la intención dada y la probabilidad de aparición de la intención dada en la conversación.

22. El método de la reivindicación 17 comprende además actualizar, mediante el gestor de diálogo, el modelo usado por el gestor de diálogo, donde el modelo es actualizado cuando la nueva respuesta coincide con una de las posibles respuestas generadas.

23. El método de la reivindicación 17 en el que el modelo usado por el gestor de diálogo es además definido como una máquina de estados finitos.

Description:
MÉTODO Y SISTEMA NO SUPERVISADO PARA ENTRENAR UN CHATBOT USANDO CONVERSACIONES DENTRO DE UN DOMINIO

ÁMBITO

[1] La presente divulgación está relacionada con técnicas para entrenar de forma automática un chatbot usando enunciados no entendidos por el mismo chatbot y de este modo mejorando su capacidad de entendimiento de una forma rápida, efectiva y no supervisada.

ANTECEDENTES

[2] Los actuales sistemas de diálogo basados en métodos de aprendizaje automático requieren una gran cantidad de información etiquetada manualmente para poder trabajar con una alta tasa de acierto. Este recurso humano vuelve el desarrollo de estos sistemas lento y caro. Muchos pequeños proyectos no son viables por este motivo.

[3] Algunos trabajos llevados a cabo ponen el foco en minimizar este esfuerzo humano introduciendo distintos enfoques supervisados o semi supervisados. Los métodos descritos por Tur et al. en “Active learning for spoken language understanding (en IEEE International Conference on Acoustics, Speech and Signal Processing 2003 — ICASSP’03 — ), usan el valor de confianza de un clasificador preentrenado para reducir la cantidad de datos a revisar por anotadores en una fase de etiquetado. Esta patente también utiliza los valores de confianza para actualizar las intenciones, pero lo hace durante la fase de despliegue, no en una fase de post-procesado, y usando además un enfoque supervisado.

[4] La patente de Estados Unidos número 2004/0111253 usa métodos de agrupamiento automático para reducir la cantidad de información a revisar por anotadores humanos. No obstante, todavía necesita anotadores para reentrenar el sistema, por lo que no es un método no supervisado.

[5] Otro enfoque utiliza la web semántica para hacer entrenamiento no supervisado de un módulo de entendimiento. Recoge datos estructurados de páginas como www.freebase.com . Esta solución podría funcionar bien con un chatbot generalista, pero no con un chatbot enmarcado en un dominio específico definido por un cliente. Los chatbots muy definidos por el cliente necesitan ser entrenados con conocimiento del dominio.

[6] Preguntar por una confirmación cuando el valor de confianza es bajo es otro conocido método para entrenar un sistema de diálogo. Este método permite reentrenar un clasificador que está en uso, pero está limitado a actualizar intenciones existentes, no puede crear nuevas intenciones.

[7] El método propuesto en esta divulgación permite no solo actualizar intenciones existentes, sino, a diferencia de los métodos anteriores, la creación de nuevas intenciones además de la modificación del gestor de diálogo para incorporar esas intenciones y nuevas respuestas (obtenidas por agentes humanos guiados de forma automática) durante la conversación con el usuario.

[8] Esta sección proporciona información sobre antecedentes relacionados con la presente divulgación, no es necesariamente un estado del arte.

SUMARIO

[9] Esta sección proporciona una presentación general de la divulgación y no una explicación exhaustiva de su alcance total y de todas sus características.

[10] Se presentan distintas técnicas no supervisadas para entrenar un sistema de diálogo. Por un lado, las técnicas de entrenamiento incluyen: recibir un primer enunciado del usuario, donde el primer enunciado representa una petición del usuario; determinar una primera intención que se corresponde con el primer enunciado, donde la primera intención tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; comparar el valor de confianza de la primera intención con un umbral; responder al usuario cuando el valor de confianza es mayor que el umbral; pedir al usuario, a través del gestor de diálogo, que repita su petición cuando el valor de confianza de la primera intención sea menor que el umbral; recibir un segundo enunciado del usuario; determinar una segunda intención que se corresponde con el segundo enunciado, donde la segunda intención tiene una valor de confianza y el valor de confianza indica la probabilidad con la que el significado del segundo enunciado se corresponde con la intención; comparar el valor de confianza de la segunda intención con el umbral; comparar la primera intención con la segunda intención como respuesta a la determinación de que el valor de confianza de la segunda intención supera el umbral; y actualizar la base de datos usada por el procesador de lenguaje natural con el primer enunciado, donde la base de datos es actualizada como respuesta a la determinación de que el valor de confianza de la segunda intención supera el umbral y en respuesta a la coincidencia de la primera y la segunda intención.

[11] En una realización, la primera intención es establecida determinando una o más intenciones que se corresponden con el primer enunciado, donde cada una de esas intenciones tiene un valor de confianza y ese valor de confianza indica la probabilidad de que el significado de la primera intención se corresponda con el primer enunciado, donde la primera intención tiene el valor más alto de confianza de entre la o las intenciones con las que se corresponde el primer enunciado.

[12] Similarmente, la segunda intención es determinada identificando una o más intenciones que se corresponden con la segunda intención, donde cada una de la o las intenciones tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del segundo enunciado se corresponda con la intención; e identificando una segunda intención de la o las intenciones que se corresponden con el segundo enunciado, donde la segunda intención tiene el valor de confianza más altode entre la o las intenciones que se corresponden con el segundo enunciado.

[13] Las técnicas de entrenamiento pueden incluir además: sugerir una respuesta al usuario como respuesta a la determinación de que el valor de confianza para la segunda intención está por debajo del umbral. La respuesta es sugerida por el usuario calculando valores para distintas intenciones, donde el valor de una intención dada es una función del valor de confianza asociada con la intención dada y la probabilidad de aparición de una intención dada en la conversación; seleccionar una intención con el valor más alto de las posibles intenciones; y formular una respuesta usando la intención seleccionada. Cuando el usuario acepta la respuesta sugerida, la intención seleccionada es actualizada en la base de datos usada por el procesador de lenguaje natural con el primer enunciado. Cuando el usuario no acepta la respuesta sugerida, el usuario es transferido a una persona por el gestor de diálogo. La persona puede ser elegida de un grupo de personas basándose en la intención seleccionada y el usuario transferido a la persona seleccionada.

[14] Por otro lado, las técnicas de entrenamiento incluyen: recibir mediante un procesador de lenguaje natural una primera intención de un usuario, donde el primer enunciado representa una petición del usuario; determinar mediante un procesador de lenguaje natural una primera intención que se corresponda con el primer enunciado, donde el primer enunciado tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; comparar mediante el procesador de lenguaje natural el valor de confianza de la primera intención con el umbral; determinar mediante el procesador de lenguaje natural una intención sugerida basándose en parte en la respuesta a la determinación que el valor de confianza de la primera intención está por debajo del umbral; sugerir mediante el gestor de diálogo una respuesta al usuario, donde la respuesta es derivada de la intención seleccionada y la propuesta de respuesta es hecha como respuesta a la determinación de que la confianza de la primera intención está por debajo del umbral; recibir mediante el gestor de diálogo una contestación a la respuesta del usuario y actualizar la intención sugerida en la base de datos por el procesador de lenguaje natural con el primer enunciado cuando el usuario acepta la respuesta sugerida. Cuando el usuario no acepta la respuesta sugerida, el usuario es transferido a una persona mediante el gestor de diálogo.

[15] En una realización, la primera intención es determinada identificando una o más intenciones que se corresponda con el primer enunciado usando aprendizaje automático, donde cada una de la o las intenciones tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; e identificando la primera intención de una o más intenciones que se corresponde con el primer enunciado, donde la primera intención tiene el valor más alto entre la o las intenciones que se corresponden con el primer enunciado.

[16] En algunas realizaciones, una intención sugerida es determinada calculando puntuaciones para posibles intenciones y seleccionando una intención con la puntuación mayor, donde la puntuación es una función del valor de confianza asociado con la intención dada y la probabilidad de aparición de la intención en la conversación.

[17] En otra realización, el método puede además generar mediante el gestor de diálogo posibles respuestas para la persona usando el primer enunciado y el contexto del primer enunciado de la conversación en curso y presentando, mediante el gestor de dialogo, las posibles respuestas generadas a la persona. Las respuestas posibles pueden ser generadas calculando la puntuación de las posibles intenciones, donde la puntuación es una función del valor de confianza asociado con la intención dada y la probabilidad de aparición de la intención dada en la conversación.

[18] En más realizaciones, el método puede incluir recibir mediante el gestor de diálogo un input de la persona como respuesta a la presentación de respuestas posibles generadas; comparar mediante el gestor de diálogo que el input es una respuesta de las posibles respuestas generadas; identificar una intención asociada con la respuesta seleccionada; y actualizar la intención identificada en la base de datos usada por el procesador de lenguaje natural con el primer enunciado.

[19] También por otro lado, las técnicas de entrenamiento incluyen: conectar mediante el gestor de diálogo a un usuario de sistema de diálogo con una persona; recibir mediante el gestor de diálogo un primer enunciado del usuario donde el primer enunciado representa una petición del usuario; generar mediante el gestor de diálogo respuestas posibles para la persona usando el primer enunciado y el contexto del primer enunciado en la conversación en curso; presentar mediante el gestor de diálogo posibles respuestas generadas para la persona; recibir mediante el gestor de diálogo una nueva respuesta de la persona, donde la nueva respuesta no coincide con ninguna otra de las posibles respuestas generadas; y actualizar el modelo usado por el gestor de diálogo con la nueva respuesta.

[20] El método puede además incluir: calcular mediante el gestor de diálogo una métrica de similitud semántica entre la nueva respuesta y las respuestas del modelo que usa el gestor de diálogo; identificar mediante el gestor de diálogo una respuesta particular en el modelo que es las más parecida a la nueva respuesta; y actualizar mediante el gestor de diálogo el modelo usado por el gestor de diálogo con la nueva respuesta cuando la similitud semántica entre la nueva respuesta y la respuesta particular está por debajo del un umbral máximo y supera un umbral mínimo.

[21] El método puede también incluir: determinar por el procesador de lenguaje natural una primera intención que se corresponde con el primer enunciado, donde la primera intención tiene un valor de confianza y el valor de confianza indica la probabilidad de que el significado del primer enunciado se corresponda con la intención; comparar mediante el procesador de lenguaje natural el valor de confianza de la primera intención con un umbral; y conectar mediante el gestor de diálogo al usuario con una persona como respuesta a la determinación de que el valor de confianza de la primera intención está por debajo del umbral.

[22] En una realización el gestor de diálogo responde al usuario en respuesta a la determinación de que el valor de confianza supera el umbral.

[23] En alguna realización las respuestas posibles son generadas calculando puntuaciones para la posibles intenciones, donde la puntuación de una intención dada es una función de la confianza asociada con una intención dada y la probabilidad de aparición de la intención dada en la conversación.

[24] En otra realización, cuando la respuesta coincide con una de las posibles respuestas generadas, el modelo usado por el gestor de diálogo es actualizado por el gestor de diálogo.

[25] Áreas adicionales de aplicabilidad se harán evidentes a partir de la descripción proporcionada aquí. La descripción y los ejemplos específicos de este resumen son únicamente para fines ilustrativos y no están destinados a limitar el alcance de la presente divulgación. FIGURAS

[26] Las figuras descritas aquí tienen meramente fines ilustrativos con respecto a realizaciones seleccionadas y no abarcan todas las realizaciones posibles, ni están destinadas a limitar el alcance de la presente divulgación.

[27] La figura 1 es un diagrama de un ejemplo de un sistema de diálogo.

[28] La figura 2 es un diagrama que ilustra cómo funciona un clasificador en un procesador de lenguaje natural.

[29] La figura 3 es un diagrama de flujo que ilustra un ejemplo de un proceso de clasificación.

[30] La figura 4 es un diagrama de un ejemplo de máquina de estados finitos.

[31] La figura 5 es un diagrama de flujo que ilustra una implementación de las técnicas de entrenamiento no supervisado expuestas en esta divulgación.

[32] Los números de referencia correspondientes indican partes análogas en las diversas vistas de las figuras.

DESCRIPCIÓN DETALLADA

[33] A continuación se describe un ejemplo de implementación de forma más completa haciendo referencia a las figuras adjuntas.

[34] La figura 1 ilustra un ejemplo de sistema de diálogo 10. La mayoría de los sistemas automáticos de diálogo 10 pueden descomponerse en al menos dos modelos: un módulo de entendimiento de lenguaje natural o procesador de lenguaje natural 12 y un gestor de diálogo 14 para guiar la conversación.

[35] En muchos sistemas de diálogo, el módulo de entendimiento de lenguaje natural (NLU) 12 incluye un clasificador automático (FIG. 2). Dado un conjunto finito de categorías (en este caso intenciones), un clasificador automático resuelve el problema de identificar a qué categoría pertenece una nueva observación basándose en un gran conjunto de datos de entrenamiento que contienen observaciones cuya categoría es conocida previamente. Por esta razón la clasificación se considera un método supervisado de aprendizaje automático.

[36] La figura 2 muestra cómo funciona un clasificador estándar. En este ejemplo, el clasificador emplea dos fases: preparación de modelo (entrenamiento) como se indica en 21 y uso del modelo (etiquetado) como se indica en 22. Ambos métodos requieren un extractor de rasgos (FIG. 2, bloque 7). En un ejemplo posible, el extractor de rasgos puede estar basado en un algoritmo llamado Bag of Words (BoW), si bien otras implementaciones de este extractor de rasgos son también contempladas en esta divulgación.

[37] Con el fin de ilustrar, se describe un ejemplo de extracción de datos en relación con la figura 3. En este ejemplo, el enunciado “quiero un teléfono móvil y lo quiero ahora” puede ser representado como una matriz asociativa con los valores de la siguiente tabla. palabra Frecuencia de aparición quiero 2 móvil 1 teléfono 1 ya 1

[38] Las palabras gramaticales altamente frecuentes como “un, y, lo, de, en” son previamente borradas en 31. A continuación, esta representación es transformada en un vector numérico en los pasos 32 y 33. Supongamos que definimos un vocabulario con solo estas diez palabras: “hola, adiós, quiero, teléfono, móvil, tablet, internet, televisión, hoy, ahora.” En este ejemplo la representación vectorial del último enunciado sería: [0, 0, 2, 1 , 1 , 0, 0, 0, 1]. El input del algoritmo de clasificación en la fase de etiquetado consiste en muchos de estos vectores asociados con una etiqueta de intención. En este caso, la intención podría ser “quiero_un_móvil”.

[39] En un posible ejemplo, el algoritmo Support Vector Machine es usado para proyectar estos vectores como puntos multidimensionales en un espacio buscando el hiperplano óptimo que los separa. Una vez entrenado el modelo, podemos clasificar un nuevo enunciado (FIG. 2, fase de etiquetado) calculando el subespacio en el que cae. En otras palabras, el algoritmo SVG predice la intención de un nuevo enunciado, pero puede calcular también la distancia desde ese punto a la frontera. Este valor puede servir como índice de confianza. No obstante, para calcular la probabilidad de que un enunciado dado pertenezca a cierta categoría, necesitamos usar el método llamado Platt scaling, que está descrito por Proceedings of the 22nd international conference on Machine learning. ACM (2005), para convertir esta distancia a valores entre 0 y 1. Cuando la confianza de la intención con mejor puntuación supera cierto umbral, el sistema entiende el enunciado. Este umbral puede establecerse de forma empírica dependiendo del número de intención del modelo NLU. Otros tipos de algoritmos de clasificación también caen dentro del ámbito ampliado de esta divulgación.

[40] Si el sistema entiende el enunciado, se selecciona una respuesta automática mediante el gestor de diálogo (FIG. 1 , bloque 3). Dependiendo del caso de estudio, el gestor de diálogo puede diseñarse de varias formas, por ejemplo basado en una máquina de estados finitos, usando rellenado de formularios o marcos, basado en un enfoque de estado de la información (interpretando el lenguaje en términos de actos de diálogo), o mediante un enfoque estadístico (aprendizaje automático de las secuencias de acciones). En la implementación del ejemplo, se usa una máquina de estados finitos (FSM) como se ve en la figura 4. En este ejemplo, las respuestas son los estados en el FSM y las transiciones son las intenciones del usuario en el FSM.

[41] Por otro lado, si la confianza está por debajo del umbral, entonces el chatbot devuelve normalmente un mensaje de no entendimiento. Por ejemplo se le pide al usuario repetir su petición como se indica en el bloque 6 de la FIG. 1 .

[42] Para evitar un bucle en el caso de varios enunciados no entendidos, muchos chatbots permiten un mecanismo de transferencia a un agente humano (por ejemplo, cuando hay dos enunciados no entendidos consecutivos). El modelo de chatbot presentado en esta divulgación incorpora un mecanismo de este tipo y adicionalmente usa las respuestas del agente para reconocer intenciones existentes o nuevas y modificar el chatbot de una forma completamente no supervisada como se describirá más detalladamente abajo.

[43] Uno de los objetivos de esta divulgación es usar los enunciados no entendidos por el chatbot para enriquecer tanto la base de datos usada por el procesador de lenguaje natural como el modelo (es decir el FSM) usado por el gestor de diálogo.

[44] En una realización sencilla, la base de datos usada por el procesador de lenguaje natural puede consistir en una lista de pares (enunciado, intención) como se muestra en la siguiente tabla. Actualizar esta base de datos consistiría simplemente en añadir una entrada a la tabla.

Enunciado Intención

Hola saludo

¿Qué tal? saludo Buenos días saludo

Quiero un móvil quiero_un_móvil

Quiero un teléfono quiero_un_móvil nuevo

Quiero un celular quiero_un_móvil

Cuando el clasificador es entrenado con nueva información, el modelo total se vuelve más robusto y mejora su entendimiento de nuevas variantes.

[45] La figura 5 ilustra una implementación de ejemplo de las técnicas de entrenamiento no supervisadas presentadas en esta patente. Concretamente, se describen tres técnicas distintas para añadir nuevos ejemplos (enunciados) a una intención existente. Los números de referencias a continuación están asociados con la FIG. 5.

[46] En primer lugar, se recibe un mensaje de chatbot (1) en 51. Este mensaje puede ser el primero de la conversación o partir de una conversación más larga. La respuesta (2) al mensaje de chatbot (por ejemplo, el primer enunciado) del usuario es enviado a 52, al módulo de entendimiento de lenguaje natural. El módulo NLU por su parte produce una lista de intenciones con valores de confianza asociados, como se indica en 54.

[47] La intención de la lista de intenciones con el valor de confianza más alto se compara en 55 con el umbral. Si el valor de confianza es mayor que el umbral, el enunciado (2) es enviado al gestor de diálogo 56, el cual genera una respuesta al usuario (7) como se indica en 57. Esta situación significa que el NLU entiende la intención expresada en el enunciado del usuario e implica que la conversación no es utilizada para actualizar la base de datos de entrenamiento.

[48] Por otro lado, si el valor de confianza de la intención con mejor puntuación está por debajo del umbral, entonces el chatbot pide al usuario que repita el enunciado en 58. En otras palabras, el chatbot pide al usuario que reformule su petición.

[49] La nueva respuesta (9) del usuario (es decir, el segundo enunciado) también es enviado al módulo NLU como se indica en 60. Una vez más, el módulo NLU produce una lista de intenciones para la nueva respuesta (9) en 61 y compara la intención con el valor de confianza más alto con el umbral en 62. Si el valor de confianza de la intención con mayor puntuación supera al umbral, entonces la intención con mejor puntuación de 54 es comprada con la intención con mejor puntuación de 61 , como se indica en 63. Si las dos coinciden, entonces podemos asumir con suficiente grado de certeza que los mensajes del usuario (2) y (9) son semánticamente equivalentes. En otras palabras, el segundo enunciado del usuario (9) podría ser una versión corregida del primer enunciado del usuario (2). En este caso, podemos actualizar la base de datos de intenciones para entrenamiento añadiendo el primer enunciado del usuario (2) etiquetado con la intención en (11).

Ejemplo: (En los siguientes ejemplos asumimos que el umbral es 0,3)

Chatbot: ¿En qué puedo ayudarte? (1)

Usuario: Quiero un celular (2)

{int: quiero_un_móvil, conf: 0,25} (4)

C: ¿Puedes repetir, por favor?

U: Quiero un móvil, por favor (9)

{int: quiero_un_móvil, conf: 0,60} (11)

{actualizar intención quiero_un_móvil con “Quiero un celular”}

C: ¿Te interesa alguna marca?

[50] Por otro lado, si las intenciones de (4) y (11 ) son diferentes, es decir si no coinciden, la intención (11 ) es enviada al gestor de diálogo (6) en 56 y se genera una respuesta (7) en 57. En este último caso, no podemos asumir que los mensajes del usuario (2) y (9) son equivalentes. Podría darse el caso de que el usuario no repitiera el mensaje sino que pidiera algo diferente. Consecuentemente, los mensajes etiquetados en el siguiente ejemplo no deberían formar parte de la base de datos de entrenamiento.

Ejemplo:

C: ¿En qué puedo ayudarte? (1)

Usuario: Quiero un celular (2)

{int: quiero_un_móvil, conf: 0,25} (4)

C: ¿Puedes repetir, por favor?

U: Quiero hablar con una persona (9)

{int: quiero_tranferir, conf: 0,80} (11 ) En muchos servicios de chatbot la segunda vez que el módulo NLU no entiende un mensaje del usuario, la conversación es transferida a un agente humano.

[51] Antes de transferir a un agente, si el valor de confianza de la intención con mejor puntuación (11) está por debajo del umbral, se le envía al usuario una respuesta sugerida en 65 mediante el módulo (15) basándose en la intención que tienen la mayor probabilidad de ser correcta. El módulo de sugerencias (15) combina información del NLU y de los registros históricos de conversaciones previas con otros usuarios para encontrar el candidato óptimo de la manera descrita a continuación. La intención más probable es aquella que obtiene el resultado más alto después de multiplicar su valor de confianza con la probabilidad de aparición de la intención que aparece después de la última respuesta producida por el chatbot. Esta probabilidad es obtenida a partir de un corpus de conversaciones previas.

[52] En el ejemplo, la probabilidad de aparición de una intención en un cierto punto de la conversación puede ser calculada dinámicamente a partir del análisis de los registros de la conversaciones previas con otros usuarios. Esta probabilidad se calcula usando estadísticas sencillas, por ejemplo contando el número de veces que una intención sigue a la respuesta dada en los registros históricos. Si no hay conversaciones previas, las intenciones se marcan como equiprobables.

Ejemplo:

C: ¿En qué puedo ayudarte? (1)

Usuario: Quiero un celular (2)

{int: quiero_un_móvil, conf: 0,25} (4)

C: ¿Puedes repetir, por favor?

U: Un celular por favor(9)

{int: quiero_tranferir, conf: 0,28} (11 )

C: ¿Quieres quizá comprar un móvil? (16)

En esta conversación la mejor intención predicha (por debajo del umbral) es quiero_transferir, pero el módulo de sugerencias IntSugg (15) utiliza “quiero_un_móvN” para construir su sugerencia porque esta intención recibe una puntuación más alta [53] La siguiente tabla resume los cálculos hechos por el módulo IntSugg en este punto de la conversación.

INT CONF PROB PUNT quiero_transferir 0.28 0.30 0.084 quiero_un_móvil 0.20 0.58 0.116 consultarjva 0.13 0.10 0.013 saludo 0.12 0.02 0.002 afirmación 0.11 0 0

En esta tabla, INT se refiere a una intención particular; CONF significa la confianza asociada con esta intención para (9); y PROB significa la probabilidad de aparición de INT después del mensaje (1 ) en los registros de conversaciones del chatbot. En la anterior tabla la primera columna indica que PROB es 0,30, por lo tanto solo el 30 por ciento de las intenciones registradas previamente después del enunciado del chatbot “¿En qué puedo ayudarte?” fueron quiero_transferir; y PUNT es el producto de CONF y PROB. [54] El módulo IntSugg (15) por lo tanto toma la intención con el valor más alto de PUNT, en este ejemplo el segundo de la lista (pese a que el primero tiene mayor valor de confianza) y la usa para componer una sugerencia de respuesta. De esta manera podemos corregir posibles errores en los datos usados para entrenar el NLU con información esperada, obtenida de datas derivados del uso real del chatbot. [55] A continuación, si el usuario acepta la sugerencia (condición 17), la intención en (11) es usada para actualizar la base de datos de entrenamiento del NLU (14) con el mensaje del usuario (9) en 64 y la intención es propagada al gestor de diálogo para encontrar la mejor respuesta (6) en 56.

[56] Por otro lado, si el usuario no acepta la sugerencia, la conversación es transferida a un agente humano, quien intentará entender la intención real del usuario y enviarle una respuesta. En algunas implementaciones la información del NLU puede ser usada para redirigir la conversación al agente más apropiado. Esto es, el agente es seleccionado de un grupo de agentes basándose en la intención seleccionada. En muchos servicios de cali center, hay agentes más especializados en resolver ciertos temas específicos. Adicionalmente, otra manera para encontrar el agente más apropiadopuede ser calculada usando los registros de la conversación.

[57] En la realización del ejemplo, un modulo intermediario (18) entre la máquina y el humano que puede leer la información del módulo IntSugg (15) es responsable de encontrar el agente más capaz de continuar la conversación. Si la probabilidad de la segunda intención con mejor puntuación está por encima de un umbral definido, el modulo intermediario puede encontrar el agente que ha resuelto más conversaciones empezadas con esa intención y transferir la conversación a este.

[58] En este punto, uno puede todavía predecir la intención del usuario usando la respuesta generada por el agente humano.

Ejemplo:

C: ¿En qué puedo ayudarte? (1)

U: un teléfono (2)

C: ¿Puedes repetir por favor? (8) U: un teléfono por favor (9)

C: ¿Quizá quieres saber nuestro número de teléfono? (16)

U: No (17-No)

C: Espera un minuto voy a transferirte a un agente (18)

C: ¿Te interesa alguna marca? (7) Continuando con este ejemplo, supongamos que la información de IntSugg después de (9) es la siguiente:

INT CONF PROB PUNT consultar_teléfono 0.28 0.30 0.084 quiero_un_movil 0.14 0.58 0.081 consultarjva 0.11 0.10 0.010 saludo 0.10 0.02 0.002 afirmación 0 0 0 [59] Después de (16) el módulo de sugerencia de respuestas (17) selecciona las intenciones cuya probabilidad (PROB) de aparición en este punto de la conversación sea mayor que cero y las manda al gestor de diálogo para generar estas posibles respuestas.

INT RESP consultar_teléfono Nuestroteléfono es el 0441 quiero_un_movil ¿Teinteresaalgunamarca? consultarjva Todos los precios incluyen IVA saludo ¿Enquépuedoayudarte? afirmación Lo siento, ¿puedesrepetir?

[60] El agente seleccionado por el módulo (18) puede ahora seleccionar una respuesta de la última tabla si alguna de ellas es adecuada para responder a (9). En el anterior ejemplo, la respuesta seleccionada fue “¿Te interesa alguna marca?”. Una vez que el agente ha seleccionado una respuesta de la lista, el sistema busca la intención que ha podido desencadenar esa respuesta (20) para actualizar las base de datos del NLU. Para actualizar la base de datos del NLU, el sistema tiene que encontrar la transición en el FSM que conecta la última respuesta automática. Haciendo referencia a la FIG. 4. La respuesta seleccionada “¿Te interesa alguna marca?” (estado 9) está conectada con la intención “quiero_un_móvN”; por lo que “quiero un móvil” es la intención que el sistema está buscando. En este ejemplo, asumimos que el FSM está construido de una manera apropiada en la que no se permite que dos estados estén conectados directamente por más de una transición. En otras palabras, en la FIG.4, el estado 1 (¿En qué puedo ayudarte?) debería no estar conectado con 15 (Tienes que seguir este enlace) por dos caminos diferentes (2 y 14). Si esto sucede, resultaría imposible recuperar automáticamente la intención, conociendo únicamente la última respuesta (estado).

[61] El método automático para actualizar el FSM con nuevas intenciones presentado a continuación impide a los agentes producir esta configuración. En el último ejemplo, la única transición en el FSM de la FIG. 4 que conecta “¿En qué puedo ayudarte?”, con “¿Te interesa alguna marca?” es la intención “quiero_un_móvN”. Una vez que el usuario acepta la sugerencia de 66, la intención recuperada es actualizada con el mensaje de usuario (14) en 64. [62] Si no hay una respuesta adecuada en la lista, eso significa que la petición del usuario probablemente se corresponde con una nueva intención no definida todavía, y el sistema será capaz de crear una nueva intención asociada con esa petición (28) y actualizar la base de datos NLU.

[63] Pero antes de hacer eso, el agente tiene que crear una nueva respuesta (un nuevo estado en el FSM) que conectará con la respuesta previa por la intención recién creada. Si el agente no selecciona ninguna de las posibles respuestas ofrecidas por (17), tendría que escribir manualmente una nueva respuesta (21) como se indica en 71. Esta respuesta y la intención asociada con (9) podrían ser usadas para actualizar el modelo (es decir el FSM) usado por el gestor de diálogo.

[64] No obstante, la respuesta creada manualmente puede no ser útil para el gestor de diálogo. Las respuestas muy parecidas a otras ya existentes son redundantes y no deberían ser incluidas. Por otro lado, las respuestas demasiado diferentes a menudo contienen información específica del usuario y puede que no sean aplicables a otro usuario. No sería apropiado actualizar el FSM con esta información pues introduciría ruido innecesario.

[65] Para impedir que los agentes humanos introduzcan en el gestor de diálogo respuestas que son muy parecidas o muy diferentes a las que ya existen, el sistema calcula la similitud semántica entres dos respuestas en 72. Los métodos automáticos en lingüística para calcular la similitud semántica están basados en el concepto de coocurrencia. Dos palabras son semánticamente cercanas si aparecen más frecuentemente en los mismos contextos o documentos. Por ejemplo: “gato” está más cerca de “perro” que de “gasto”, aunque difiere más desde un punto de vista ortográfico.

[66] Para conseguir esto, el sistema primero transforma la palabras del texto que quiere comparar e una representación vectorial, por ejemplo usando el algoritmo Glove. Un documento de vectores Glovepreentrenado estándar tiene unas 300 dimensiones como en el siguiente ejemplo: dólares = [0.17336 -0.1091 1.5309 0.12964 0.85039 -0.43068 -0.092161 -0.93305 0.45594 0.65308 -0.60152 -0.22764...]

Cada dimensión representa una característica abstracta inferida mediante el algoritmo Glove. El número de dimensiones no está relacionado con el tamaño del vocabulario en el algoritmo BoW. El vocabulario está mejor representado cuando más dimensiones hay, no obstante 300 son suficientes para un sistema estándar. [67] Dados dos vectores, la Similitud de los Cosenos se calcula del siguiente modo:

Donde A t y S ¿ se corresponden con los vectores A y B respectivamente. Si dos palabras están muy relacionadas semánticamente. El valor de la Similitud de Cosenos se aproximará a uno, en cambio, si son muy diferentes, este valor se aproximará a cero. Se sobreentiende que otros algoritmos, como word2vec o fastText producen resultados comparables.

[68] Usando la Similitud de Cosenos, el módulo (22) calcula la similitud entre la respuesta (21) y cada una de las respuestas (estados) en el FSM y da como resultado la respuesta más similar en 73, que es aquella cuya Similitud de Cosenos es mayor.

[69] A continuación, la respuesta más similar es comparada con dos condiciones. En primer lugar, si la Similitud de Coseno (de la respuesta más parecida) es mayor que un umbral máximo (24), por ejemplo 0,9 (en otras palabras, si existe una respuesta muy parecida en el FSM). En segundo lugar, si la Similitud de Coseno está por debajo de un umbral mínimo, por ejemplo 0,2 (en otras palabras, si las respuestas existentes en el FSM son muy diferentes). Si las respuestas creadas por el agente (21) no satisfacen estas dos condiciones, esto significa que es moderadamente nueva, ni excesivamente similar, ni excesivamente nueva, y por tanto el sistema puede crear una nueva intención (29) con el mensaje de usuario (9) en 76, y actualizar un nuevo estado del FSN con la respuesta del agente (30), conectado (1 ) con la nueva intención creada, como se indica en 77. Esta nueva configuración puede ser actualizada sobre la marcha, por lo que en la nueva interacción del chatbot la nueva respuesta ya estará disponible, si fuera necesario, para los agentes. Por añadidura, los nuevos enunciados pueden incrementar los ejemplos asociados por las intenciones relacionadas.

[70] En contraste, si la Similitud de Coseno es mayor que el umbral máximo (24), entonces el sistema sugiere al agente, antes de continuar con el proceso, que existe una respuesta muy similar en el sistema (31 ) en 81 . Por ejemplo.

El usuario dice: Quiero pagar en euros.

El agente escribe: Solo está permitido el pago en dólares.

El sistema sugiere: Hay una respuesta muy similar en el sistema “Solo puedes pagar en dólares”, ¿quieres decir eso mismo? [71] Si el agente acepta la sugerencia (condición 32) el sistema retorna a (20) para buscar la intención que desencadena esa respuesta y la actualiza con el enunciado. Si el agente no acepta esa sugerencia, la respuesta nueva del agente es enviada al usuario en 78 pero el FSM no es actualizado ni se crea ninguna intención nueva.

[72] Por otro lado, si la Similitud de Coseno está por debajo del umbral mínimo (25), el módulo (26) sugiere una versión alternativa de la nueva respuesta (21) que satisface las condiciones de similitud como se indica en 83. Distintos enfoques pueden ser usados para generar automáticamente esta nueva versión de la respuesta. Uno de esos enfoques es utilizar un método de resumen automático basado en traducción estadística automática (SMT). Otros métodos para llevar a cabo el resumen pueden ser también usados, como TextRank, que extrae piezas o frases en el texto original que son informativamente más importantes.

[73] Los programas estándar de SMT, como Moses, usan una tabla con frases en dos idiomas diferentes para entrenar sus modelos. De un modo similar, para entrenar un modelo de resumen automático, necesitamos proporcionar una tabla con una gran cantidad de textos y sus resúmenes. Mediante el entrenamiento, el sistema puede aprender qué partes de un texto son prescindibles y cuáles importantes. Haciendo esto, podemos producir una respuesta semánticamente equivalente, que es más corta y más adecuada para ser introducida en el FSM. El razonamiento que hay detrás de este objetivo de introducir respuestas más cortas o sintéticas es que estas respuestas son más susceptibles de ser usadas en situaciones similares. Las respuestas largas con mucha información normalmente solo responden a una única pregunta. No tiene sentido que formen parte de un sistema automático que puede ser usado por muchos usuarios.

[74] En el siguiente ejemplo, el sistema detecta que la respuesta prevista por el agente es demasiado distinta de otras que ya existen (es demasiado larga). El módulo (26) ofrece una versión resumida del mismo.

El usuario dice: “Quiero pagar en euros”.

El agente dice: Oh, lo siento, pero por el momento lo que pides no es posible tienes que ir a tu banco y cambiar el dinero a dólares”

El sistema envía al agente un mensaje como este: “Este mensaje es muy diferente al resto de mensajes del sistema. Quizá quieres decir “Tienes que cambiar el dinero a dólares”. [75] Si el agente dice que no (condición 27), entonces el mensaje es enviado finalmente al usuario (28) en 78. El FSM no se actualiza con esta información ni ninguna intención es creada.

[76] Si el agente está de acuerdo con la sugerencia corregida, el sistema crea una nueva intención en 76 y actualiza el FSM con esta respuesta (30) en 77.

[77] Eventualmente, las respuestas y las intenciones no usadas para entrenar el FSM pueden ser guardadas en un repositorio para ser revisadas por operadores humanos, pero, en cualquier caso, estas soluciones no formarían parte del sistema no supervisado descrito aquí.

[78] En resumen, esta patente implementa técnicas para actualizar nuevas intenciones, crear otras nuevas y modificar el gestor de diálogo para que esas nuevas respuestas puedan ser ofrecidas. Las intenciones existentes puede ser actualizadas con mensajes no entendidos de tres maneras diferentes: 1) las repeticiones del usuario alcanzan el umbral y las intenciones son la misma; 2) el usuario acepta las sugerencias de intención por parte del chatbot; y 3) el agente acepta las sugerencias de respuesta del chatbot. Las intenciones nuevas, por otro lado, pueden ser creadas automáticamente y asociadas con respuestas reales ofrecidas por agentes humanos. Estas dos estrategias usadas simultáneamente permiten entrenar de forma no supervisada un sistema de diálogo en su conjunto. Las ventajas de este procedimiento son que no se necesita intervención humana para mejorar el chatbot (entrenamiento no supervisado) y la variación introducida en el modelo proviene de datos reales, no de enunciados producidos artificialmente por un humano.

[79] Las técnicas descritas en esta patente pueden ser útiles para desarrollar sistemas de diálogo en alguno (aunque no exclusivamente) de los siguientes entornos. Necesidad de una implementación muy rápida con escasos recursos humanos o falta de expertos que lleven a cabo tareas de mantenimiento del sistema de diálogo. Por ejemplo, un chatbot en la página web de un pequeño negocio, como un bufete de abogados. Campos de aplicación en los que el contenido de la conversación cambia muy a menudo, como el servicio de ventas de unos grandes almacenes con periódicos cambios en el catálogo. Casos de estudio en los que, a priori, el flujo de la conversación es mayoritariamente desconocido, como por ejemplo en un servicio de emergencias.

[80] Las técnicas descritas aquí pueden ser implementadas por uno o más programas de ordenador ejecutados por uno o más procesadores. El programa incluye instrucciones ejecutables por el procesador que son almacenadas en un medio tangible no transitorio legible por un ordenador. El programa de ordenador puede también incluir datos almacenados. Ejemplos no exhaustivos de medios tangibles no transitorios legibles por un ordenador son las memorias no volátiles, los almacenamientos magnéticos y los almacenamientos ópticos.

[81] Algunas partes de la anterior descripción presentan técnicas descritas aquí en términos de algoritmos y representaciones simbólicas de operaciones sobre información. Estas descripciones algorítmicas y representaciones son los medios utilizados por los expertos en las técnicas de procesamiento de datos para transmitir de manera más eficaz la sustancia de su trabajo a otros expertos en la materia. Estas operaciones, si bien se describen funcional o lógicamente, se entiende que son implementadas por programas informáticos. Además, a veces también ha resultado conveniente referirse a estos arreglos de operaciones como módulos o por nombres funcionales, sin pérdida de generalidad.

[82] A menos que se indique específicamente lo contrario, como resulta evidente de la discusión anterior, se considera que a lo largo de la descripción, las discusiones que utilizan términos como "procesamiento" o "cómputo" o "cálculo" o "determinación" o "visualización" o similares, se refieren a acciones y procesos de un sistema informático, o dispositivo de computación electrónica similar, que manipula y transforma datos representados como cantidades físicas (electrónicas) dentro de las memorias o registros del sistema informático u otros dispositivos de almacenamiento, transmisión o visualización de información.

[83] Ciertos aspectos de las técnicas descritas incluyen pasos del proceso e instrucciones descritas aquí en forma de algoritmo. Debería tenerse en cuenta que los pasos del proceso e instrucciones descritas pueden implementarse en software, firmware o hardware, y cuando se implementan en software, pueden descargarse para residir y operar desde distintas plataformas usadas por sistemas operativos en red en tiempo real.

[84] La descripción presente también tiene que ver con el aparato para llevar a cabo las operaciones contenidas. Este aparato puede ser construido específicamente para los fines requeridos o puede consistir en un ordenador activado selectivamente o reconfigurado por un programa informático guardado en un medio legible por un ordenador que puede ser accesible por un ordenador. Tal programa informático puede ser almacenado en un medio de almacenamiento tangible legible por un ordenador, como, pero no exclusivamente, cualquier tipo de disco incluido discos flexibles, discos ópticos, CD-ROM, discos magnético-ópticos, memorias de solo lectura (ROM), memorias de acceso aleatorio (RAM), EPROM, EEPROM, tarjetas magnéticas u ópticas, circuitos integrados específicos de aplicación (ASIC) o cualquier tipo de medio adecuado para almacenar instrucciones electrónicas, todos ellosconectados a un bus del sistema informático. Además, los ordenadores a los que se hace referencia en la especificación pueden incluir un único procesador o pueden estar basados en arquitecturas diseñadas con múltiples procesadores para incrementar la capacidad de cálculo.

[85] Los algoritmos y operaciones presentados aquí no están exclusivamente relacionados con ningúnordenadoren particular u otro aparato. También se pueden usar varios sistemas con programas que siguen las enseñanzas del presente documento, o puede resultar conveniente construir aparatos más especializados para realizar los pasos requeridos por el método. La estructura requerida para una variedad de estos sistemas resultará evidente para los expertos en la materia, junto con sus variaciones equivalentes. Además, la presente divulgación no está descritahaciendo referencia a ningún lenguaje de programación en concreto. Consideramos que se puede usar una variedad de lenguajes de programación para implementar las enseñanzas de la presente divulgación como se describe en este documento.

[86] La anterior descripción de las realizaciones se ofrece con fines ilustrativos y descriptivos. No pretende ser exhaustiva ni limitar la divulgación. Los elementos o características individuales de una realización particular generalmente no se limitan a esa realizaciónen concreto, sino que, cuando corresponde, son intercambiables y pueden usarse en otraimplementación seleccionada, incluso si no están específicamente mostradas o descritas. Esto también puede variar de varias formas. Tales variaciones no deben considerarse como una desviación de la divulgación, y todas esas modificaciones están destinadas a ser incluidas dentro del alcance de la divulgación.