ES3018884T3 - Methods and systems for deploying and managing scalable multi-service virtual assistant platform - Google Patents

Methods and systems for deploying and managing scalable multi-service virtual assistant platform Download PDF

Info

Publication number
ES3018884T3
ES3018884T3 ES20827373T ES20827373T ES3018884T3 ES 3018884 T3 ES3018884 T3 ES 3018884T3 ES 20827373 T ES20827373 T ES 20827373T ES 20827373 T ES20827373 T ES 20827373T ES 3018884 T3 ES3018884 T3 ES 3018884T3
Authority
ES
Spain
Prior art keywords
information
agents
action
agent
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES20827373T
Other languages
English (en)
Inventor
Fang Cheng
Dennis Wu
Jian Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ai Software LLC
Original Assignee
Ai Software LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ai Software LLC filed Critical Ai Software LLC
Application granted granted Critical
Publication of ES3018884T3 publication Critical patent/ES3018884T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/1822Parsing for meaning understanding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/367Ontology
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • G06F16/90332Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/55Rule-based translation
    • G06F40/56Natural language generation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Animal Behavior & Ethology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

La presente invención es una plataforma escalable de asistente virtual multiservicio que permite construir un diálogo fluido y dinámico mediante la integración de respuestas a las expresiones del usuario final desde dos tipos de agentes: agentes de información y agentes de acción. Los agentes de información y los agentes de acción son gestionados por un robot maestro o árbitro. El asistente virtual puede adquirir nuevas habilidades al recibir instrucciones sobre un nuevo servicio, expresadas en forma de prerrequisitos y combinaciones de acciones. La plataforma gestiona automáticamente la generación, el arbitraje y la optimización del diálogo para evaluar los prerrequisitos del usuario final y, finalmente, tomar medidas. La presente invención permite implementar una gran cantidad de servicios utilizando un número reducido de bloques de construcción. Estos bloques de construcción pueden utilizarse para integrar una cantidad mucho mayor de servicios. A su vez, cada servicio puede entregarse mediante una amplia variedad de conversaciones con los usuarios finales, lo que permite implementar un diálogo fluido y dinámico sin problemas. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Métodos y sistemas para desplegar y gestionar una plataforma de asistente virtual multiservicio escalable Campo de la invención
Las realizaciones de la presente invención están en el campo de los sistemas de conversación en lenguaje natural y se refieren en particular a métodos y sistemas para desplegar y gestionar una plataforma de asistente virtual multiservicio escalable que pueda construir un diálogo fluido y dinámico con los usuarios finales.
Antecedentes de la invención
Las afirmaciones de esta sección pueden servir como antecedentes para ayudar a comprender la invención y su aplicación y usos, pero pueden no constituir técnica anterior.
Las interfaces de usuario (UI) de lenguaje conversacional o natural (NL) pueden incluir sistemas y métodos que pueden depender de entradas de texto, audio y/o video para permitir que los usuarios finales interactúen con sistemas informáticos utilizando lenguaje natural. El procesamiento del lenguaje natural mediante un dispositivo informático puede incluir la interpretación de texto o voz humana (por ejemplo, la entrada de un usuario recibida mediante texto, voz o video) utilizando uno o más algoritmos. En algunos ejemplos, las interfaces de usuario de lenguaje natural pueden servir para permitir interacciones más ricas y fluidas entre máquinas y humanos que las interfaces tradicionales o las interfaces gráficas de usuario (GUI) existentes, que se basan principalmente en interacciones con el teclado y el ratón.
Las plataformas de asistentes virtuales que utilizan el lenguaje conversacional o natural de los usuarios finales para automatizar tareas empresariales tienen muchas aplicaciones comerciales, como las ventas al por menor, la gestión de pedidos de clientes y muchos otros tipos de requisitos de atención al cliente en diversos sectores. Las plataformas convencionales de asistentes virtuales implementan las conversaciones en lenguaje natural con los usuarios finales de varias maneras, ya sea mediante árboles de decisión o máquinas de estado finito, enfoques basados en menús, enfoques de ranura de marco o aprendizaje automático sobre conjuntos de datos de conversaciones existentes.
En primer lugar, los enfoques basados en árboles de decisión o máquinas de estados finitos son muy rígidos en su arquitectura y exigen mucho tiempo de desarrollo por parte de los desarrolladores y expertos en la materia, requieren una tabla de árboles o máquinas de estados finitos que explota exponencialmente y, en última instancia, conducen a un sistema frágil que provoca la frustración del usuario final. En segundo lugar, para los sistemas de conversación multiservicio, los enfoques tradicionales basados en menús son igualmente muy restrictivos en cuanto a su capacidad para gestionar conversaciones naturales, son muy rígidos en sus conversaciones con los usuarios finales y también dan lugar a importantes frustraciones de los usuarios. Los enfoques de ranura de marco para conversaciones en lenguaje natural también son rígidos y, del mismo modo, no han dado lugar a sistemas de conversación flexibles. Por último, los trabajos más recientes sobre aprendizaje automático, y en concreto sobre aprendizaje profundo, en conjuntos de datos de conversaciones existentes han resultado prometedores, pero no han dado lugar a aplicaciones comerciales de éxito porque el espacio de posibles conversaciones correspondientes incluso a un pequeño conjunto de tareas empresariales explota exponencialmente.
Por lo tanto, en vista de las dificultades antes mencionadas, existe una necesidad no resuelta de proporcionar una plataforma de asistente virtual mejorada y una interfaz de lenguaje natural para las interacciones del usuario con sistemas informáticos que proporcione una experiencia de conversación flexible y fluida. Además, sería un avance en el estado del arte de los sistemas de lenguaje natural proporcionar sistemas y métodos para mejorar la experiencia de los desarrolladores de dichos sistemas, de modo que una plataforma de asistente virtual completa pueda ser implementada por expertos en la materia sin depender de una programación extensa o de costosos esfuerzos de desarrollo de software, en cuestión de horas en lugar de meses o años en comparación con los enfoques convencionales.
El documento WO2015/039105 divulga un sistema y un método para plataformas de asistentes virtuales distribuidos.
El documento US2019/044829 describe una orquestación de red de bots para proporcionar respuestas enriquecidas a solicitudes de servicio.
El documento US2019/124020 divulga sistemas y métodos de habilidades de chatbot.
En este contexto se han desarrollado diversas realizaciones de la presente invención.
Breve sumario de la invención
Un primer aspecto de la presente invención proporciona un sistema para una plataforma de asistente virtual como se recita en la reivindicación 1. Un segundo aspecto de la presente invención proporciona un medio no transitorio, legible por ordenador como se indica en la reivindicación 13. Un tercer aspecto de la presente invención proporciona un método implementado por ordenador para una plataforma de asistente virtual multiservicio como se indica en la reivindicación 14. Otros aspectos de la presente invención incluyen métodos, procesos y algoritmos que comprenden los pasos descritos en este documento, y también incluyen los procesos y modos de operación de los sistemas y servidores descritos en este documento. Otros aspectos de la presente invención incluyen servidores, dispositivos, sistemas y medios de almacenamiento no transitorios que almacenan código de programa ejecutable, que cuando es ejecutado por al menos un procesador de hardware, implementa los métodos, procesos y algoritmos descritos en el presente documento. Sin embargo, otros aspectos y realizaciones de la presente invención se harán evidentes a partir de la descripción detallada de la invención cuando se lea junto con los dibujos adjuntos.
Breve descripción de los dibujos
Las realizaciones de la presente invención descritas en el presente documento son ejemplares y no restrictivas. Las realizaciones se describirán ahora, a modo de ejemplo, con referencia a los dibujos adjuntos, en los que: La FIG.1muestra un diagrama que ilustra una arquitectura de sistema de una plataforma de asistente virtual, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.2muestra otro diagrama que ilustra una arquitectura de la plataforma de asistente virtual que tiene un masterbot y una pluralidad de agentes de información (info) y agentes de acción, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.3muestra diagramas que ilustran una conversación de muestra que comprende dos servicios y múltiples turnos de conversación, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.4muestra un diagrama que ilustra una realización de una plataforma de asistente virtual que comprende agentes de información (personalizados y preconstruidos) y agentes de acción (personalizados y preconstruidos), de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.5muestra un diagrama que ilustra una arquitectura de un agente de información, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.6muestra un diagrama que ilustra un flujo de proceso de un agente de información, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.7muestra un diagrama que ilustra un ejemplo de flujo a través de un agente de información para entender las expresiones del usuario, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.8muestra un diagrama que ilustra un flujo de ejemplo a través de un agente de información para inferir información a partir de expresiones del usuario y datos contextuales, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.9muestra un diagrama que ilustra un flujo de muestra a través de un agente de información para encuestar a un usuario en busca de información que no se puede obtener de ninguna otra manera, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.10muestra un diagrama que ilustra una arquitectura de un agente de acción, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.11muestra un diagrama que ilustra los componentes y el flujo de invocación de un agente de acción, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.12muestra un diagrama que ilustra los componentes y el flujo de invocación de un agente de acción en tiempo de ejecución, en particular ilustrando cómo un agente de acción se conecta con otro agente de acción a través de una relación de seguimiento, de acuerdo con realizaciones de ejemplo de la divulgación; La FIG.13muestra un diagrama que ilustra una arquitectura de una conexión de seguimiento de un agente de acción desencadenante que abarca dos turnos de conversación, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.14muestra un diagrama que ilustra esquemáticamente cuatro tipos ilustrativos de relaciones entre agentes de información y agentes de acción, de acuerdo con realizaciones de ejemplo de la divulgación; La FIG.15muestra un diagrama que ilustra el flujo lógico para diseñar un nuevo servicio utilizando la plataforma de asistente virtual, en efecto enseñando a la plataforma de asistente virtual a realizar una nueva habilidad, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.16muestra un diagrama que ilustra el flujo de proceso de un servicio que comprende múltiples agentes de acción, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.17muestra un diagrama que ilustra los componentes y el flujo de proceso del masterbot, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.18muestra un método de selección de agente de acción que utiliza una clasificación de ontología de conceptos y una clasificación de intención basada en texto, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.19Amuestra un diagrama que ilustra un ejemplo de clasificación de ontología de conceptos, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.19Bmuestra un diagrama que ilustra un ejemplo de clasificación de intención basada en texto, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.20muestra un diagrama que ilustra una conversación multiservicio de muestra operada por un masterbot y una pluralidad de agentes de información y agentes de acción, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.21muestra un diagrama esquemático ejemplar de una entidad informática de gestión (por ejemplo, servidor) para implementar la presente invención, de acuerdo con realizaciones de ejemplo de la divulgación; La FIG.22muestra un diagrama esquemático ejemplar de una entidad informática de usuario (por ejemplo, cliente) para implementar la presente invención, de acuerdo con realizaciones de ejemplo de la divulgación; La FIG.23muestra un diagrama de bloques ilustrativo de un algoritmo de aprendizaje automático para implementar el arbitraje y la selección de agentes de información y agentes de acción, de acuerdo con otra realización de la invención;
La FIG.24muestra un diagrama de flujo de ejemplo para entrenar el algoritmo de aprendizaje automático, de acuerdo con realizaciones de ejemplo de la divulgación;
La FIG.25muestra un diagrama de bloques ilustrativo para una plataforma de asistente virtual LINC, de acuerdo con otra realización de la invención;
La FIG.26muestra un diagrama de un enfoque ilustrativo de árbol de decisiones de técnica anterior para implementar sistemas de lenguaje natural;
La FIG.27muestra un diagrama de un enfoque ilustrativo basado en menús de la técnica anterior para implementar asistentes virtuales multiservicio;
La FIG.28muestra un diagrama de arquitectura conceptual que muestra cómo se puede implementar un nuevo servicio aprovechando y reutilizando una gran cantidad de bloques de construcción o agentes existentes; y La FIG.29muestra un diagrama de arquitectura conceptual que muestra cómo, para un caso de uso de servicios múltiples, la plataforma del asistente virtual facilita automáticamente el descubrimiento y la clasificación de agentes de acción, y cómo pueden compartirse y reutilizarse los agentes de información. Descripción detallada de la invención
1. Terminología e introducción
1.1 Terminología
"LINC" y "LINC GLOBAL" son nombres de marcas comerciales que llevan realizaciones de la presente invención y, por lo tanto, los nombres de marcas comerciales antes mencionados pueden utilizarse indistintamente en la especificación y el dibujo para referirse a los productos/servicios ofrecidos por las realizaciones de la presente invención. Estos términos pueden utilizarse en esta especificación para describir la plataforma general del asistente virtual, así como la empresa que proporciona dicha plataforma.
"Asistente virtual multiservicio" o "plataforma de asistente virtual" se refiere a una plataforma de software que puede llevar a cabo una conversación con los usuarios finales utilizando lenguaje natural para proporcionar un conjunto de servicios útiles, por ejemplo, responder una pregunta sobre el horario de atención de una tienda, verificar el estado de pedidos existentes, intercambiar un producto, etcétera.
“Asistente virtual”, “chatbot” o “bot” es el agente virtual de servicio al cliente con el que el usuario está conversando, implementado utilizando la plataforma de asistente virtual.
"Usuario" o "usuario final" se refieren a los usuarios de la plataforma de asistente virtual.
"Enunciado" o "enunciado del usuario" son entradas de un usuario final, por ejemplo, voz en un sistema de audio (por ejemplo, AMAZON ALEXA) o entrada textual en un sistema de chat.
"Entrada de usuario analizada", "entrada de usuario" o "entrada de lenguaje natural (NLI)" se refieren a enunciados del usuario que han sido procesados a través de un módulo de comprensión del lenguaje natural (NLU), descrito a continuación, para generar datos analizados por máquina. A veces, "enunciado" se utiliza como abreviatura de los enunciados del usuario que se han procesado a través del módulo NLU para convertirlos en entradas de usuario analizadas (sin tener en cuenta explícitamente el módulo NLU). Es decir, en algunos contextos, para simplificar, no se hace distinción entre "expresión del usuario" y "entrada analizada del usuario".
"Valor de información" o "unidad de información" es una información que los agentes de información pueden obtener a partir de la entrada del usuario analizada. El valor de la información puede obtenerse entendiendo el valor de la información a partir del enunciado actual, deduciéndolo de los enunciados actuales o anteriores y/o de los datos contextuales, o encuestando al usuario final, como se describe en detalle más adelante.
"Agente de información", "agente de información" o "bloque de información" es un agente o módulo de software que se especializa en obtener un valor de información a partir de la entrada del usuario. Por ejemplo, un agente de información puede determinar un número de pedido para un usuario determinado deduciendo el número de pedido a partir de una fecha de pedido dada porque sólo había un pedido para el usuario dado en la fecha de pedido dada.
"Agente de acción" o "bloque de acción" es un agente o módulo de software que está especializado en realizar una acción basada en la entrada del usuario. Por ejemplo, generar un albarán de devolución en respuesta a una solicitud del usuario para devolver un artículo de un pedido.
"Bloque de construcción", "bloque" o "agente" se refieren a los agentes de información y/o agentes de acción, o ambos, dependiendo del contexto.
Un "agente de software" o "módulo" es una subrutina o módulo de software que encapsula una función u operación bien definida y puede programarse, depurarse, activarse, desactivarse y evaluarse su rendimiento de forma independiente. Un agente de software es una estructura organizativa lógica para el código del programa. Un agente de software comprende un código de programa que puede ser activado de forma independiente varias veces y reutilizado por uno o más masterbots en diferentes implementaciones de la plataforma, con un masterbot para cada implementación de una plataforma de asistente virtual determinada. Cada implementación del masterbot puede reutilizar los agentes de información y acción entre implementaciones.
Un "masterbot" o "agente árbitro" es el agente de nivel superior responsable de la selección, activación y arbitraje de la pluralidad de agentes de información y agentes de acción.
"Conversación" es un diálogo completo entre el usuario final y el asistente virtual (chatbot) realizado en forma de lenguaje natural. Una conversación puede comprender uno o más "servicios". El límite para delimitar distintas conversaciones con un mismo usuario final suele ser el tiempo muerto. Por ejemplo, si el asistente virtual recibe el enunciado del usuario final tras una hora de inactividad, se habrá iniciado una nueva conversación.
"Servicio" se refiere a un tema o área de interés particular compartida entre el usuario final y el asistente virtual como parte de la conversación. Algunos ejemplos de servicios son comprobar el estado de un pedido, solicitar el último cupón, modificar un pedido y consultar el horario de la tienda. Un servicio puede constar de uno o más "turnos".
"Turno" se refiere a un intercambio de mensajes entre el usuario final y el asistente virtual. Por ejemplo, “¿Dónde está mi pedido?” (usuario) y “Su paquete ha sido enviado y llegará el sábado” (chatbot). En este ejemplo hay dos turnos: uno lo produce el usuario y otro lo produce el chatbot. Desde el punto de vista del asistente virtual, la atención se centra en el chatbot, ya que su principal función es responder. El emparejamiento de estos dos giros a veces se denomina "pares de adyacencia". A modo de ejemplo ilustrativo, la FIG. 3 muestra un diagrama que ilustra una conversación de muestra que comprende dos servicios y múltiples turnos de conversación.
1.2 Introducción
Esta divulgación describe la arquitectura general de LINC y destaca los tres pilares principales del sistema LINC: dos bloques de construcción (agentes de información y agentes de acción) como unidades lógicas para construir un diálogo, y un masterbot que puede coordinar los bloques de construcción y orquestar una conversación flexible y completa de extremo a extremo que es muy difícil de lograr utilizando arquitecturas y enfoques anteriores.
Mientras que una implementación completa de una plataforma de asistente virtual requiere comprensión del lenguaje natural (n Lu ), pasarelas a varios canales de conversación (como FACEBOOK MESSENGER, AMAZON ALEXA, etc. ) y gestión del estado de la aplicación, esta divulgación se centra en los aspectos de gestión de la información, generación de diálogos, ejecución de servicios y gestión general de diálogos que pueden permitir un escenario de conversación orientado a múltiples servicios. Esto es algo que los asistentes virtuales de servicio único o de definición restringida (por ejemplo, los chatbots tradicionales) no suelen abordar.
En la siguiente descripción, a efectos explicativos, se exponen numerosos detalles específicos con el fin de proporcionar una comprensión completa de la invención. Sin embargo, para un experto en la materia será evidente que la invención puede llevarse a la práctica sin estos detalles específicos. En otros casos, las estructuras, los dispositivos, las actividades y los métodos se muestran mediante esquemas, casos de uso y/o diagramas de flujo para evitar oscurecer la invención. Aunque la siguiente descripción contiene muchos detalles específicos con fines ilustrativos, cualquier experto en la materia apreciará que muchas variaciones y/o alteraciones de los detalles sugeridos están dentro del alcance de la presente invención. Del mismo modo, aunque muchas de las características de la presente invención se describen entre sí, o en conjunción con otras, un experto en la materia apreciará que muchas de estas características pueden proporcionarse independientemente de otras características. Por consiguiente, esta descripción de la invención se expone sin pérdida de generalidad y sin imponer limitaciones a la invención.
Las realizaciones de la presente invención pueden implementarse de varias maneras, incluyendo como productos de programas informáticos que comprenden artículos de fabricación, como un medio de almacenamiento legible por ordenador no transitorio que almacena códigos de programa, instrucciones ejecutables y/o similares. Varias realizaciones de la presente divulgación también pueden implementarse como métodos, aparatos, sistemas, dispositivos informáticos, entidades informáticas y/o similares. Como tal, las realizaciones de la presente divulgación pueden tomar la forma de un aparato, sistema, dispositivo informático, entidad informática, y/o similares que ejecutan instrucciones almacenadas en un medio de almacenamiento legible por ordenador para realizar ciertos pasos u operaciones. Por lo tanto, las realizaciones de la presente divulgación también pueden adoptar la forma de una realización totalmente de hardware, una realización totalmente de productos de programas informáticos y/o una realización que comprenda una combinación de productos de programas informáticos y hardware que realicen ciertos pasos u operaciones.
Con referencia a las figuras, a continuación se describen en detalle las realizaciones de la presente invención. Se entendería por personas con conocimientos ordinarios en la materia que los diagramas de bloques, esquemas e ilustraciones de diagramas de flujo tal y como se presentan en el presente documento pueden implementarse en forma de un producto de programa informático, un producto de hardware, una combinación de productos de programa informático y hardware, y/o aparatos, sistemas, dispositivos informáticos, y/o similares para ejecutar instrucciones, operaciones o pasos de proceso tal y como se presentan.
2. Arquitectura general del sistema
La FIG.1muestra un diagrama100que ilustra una arquitectura de sistema de una plataforma de asistente virtual, de acuerdo con realizaciones de ejemplo de la divulgación. En una realización, la plataforma de asistente virtual comprende los siguientes subsistemas primarios: un módulo de comprensión del lenguaje natural (NLU)106,un masterbot108,uno o más agentes de acción112y uno o más agentes de información120.
El usuario final102genera un enunciado104,por ejemplo a través de voz, video o entrada de texto. La expresión del usuario104se procesa a través del módulo NLU106,que genera una entrada de usuario analizada que es legible por ordenador y conveniente para el consumo futuro. El módulo NLU106es un subsistema que se encarga de la comprensión del lenguaje natural (NLU), cuyo objetivo es tomar el enunciado104como entrada, digerirlo y analizarlo, y emitir construcciones de lenguaje estándar que puedan ser consumidas fácilmente por otros componentes. Normalmente, la salida del módulo NLU106comprende la intención del usuario (definida por un dominio concreto), la extracción de entidades (nombre del producto, hora, fecha, ubicación, precio, correo electrónico, etc. ) y la resolución de referencias. En algunas realizaciones, la salida del módulo NLU106también comprende análisis de sentimientos, clases de actos de habla, identificación de idioma y/o reconocimiento de emojis.
El masterbot108es un controlador que es responsable de la orquestación de toda la conversación intercambiando información con varios subsistemas, clasificando y seleccionando el mejor agente de acción112o agente de información120de un grupo de candidatos, ejecutando el o los agentes apropiados y pasando la respuesta de vuelta al usuario final102(línea discontinua). El funcionamiento del masterbot108se describe con mayor detalle a continuación.
Los agentes de acción112y los agentes de información120denotan los dos conjuntos de bloques de conversación disponibles en la plataforma. En tiempo de ejecución, mientras tiene lugar una conversación multiservicio, algunos de estos agentes se activarán y participarán en la construcción y generación de la respuesta al usuario. Cada agente de acción112tiene acceso a un módulo de generación de lenguaje natural (NLG)116,que se utiliza para generar una respuesta en lenguaje natural118,como una respuesta a una acción. De manera similar, cada agente de información120tiene acceso a un módulo de generación de lenguaje natural (NLG)124,que se utiliza para generar una respuesta en lenguaje natural126,como una encuesta de información para consultar al usuario para obtener más información. El funcionamiento de los agentes de información112y de los agentes de acción120se describe con mayor detalle a continuación.
Las reglas/modelos de orquestación110son un subsistema lógico responsable de realizar un seguimiento de la información del estado actual del diálogo y de la política de diálogo interna para tomar decisiones de selección (que pueden estar basadas en reglas o en modelos de aprendizaje automático). El masterbot108consulta las reglas de orquestación110para realizar su selección de agentes de información y agentes de acción.
La puerta de enlace API a servicios externos114proporciona utilidad para ciertos servicios - es utilizado por la plataforma del asistente virtual para conectarse a sistemas externos para realizar la(s) acción(es) deseada(s). Por ejemplo, para cancelar un pedido, realizar una búsqueda de productos o comprobar la temperatura actual. La puerta de enlace API114denota un mecanismo común para que se realicen estas solicitudes a sistemas externos.
El almacén de datos contextuales122es un subsistema que representa conceptualmente la "memoria", así como los "conocimientos de dominio" comunes que se necesitan para mantener una conversación significativa. La "memoria" comprende el historial de interacciones pasadas, como los turnos de diálogo anteriores, las conversaciones de la semana pasada, los perfiles de los compradores (historial de pedidos, preferencias de compra declaradas, etc. ), etc. El "conocimiento del dominio" comprende la información agregada que es específica de los servicios soportados por la plataforma. Por ejemplo, para un sitio web de comercio electrónico, el catálogo de productos es una fuente importante de información de "conocimiento del dominio". El almacén de datos contextuales122se puede utilizar para ayudar a) al masterbot108a tomar decisiones mejoradas del agente de acción; b) a los agentes de información individuales120a realizar inferencias; y c) tanto a los agentes de acción112como a los agentes de información120a generar respuestas apropiadas en lenguaje natural.
La FIG.2muestra otro diagrama200que ilustra una arquitectura de la plataforma de asistente virtual que tiene un masterbot204,y una pluralidad de agentes de acción208y agentes de información210,de acuerdo con realizaciones de ejemplo de la divulgación. El masterbot204se utiliza para arbitrar entre una pluralidad de agentes de acción208y agentes de información210basándose en la entrada del usuario202(tras procesarla a través del módulo<n>L<u>, que no se muestra en la FIG.2). En primer lugar, el masterbot204determina un determinado agente de acción208para invocar en respuesta a la entrada del usuario202.A continuación, el masterbot204comprueba la(s) condición(es) de prerrequisito208del agente de acción dado, si las hay. A su vez, el masterbot204invoca cualquier agente(s) de información210que sean condiciones prerrequisito para el agente de acción208dado. Los agentes de información210cumplen las condiciones previas solicitadas que se describen a continuación. Los agentes de acción208y los agentes de información210pueden generar cada uno respuestas en lenguaje natural para que el masterbot204las transmita al usuario final en forma de respuestas a través de un módulo de generación de lenguaje natural (NLG), no mostrado en la FIG.2.
Finalmente, el masterbot204envía la respuesta final del bot206al usuario.
La FIG.3muestra los diagramas300y301que ilustran una conversación de ejemplo que comprende dos servicios y múltiples turnos de conversación, de acuerdo con las realizaciones de ejemplo de la divulgación. El diagrama300muestra un esquema de una construcción de conversación que comprende dos servicios y seis turnos. El servicio "A"302comprende el turno306(enunciado del usuario final) seguido del turno308(respuesta del bot). El servicio "B"304comprende el turno310(enunciado del usuario final) seguido del turno312(respuesta del bot), seguido del turno314(enunciado del usuario final) seguido del turno316(respuesta del bot).
El diagrama301muestra una conversación de muestra real que comprende dos servicios y seis turnos, que se ilustró esquemáticamente en el diagrama300.Horario de la tienda322comprende el turno326(enunciado del usuario final - "¿Cuál es el horario normal de su tienda?") seguido del turno328(respuesta del bot - "Nuestro horario de tienda es de 9 a 18 horas"). Mientras tanto, el Servicio de localización de tiendas324comprende el turno330(enunciado del usuario final: "Entendido, ¿puedes decirme una tienda cercana?") seguido por el turno332(respuesta del bot: "Por favor, dime tu ubicación en ciudad y estado"), seguido por el turno334(enunciado del usuario final: "Vivo en Sunnyvale, California") seguido por el turno336(respuesta del bot: "La tienda más cercana está en 10 Main St. , Mountainview, CA").
3. Visión general de los componentes básicos: agentes de información y agentes de acción
En una realización, hay dos tipos de bloques de construcción de conversación que residen en la plataforma del asistente virtual: agentes de información y agentes de acción. Todas las conversaciones se ensamblan a partir de estos dos tipos de agentes de conversación, es decir, cada respuesta individual del bot es generada por un agente de información concreto o por un agente de acción concreto. La responsabilidad de la plataforma es albergar estos agentes y permitir la creación de los mismos con poco esfuerzo. En tiempo de ejecución, al interactuar con el usuario final para mantener una conversación, la plataforma gestiona un conjunto de agentes activos/activados en ese momento y selecciona el agente adecuado para generar una respuesta para el usuario final. De este modo, los usuarios finales pueden disfrutar de la ventaja de mantener una conversación flexible y fluida para alcanzar sus objetivos de servicio, a menudo muchos dentro de la misma conversación. Al mismo tiempo, los desarrolladores de aplicaciones disponen de un entorno en el que pueden crear rápidamente nuevos servicios aprovechando muchos agentes existentes y la capacidad de la plataforma para generar automáticamente parte del flujo de diálogo.
La principal responsabilidad de los agentes de información es gestionar una determinada necesidad de información durante el transcurso de una conversación, mientras que la principal responsabilidad de los agentes de acción es realizar acciones de servicio. Ambos agentes pueden generar respuestas en lenguaje natural a los usuarios finales. La FIG.4muestra un diagrama400que ilustra una realización de la plataforma de asistente virtual que comprende agentes de información402y agentes de acción404,ilustrando una realización típica de la plataforma de asistente virtual con respecto a la disponibilidad y extensibilidad del agente. Un desarrollador puede desarrollar agentes de información personalizados406.También hay una gran cantidad de agentes de información408preconfigurados y listos para utilizar en un dominio concreto: por ejemplo, agente de información de correo electrónico, agente de información de ID de pedido, agente de información de ubicación, agente de información de precio, agente de información de nombre de producto, etc. En un entorno multiservicio típico, también habría una gran cantidad de agentes de acción404.Se pueden crear rápidamente nuevos agentes de acción personalizados410para satisfacer una necesidad de servicio particular. También hay muchos agentes de acción prediseñados412para cumplir servicios estándar comunes (por ejemplo, seguimiento de pedidos, preguntas frecuentes, etc. ) y funciones de chit-chat para gestionar el flujo de diálogo general.
Para uso práctico, una realización típica de la plataforma viene con un rico conjunto de agentes de información preconstruidos y reutilizables408.Además, muchos agentes de acción preconstruidos412relacionados con la representación de una conversación natural como una charla informal, como saludos, gratitud, cumplidos y control de flujo están disponibles en una realización típica de la plataforma de asistente virtual. Sin embargo, debe tenerse en cuenta que tanto los nuevos agentes de información406como los nuevos agentes de acción410son fáciles de construir siguiendo un protocolo estándar y la plataforma entenderá la relación entre los agentes de información que interactúan y los agentes de acción, cómo cumplir con los valores de información necesarios, y realizar los servicios y generar una respuesta para llevar a cabo una conversación fluida con el usuario final.
4. Agentes de información
4.1 Papel de los agentes de información
La FIG.5muestra un diagrama500que ilustra una arquitectura de un agente de información y el papel que desempeñan los agentes de información en la plataforma de asistente virtual, de acuerdo con realizaciones de ejemplo de la divulgación. En esencia, un agente de información506es una unidad de programación lógica y autónoma para gestionar una determinada necesidad de información a medida que se desarrolla la conversación. Un agente de información506,cuando se activa, toma información de varias fuentes de información, incluyendo un enunciado actual502y un almacén de datos contextuales504.
El enunciado actual502se representa en la representación de lenguaje interno (entrada de usuario analizada) generada por el módulo NLU descrito anteriormente (no mostrado en la FIG.5). Por ejemplo, el enunciado actual comprende diferentes valores de entidad extraídos, sus resoluciones de referencia, una etiqueta de parte de oración (POS), un árbol de análisis sintáctico, la intención del usuario, etc.
El almacén de datos contextuales504almacena información en la "memoria", que comprende el historial de interacciones pasadas, como los turnos de diálogo anteriores, las conversaciones de la semana pasada, los perfiles de los compradores (historial de pedidos, preferencia de compra declarada, etc. ), etc. , y el "conocimiento del dominio", que comprende la información agregada que es específica de los servicios soportados por la plataforma, como el catálogo de productos del comerciante.
La salida de destino508del agente de información506es el valor de información de interés. Por ejemplo, para El Agente de información por correo electrónico, la salida de destino506sería el valor de información "tom@gmail.com”. Opcionalmente, los agentes de información también pueden generar metadatos adicionales, como el nivel de confianza, las fuentes de información utilizadas para tomar la decisión, opciones de valor alternativas, etc. Estos metadatos pueden ser útiles para que otros componentes, como los agentes de acción, y otros agentes de información tomen mejores decisiones.
Tres técnicas utilizadas por los agentes de información para determinar un valor de información final son "comprender", "inferir" y "encuesta". Aunque no se trata de un requisito estricto, una aplicación típica de agente de información vendrá con todas estas capacidades: comprender, inferir y sondear. El objetivo es cumplir el valor de la información de la forma más precisa y rápida posible, sobre todo por parte del propio agente de información y, ocasionalmente, con un poco de ayuda del usuario final o de otros agentes de información. 4.2 Capacidad de los agentes de información
La FIG.6muestra un diagrama600que ilustra un flujo de proceso de un agente de información608,de acuerdo con realizaciones de ejemplo de la divulgación. Para cumplir con un valor de información dado en tiempo de ejecución, un agente de información608pasa por un proceso interno para invocar tres capacidades, según sea necesario: comprender, inferir y encuestar utilizando un módulo de comprensión610,un módulo de inferencia616y un módulo de encuesta626,respectivamente.
Como se discutió, una realización típica de la invención generalmente comprendería un módulo NLU centralizado604dentro de la plataforma de asistente virtual para digerir el enunciado del usuario final602,analizarlo y emitir una interpretación legible por máquina, o una entrada de usuario analizada606,al agente de información608para tomar una decisión. No es eficiente duplicar la funcionalidad del módulo NLU604a nivel de agentes de información individuales608.
El módulo de comprensión610comprende la capacidad de comprender las expresiones del usuario final en forma de lenguaje natural606e identificar y extraer la información correcta para cumplir con el valor de la información. Es decir, si el módulo de comprensión610puede determinar el valor de la información a partir del enunciado en el paso de decisión612,entonces el agente de información608ha terminado y puede emitir el valor de información de interés en el paso614.Por ejemplo, para "Agente de información de correo electrónico", el agente comprenderá la siguiente expresión: "Hola, mi dirección de correo electrónico es tom@gmail.com” y completará automáticamente el valor de información como "tom@gmail.com”.
El módulo de inferencia616comprende la capacidad de combinar la entrada de usuario analizada actual606con datos contextuales previamente conocidos del almacén de datos contextuales618o de otros agentes de información620para calcular el valor de la información. Esto podría basarse en el historial de conversaciones entre el usuario final y la plataforma del asistente virtual o en algunos datos del perfil del usuario. Es decir, si el módulo de inferencia618puede inferir el valor de la información en el paso de decisión622,entonces el agente de información608ha terminado y puede generar el valor de información de interés en el paso624.Por ejemplo, Tom le pregunta al asistente virtual: "¿Puedo verificar mi estado de membresía?" Si el asistente virtual ya había hablado con Tom hace apenas 30 minutos (a través de algún mecanismo de identificación, como la cookie del navegador o el ID de usuario de FACEBOOK MESSENGER) y recuerda que el valor anterior era tom@gmail.com, el agente de información de correo electrónico puede deducir automáticamente el valor de la información. Tenga en cuenta que, dado que la inferencia no garantiza el valor, el agente de información puede optar por asignar una puntuación de confianza (o puntuación de probabilidad) para indicar con qué firmeza cree el agente en el valor de la información.
El módulo de encuesta626comprende la capacidad de realizar una pregunta de diálogo628para adquirir el valor de la información directamente del usuario final. Suele ser el último recurso después de que los módulos610y616de comprensión e inferencia no puedan determinar el valor de la información. Por ejemplo, El Agente de información por correo electrónico puede interactuar con el usuario final con la siguiente secuencia de diálogo simple: "¿Cuál es el correo electrónico que le gusta utilizar?", y el usuario final responde "Mi correo electrónico es tom@gmail.com”. Después de este intercambio, El Agente de información por correo electrónico determinará que el valor de la información es "tom@gmail.com”.
En resumen, el agente de información608posee la capacidad de recuperación de datos contextuales y de generación automática de subdiálogos para interactuar con los usuarios finales. Es contextual y conversacional, y está habilitado para NLU. El resultado final es la disponibilidad de la información de valor de interés.
4.3 Creación de nuevos agentes de información
Cuantos más agentes de información estén disponibles en una plataforma de asistente virtual, más servicios nuevos podrá reunir rápidamente la plataforma para ampliar la utilidad del bot de conversación. La implementación de un agente de información depende de la encarnación real de la plataforma general del asistente virtual. Un ejemplo sería admitir la adición de nuevos agentes de información en un lenguaje declarativo para minimizar el esfuerzo de codificación. Por ejemplo, un agente de información puede especificar mediante JSON o XML en qué tipo de extracción de entidad y valor debe centrarse, y cómo asignar esa información al valor final. El XML también puede especificar cómo combinar diferentes fuentes de información para hacer una inferencia, qué otro(s) agente(s) de información relacionado(s) puede(n) aprovechar y cómo deducir el valor de la información de esos agentes de información relacionados y, por último, cómo componer la pregunta de la encuesta para que el usuario final obtenga información adicional.
4.4 Ejemplos de agentes de información
Para continuar con el ejemplo del Agente de información de correo electrónico, la siguiente es una descripción detallada de la implementación interna durante el tiempo de ejecución en los tres casos: comprender, inferir y encuesta.
4.4.1 Agente de información de comprensión ilustrativa
La FIG.7muestra un diagrama700 queilustra un flujo de ejemplo a través de un agente de información708para comprender las expresiones del usuario, de acuerdo con realizaciones de ejemplo de la divulgación. Para cumplir con un valor de información dado en tiempo de ejecución, un agente de información708pasa por un proceso interno para invocar la capacidad de comprensión, según sea necesario, para comprender el valor de información directamente desde el enunciado actual.
El módulo NLU704procesa el enunciado del usuario final702,lo analiza y emite una interpretación legible por máquina706al agente de información708.El módulo de comprensión710entiende las expresiones del usuario final en formato de lenguaje natural706e identifica y extrae la información correcta para cumplir con el valor de la información. Es decir, si el módulo de comprensión710determina el valor de la información a partir del enunciado en el paso de decisión712,entonces el agente de información708ha terminado y puede emitir el valor de información de interés en el paso714,como valor de información de salida730.Por ejemplo, para "Agente de información de correo electrónico", el agente entenderá la siguiente expresión: "Hola, quiero comprobar el estado de mi afiliación y mi dirección de correo electrónico es tom@gmail.com” y automáticamente cumplimentará el valor de información730para que sea “tom@gmail.com”.
Como alternativa, si el agente de información no puede comprender el valor de la información de la entrada de usuario actual706,el módulo de inferencia716puede combinar la entrada actual706con datos contextuales previamente conocidos del almacén de datos contextuales718o de otros agentes de información720para calcular el valor de la información. Es decir, si el módulo de inferencia716puede inferir el valor de información en el paso de decisión722,entonces el agente de información708ha terminado y puede emitir el valor de información de interés en el paso724.Finalmente, el módulo de encuesta726puede realizar una pregunta de diálogo728para adquirir el valor de la información directamente del usuario final si el agente de información no puede comprender ni inferir el valor de la información.
4.4.2 Agente de información de inferencia ilustrativo
La FIG.8muestra un diagrama800que ilustra un flujo de ejemplo a través de un agente de información808para inferir información a partir de expresiones del usuario y datos contextuales, de acuerdo con realizaciones de ejemplo de la divulgación. Para cumplir con un valor de información dado en tiempo de ejecución, un agente de información808pasa por un proceso interno para invocar la capacidad de inferir, según sea necesario.
Elmódulo NLU804procesa el enunciado802del usuario final, lo analiza y emite una interpretación legible por máquina al agente de información808.En este ejemplo, el módulo de comprensión810no puede comprender directamente el enunciado del usuario final para identificar o extraer la información correcta para cumplir directamente con el valor de la información. Es decir, el módulo de comprensión810no puede determinar el valor de la información del enunciado actual en el paso de decisión812y no puede generar el valor de la información de interés en el paso814.Por ejemplo, el usuario no ha suministrado el valor de información de interés en el enunciado actual.
En cambio, dado que el agente de información no puede comprender el valor de la información del enunciado actual, el módulo de inferencia816combina la entrada actual con datos contextuales previamente conocidos del almacén de datos contextuales818o de otros agentes de información820para calcular el valor de la información. Esto podría basarse en el historial de conversaciones entre el usuario final y la plataforma del asistente virtual o en algunos datos del perfil del usuario. Es decir, si el módulo de inferencia816puede inferir el valor de información en el paso de decisión822,entonces el agente de información808se realiza en el paso824y puede emitir el valor de información830de interés. Por ejemplo, Tom pregunta al asistente virtual: "¿Puedo comprobar el estado de mi afiliación?". Si el asistente virtual ya había hablado con Tom hace apenas 30 minutos (a través de algún mecanismo de identificación, como la cookie del navegador o el ID de usuario de FACEBOOK MESSENGER), y recuerda que el valor anterior era tom@gmail.com, el agente de información de correo electrónico puede deducir automáticamente el valor de la información. Tenga en cuenta que, dado que la inferencia no garantiza el valor, el agente de información puede optar por asignar una puntuación de confianza (o puntuación de probabilidad) para indicar con qué firmeza cree el agente en el valor de la información.
Alternativamente, el módulo de encuesta826puede realizar una pregunta de diálogo828para adquirir el valor de la información directamente del usuario final si el agente de información no entiende ni infiere el valor de la información.
4.4.3 Agente de información de encuesta ilustrativa
La FIG.9muestra un diagrama900que ilustra un flujo de muestra a través de un agente de información908para encuestar a un usuario para obtener información que no se puede obtener de ninguna otra manera, de acuerdo con ejemplos de la divulgación. Para cumplir con un valor de información dado en tiempo de ejecución, un agente de información908pasa por un proceso interno para invocar la capacidad de encuesta, según sea necesario.
El módulo NLU904digiere el enunciado902del usuario final, lo analiza y emite una interpretación legible por máquina al agente de información908.En este ejemplo, el módulo de comprensión910no puede comprender directamente los enunciados del usuario final para identificar o extraer la información adecuada para satisfacer directamente el valor de la información. Es decir, el módulo de comprensión910no puede determinar el valor de la información del enunciado actual en el paso de decisión912y no puede generar el valor de la información de interés en el paso914.Por ejemplo, el usuario no ha suministrado el valor de información de interés en el enunciado actual.
De manera similar, el módulo de inferencia916no puede combinar la entrada actual con datos contextuales previamente conocidos del almacén de datos contextuales918ni de otros agentes de información920y no puede calcular el valor de información de interés. Es decir, en este escenario, el módulo de inferencia916no puede inferir el valor de información en el paso de decisión922y no puede generar el valor de información de interés en el paso924.Por ejemplo, el valor de la información no se puede inferir con una confianza razonable a partir del historial de conversaciones anteriores del usuario, datos contextuales u otras fuentes.
En cambio, si el agente de información no puede comprender el valor de la información de la entrada actual, ni inferir el valor de la información de otras fuentes, el módulo de encuesta926realiza una pregunta de diálogo928a través de un módulo de generación de lenguaje natural (NLG) para adquirir el valor de la información directamente del usuario final. Suele ser el último recurso después de que los módulos de comprensión e inferencia910y916no puedan determinar el valor de la información. Por ejemplo, El Agente de información por correo electrónico puede interactuar con el usuario final con la siguiente secuencia de diálogo sencilla: "Por favor, dígame su dirección de correo electrónico", y el usuario final responde con “Mi correo electrónico es tom@gmail.com”. Tras este intercambio, el agente de información de correo electrónico, que ahora opera en el modo de comprensión en el turno de conversación posterior, determinará que el valor de la información es "tom@gmail.com” con una confianza alta.
4.4.4 Tres tipos de agentes de información resumidos
La T abla1resume los tres casos de agentes de información que operan en modos de comprensión, inferencia y encuesta para resaltar las diferencias en la secuencia de diálogo.
4.5 Inferencia entre agentes de información
Al igual que el conocimiento del mundo real, los distintos agentes de información pueden estar relacionados entre sí y utilizarse para ayudarse mutuamente. Esto es especialmente cierto cuando la plataforma del asistente virtual tiene acceso a una gran cantidad de información contextual, y lo más probable es que algunos de ellos sean otros agentes de información relacionados. En tiempo de ejecución, cuando se solicita información a un agente de información, éste puede aprovechar directamente estos agentes de información relacionados, del mismo modo que puede aprovechar los datos contextuales genéricos. Además, los agentes de información pueden informar por sí mismos las conexiones del agente de información subyacente con las que desean colaborar al masterbot. Este proceso se describe con más detalle en la sección titulada "Invocación óptima del agente de información mediante un proceso de selección basado en inferencias. "
A continuación se presentan algunos ejemplos de inferencia entre diferentes agentes de información:
• El Agente de Información del Número de Pedido está relacionado con el Agente de Información de la Fecha de Compra del Pedido
• El Agente de Información de Número de Pedido está relacionado con el Agente de Información de Artículo de Producto de Pedido
• El Agente de Información de Correo Electrónico está relacionado con el Agente de Información de ID de Miembro.
En las Figs.6-9, esta relación entre agentes de información se representa gráficamente como agentes de información relacionados620, 720, 820y920,respectivamente. Por ejemplo, en la FIG.8,los agentes de información relacionados820pueden proporcionar el valor de información determinado por los otros agentes de información relacionados820al módulo de inferencia816para que lo utilice el agente de información808para inferir el valor de información con la ayuda de los agentes relacionados820.De esta manera, en algunas realizaciones, los agentes de información relacionados820podrían invocarse indirectamente para su ejecución en tiempo de ejecución.
5. Agentes de acción
5.1 Papel de los agentes de acción
La FIG.10muestra un diagrama1000que ilustra una arquitectura de un agente de acción y el papel que desempeñan los agentes de acción dentro de la plataforma de asistente virtual, de acuerdo con realizaciones de ejemplo de la divulgación. La función del agente de acción1006es realizar una acción, generar respuestas para los usuarios finales y, si es necesario, señalar a la plataforma general del asistente virtual un cambio de estado. Cada agente de acción1006es una unidad de "miniacción", es decir, un único foco de acción que no es demasiado complicado para extenderse a través de los límites del turno de conversación después de que se realice una acción determinada.
Un agente de acción1006,cuando se activa, toma información de varias fuentes de información, incluidos los agentes de información conectados1002y el almacén de datos contextúales1004.Los agentes de información conectados1002sirven como condiciones previas para el agente de acción1006.El almacén de datos contextúales1004almacena información sobre la "memoria", que comprende el historial de interacciones pasadas, como turnos de diálogo anteriores, conversaciones de la semana pasada, perfiles de compradores (historial de pedidos, preferencia de compra declarada, etc. ), y así sucesivamente, y "conocimiento de dominio" que comprende la información agregada que es específica de los servicios soportados por la plataforma, como el catálogo de productos del comerciante.
Para realizar una acción real, el agente de acción1006puede necesitar invocar puntos finales de API externos o internos1008.Finalmente, el agente de acción1006generará una o más respuestas para el usuario final en función de las condiciones activadas y/o informará al masterbot sobre cualquier cambio de estado1110(cambios de estado de invocación y/o cambios de estado de aplicación).
5.2 Cómo configurar un agente de acción
Un propósito de un agente de acción es realizar una determinada acción, como comprobar el estado de afiliación y dar una respuesta. Por ejemplo: "Hola Tom, tu estado de membresía está activo pero expirará en 3 meses". Tanto la acción como la respuesta son específicas de cada agente de acción y requieren su aplicación. Un ejemplo de implementación de un agente de acción incluiría el uso de una API para realizar una consulta a la base de datos sobre el estado de la afiliación y el uso de un sistema de plantillas para generar la respuesta basada en el resultado devuelto por la API.
Antes de discutir cómo funciona un agente de acción ilustrativo durante el tiempo de ejecución, normalmente habría que configurar (o implementar) las siguientes estructuras de datos. En una realización típica, el agente de acción necesita la siguiente configuración:
• Condición(es) desencadenante(s) independiente(s)
• Cada agente de acción debe declarar a la plataforma de asistente virtual en qué condición(es) se puede activar el agente de acción o es elegible para activarse (activarse). Esto puede expresarse en forma de una intención de usuario predeterminada. Por ejemplo, "Agente de acción de búsqueda de producto" puede declarar que toda intención del usuario relacionada con una búsqueda de producto es una buena condición de activación. La clasificación real de la intención del usuario puede lograrse utilizando datos de entrenamiento anotados u ontologías temáticas específicas del dominio, como se explica a continuación.
• Las condiciones de activación independientes pueden ser opcionales. La gestión de políticas de diálogo del masterbot también puede especificar cómo prefiere el masterbot activar determinados agentes de acción. Por ejemplo, para un "Agente de acción de disculpa", el masterbot puede elegir utilizar un puntaje de sentimiento negativo para determinar que se debe activar un Agente de acción de disculpa. Otro caso es que ciertos agentes de acción podrían configurarse para no tener condiciones de activación independientes de nivel superior, y estos agentes de acción se crean para servir como agentes de acción "auxiliares" en situaciones de seguimiento, como agentes de seguimiento, como se analiza a continuación.
• Parámetros de invocación de acciones
• La especificación sobre el aspecto de "acción" real. Por ejemplo, un punto final de API, parámetros exactos que deben pasarse a la API, etc.
• Un conjunto de agente(s) de información como requisito(s) previo(s)
• Estos agentes de información son la información necesaria antes de que pueda tener lugar una invocación de acción. Más adelante se analizará con más detalle la relación entre el agente de información y los agentes de acción.
• Un conjunto de respuesta(s)
• El conjunto de respuesta(s) es la respuesta generada para el usuario final.
• Opcionalmente, con Agente(s) de Acción de Seguimiento asociado(s) y Condición(es) Desencadenante(s).
La implementación de un agente de acción consiste esencialmente en configurar todas las estructuras de datos necesarias mencionadas anteriormente. Una posible opción de implementación es utilizar un lenguaje declarativo orientado al dominio para especificar la asociación ontológica de conceptos para las condiciones desencadenantes de nivel superior, los agentes de información dependientes, las URL de punto final de la API, las expresiones que deben evaluarse para recuperar los parámetros necesarios, y un sistema de plantillas flexible para acceder a los datos de la plataforma para devolver una respuesta final al usuario final, así como cualquier condición desencadenante de seguimiento para vincular a otros agentes de acción.
5.3 Cómo funcionan los agentes de acción en tiempo de ejecución
La FIG.11muestra un diagrama1100que ilustra los componentes y el flujo de invocación de un agente de acción ilustrativo, de acuerdo con realizaciones de ejemplo de la divulgación. Como se ha comentado, en primer lugar, la expresión del usuario final 1102 se preprocesa a través del módulo NLU1104para generar una entrada de usuario analizada1106.La entrada de usuario analizada1106comprende datos de construcciones de lenguaje extraídos, clasificación de intenciones, extracción de entidades, análisis de actos de habla, análisis de sentimientos, etc. , todo en formato legible por máquina, conveniente para el consumo por el resto del sistema. El masterbot1108es responsable de seleccionar un agente de acción particular1110para generar una respuesta para el siguiente turno en respuesta a la entrada del usuario1106a través del módulo selector de agente de acción1112en función de una o más condiciones de activación (expresiones)1112y el estado de invocación actual del sistema de gestión de diálogo1114y/o el estado de la aplicación del sistema de gestión del estado de la aplicación (no se muestra).
El primer paso es consultar la(s) condición(es) de prerrequisito1110del agente de acción para ver si todos los agente(s) de información de prerrequisito1122han obtenido con éxito sus valores de información a través del módulo validador de prerrequisito1116.En caso contrario, el masterbot1108suspenderá el agente de acción actual1110(pero lo recordará como parte del estado de invocación, datos de gestión de diálogo, etc. a través del sistema de gestión de diálogo1114), y en su lugar solicitará al agente o agentes de información de prerrequisitos1122que determinen el valor o valores de información requeridos, como se muestra en el paso1118.
Si se han cumplido todas las condiciones previas requeridas, se ejecutará un módulo de invocación de acción1124para realizar el trabajo del agente de acción1110.En una implementación típica, dado que los parámetros de invocación de acción1126se pueden expresar en un lenguaje declarativo con referencias de variables y expresiones aritméticas, se puede llamar primero a un módulo evaluador1132para evaluar la expresión de los valores de los parámetros finales. Si es necesario, se puede utilizar una pasarela API1134para proporcionar un gatekeeper central para el tráfico API web saliente/entrante para una mejor seguridad y control del rendimiento.
De manera similar a los parámetros de invocación de acciones, la generación de respuestas se puede facilitar con un sistema de plantilla1138y el módulo evaluador1132.El almacén de datos contextuales1130proporciona un fácil acceso a los datos para cumplir con los valores variables utilizados en una plantilla determinada. Usando un ejemplo de plantilla de respuesta simple, tal como "hola ${Nombre_Primero}, su estado de afiliación es ${API_mensaje_de_retorno}", el módulo evaluador1132puede verificar con el almacén de datos contextuales1130y los datos de resultado de la invocación de API, y generar una respuesta1140que sea "Hola Tom, tu estado de membresía ha expirado" a través de un módulo de generación de lenguaje natural (NLG)1136.
Finalmente, la respuesta del usuario final1140se pasa al sistema de gestión de diálogo1114,que a su vez proporciona el estado de invocación actual al masterbot1108,según sea necesario.
La FIG.12ilustra un diagrama1200que muestra cómo se lleva a cabo la ejecución del agente de acción después de que el agente de acción1210se ha activado a través del módulo selector de agente de acción1212(véase el módulo selector de agente de acción1112en la FIG.11para más detalles sobre este tipo de condición de activación). Lo más importante es que la FIG.12muestra cómo un agente de acción1210se conecta con otro agente de acción (no mostrado) a través de una relación de seguimiento como lo indican las condiciones de activación (expresión)1238para un agente de acción de seguimiento. Una diferencia clave entre la FIG.11y la FIG.12es la función de condición de activación, que en la FIG.11se centra en ilustrar cómo un agente de acción1110,con la ayuda del masterbot1108,se activa a través de una coincidencia de condiciones de activación1112. Por el contrario, la FIG.12ilustra cómo un agente de acción1210puede crear una conexión de seguimiento con otro agente de acción a través de una condición de activación anticipatoria1238.
El diagrama1200ilustra los componentes y el flujo de invocación de un agente de acción en tiempo de ejecución, de acuerdo con realizaciones de ejemplo de la divulgación. Como se ha comentado, en primer lugar, la expresión del usuario final1202se preprocesa a través del módulo NLU1204para generar una entrada de usuario analizada1206.Como se discutió, el masterbot1208es responsable de seleccionar un agente de acción particular1210para generar una respuesta para el siguiente turno en respuesta a la entrada del usuario1206a través del módulo selector de agente de acción1212basado en una o más condiciones de activación (no mostradas) y el estado de invocación actual desde el sistema de gestión de diálogo1214y /o el estado de aplicación desde el sistema de gestión de estado de aplicación1219.
El primer paso es consultar las condiciones de prerrequisito1210del agente de acción para ver si todos los agentes de información de prerrequisito1222han obtenido con éxito sus valores de información a través del módulo validador de prerrequisito1216.Si no es así, el masterbot1208suspenderá el agente de acción actual1210, y en su lugar pedirá al agente(s) de información de prerrequisitos12.22que averigüe(n) el(los) valor(es) de información requerido(s), como se muestra en el paso1218.
Si se han cumplido todas las condiciones previas, se ejecutará un módulo de invocación de acciones1224para realizar el trabajo. En una implementación típica, dado que los parámetros de invocación de la acción1226pueden expresarse en un lenguaje declarativo con referencias variables y expresiones aritméticas, se puede llamar primero a un módulo evaluador1232para que evalúe la expresión de los valores finales de los parámetros. Si es necesario, se puede utilizar una pasarela API1234para proporcionar un gatekeeper central para el tráfico API web saliente/entrante para una mejor seguridad y control del rendimiento.
De manera similar a los parámetros de invocación de acciones, la generación de respuestas se puede facilitar con un sistema de plantilla1238y el módulo evaluador1232.El almacén de datos contextuales1230proporciona un fácil acceso a los datos para cumplir con los valores variables utilizados en una plantilla determinada. Usando un ejemplo de plantilla de respuesta simple, tal como "hola ${Nombre_Primero}, su estado de afiliación es ${API_mensaje_de_retorno}", el módulo evaluador1232puede verificar con el almacén de datos contextuales1230y los datos de resultado de la invocación de API, y generar una respuesta1240que sea "Hola Tom, tu estado de membresía ha expirado" a través de un módulo de generación de lenguaje natural (NLG)1236.
Finalmente, la respuesta generada1240y la actualización del estado de invocación para el siguiente turno1238se pasan como condiciones de activación (expresión)1238al sistema de gestión de diálogo1214,que a su vez proporciona el estado de innovación actual al masterbot1208,según sea necesario. El resultado es que el agente de acción1210ha establecido una conexión de seguimiento con un agente de acción de seguimiento (no mostrado) a través de una relación de seguimiento mediante condiciones de activación (expresión)1238.
5.4 Agentes de acciones de seguimiento
Otra característica de los agentes de acción es su capacidad para configurar uno o más agentes de acción de seguimiento, como se ilustra en la FIG.13.El diagrama1300ilustra una arquitectura que comprende agentes de acción de seguimiento1308y1310a partir del agente de acción desencadenante1302que abarca dos turnos de conversación, de acuerdo con realizaciones de ejemplo de la divulgación. El agente de acción1302genera una respuesta de bot1304para el usuario final en el turno actual. En el siguiente turno y en función de la respuesta del usuario final, el bloque de decisión1306activa uno o más agentes de seguimiento1308o1310.Si se cumple la condición de activación 1, se activa el agente de acción 1308 ; de lo contrario, si se cumple la condición de activación 2, se activa el agente de acción1310.En algunas realizaciones, el agente desencadenante de la acción de seguimiento1308o1310puede ser una instancia del mismo agente que el agente desencadenante original1302.Se proporcionan detalles adicionales sobre los agentes de seguimiento en la sección Servicio.
La Tabla2muestra un diálogo de muestra que contiene un agente de acción de seguimiento. En este ejemplo, el agente de acción de seguimiento ("Agente de acción de verificación del estado de membresía") es una instancia del mismo agente que el agente de acción desencadenante original ("Agente de acción de verificación del estado de membresía").
6. Relación entre agentes de información y de acción
Un beneficio de la presente invención radica en la interrelación flexible (conexiones cruzadas) entre diferentes bloques de construcción o agentes de conversación. Las conexiones cruzadas entre agentes de información y agentes de acción permiten que la plataforma de asistente virtual maneje diferentes escenarios y presente una variedad de comportamientos de conversación utilizando una cantidad relativamente pequeña de agentes. La FIG.14muestra un diagrama1400que ilustra esquemáticamente cuatro tipos ilustrativos de relaciones entre agentes de acción1402y agentes de información1410,de acuerdo con realizaciones de ejemplo de la divulgación: conexión de prerrequisito1406, conexión de valor establecido1408, conexión de seguimiento1404y conexión de inferencia1412,que se analizan a su vez.
6.1 Requisitos previos Conexión entre el Agente de Acción y el Agente de Información
Un agente de acción1402puede especificar cero o varios agentes de información1410como conexiones de prerrequisito1406,o condiciones previas necesarias. Esto significa que después de que se activa un agente de acción1402, la plataforma de asistente virtual primero se asegurará de que todos los valores de información asociados con el o los agentes de información1410configurados como conexiones de prerrequisito1406por el agente de acción1402se cumplan antes de que se pueda ejecutar la "acción" real.
Téngase en cuenta que un agente de información1410puede ser compartido por diferentes agentes de acción1402como conexiones de prerrequisito1406como parte de los datos de configuración. Y en tiempo de ejecución, el mismo agente de información1410también se puede compartir y reutilizar para diferentes invocaciones de agentes de acción1402.El valor de la información asociada con dicho agente de información1410puede permanecer igual, pero también puede evolucionar a medida que avanza la conversación. Un escenario común que ilustra un cambio en el valor de la información se debe a acciones del propio usuario final. Por ejemplo, "Me gustaría pedir el Happy Meal número 1", "Está bien, ¿alguna guarnición?", "Espera, cambié de opinión, en su lugar quiero el Happy Meal número 2 ".
Por ejemplo, ilustrado en lenguaje declarativo, una conexión de prerrequisito puede especificarse de la siguiente manera:
Prerrequisito (<Agente de acción>) = un conjunto de<Agente de informacién(s)
Por ejemplo:
Requisito previo (<Agente de acción de devolución de pedido>) = (<Agente de información de ID de pedido>, <Agente de información de producto de pedido>, <Agente de información de cantidad>].
6.2 Conexión de conjunto de valores entre el agente de acción y el agente de información
Un agente de acción1402también puede establecer explícitamente valores para variables de aplicación para referencia futura, que pueden estar conectadas a agentes de información1410a través de conexiones de valor establecido1408.Esto ayuda a ciertos agentes de información1410a computar el valor de la información más eficientemente o a convertirse en información compartible/reutilizable para que otros agentes de acción le den seguimiento. Normalmente, esta conexión de valor establecido1408tiene lugar después de que se ha realizado una acción y, en función del resultado, el agente de acción1402puede decidir establecer ciertos valores de variables de ciertos agentes de información1410.
6.3 Seguimiento de la conexión entre agentes de acción
Como se explicó en la sección anterior, un agente de acción1402también puede especificar otro agente de acción1402,incluyendo otra instancia de sí mismo, como un posible agente de acción de seguimiento1402después de una respuesta de un usuario, con una condición de activación particular, a través de la conexión de seguimiento1404.
Por ejemplo, ilustrado en lenguaje declarativo, una conexión de seguimiento se puede especificar de la siguiente manera:
Seguimiento(<Agente de acción>, <Respuesta>, <Condición de activación>) = <Ágente de acción>Por ejemplo:
Seguimiento (<Agente de acción de devolución de pedido>, "Se ha solicitado el proceso de devolución, ¿desea realizar un seguimiento del estado de la devolución?", " SÍ_Repuesta_Condición_desencadenante") =<Agente de acción de seguimiento de estado de devolución>
6.4 Conexión de inferencia entre agentes de información
Un agente de información dado1410también puede inferir su valor de información aprovechando otros agentes de información1410a través de una conexión de inferencia1412.En diversas realizaciones, la conexión de inferencia1412puede implicar orientación a partir del conocimiento semántico o de una ontología específica del dominio.
Por ejemplo, ilustrado en lenguaje declarativo, una conexión de inferencia puede especificarse de la siguiente manera:Inferir (<Agente de Información del lnferente>) = <Agente de Información del lnferido>
Por ejemplo:
Inferir (<Agente de Información de ID de Pedido>) = <Agente de Información de Producto de Pedido>En la sección "Orquestación de servicios y anatomía de la construcción de conversaciones", se proporcionan más detalles sobre cómo el masterbot puede aprovechar la conexión de inferencia1412entre los agentes de información1410para proporcionar una generación de preguntas de seguimiento más inteligente para obtener la información necesaria del usuario final.
7. Creación de nuevos servicios mediante agentes de información y acción
7.1 Forma lógica
En la plataforma del asistente virtual, un nuevo servicio puede expresarse de forma lógica simple, por ejemplo, utilizando un lenguaje declarativo, definiendo un agente de acción que comprenda agentes de información prerrequisitos y una acción a realizar, como se muestra esquemáticamente en la Tabla3.
La plataforma de asistente virtual gestionará automáticamente, entre otras cosas:
• Determinación de la condición de activación para invocar al agente de acción que realiza el servicio.
• Examen de todos los agentes de información conectados para cumplir con los valores de información necesarios mediante la realización de modos de "comprensión", "inferencia" y, si es necesario, "encuesta" a través de la generación de diálogos automatizados, como se explicó.
• Ejecución de acciones y generación de respuestas al usuario final.
La FIG.15muestra un diagrama1500que ilustra un flujo lógico para diseñar un nuevo servicio utilizando la plataforma del asistente virtual, en efecto enseñando a la plataforma virtual a realizar una nueva habilidad, de acuerdo con realizaciones de ejemplo de la divulgación. El agente de acción1502tiene condiciones previas que comprenden los agentes de información1504, 1506y1508,a través de las conexiones previasR1, R2yR3,respectivamente. Para la invocación, el Servicio X se invoca como se especifica en la condición de invocación de acción1510,que normalmente puede ser una invocación de API con parámetros transformados a partir de los valores de información obtenidos a través de los agentes de información de prerrequisitos1504, 1506y/o1508.En algunas realizaciones, la condición de invocación de acción1510también puede especificar una relación de valor establecido con uno o más agentes de información1514,como se describió anteriormente. Finalmente, se especifica una generación de respuesta en la condición de respuesta generada1512,que normalmente puede basarse en un sistema de plantilla basado en un resultado obtenido del Servicio X.
7.2 Ejemplo básico
Un ejemplo básico consiste en un agente de acción básico que puede decir la hora. La Tabla4muestra una conversación de muestra con un agente de acción que puede decir la hora.
7.3 Ejemplo de servicio estándar de acción única
Un ejemplo más complicado es el de un "agente de acción de devolución" que necesita tres agentes de información antes de poder realizar cualquier verificación de devolución o generar un albarán de devolución. Tenga en cuenta que, en la práctica, la mayoría de los servicios se ajustan a este patrón de diseño de "Acción única con agente(s) de información como prerrequisitos". La Tabla5muestra una conversación de muestra que comprende un solo agente de acción con un agente de información como prerrequisito.
7.4 Agente de acción que sigue a otro agente de acción
A veces, un servicio puede constar de múltiples agentes de acción que están interrelacionados entre sí a través de una conexión de seguimiento. Regrese a la FIG.13para ver un ejemplo, que muestra una arquitectura que comprende agentes de acción de seguimiento1308y1310a partir del agente de acción de activación1302que abarca dos turnos de conversación.
7.5 Ejemplo: Servicio único con múltiples agentes de acción
La FIG.16muestra un diagrama1600que ilustra un flujo de proceso de un servicio que comprende múltiples agentes de acción, de acuerdo con realizaciones de ejemplo de la divulgación. La Tabla6muestra un ejemplo de diálogo generado por un solo servicio con múltiples agentes de acción conectados a través de un seguimiento. Nótese que tanto el diagrama1600en la FIG.16como el ejemplo de diálogo en la Tabla6ilustran la misma secuencia de conversación. Los bloques de la FIG.16están referenciados en la Tabla6correspondiente.
8. Orquestación de servicios y anatomía de la construcción de conversaciones
8 1 Función del Masterbot
No es suficiente operar un asistente virtual multiservicio con sólo un conjunto de agentes de acción y agentes de información. Se necesita un masterbot especial (también llamado árbitro o agente árbitro) para arbitrar, resolver conflictos y facilitar entre todos los agentes disponibles para generar una conversación versátil y fluida con los usuarios finales. En esta sección se describe cómo funciona el masterbot según una realización de la presente invención.
En una realización, el masterbot maneja las siguientes funciones:
• Agente de acción de arbitraje e invocación.
• Comprobación de la dependencia de los agentes de información, cumplimiento y uso compartido/reutilización entre diferentes agentes de acción o los mismos.
• Gestión del flujo de diálogo y del estado de la aplicación para navegar por los agentes de acción. Remítase nuevamente a la FIG.2,que muestra una arquitectura de la plataforma de asistente virtual e ilustra el rol de alto nivel del masterbot204y la relación entre el masterbot204y la pluralidad de agentes de acción208y agentes de información2l0.
Como ya se ha mencionado, las conversaciones se ensamblan a partir de la ejecución de bloques de construcción de conversaciones: agentes de información y/o agentes de acción. Para que el robot maestro pueda seleccionar y gestionar el flujo de estos distintos agentes, necesita aprovechar algunos otros componentes:
• Módulo NLU para intención, intención de seguimiento, acto de habla, etc.
• Análisis de sentimientos.
• Ontología de servicios de dominio: la relación lógica entre los distintos servicios.
• Datos contextuales para ajuste personalizado y situacional.
Esta sección se centra en cómo el robot maestro aprovecha las pistas anteriores para que el sistema global funcione de forma eficiente.
8.2 Flujo de trabajo del Masterbot
La FIG.17muestra un diagrama1700que ilustra componentes y un flujo de proceso del masterbot, de acuerdo con ejemplos de la divulgación. El enunciado del usuario final1702se procesa a través del módulo NLU1704para extraer datos de construcciones del lenguaje, intención del usuario, clasificación, extracción de entidades, análisis de actos de habla, análisis de sentimientos, etc. En primer lugar, el estado de invocación del diálogo actual y el estado de la aplicación se recuperan de la base de datos de estado del diálogo y del estado de la aplicación1708.
A continuación, un paso de decisión1706determina si el sistema se encuentra actualmente en la fase de encuesta de un agente de información activo. En caso afirmativo, el proceso pasa al módulo de cumplimiento del agente de información1710.En el paso de decisión1712,se determina si el valor de información del agente de información se ha cumplido con éxito o no. En caso contrario, se activa el módulo de encuesta del agente de información1720para encuestar al usuario sobre el valor de la información utilizando el módulo de generación de lenguaje natural (NLG)1732.En caso afirmativo,se activa el módulo evaluador del agente de acción1722.
A continuación, en el paso de decisión1724,se determina si se cumplen o no todos los agentes de información, que son condiciones previas para el agente de acción dado. En caso contrario, el proceso vuelve al módulo de cumplimiento del agente de información1710para identificar el próximo agente de información que necesita que se cumpla un valor de información para cumplir con cualquier requisito previo faltante de los agentes de información. En caso afirmativo, se activa el módulo de ejecución del agente de acción1728, que se basa en el almacén de datos contextuales1726y/o en las puertas de enlace API1730a servicios externos o internos, según corresponda, para cumplir con las condiciones de salida del agente de acción. Finalmente, se activa el módulo de generación de respuesta1732para la generación de lenguaje natural (NLG), que genera una respuesta de bot1736,así como también actualiza el estado del diálogo (estado de invocación) y establece condiciones de activación de seguimiento1734,si es necesario. El estado de diálogo actualizado y las condiciones de activación de seguimiento, si las hay, se pasan luego a la base de datos de estado de diálogo y estado de aplicación1708,que a su vez proporciona esta información al bloque de decisión1706para su ejecución en el próximo turno de diálogo.
Si en el paso de decisión1706,se determina que el sistema no está actualmente en la fase de estudio de un agente de información activo, entonces se activa el módulo selector de agente de acción1716, que maneja el cambio de nivel superior, el seguimiento, el reingreso y la gestión fuera de guion, según corresponda. El módulo selector de agente de acción1716se basa en la información de la base de datos de estado de diálogo y estado de aplicación1708,el agente de acción y el almacén de agente de información1714,así como en las reglas y modelos de política de diálogo1714para seleccionar el agente de acción apropiado para su ejecución. Una vez que se selecciona un agente de acción determinado para su ejecución, se activa el módulo evaluador de agente de acción1722y el proceso continúa como se indicó anteriormente.
8.2.1 Proceso de arbitraje del agente de acción
Aunque hay muchas técnicas de implementación posibles para apoyar el requisito de funcionalidad masterbot de selección de agente de acción (también conocido como arbitraje), esta sección describe una posible solución que, además de la anotación de texto estándar y el método de clasificación de intención, puede aprovechar una ontología de conceptos específicos del dominio para explotar las relaciones semánticas y lógicas adicionales entre los diferentes conceptos (y por lo tanto sus agentes de acción asociados) para una mejor experiencia general del usuario. La flexibilidad de utilizar diferentes estrategias de selección del agente de acción más adecuado para adaptarse al flujo de conversación actual es una ventaja importante de esta invención. Esta sección también explica cómo un sistema basado en reglas puede convertirse en un enfoque basado en el aprendizaje automático a medida que el sistema recopila cada vez más datos conversacionales.
La FIG.18muestra un diagrama1800de un método de selección de agente de acción que utiliza una clasificación de ontología conceptual y una clasificación de intención basada en texto, de acuerdo con realizaciones de ejemplo de la divulgación. La expresión del usuario final1802se procesa para determinar un comando funcional que es independiente del estado de procesamiento para gestionar comandos de control de flujo de conversación comunes (por ejemplo, repetir, retener/esperar/pausar, etc. ). Por ejemplo, si el usuario pronuncia "Espera", el robot maestro puede asignar un agente de acción de utilidad especial para responder con algo como "Claro, tómate tu tiempo", o alternativamente, simplemente permanecer en silencio para que el usuario final continúe con el siguiente turno.
En el paso de decisión1806,se determina si el masterbot está esperando una situación de "seguimiento" o una situación de "nivel superior" en función de los estados de invocación por conversación1808.Estos dos términos se utilizan para distinguir dos situaciones principales de estado de diálogo - ¿el masterbot está anticipando proactivamente algo específico del usuario final (esperando un "seguimiento" del usuario final) o el masterbot simplemente va a ser reactivo a lo que dice el usuario final ("nivel superior"). Un ejemplo de "seguimiento" se produce cuando el masterbot pide al usuario final aclaraciones o información adicional. Por ejemplo, el usuario final empieza con "¿Puedo pedir algo de comer?" y el bot dice: "¿Es para aquí o para llevar?". En este punto, el masterbot espera dos escenarios de seguimiento: "comer aquí" o "para llevar". Se trata de una situación diferente a la primera pregunta, que corresponde a una situación de “alto nivel”. Para cada caso, el masterbot puede aplicar un enfoque basado en reglas para tomar una decisión acertada sobre la selección del agente de acción. En caso de que se trate de una situación de “seguimiento”, el proceso se ramifica hacia la izquierda a la rama de seguimiento1810;mientras que en caso de que se trate de una situación de “nivel superior”, el proceso se ramifica hacia la derecha a la rama de nivel superior1812.La rama de seguimiento (izquierda)1810y la rama de nivel superior (derecha)1812se analizan cada una por separado.
Si se trata de una situación de seguimiento y el proceso se bifurca hacia la izquierda, si se confirma una de las condiciones de seguimiento previstas, se selecciona el agente de acción correspondiente para activarlo en el paso1818.De lo contrario, en caso de que se trate de una respuesta fuera del script del usuario, se activa el paso de manejo de excepciones1816. En un escenario, el usuario abandona esa línea de pensamiento y el proceso vuelve a la rama de nivel superior1812.De lo contrario, el proceso selecciona una rama de varios casos posibles de control de flujo, ya sea seleccionando agentes de acción de control de flujo en consecuencia en el paso1822o seleccionando agentes de acción de respuesta basados en conocimiento en el paso1824.
En el caso de que se trate de una situación de nivel superior y el proceso se ramifique hacia la derecha a la rama de nivel superior1812,en el paso de decisión1820,el proceso asigna el enunciado a uno de los conceptos en la ontología del dominio. Si el mapeo conceptual1820es exitoso, entonces el proceso aplica una selección semántica con la ayuda del proceso de ontología conceptual en el paso1828,que se basa en la ayuda del historial de conversación y otros datos contextuales1814.En relación con la FIG.19Ase describe un ejemplo del proceso de selección semántica con ontología de conceptos. Si el proceso de selección semántica con ontología de conceptos es exitoso, como se determina en el paso de decisión1832,entonces el proceso se completa con un agente de acción elegido en el paso1833.De lo contrario, el proceso aplica un proceso de selección de clasificación de intención basado en texto en el paso1826,que se describe a continuación.
Si el mapeo conceptual1820no tiene éxito, entonces el proceso aplica un proceso de selección de clasificación de intención basado en texto1826.El proceso de selección de clasificación de intención basado en texto se describe en relación con la FIG.19B.Si el proceso de selección de clasificación de intención basado en texto es exitoso, como se determina en el paso de decisión1830,entonces el proceso se completa con un agente de acción elegido en el paso1831.De lo contrario, si el proceso de selección de clasificación de intenciones basado en texto no tiene éxito, entonces se activa la gestión de excepciones1835para gestionar varias clases de excepciones.
8.2.2 Selección del agente de acción mediante la clasificación de ontología conceptual
La FIG.19Amuestra un diagrama1900que ilustra un ejemplo de clasificación de ontología conceptual, de acuerdo con realizaciones de ejemplo de la divulgación. Se muestra una clasificación ontológica de conceptos que tiene nueve conceptos en tres capas con seis agentes de acción asociados a cinco de ellos. La ontología permite al robot maestro aplicar el conocimiento del dominio para responder mejor a las expresiones del usuario final con los agentes de acción disponibles. Se muestran cuatro ejemplos ilustrativos de una plataforma de atención al cliente de comercio electrónico1902:
• Si el enunciado se asigna al “Paquete de seguimiento”1904,el masterbot puede elegir directamente invocar al Agente de acción “T”1906.
• Si el enunciado está asignado a "Devolver"1908y no hay ningún agente de acción asociado directamente a "Devolver", entonces el masterbot puede invocar al Agente de Acción "E"1910para ayudar al usuario con una opción para intercambiar un artículo1912,en lugar de devolverlo.
• Si el enunciado se asigna con confianza media a "Reordenar"1914(así como algo más como una Modificación de pedido1922) y previamente el usuario final había completado una revisión positiva del producto1918a través del Agente de acción "L"1920,mientras que normalmente el masterbot no puede estar seguro de la intención del usuario final, pero en este caso, es mucho más probable que seleccione el Agente de acción de reordenar "R"1916.
• Si el enunciado se asigna a "Búsqueda de productos"1924,y hay más de un agente de acción1926y1928que pueden responder a la solicitud, el masterbot puede utilizar datos empíricos para elegir uno sobre los demás.
Para ilustrarlo, consideremos un ejemplo sencillo de cómo puede aprovecharse la ontología de dominio para ayudar al robot maestro a seleccionar un agente de acción. Supongamos que el masterbot está equipado con una mini ontología de conceptos jerárquicos con solo nueve conceptos como se muestra en el diagrama1900.
En el diagrama1900se muestran las relaciones padre-hijo (también conocidas como relaciones "Es_Miembro"), así como las relaciones semánticas (por ejemplo, Devolución1908e Intercambio1912suelen estar relacionadas entre sí porque los compradores pueden elegir cualquiera de las dos), o simplemente conectadas de forma lógica en secuencia cronológica o relación causal como Dejar revisión del producto1918y Volver a pedir1914.Durante el tiempo de configuración/diseño, se configuran cuatro agentes de acción para asociarlos con cinco de los ocho conceptos para su activación directa.
En tiempo de ejecución, diferentes entradas de enunciado e historias de conversación pueden afectar a cómo el masterbot toma la decisión de selección del agente de acción, como se ilustra en los siguientes ejemplos, correspondientes a los cuatro ejemplos resumidos anteriormente.
• Si el enunciado se identifica inequívocamente como uno de los cuatro conceptos, el robot maestro puede simplemente elegir el agente de acción correspondiente. Por ejemplo: "¿Dónde está mi paquete?" se asigna al concepto "Seguimiento de paquete"1904y, por lo tanto, se seleccionará el Agente de acción "T"1906.
• Si el enunciado se asigna a Retorno1908,el masterbot entiende que no hay ningún agente de acción asignado al concepto de Retorno1908.Sin embargo, el Agente de Acción "E"1910puede ayudar al usuario final a iniciar un Intercambio1912, ya que esta es una buena opción para muchos compradores según lo entiende el masterbot. El masterbot puede elegir seleccionar directamente el Agente de Acción "E"1910(que puede realizar la función de intercambio). Alternativamente, el masterbot puede preguntar al usuario final si desea invocar el Agente de Acción "E"1910.Este tipo de conversación con el usuario final puede llevarse a cabo mediante una utilidad "Agente de Acción de Desambiguación" (no mostrada) cuya única responsabilidad es obtener información de los usuarios finales para ayudar al proceso de selección del agente de acción principal.
• Si el enunciado está modestamente mapeado a Re-Order1914(así como algo más como una Modificación de Orden1922) y previamente el usuario final había completado una revisión positiva del producto (a través del Agente de Acción "L"1920previamente activado), mientras que normalmente el masterbot no estaría seguro de la selección del agente de acción, en este caso, es más probable que el masterbot se incline a seleccionar el Agente de Acción de Re-Order "R"1916.Tenga en cuenta que si el masterbot no está muy seguro, de forma similar al caso anterior, puede pedir a un "Agente de Acción de Desambiguación" (no se muestra) que le ayude a obtener la opinión del usuario y proceder en consecuencia.
• Si el enunciado se asigna al concepto de búsqueda de producto1924,y el masterbot descubre que hay dos agentes de acción1924y1926que pueden responder a esta solicitud, el masterbot puede utilizar datos empíricos para elegir uno sobre el otro. Por ejemplo, si un Agente de Acción "S1"1926busca en un catálogo solo en línea, y otro Agente de Acción "S2"1928puede realizar búsquedas tanto en línea como en tiendas físicas (fuera de línea), el masterbot puede utilizar datos empíricos para elegir uno.
La FIG.19Bmuestra un diagrama1950que ilustra un ejemplo de clasificación de intención basada en texto, de acuerdo con realizaciones de ejemplo de la divulgación. Se muestra un ejemplo de clasificación de intenciones basado en texto, que comprende tres clases, con un agente de acción asociado a cada una de ellas. Un clasificador de texto1952clasifica el enunciado del usuario en una de tres clases1954, 1956o1958.
Cada una de las tres clases1954, 1956y1958tiene un agente de acción1960, 1962, o1964asociado a cada una de ellas, respectivamente. Con base en la salida del clasificador de texto1952,se selecciona uno de los tres agentes de acción1960, 1962,o1964según la clase coincidente.
8.2.3 Enfoque basado en aprendizaje automático para la selección y clasificación de agentes de acción El masterbot puede implementarse con diferentes estrategias de implementación en lo que respecta a la selección del agente de acción, en función de las preferencias del desarrollador y de la disponibilidad de determinados recursos o conjuntos de herramientas. En algunas realizaciones, se utiliza un proceso de selección basado en reglas para seleccionar los agentes de acción. En otras realizaciones, se utiliza un proceso de selección de aprendizaje automático basado en datos.
Dentro del proceso de selección del aprendizaje automático, la elección de la aplicación específica puede variar. Un enfoque es considerar la selección del agente de acción de nivel superior como un problema de clasificación de "n clases". La Tabla 7 ilustra los diversos registros de datos que una plataforma de asistente virtual puede recopilar y utilizar como datos de entrenamiento para construir un modelo para realizar la selección óptima del agente de acción, ilustrando una lista de muestra de categorías de datos que un enfoque de aprendizaje automático puede aprovechar.
8.2.4 Invocación óptima del agente de información mediante un proceso de selección basado en inferencia
Como se ha descrito anteriormente, una vez que el masterbot identifica la necesidad de activar un agente de acción, el masterbot examinará primero las condiciones previas para evaluar el agente o agentes de información asociados para confirmar que los valores de información están presentes y son suficientes. Si no es el caso, el masterbot activará el agente de información necesario para iniciar el subdiálogo de encuesta de información con el usuario (por ejemplo, haciendo preguntas de seguimiento al usuario final) para ayudar a recopilar la información necesaria. En otras realizaciones, el masterbot puede hacerlo mejor si la implementación del agente de información puede autoinformar de la relación de inferencia entre sí mismo y otros agentes de información en tiempo de ejecución. En este caso, el masterbot puede utilizar datos empíricos para examinar todos los agentes de información posibles (es decir, el agente de información original, así como sus compañeros con conexiones de inferencia) y tomar la decisión de seleccionar uno.
La siguiente secuencia de diálogo ilustra esta capacidad:
• Paso 1: El usuario final dice: "¿Puedo devolver mis camisetas?" a través del dispositivo Alexa Echo.
• Paso 2: El masterbot identifica que debe seleccionar un "Agente de acción de devolución", que tiene un "Agente de información de número de pedido" configurado como uno de sus requisitos previos.
• Paso 3: El masterbot evalúa " Agente de Información Número de Pedido" y descubre que aún no tiene el valor de información; al mismo tiempo, se informa de que hay dos agentes de información conectados que podrían ser utilizados para la inferencia: " Agente de Información de la Fecha de Compra del Pedido" y "Agente de Información de la Posición del Producto del Pedido", ambos no tienen sus correspondientes valores de información establecidos todavía.
• Paso 4: Para generar una pregunta de seguimiento al usuario para sondear el valor del Número de Pedido, el masterbot considera ahora tres opciones entre "Agente de Información del Número de Pedido", "Agente de Información de la Fecha de Compra del Pedido" y "Agente de Información del Artículo del Producto del Pedido". Teniendo en cuenta que el valor del número de pedido es una etiqueta alfanumérica larga (por ejemplo, con un formato como ORDR9827321029) y basándose en los datos históricos de interacción de uso en canales de voz como Alexa, el masterbot descubre que la tasa de éxito de hacer preguntas de encuesta como "Por favor, dígame el número de pedido completo" es relativamente baja, el masterbot puede decidir utilizar " Agente de información de datos de compra de pedidos" para generar una respuesta. El resultado sería algo así como "¿Cuál fue la fecha de compra del pedido? ¿La semana pasada o el 15 de abril?"
• Paso 5: El usuario responde: "Fue de la semana pasada". Internamente, el valor de información del "Agente de información de fecha de compra del pedido" se cumplió primero y, debido a eso, el valor de información del "Agente de información de número de pedido" también se cumple correctamente.
• Paso 6: Ahora, con el valor de información del "Agente de información de número de pedido" cumplido, el masterbot puede proceder a otros requisitos previos o a la invocación de la acción final del "Agente de acción de devolución".
8.3 Ejemplo de conversación multiservicio con tecnología de Masterbot y nueve agentes
La FIG.20muestra un diagrama2000que ilustra un ejemplo de conversación multiservicio operada por el masterbot y una pluralidad de agentes de información y acción, de acuerdo con realizaciones de ejemplo de la divulgación. El diagrama2000muestra el masterbot y todos los bloques de construcción de la conversación (nueve agentes de acción e información en total) involucrados en una conversación de muestra orientada a múltiples servicios, mostrando cuatro agentes de acción y cinco agentes de información.
El masterbot2002tiene conexión con un agente de acción de recomendación de productos en oferta2004,que tiene un agente de información de categoría de producto2012y un agente de información de género2014como conexiones de prerrequisitos. El agente de recomendación de productos en oferta2004también tiene una conexión de valor establecido con el agente de información de categoría de producto2018.Un agente de acción de agradecimiento independiente2006no tiene requisitos previos, y puede activarse, por ejemplo, basándose en el análisis de sentimiento de la expresión del usuario final, como se ha descrito anteriormente. Un agente de acción de tienda cercano2008tiene un agente de información de configuración regional2016como conexión de prerrequisito y una conexión de valor establecido con el agente de información de tienda2020.Finalmente, el agente de acción de verificación de disponibilidad en tienda2010tiene el agente de información de categoría de producto2018y el agente de información de tienda2020como conexiones de requisitos previos.
La Tabla8muestra un diálogo de muestra de múltiples servicios desde el punto de vista del masterbot correspondiente a la conversación de muestra de múltiples servicios ilustrada en el diagrama2000.
9. Implementación utilizando productos, métodos y entidades computacionales de programas informáticos
9.1 Descripción general de la implementación de hardware y software
La presente invención puede implementarse en una combinación de hardware y/o software. A continuación se describe un entorno operativo de hardware y software ilustrativo para implementar una realización de la presente invención.
Las realizaciones de la presente divulgación pueden implementarse de varias maneras, incluso como productos de programas informáticos que comprenden artículos de fabricación. Un producto de programa informático puede incluir un medio de almacenamiento no transitorio legible por ordenador que almacene aplicaciones, programas, módulos de programa, scripts, código fuente, código de programa, código objeto, código byte, código compilado, código interpretado, código máquina, instrucciones ejecutables y/o similares (también denominados en el presente documento instrucciones ejecutables, instrucciones de ejecución, productos de programa informático, código de programa y/o términos similares utilizados en el presente documento indistintamente). Dichos medios de almacenamiento no transitorios legibles por ordenador incluyen todos los medios legibles por ordenador (incluidos los medios volátiles y no volátiles).
En una realización, un medio de almacenamiento no volátil legible por ordenador puede incluir un disquete, un disco flexible, un disco duro, un almacenamiento de estado sólido (SSS) (por ejemplo, una unidad de estado sólido (SSD), una tarjeta de estado sólido (SSC), un módulo de estado sólido (SSM), una unidad flash empresarial, una cinta magnética o cualquier otro medio magnético no transitorio, y/o similares. Un medio de almacenamiento no volátil legible por ordenador también puede incluir una tarjeta perforada, una cinta de papel, una hoja de marcas ópticas (o cualquier otro medio físico con patrones de agujeros u otros indicios ópticamente reconocibles), una memoria de sólo lectura de disco compacto (CD-ROM), un disco compacto regrabable (CD-RW), un disco versátil digital (DVD), un disco Blu-ray (BD), cualquier otro medio óptico no transitorio, y/o similares. Dicho medio de almacenamiento no volátil legible por ordenador también puede incluir memoria de sólo lectura (ROM), memoria de sólo lectura programable (PROM), memoria de sólo lectura programable borrable (EPROM), memoria de sólo lectura programable borrable eléctricamente (EEPROM), memoria flash (por ejemplo, Serial, NAND, NOR, y/o similares), tarjetas de memoria multimedia (MMC), tarjetas de memoria digital segura (SD), tarjetas SmartMedia, tarjetas CompactFlash (CF), Memory Sticks, y/o similares. Además, un medio de almacenamiento no volátil legible por ordenador también puede incluir una memoria de acceso aleatorio de puente conductor (CBRAM), una memoria de acceso aleatorio de cambio de fase (PRAM), una memoria de acceso aleatorio ferroeléctrica (FeRAM), una memoria de acceso aleatorio no volátil (NVRAM), memoria de acceso aleatorio magnetorresistiva (MRAM), memoria de acceso aleatorio resistiva (RRAM), memoria de silicio-óxido-nitruro-óxido-silicio (SONOS), memoria de acceso aleatorio de puerta de unión flotante (FJG RAM), memoria Millipede, memoria racetrack, y/o similares.
En una realización, un medio de almacenamiento volátil legible por ordenador puede incluir memoria de acceso aleatorio (RAM), memoria de acceso aleatorio dinámico (DRAM), memoria de acceso aleatorio estático (SRAM), memoria de acceso aleatorio dinámico en modo de página rápida (FPM DRAM), memoria de acceso aleatorio dinámico con salida de datos ampliada (EDO DRAM), memoria de acceso aleatorio dinámico síncrono (SDRAM), memoria de acceso aleatorio dinámico síncrono de doble velocidad de datos (DDR SDRAM), memoria de acceso aleatorio dinámico síncrono de doble velocidad de datos tipo dos (DDR2 SDRAM), memoria dinámica sincrónica de acceso aleatorio de doble velocidad de datos tipo tres (DDR3 SDRAM), memoria dinámica de acceso aleatorio Rambus (RDRAM), memoria RAM de doble transistor (TTRAM), memoria RAM de tiristor (T-RAM), memoria de condensador cero (Z-RAM), módulo de memoria en línea Rambus (RIMM), módulo de memoria en línea doble (DIMM), módulo de memoria en línea simple (SIMM), memoria de acceso aleatorio de vídeo (VRAM), memoria caché (incluidos varios niveles), memoria flash, memoria de registro y/o similares. Se apreciará que cuando las realizaciones se describen para utilizar un medio de almacenamiento legible por ordenador, otros tipos de medios de almacenamiento legibles por ordenador pueden ser sustituidos o utilizados además de los medios de almacenamiento legibles por ordenador descritos anteriormente.
Como debe apreciarse, varias realizaciones de la presente divulgación también pueden implementarse como métodos, aparatos, sistemas, dispositivos informáticos, entidades informáticas y/o similares. Como tal, las realizaciones de la presente divulgación pueden tomar la forma de un aparato, sistema, dispositivo informático, entidad informática, y/o similares que ejecutan instrucciones almacenadas en un medio de almacenamiento legible por ordenador para realizar ciertos pasos u operaciones. Por lo tanto, las realizaciones de la presente divulgación también pueden adoptar la forma de una realización totalmente de hardware, una realización totalmente de productos de programas informáticos y/o una realización que comprenda una combinación de productos de programas informáticos y hardware que realicen ciertos pasos u operaciones.
Las realizaciones de la presente divulgación se describen a continuación con referencia a diagramas de agentes e ilustraciones de diagramas de flujo. Por lo tanto, debe entenderse que cada bloque de los diagramas de bloques e ilustraciones de diagramas de flujo puede implementarse en forma de un producto de programa informático, una realización totalmente de hardware, una combinación de hardware y productos de programa informático, y/o aparatos, sistemas, dispositivos informáticos, entidades informáticas, y/o similares que lleven a cabo instrucciones, operaciones, pasos, y palabras similares utilizadas indistintamente (por ejemplo, las instrucciones ejecutables, instrucciones para la ejecución, código de programa, y/o similares) en un medio de almacenamiento legible por ordenador para su ejecución. Por ejemplo, la recuperación, carga y ejecución del código puede realizarse secuencialmente, de forma que se recupera, carga y ejecuta una instrucción cada vez. En algunas realizaciones ejemplares, la recuperación, la carga y/o la ejecución pueden realizarse en paralelo, de modo que varias instrucciones se recuperan, cargan y/o ejecutan juntas. De este modo, dichas realizaciones pueden producir máquinas específicamente configuradas que realicen los pasos u operaciones especificados en los diagramas de bloques y diagramas de flujo. En consecuencia, los diagramas de bloques y las ilustraciones de diagramas de flujo admiten diversas combinaciones de realizaciones para ejecutar las instrucciones, operaciones o pasos especificados.
9.2 Arquitectura de sistema ejemplar
Una realización ejemplar de la presente divulgación puede incluir una o más entidades informáticas de gestión (por ejemplo, servidores)2101,una o más redes y una o más entidades informáticas de usuario (por ejemplo, clientes)2201,como se muestra en las FIGs.21-22.Cada uno de estos componentes, entidades, dispositivos, sistemas y palabras similares utilizadas en el presente documento indistintamente pueden estar en comunicación directa o indirecta, por ejemplo, entre sí a través de la misma o diferentes redes cableadas o inalámbricas. Además, aunque las FIGS.21-22ilustran las diversas entidades del sistema como entidades independientes y separadas, las diversas realizaciones no están limitadas a esta arquitectura particular.
9.3 Entidad de computación de gestión ejemplar
La FIG.21proporciona un esquema2100de una entidad informática de gestión (por ejemplo, servidor)2101según una realización de la presente divulgación. En general, los términos entidad informática, ordenador, entidad, dispositivo, sistema y/o palabras similares utilizados en el presente documento indistintamente pueden referirse, por ejemplo, a uno o más ordenadores, entidades informáticas, ordenadores de sobremesa, teléfonos móviles, tabletas, phablets, ordenadores portátiles, ordenadores portátiles, sistemas distribuidos, consolas de juegos, relojes, gafas, iBeacons, balizas de proximidad, llaveros, etiquetas de identificación por radiofrecuencia (RFID), auriculares, escáneres, televisores, dongles, cámaras, pulseras, artículos/dispositivos para llevar puestos, quioscos, terminales de entrada, servidores o redes de servidores, blades, pasarelas, conmutadores, dispositivos de procesamiento, entidades de procesamiento, descodificadores, repetidores, enrutadores, puntos de acceso a la red, estaciones base, similares, y/o cualquier combinación de dispositivos o entidades adaptados para realizar las funciones, operaciones y/o procesos descritos en el presente documento. Dichas funciones, operaciones y/o procesos pueden incluir, por ejemplo, transmitir, recibir, operar sobre, procesar, mostrar, almacenar, determinar, crear/generar, monitorizar, evaluar, comparar y/o términos similares utilizados en el presente documento indistintamente. En una realización, estas funciones, operaciones y/o procesos pueden realizarse sobre datos, contenido, información y/o términos similares utilizados en el presente documento indistintamente.
Como se indica, en una realización, la entidad informática de gestión2101también puede incluir una o más interfaces de comunicaciones2120para comunicarse con varias entidades informáticas, como por ejemplo comunicando datos, contenido, información y/o términos similares utilizados en el presente documento indistintamente que se pueden transmitir, recibir, operar, procesar, mostrar, almacenar y/o similares. Por ejemplo, la entidad informática de gestión2101puede comunicarse con entidades informáticas de usuario2201y/o una variedad de otras entidades informáticas.
Como se muestra en la FIG.21,en una realización, la entidad informática de gestión2101puede incluir o estar en comunicación con uno o más elementos de procesamiento2105(también denominados procesadores, circuitos de procesamiento, y/o términos similares utilizados en el presente documento indistintamente) que se comunican con otros elementos dentro de la entidad informática de gestión2101a través de un bus, por ejemplo. Como se entenderá, el elemento de procesamiento2105puede implementarse de varias maneras diferentes. Por ejemplo, el elemento de procesamiento2105pueden ser uno o varios dispositivos lógicos programables complejos (CPLD), microprocesadores, procesadores multinúcleo, entidades de coprocesamiento, procesadores de conjunto de instrucciones específicas de la aplicación (ASIP), microcontroladores y/o controladores. Además, el elemento de procesamiento2105puede estar incorporado como uno o más dispositivos o circuitos de procesamiento adicionales. El término circuitería puede referirse a una realización enteramente de hardware o a una combinación de hardware y productos de programas informáticos. De este modo, el elemento de procesamiento2105puede estar incorporado como circuitos integrados, circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), matrices lógicas programables (PLA), aceleradores de hardware, otros circuitos y/o similares. Como se entenderá por tanto, el elemento de procesamiento2105puede estar configurado para un uso particular o configurado para ejecutar instrucciones almacenadas en medios volátiles o no volátiles o de otro modo accesibles al elemento de procesamiento2105.Como tal, ya sea configurado por productos de hardware o programas de ordenador, o por una combinación de los mismos, el elemento de procesamiento2105puede ser capaz de realizar pasos u operaciones de acuerdo con realizaciones de la presente divulgación cuando se configura en consecuencia.
En una realización, la entidad informática de gestión2101puede incluir además o estar en comunicación con medios no volátiles (también denominados almacenamiento no volátil, memoria, almacenamiento de memoria, circuitos de memoria y/o términos similares utilizados en el presente documento indistintamente). En una realización, el almacenamiento o memoria no volátil puede incluir uno o más medios de almacenamiento o memoria no volátil2110,incluyendo, entre otros, discos duros, ROM, PROM, EPROM, EEPROM, memoria flash, MMC, tarjetas de memoria SD, Memory Sticks, CBRAM, PRAM, FeRAM, NVRAM, MRAM, RRAM, SONOS, FJG RAM, memoria Millipede, memoria de pista de carreras y/o similares. Como se reconocerá, los medios de almacenamiento o memoria no volátil pueden almacenar bases de datos, instancias de bases de datos, sistemas de gestión de bases de datos, datos, aplicaciones, programas, módulos de programas, scripts, código fuente, código objeto, código byte, código compilado, código interpretado, código máquina, instrucciones ejecutables, y/o similares. Los términos base de datos, instancia de base de datos, sistema de gestión de base de datos y/o términos similares utilizados en el presente documento indistintamente pueden referirse a una colección de registros o datos que se almacenan en un medio de almacenamiento legible por ordenador utilizando uno o más modelos de base de datos, como un modelo de base de datos jerárquica, un modelo de red, un modelo relacional, un modelo entidad-relación, un modelo de objetos, un modelo de documentos, un modelo semántico, un modelo gráfico y/o similares.
En una realización, la entidad informática de gestión2101puede incluir además o estar en comunicación con medios no volátiles (también denominados almacenamiento no volátil, memoria, almacenamiento de memoria, circuitos de memoria y/o términos similares utilizados en el presente documento indistintamente). En una realización, el almacenamiento volátil o la memoria también pueden incluir uno o más medios de almacenamiento volátil o memoria2115,incluyendo, entre otros, RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, T-RAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, memoria caché, memoria de registro y/o similares. Como se reconocerá, el almacenamiento volátil o medios de memoria pueden ser utilizados para almacenar al menos porciones de las bases de datos, instancias de bases de datos, sistemas de gestión de bases de datos, datos, aplicaciones, programas, módulos de programa, scripts, código fuente, código objeto, código de bytes, código compilado, código interpretado, código máquina, instrucciones ejecutables, y/o similares siendo ejecutados por, por ejemplo, el elemento de procesamiento2105.De este modo, las bases de datos, instancias de bases de datos, sistemas de gestión de bases de datos, datos, aplicaciones, programas, módulos de programas, scripts, código fuente, código objeto, código de bytes, código compilado, código interpretado, código de máquina, instrucciones ejecutables y/o similares pueden utilizarse para controlar ciertos aspectos del funcionamiento de la entidad informática de gestión2101con la ayuda del elemento de procesamiento2105y el sistema operativo.
Como se indica, en una realización, la entidad informática de gestión2101también puede incluir una o más interfaces de comunicaciones2120para comunicarse con diversas entidades informáticas, como por ejemplo comunicando datos, contenido, información y/o términos similares utilizados en el presente documento indistintamente que pueden ser transmitidos, recibidos, operados, procesados, mostrados, almacenados y/o similares. Dicha comunicación puede ejecutarse utilizando un protocolo de transmisión de datos por cable, como la interfaz de datos distribuidos por fibra (FDDI), la línea de abonado digital (DSL), Ethernet, el modo de transferencia asíncrono (ATM), la retransmisión de tramas, la especificación de interfaz de servicios de datos por cable (DOCSIS) o cualquier otro protocolo de transmisión por cable. De manera similar, la entidad informática de gestión2101pueden estar configurados para comunicarse a través de redes de comunicación externas inalámbricas que utilicen cualquiera de una variedad de protocolos, como el servicio general de radio por paquetes (GPRS), el Sistema Universal de Telecomunicaciones Móviles (UMTS), el Acceso Múltiple por División de Código 2000 (CDMA2000), CDMA2000 1X (1xRTT), Acceso Múltiple por División de Código de Banda Ancha (WCDMA), Acceso Múltiple por División de Código Síncrono y División de Tiempo (TD-SCDMA), Evolución a Largo Plazo (LTE), Red Universal de Radio Acceso Terrestre Evolucionado (E-UTRAN), Evolución-Datos Optimizada (EVDO), Acceso a Paquetes de Alta Velocidad (HSPA), Acceso a Paquetes de Enlace Descendente de Alta Velocidad (HSDPA), IEEE 802. 11 (Wi-Fi), Wi-Fi Direct, 802. 16 (WiMAX), banda ultraancha (UWB), protocolos de infrarrojos (IR), protocolos de comunicación de campo cercano (NFC), Zigbee, protocolos Bluetooth, protocolos inalámbricos de bus serie universal (USB) y/o cualquier otro protocolo inalámbrico.
Aunque no se muestra, la entidad informática de gestión2101puede incluir o estar en comunicación con uno o más elementos de entrada, como una entrada de teclado, una entrada de ratón, una entrada de pantalla táctil/pantalla, entrada de movimiento, entrada de movimiento, entrada de audio, entrada de dispositivo señalador, entrada de joystick, entrada de teclado, y/o similares. La entidad informática de gestión2101también puede incluir o estar en comunicación con uno o más elementos de salida (no mostrados), tales como salida de audio, salida de vídeo, salida de pantalla/visualización, salida de movimiento, salida de movimiento y/o similares.
Como se apreciará, uno o más de los componentes de la entidad informática de gestión2101pueden estar ubicados de forma remota respecto de otros componentes de la entidad informática de gestión2101,tal como en un sistema distribuido. Además, uno o más de los componentes pueden combinarse y pueden incluirse en la entidad informática de gestión2101componentes adicionales que realicen funciones descritas en el presente documento. De este modo, la entidad informática de gestión2101puede adaptarse para acomodarse a una variedad de necesidades y circunstancias. Como se reconocerá, estas arquitecturas y descripciones se proporcionan únicamente con fines ejemplares y no limitan las diversas realizaciones.
9.4 Entidad de computación de usuario ejemplar
Un usuario puede ser un individuo, una familia, una empresa, una organización, una entidad, un departamento dentro de una organización, un representante de una organización y/o persona, y/o similares. En un ejemplo, los usuarios pueden ser personal transportista, consignatarios/transportistas, destinatarios/destinatarios y/o similares. Por ejemplo, un usuario puede operar una entidad informática de usuario (por ejemplo, cliente)2201que incluye uno o más componentes que son funcionalmente similares a los de la entidad informática de gestión2101.La FIG.22proporciona un esquema ilustrativo2200representativo de una entidad informática de usuario2201que puede utilizarse junto con realizaciones de la presente divulgación. En general, los términos dispositivo, sistema, entidad informática, entidad y/o palabras similares utilizados en el presente documento indistintamente pueden referirse, por ejemplo, a uno o más ordenadores, entidades informáticas, ordenadores de sobremesa, teléfonos móviles, tabletas, phablets, ordenadores portátiles, ordenadores portátiles, sistemas distribuidos, consolas de juegos, relojes, gafas, llaveros, etiquetas de identificación por radiofrecuencia (RFID), auriculares, escáneres, cámaras, pulseras, quioscos, terminales de entrada, servidores o redes de servidores, blades, pasarelas, conmutadores, dispositivos de procesamiento, entidades de procesamiento, descodificadores, relés, enrutadores, puntos de acceso a la red, estaciones base, similares, y/o cualquier combinación de dispositivos o entidades adaptados para realizar las funciones, operaciones y/o procesos descritos en el presente documento. Las entidades informáticas de usuario2201pueden ser operadas por varias partes. Como se muestra en la FIG.22,la entidad informática de usuario2201puede incluir una antena2212,un transmisor2204(por ejemplo, radio), un receptor2206(por ejemplo, radio) y un elemento de procesamiento2208(por ejemplo, CPLD, microprocesadores, procesadores multinúcleo, entidades de coprocesamiento, ASIP, microcontroladores y/o controladores) que proporciona señales a y recibe señales del transmisor2204y el receptor2206,respectivamente.
Las señales proporcionadas y recibidas desde el transmisor2204y el receptor2206,respectivamente, pueden incluir información de señalización de acuerdo con los estándares de interfaz aérea de los sistemas inalámbricos aplicables. En este sentido, la entidad informática de usuario2201puede ser capaz de operar con uno o más estándares de interfaz aérea, protocolos de comunicación, tipos de modulación y tipos de acceso. Más particularmente, la entidad informática de usuario2201puede operar de acuerdo con cualquiera de una serie de estándares y protocolos de comunicación inalámbrica, tales como los descritos anteriormente con respecto a la entidad informática de gestión2101.En una realización particular, la entidad informática de usuario2201puede operar de acuerdo con múltiples estándares y protocolos de comunicación inalámbrica, tales como 5G, UMTS, CDMA2000, 1xRTT, WCDMA, TD-SCDMA, LTE, E-UTRAN, EVDO, HSPA, HSDPA, Wi-Fi, Wi-Fi Direct, WiMAX, UWB, IR, NFC, Bluetooth, USB y/o similares. De manera similar, la entidad informática de usuario2201puede operar de acuerdo con múltiples estándares y protocolos de comunicación por cable, tales como los descritos anteriormente con respecto a la entidad informática de gestión2101a través de una interfaz de red2220.
A través de estos estándares y protocolos de comunicación, la entidad informática de usuario2201puede comunicarse con varias otras entidades utilizando conceptos tales como Datos de Servicio Suplementario No Estructurados (USSD), Servicio de Mensajes Cortos (SMS), Servicio de Mensajería Multimedia (MMS), Señalización Multifrecuencia de Doble Tono (DTMF) y/o Marcador de Módulo de Identidad de Suscriptor (marcador SIM). La entidad informática del usuario2201también puede descargar cambios, complementos y actualizaciones, por ejemplo, a su firmware, software (por ejemplo, incluidas instrucciones ejecutables, aplicaciones, módulos de programa) y sistema operativo.
Según una realización, la entidad informática de usuario2201puede incluir aspectos de determinación de ubicación, dispositivos, módulos, funcionalidades y/o palabras similares utilizadas en el presente documento indistintamente. Por ejemplo, la entidad informática de usuario2201puede incluir aspectos de posicionamiento al aire libre, tales como un módulo de ubicación adaptado para adquirir, por ejemplo, latitud, longitud, altitud, geocódigo, rumbo, dirección, rumbo, velocidad, tiempo universal (UTC), fecha y/o varios otros datos/información. En una realización, el módulo de localización puede adquirir datos, a veces conocidos como datos de efemérides, identificando el número de satélites a la vista y las posiciones relativas de esos satélites. Los satélites pueden ser de diferentes tipos, incluidos los sistemas de satélites de órbita terrestre baja (LEO), los sistemas de satélites del Departamento de Defensa (DOD), los sistemas de posicionamiento Galileo de la Unión Europea, los sistemas de navegación Compass de China, los sistemas de satélites de navegación regional de la India, y/o similares. Como alternativa, la información de ubicación se puede determinar triangulando la posición2201de la entidad informática del usuario en conexión con una variedad de otros sistemas, incluidas torres celulares, puntos de acceso Wi-Fi y/o similares. Del mismo modo, la entidad informática de usuario 2201 puede incluir aspectos de posicionamiento en interiores, tales como un módulo de localización adaptado para adquirir, por ejemplo, latitud, longitud, altitud, geocódigo, curso, dirección, rumbo, velocidad, hora, fecha, y/o varias otras informaciones/datos. Algunos de los sistemas de interior pueden utilizar diversas tecnologías de posición o localización, como etiquetas RFID, balizas o transmisores de interior, puntos de acceso Wi-Fi, torres de telefonía móvil, dispositivos informáticos cercanos (por ejemplo, teléfonos inteligentes, ordenadores portátiles) y/o similares. Por ejemplo, tales tecnologías pueden incluir los iBeacons, las balizas de proximidad Gimbal, los transmisores Bluetooth Low Energy (BLE), los transmisores NFC, y/o similares. Estos aspectos del posicionamiento en interiores pueden utilizarse en diversos entornos para determinar la ubicación de alguien o algo con una precisión de centímetros o pulgadas.
La entidad informática de usuario2201también puede comprender una interfaz de usuario (que puede incluir una pantalla2216acoplada a un elemento de procesamiento2208) y/o una interfaz de entrada de usuario (acoplada a un elemento de procesamiento2208). Por ejemplo, la interfaz de usuario puede ser una aplicación de usuario, navegador, interfaz de usuario, y/o palabras similares utilizadas en el presente documento indistintamente que se ejecutan en y/o son accesibles a través de la entidad informática de usuario2201para interactuar con y/o causar la visualización de información de la entidad informática de gestión2101,como se describe en el presente documento. La interfaz de entrada de usuario puede comprender cualquiera de una serie de dispositivos o interfaces que permiten que la entidad informática del usuario2201reciba datos, como un teclado2218(duro o blando), una pantalla táctil, interfaces de voz/habla o movimiento u otro dispositivo de entrada. En realizaciones que incluyen un teclado2218,el teclado2218puede incluir (o hacer que se muestren) las teclas numéricas convencionales (0-9) y teclas relacionadas (#, *), y otras teclas utilizadas para operar la entidad informática del usuario2201y puede incluir un conjunto completo de teclas alfabéticas o un conjunto de teclas que se pueden activar para proporcionar un conjunto completo de teclas alfanuméricas. Además de proporcionar entradas, la interfaz de entrada de usuario puede utilizarse, por ejemplo, para activar o desactivar determinadas funciones, como protectores de pantalla y/o modos de suspensión. ;;La entidad informática de usuario2201también puede incluir almacenamiento volátil o memoria2222y/o almacenamiento no volátil o memoria2224,que pueden estar integrados y/o pueden ser extraíbles. Por ejemplo, la memoria no volátil puede ser ROM, P<r>O<m>, EPROM, EEPROM, memoria flash, MMCs, tarjetas de memoria SD, Memory Sticks, CBRAM, PRAM, FeRAM, NVRAM, MRAM, RRAM, SONOS, FJG RAM, memoria Millipede, memoria racetrack, y/o similares. La memoria volátil puede ser RAM, DRAM, SRAM, FPM DRAM, EDO DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, RDRAM, TTRAM, T-RAM, Z-RAM, RIMM, DIMM, SIMM, VRAM, memoria caché, memoria de registro y/o similares. El almacenamiento o memoria volátil y no volátil puede almacenar bases de datos, instancias de bases de datos, sistemas de gestión de bases de datos, datos, aplicaciones, programas, módulos de programas, scripts, código fuente, código objeto, código byte, código compilado, código interpretado, código máquina, instrucciones ejecutables y/o similares para implementar las funciones de la entidad informática de usuario2201.Como se indica, esto puede incluir una aplicación de usuario que reside en la entidad o es accesible a través de un navegador u otra interfaz de usuario para comunicarse con la entidad informática de gestión2101y/o varias otras entidades informáticas. ;En otra realización, la entidad informática de usuario2201puede incluir uno o más componentes o funcionalidades que son iguales o similares a los de la entidad informática de gestión2101,como se describe con mayor detalle anteriormente. Como se reconocerá, estas arquitecturas y descripciones se proporcionan únicamente con fines ejemplares y no limitan las diversas realizaciones. ;;10. Módulos ilustrativos de aprendizaje automático ;;La presente invención puede implementarse utilizando uno o más módulos de aprendizaje automático que implementen uno o más algoritmos implementados en un medio de almacenamiento no transitorio con código de programa almacenado en el mismo, el código de programa ejecutable por uno o más procesadores, como se ha descrito anteriormente. La siguiente descripción describe en detalle algunos de los algoritmos ilustrativos de aprendizaje automático útiles para implementar algunas realizaciones de la presente invención. ;;La FIG.23muestra un diagrama ilustrativo2300para un algoritmo de aprendizaje automático utilizado para implementar el arbitraje de masterbot y la evaluación de agentes de información y agentes de acción, de acuerdo con realizaciones de muestra de la invención. En una realización, el algoritmo de aprendizaje automático comprende un algoritmo de bosque aleatorio, un algoritmo de aprendizaje automático ilustrativo. Los algoritmos de bosque aleatorio utilizan una multitud de predictores de árboles de decisión2306de modo que cada árbol de decisión2306depende de los valores de un subconjunto aleatorio2304de los datos de entrenamiento2302,lo que minimiza las posibilidades de sobreajuste al conjunto de datos de entrenamiento. Los predictores del árbol de decisión se votan o promedian2308para obtener la predicción2310del algoritmo de bosque aleatorio. En una realización, el algoritmo de bosque aleatorio se implementa como se describe en Leo Breiman, Random Forests, Machine Learning, 45, 5-32, 2001, Kluwer Academic Publishers, Países Bajos, disponible en doi. org/10. 1023/A:1010933404324. El bosque aleatorio es sólo un algoritmo ilustrativo de aprendizaje automático que está dentro del alcance de la presente invención, y la presente invención no se limita al uso del bosque aleatorio. Otros algoritmos de aprendizaje automático, incluyendo pero no limitado a, vecino más cercano, árboles de decisión, máquinas de vectores de soporte (SVM), Adaboost, redes bayesianas, varias redes neuronales incluyendo redes de aprendizaje profundo, algoritmos evolutivos, y así sucesivamente, están dentro del alcance de la presente invención. ;;Como se ha señalado, las realizaciones de los dispositivos y sistemas (y sus diversos componentes) descritos en el presente documento pueden emplear la inteligencia artificial (IA) para facilitar la automatización de una o más características descritas en el presente documento (por ejemplo, la selección del agente de acción). Los componentes pueden emplear diversos esquemas basados en IA para llevar a cabo las diversas realizaciones/ejemplos en el presente documento expuestos. Para proporcionar o ayudar en las numerosas determinaciones (por ejemplo, determinar, averiguar, inferir, calcular, predecir, pronosticar, estimar, derivar, pronosticar, detectar, calcular) descritas en el presente documento, los componentes descritos en el presente documento pueden examinar la totalidad o un subconjunto de los datos a los que se les concede acceso y pueden proporcionar razonamiento sobre o determinar estados del sistema, entorno, etc. a partir de un conjunto de observaciones capturadas a través de eventos y/o datos. Las determinaciones pueden emplearse para identificar un contexto o una acción específicos, o pueden generar una distribución de probabilidad sobre los estados, por ejemplo. Las determinaciones pueden ser probabilísticas, es decir, el cálculo de una distribución de probabilidad sobre estados de interés basada en una consideración de datos y sucesos. Las determinaciones también pueden referirse a técnicas empleadas para componer sucesos de nivel superior a partir de un conjunto de sucesos y/o datos. ;;Tales determinaciones pueden resultar en la construcción de nuevos eventos o acciones a partir de un conjunto de eventos observados y/o datos de eventos almacenados, si los eventos están correlacionados en estrecha proximidad temporal, y si los eventos y datos provienen de una o varias fuentes de eventos y datos. Los componentes divulgados en el presente documento pueden emplear varios esquemas y/o sistemas de clasificación (explícitamente entrenados (por ejemplo, a través de datos de entrenamiento) así como implícitamente entrenados (por ejemplo, a través de la observación del comportamiento, preferencias, información histórica, recepción de información extrínseca, etc. )) (por ejemplo, máquinas de vectores de soporte, redes neuronales, sistemas expertos, redes de creencias bayesianas, lógica difusa, motores de fusión de datos, etc. ) en relación con la realización de acciones automáticas y/o determinadas en relación con la materia reivindicada. Así, los esquemas y/o sistemas de clasificación pueden utilizarse para aprender y realizar automáticamente una serie de funciones, acciones y/o determinaciones. ;;Un clasificador puede asignar un vector de atributo de entrada,z=(zi, Z2, Z3, Z4,. .. ,zn),a una confianza de que la entrada pertenece a una clase, como porf(z) = confianza(olase).Dicha clasificación puede emplear un análisis probabilístico y/o estadístico (por ejemplo, teniendo en cuenta en el análisis las utilidades y los costes) para determinar la acción que debe realizarse automáticamente. Otro ejemplo de clasificador que se puede emplear es una máquina de vectores de soporte (SVM). La SVM funciona encontrando una hipersuperficie en el espacio de entradas posibles, donde la hipersuperficie intenta dividir los criterios desencadenantes de los sucesos no desencadenantes. Intuitivamente, esto hace que la clasificación sea correcta para los datos de prueba que están cerca, pero no son idénticos a los datos de entrenamiento. Se pueden emplear otros enfoques de clasificación de modelos dirigidos y no dirigidos, incluyendo, por ejemplo, Bayes ingenuo, redes bayesianas, árboles de decisión, redes neuronales, modelos de lógica difusa y/o modelos de clasificación probabilística, que proporcionan diferentes patrones de independencia. La clasificación, tal como se utiliza en el presente documento, también incluye la regresión estadística que se utiliza para desarrollar modelos de prioridad. ;;La FIG.24muestra un diagrama de flujo ejemplar2400para entrenar los algoritmos de aprendizaje automático (ML), que se utilizan en el entrenamiento del masterbot para evaluar y arbitrar entre los agentes de información y los agentes de acción, de acuerdo con realizaciones de ejemplo de la presente invención. El proceso de entrenamiento comienza en el paso2402,con la adquisición de datos. En el paso2404,se preprocesan los datos adquiridos (lo que se conoce como preparación de datos). En el paso2406,el modelo se entrena utilizando los datos de entrenamiento2450.En el paso2408,se evalúa y prueba el modelo, y los refinamientos adicionales del modelo se retroalimentan en el paso2406.En el paso2410,se seleccionan los parámetros óptimos del modelo. En el paso2412,se implementa el modelo. Los nuevos datos2452ahora pueden ser utilizados por el modelo implementado para realizar predicciones2414.;;Un punto de partida para cualquier método de aprendizaje automático como el utilizado por el componente de aprendizaje automático anterior es un conjunto de datos documentado que contenga múltiples instancias de entradas del sistema y resultados correctos (por ejemplo, los datos de entrenamiento). Este conjunto de datos puede utilizarse utilizando métodos conocidos en la técnica, incluidos, entre otros, métodos de aprendizaje automático normalizados, como los métodos de clasificación paramétrica, los métodos no paramétricos, el aprendizaje de árboles de decisión, las redes neuronales, los métodos que combinan el aprendizaje inductivo y el analítico, y los enfoques de modelización, como los modelos de regresión, para entrenar el sistema de aprendizaje automático y evaluar y optimizar el rendimiento del sistema entrenado. La calidad de la salida del sistema de aprendizaje automático depende de (a) la parametrización del patrón, (b) el diseño de la máquina de aprendizaje y (c) la calidad de la base de datos de entrenamiento. Estos componentes pueden refinarse y optimizarse mediante diversos métodos. Por ejemplo, la base de datos puede mejorarse añadiendo conjuntos de datos de nuevas expresiones de usuarios documentadas. La calidad de la base de datos puede mejorarse, por ejemplo, rellenándola con casos en los que los enunciados del usuario se hayan reconocido correctamente. En una realización, la base de datos incluye datos, por ejemplo, de conversaciones de muestra con expresiones del usuario final y selección óptima del agente de acción, lo que puede ayudar en la evaluación de un sistema entrenado. ;;La FIG.25muestra un diagrama de bloques ilustrativo2500para una plataforma de asistente virtual LINC2502,de acuerdo con otra realización de la invención. En algunas realizaciones, la plataforma LINC2502puede recibir entrada NLU2510,datos contextuales2520y datos de entrada API2530.Los datos recibidos pueden ser procesados por el servidor LINC2550,y almacenados en la nube para su uso, análisis, reproducción y predicciones posteriores. El servidor LINc2550puede proporcionar salida NLG2560,salida<a>P<i>2570y/o análisis en tiempo real2580a una pluralidad de dispositivos de usuario final a través de la red. ;;11. Beneficios de la presente invención ;;Las afirmaciones de esta sección pueden servir para ayudar a comprender la invención y sus beneficios, pero los beneficios de la presente invención no se limitan a los descritos en el presente documento. Otros beneficios de la presente invención incluyen cualquier beneficio inherente a las estructuras descritas en esta divulgación. ;En un enfoque convencional de construcción de un nuevo servicio, los desarrolladores deben elaborar el flujo de diálogo y la lógica de programación. Tradicionalmente, para construir un chatbot de servicio único, los desarrolladores tienen que crear un árbol de decisiones (por ejemplo, FIG.26) o máquina de estados finitos para codificar todos los escenarios posibles de gestión de la información. Por ejemplo, la FIG.26muestra un diagrama2600de un enfoque ilustrativo de árbol de decisión del arte previo para implementar sistemas de lenguaje natural. ;;El enfoque divulgado en esta invención simplifica drásticamente el trabajo para implementar un único servicio para un desarrollador. La plataforma del asistente virtual utiliza una ontología optimizada para el dominio y datos en la plataforma para soportar una gran colección de entradas de datos. El desarrollador sólo tiene que marcar estas entradas de datos como agentes de información prerrequisitos, utilizando por ejemplo un lenguaje declarativo, y la plataforma gestionará automáticamente todas las conversaciones necesarias para garantizar que los valores de información de estas entradas elegidas estén disponibles para que el desarrollador los aproveche. Esto reduce enormemente el esfuerzo de implantación del bot de semanas (o meses) a horas. ;Por ejemplo, en la FIG.28se muestra un diagrama de arquitectura conceptual2800que muestra cómo puede implementarse un nuevo servicio (por ejemplo, el Servicio X) aprovechando y reutilizando un gran número de bloques de construcción o agentes existentes R1, R2, R3, etc. , como prerrequisitos y reordenándolos mediante un lenguaje de programación declarativo sin necesidad de mucho tiempo de desarrollo. Un nuevo servicio puede montarse rápidamente especificando los agentes de información necesarios R1, R2, R3, etc. , que probablemente estén preconstruidos y disponibles en la plataforma. La plataforma del asistente virtual se encargará automáticamente de todas las tareas de recuperación de información de comprensión del lenguaje natural (NLU) a partir de la conversación, haciendo inferencias basadas en el contexto existente, así como de llevar a cabo un servicio utilizando el mejor enfoque (por ejemplo, agentes de información conectados). Todo el flujo de diálogo estaría automatizado, y el trabajo del desarrollador consistiría en centrarse en la lógica real del servicio, que es independiente de la conversación y de alto nivel. ;;Para un caso de uso multiservicio implementado con el enfoque convencional, la complejidad se multiplica rápidamente. En el enfoque convencional de la gestión de múltiples servicios, existe una experiencia rígida y laboriosa similar a la del "menú principal". La FIG.27muestra un diagrama2700de un enfoque ilustrativo del estado de la técnica basado en menús para implementar asistentes virtuales multiservicio. Entre sus desventajas se encuentran el triaje de nivel superior basado en temas entre flujos de diálogo específicos de cada servicio; el requisito de seguir flujos de diálogo estrictos para ejecutar servicios individuales; el uso de un conjunto rígido de funciones de control (por ejemplo, volver a empezar, repetir, menú principal, etc. ) para navegar entre servicios; y, a menudo, la falta de soporte para cambiar de tema en medio de una conversación. ;Es decir, crear un agente de IA multiservicio es exponencialmente más difícil que crear un agente de IA de un solo servicio. El enfoque convencional aprovecha los árboles de decisión para diseñar explícitamente el flujo de la conversación. Para construir un agente de IA que pueda gestionar "n" servicios, cada uno de los cuales requiera "m" entradas para ser encuestado a través de una conversación, con los constructores de diálogo convencionales, el desarrollador necesita crear como mínimo (n*m) conversaciones, y cuando se intenta dar soporte a conversaciones flexibles en las que un usuario final puede cambiar de tema en medio de las conversaciones de servicio, el desarrollador necesita crear en el orden de las (nm) conversaciones.
En otras palabras, la complejidad que implica diseñar el flujo conversacional utilizando el enfoque convencional es prohibitiva para que el agente de IA adquiera nuevas habilidades (es decir, nuevos servicios) de forma rápida y eficiente.
Uno de los beneficios de la invención divulgada es una solución de agente de IA que resuelve este reto. Con la presente invención, el desarrollador sólo necesita dedicar (n) esfuerzos a enseñar al agente de IA (n) servicios, y el agente de IA resultante puede gestionar sin problemas (nm) posibilidades de conversación, como se describe en el presente documento.
Además de reducir exponencialmente el esfuerzo de desarrollo para enseñar al agente de IA nuevos servicios, la presente invención también:
• Tiene mayor inteligencia de conversación, es decir, genera conversaciones más naturales y versátiles para prestar un servicio, así como navegación entre servicios dentro de una conversación.
• Permite que un gran número de desarrolladores trabajen de forma independiente y en paralelo para enseñar a un único agente de IA diferentes servicios, donde diferentes desarrolladores pueden enseñar al agente de IA diferentes servicios y no tienen que colaborar en profundidad, ya que la solución gestiona las diferentes ganancias de servicio por parte del único agente de IA para trabajar juntos sin problemas en una conversación o a través de conversaciones.
Además, la presente invención permite una conversación fluida y dinámica entre el bot y el usuario final utilizando un pequeño número de bloques de construcción de conversación que pueden aprovecharse para crear una variedad infinita de conversaciones. La plataforma permite a los usuarios mantener una conversación natural, cambiar de tema a mitad de camino y navegar por varios servicios sin problemas en la misma conversación.
Por ejemplo, en la FIG.29se muestra un diagrama de arquitectura conceptual2900que muestra cómo, para un caso de uso de múltiples servicios, el masterbot utiliza automáticamente la comprensión del lenguaje natural (NLU), la gestión de políticas y la gestión de diálogos para facilitar el descubrimiento y la clasificación de los agentes de acción, y cómo los agentes de información pueden ser compartidos y reutilizados. Esto mejora enormemente la experiencia del usuario, especialmente en situaciones de conversación multiservicio en las que los usuarios pueden desear cambiar de tema a mitad de camino. Aprovechando y reutilizando un gran número de bloques de construcción o agentes existentes R1, R2, R3, etc. , se pueden activar sin problemas múltiples servicios, como el Servicio A, el Servicio A (Segunda Invocación), el Servicio B, etc. , durante una única conversación, proporcionando una experiencia natural a los usuarios finales.
Por último, otro enfoque convencional para construir sistemas de conversación utiliza un enfoque basado en marcos (o marcos-ranura) para las interacciones de conversación. Una trama se asigna a una intención y se define como una estructura con ranuras de tipos de datos. Una vez rellenadas todas las ranuras, el marco está listo. El sistema de diálogo aplica la comprensión del lenguaje natural para averiguar los huecos y muchas implementaciones pueden generar automáticamente preguntas de seguimiento para intentar rellenar la ranura. Algunas diferencias clave de la presente invención incluyen, pero no se limitan a:
• No es necesario anotar/etiquetar datos ni entrenar modelos para la relación entre fotogramas y ranuras. Este paso suele ser laborioso, debe realizarse para cada fotograma y es difícil de reproducir con gran precisión. En comparación, los agentes de información pueden especificarse para diferentes agentes de acción y, en tiempo de ejecución, compartirse entre ellos. La capacidad NLU está separada en un módulo diferente y se implementa de manera genérica y extensible.
• Una ranura es una especificación pasiva de requisitos de datos, mientras que un agente de información se implementa para ser autónomo y desempeña un papel activo de buscador de información. Los agentes de información tienen la capacidad de inferir utilizando datos contextuales o encuestar al usuario final haciéndole diferentes preguntas.
• Los agentes de información tienen capacidades de inferencia entre ellos, mientras que las ranuras no.
• Los agentes de acción son más versátiles que los marcos. En primer lugar, los agentes de acción pueden elegir establecer valores para los agentes de información relevantes para su uso futuro; esto permite que varios agentes de acción trabajen sin problemas. En segundo lugar, se pueden conectar varios agentes de acción mediante condiciones desencadenantes de seguimiento para lograr un flujo de conversación más flexible. En un diseño de ranura de marco estándar, cada marco es independiente de los demás.
En resumen, la presente invención proporciona muchos beneficios sobre los enfoques convencionales de los bots de conversación.
12. Conclusiones
Un experto en la materia sabe que los casos de uso, las estructuras, los esquemas y los diagramas de flujo pueden realizarse en otros órdenes o combinaciones, pero el concepto inventivo de la presente invención se mantiene sin apartarse del alcance más amplio de la invención. Cada encarnación puede ser única, y los métodos/pasos pueden acortarse o alargarse, solaparse con otras actividades, posponerse, retrasarse y continuarse después de un intervalo de tiempo, de forma que el servidor se adapte a cada dispositivo de usuario final para practicar los métodos de la presente invención.
La presente invención puede implementarse en hardware y/o en software. Muchos componentes del sistema, por ejemplo, módulos de procesamiento de señales o interfaces de red, etc. , no se han mostrado, para no oscurecer la presente invención. Sin embargo, un experto en la materia apreciaría que el sistema incluye necesariamente estos componentes. Un dispositivo informático es un hardware que incluye al menos un procesador acoplado a una memoria. El procesador puede representar uno o más procesadores (por ejemplo, microprocesadores), y la memoria puede representar dispositivos de memoria de acceso aleatorio (RAM) que comprenden un almacenamiento principal del hardware, así como cualquier nivel suplementario de memoria, por ejemplo, memorias caché, memorias no volátiles o de respaldo (por ejemplo, memorias programables o flash), memorias de sólo lectura, etc. Además, se puede considerar que la memoria incluye almacenamiento de memoria ubicado físicamente en otra parte del hardware, por ejemplo, cualquier memoria caché en el procesador, así como cualquier capacidad de almacenamiento utilizada como memoria virtual, por ejemplo, almacenada en un dispositivo de almacenamiento masivo.
El hardware de un dispositivo informático también suele recibir una serie de entradas y salidas para comunicar información al exterior. Para la interfaz con un usuario, el hardware puede incluir uno o más dispositivos de entrada de usuario (por ejemplo, un teclado, un ratón, un escáner, un micrófono, una cámara, etc. ) y una pantalla (por ejemplo, una pantalla de cristal líquido (LCD)). Para almacenamiento adicional, el hardware también puede incluir uno o más dispositivos de almacenamiento masivo, por ejemplo, una disquetera u otra unidad de disco extraíble, una unidad de disco duro, un dispositivo de almacenamiento de acceso directo (DASD), una unidad óptica (por ejemplo, una unidad de disco compacto (CD), una unidad de disco versátil digital (DVD), etc. ) y/o una unidad de cinta, entre otros. Además, el hardware puede incluir una interfaz a una o más redes (por ejemplo, una red de área local (LAN), una red de área amplia (WAN), una red inalámbrica y/o Internet, entre otras) para permitir la comunicación de información con otros ordenadores acoplados a las redes. Debe apreciarse que el hardware típicamente incluye interfaces analógicas y/o digitales adecuadas para comunicarse entre sí.
En algunas realizaciones de la presente invención, todo el sistema puede implementarse y ofrecerse a los usuarios finales y operadores a través de Internet, en una implementación denominada en la nube. No sería necesaria ninguna instalación local de software o hardware, y los usuarios finales y operadores podrían acceder a los sistemas de la presente invención directamente a través de Internet, utilizando un navegador web o software similar en un cliente, que podría ser un ordenador de sobremesa, portátil, dispositivo móvil, etc. Esto elimina cualquier necesidad de instalación de software personalizado en el lado del cliente y aumenta la flexibilidad de la prestación del servicio (software como servicio) e incrementa la satisfacción del usuario y la facilidad de uso. Various business models, revenue models, and delivery mechanisms for the present invention are envisioned, and are all to be considered within the scope of the present invention.
El hardware funciona bajo el control de un sistema operativo y ejecuta diversas aplicaciones informáticas, componentes, código de programa, bibliotecas, objetos, módulos, etc. para llevar a cabo los métodos, procesos y técnicas descritos anteriormente.
En general, el método ejecutado para implementar las realizaciones de la invención puede implementarse como parte de un sistema operativo o de una aplicación, componente, programa, objeto, módulo o secuencia de instrucciones específicos denominados "programa(s) informático(s)" o "código(s) de programa". Los programas de ordenador comprenden típicamente una o más instrucciones fijadas en diversos momentos en varios dispositivos de memoria y almacenamiento en un dispositivo informático u ordenador, y que, cuando son leídas y ejecutadas por uno o más procesadores en el ordenador, hacen que el ordenador realice operaciones necesarias para ejecutar elementos que implican los diversos aspectos de la invención. Además, aunque la invención se ha descrito en el contexto de ordenadores y sistemas informáticos plenamente operativos, los expertos en la materia apreciarán que las diversas realizaciones de la invención pueden distribuirse como un producto de programa en una variedad de formas, y que la invención se aplica igualmente con independencia del tipo concreto de máquina o medio legible por ordenador utilizado para efectuar realmente la distribución. Ejemplos de medios legibles por ordenador incluyen, pero no se limitan a, medios de tipo grabable como dispositivos de memoria volátiles y no volátiles, disquetes y otros discos extraíbles, unidades de disco duro, discos ópticos (por ejemplo, Compact Disk Read-Only Memory (CD-ROMS), Digital Versatile Disks, (DVDs), etc. ), y medios de comunicación digitales y analógicos.
Los bloques de los diagramas de bloques y de flujo admiten combinaciones de medios para realizar las funciones especificadas, combinaciones de elementos o pasos para realizar las funciones especificadas y medios de instrucción de programa para realizar las funciones especificadas. También se entenderá que cada bloque de los diagramas de bloques y diagramas de flujo, y combinaciones de bloques en los diagramas de bloques y diagramas de flujo, pueden ser implementados por sistemas informáticos basados en hardware de propósito especial que realicen las funciones, elementos o pasos especificados, o combinaciones de hardware de propósito especial e instrucciones informáticas.
Un componente de software puede codificarse en varios lenguajes de programación. Un lenguaje de programación ilustrativo puede ser un lenguaje de programación de bajo nivel, como un lenguaje ensamblador asociado con una arquitectura de hardware particular y/o una plataforma de sistema operativo. Un componente de software que comprenda instrucciones en lenguaje ensamblador puede requerir la conversión a código máquina ejecutable por parte de un ensamblador antes de su ejecución por parte de la arquitectura de hardware y/o plataforma.
Un componente de software puede almacenarse como un archivo u otra construcción de almacenamiento de datos. Los componentes de software de un tipo similar o funcionalmente relacionados pueden almacenarse juntos como, por ejemplo, en un directorio, carpeta o biblioteca en particular. Los componentes de software pueden ser estáticos (por ejemplo, preestablecidos o fijos) o dinámicos (por ejemplo, creados o modificados en el momento de la ejecución).
Los componentes de software pueden invocar o ser invocados por otros componentes de software a través de una amplia variedad de mecanismos. Los componentes de software invocados o invocadores pueden comprender otro software de aplicación desarrollado a medida, funcionalidades del sistema operativo (por ejemplo, controladores de dispositivos, rutinas de almacenamiento de datos (por ejemplo, gestión de archivos), otras rutinas y servicios comunes, etc. ), o componentes de software de terceros (por ejemplo, middleware, software de cifrado u otro software de seguridad, software de gestión de bases de datos, software de transferencia de archivos u otro software de comunicación en red, software matemático o estadístico, software de procesamiento de imágenes y software de traducción de formatos).
Los componentes de software asociados a una determinada solución o sistema pueden residir y ejecutarse en una única plataforma o estar distribuidos en varias plataformas. Las múltiples plataformas pueden estar asociadas a más de un proveedor de hardware, tecnología de chip subyacente o sistema operativo. Además, los componentes de software asociados a una determinada solución o sistema pueden estar escritos inicialmente en uno o más lenguajes de programación, pero pueden invocar componentes de software escritos en otro lenguaje de programación.
Las instrucciones de programa ejecutables por ordenador pueden cargarse en un ordenador de propósito especial u otra máquina particular, un procesador u otro aparato programable de procesamiento de datos para producir una máquina particular, de forma que la ejecución de las instrucciones en el ordenador, procesador u otro aparato programable de procesamiento de datos provoque la realización de una o más funciones u operaciones especificadas en los diagramas de flujo. Estas instrucciones de programa informático también pueden almacenarse en un medio de almacenamiento legible por ordenador (CRSM) que, tras su ejecución, puede dirigir un ordenador u otro aparato programable de procesamiento de datos para que funcione de una manera determinada, de forma que las instrucciones almacenadas en el medio de almacenamiento legible por ordenador produzcan un artículo de fabricación que incluya medios de instrucción que implementen una o más funciones u operaciones especificadas en los diagramas de flujo. Las instrucciones del programa informático también pueden cargarse en un ordenador u otro aparato programable de procesamiento de datos para hacer que se ejecuten una serie de elementos operativos o pasos en el ordenador u otro aparato programable para producir un proceso implementado por ordenador.
Aunque las realizaciones se han descrito en lenguaje específico de características estructurales y/o actos metodológicos, debe entenderse que el alcance queda definido por las reivindicaciones adjuntas.

Claims (14)

REIVINDICACIONES
1. Un sistema (100) para una plataforma de asistente virtual, que comprende:
al menos un dispositivo de memoria que almacena instrucciones ejecutables por ordenador; y
al menos un procesador configurado para acceder al dispositivo de memoria, en donde el procesador está configurado para ejecutar las instrucciones ejecutables por ordenador para:
recibir una o más expresiones (104) de un usuario;
generar una entrada de usuario analizada a partir de una o más expresiones utilizando un módulo de comprensión del lenguaje natural (NLU) (106);
obtener al menos un valor de información a partir de la entrada de usuario analizada y/o datos contextuales utilizando una pluralidad de agentes de información (120);
realizar una o más acciones en respuesta a la entrada de usuario analizada, los datos contextuales, y/o el al menos un valor de información utilizando una pluralidad de agentes de acción (112), en donde la pluralidad de agentes de información y la pluralidad de agentes de acción están interrelacionados a través de una o más conexiones de relación, en donde la una o más conexiones de relación comprende al menos una conexión de prerrequisito (1406) que activa uno o más agentes de información de prerrequisito para cumplir una o más condiciones de prerrequisito para un agente de acción dado, en donde la una o más conexiones de relación se seleccionan además del grupo que consiste en una conexión de valor de conjunto (1408) entre un agente de acción y un agente de información, una conexión de seguimiento (1404) entre dos agentes de acción, y una conexión de inferencia (1412) entre dos agentes de información; y
arbitrar una activación de la pluralidad de agentes de información y la pluralidad de agentes de acción utilizando un masterbot (108) para devolver una respuesta al usuario.
2. El sistema de la reivindicación 1, en donde al menos uno de la pluralidad de agentes de información (120) está adaptado para comprender la entrada de usuario analizada del usuario para extraer el valor de información directamente de la entrada de usuario analizada.
3. El sistema de la reivindicación 1, en donde al menos uno de la pluralidad de agentes de información (120) está adaptado para inferir el valor de información a partir de la entrada de usuario analizada, en donde la inferencia se activa en respuesta a la determinación de que un agente de información dado no puede obtener el valor de información mediante la comprensión directa de la entrada de usuario analizada.
4. El sistema de la reivindicación 3, en donde al menos uno de la pluralidad de agentes de información (120) está adaptado para inferir el valor de la información accediendo a una o más fuentes de datos contextuales para los datos contextuales y está adaptado para inferir el valor de la información a partir de la entrada del usuario analizada y los datos contextuales.
5. El sistema de la reivindicación 4, en donde al menos uno de la pluralidad de agentes de información (120) está adaptado para consultar al usuario por el valor de la información mediante la generación de una consulta en lenguaje natural utilizando un módulo de generación de lenguaje natural (NLG) (124), en donde la consulta se activa en respuesta a la determinación de que el agente de información no puede obtener el valor de la información mediante la comprensión de la entrada del usuario analizada o la inferencia del valor de la información.
6. El sistema de la reivindicación 1, en donde al menos uno de la pluralidad de agentes de información (120) está adaptado para obtener el valor de información mediante la activación de uno o más agentes de información, en donde el uno o más agentes de información se activan en respuesta a la determinación de que el al menos un agente de información no puede obtener el valor de información mediante la comprensión de la entrada de usuario analizada o la inferencia del valor de información.
7. El sistema de la reivindicación 1, en donde al menos uno de la pluralidad de agentes de acción (112) realiza la una o más acciones activando uno o más servicios internos para realizar uno o más servicios.
8. El sistema de la reivindicación 7, en donde al menos uno de la pluralidad de agentes de acción (112) realiza la una o más acciones accediendo a una o más pasarelas de Interfaz de Programación de Aplicaciones (API) a servicios externos para realizar el uno o más servicios.
9. El sistema de la reivindicación 1, en donde el masterbot (108) está adaptado para activar uno o más de los agentes de información (120) con el fin de cumplir uno o más prerrequisitos de conexión para un agente de acción dado (112), en donde el agente de acción dado utiliza el uno o más agentes de información activados para obtener uno o más valores de información necesarios para realizar la una o más acciones.
10. El sistema de la reivindicación 1, en donde la conexión conjunto-valor interrelaciona la pluralidad de agentes de información (120) y la pluralidad de agentes de acción (112) a través de una pluralidad de acciones conjuntovalor, en donde una acción conjunto-valor dada para un agente de acción dado se utiliza para establecer un valor de información para uno o más agentes de información correspondientes que posteriormente son utilizados por los agentes de información correspondientes.
11. El sistema de la reivindicación 1, en donde la conexión de seguimiento interrelaciona la pluralidad de agentes de acción (112) entre sí que determinan cuándo un agente de acción dado realiza un seguimiento después de que otro agente de acción dado finaliza.
12. El sistema de la reivindicación 1, en donde la conexión de inferencia interrelaciona la pluralidad de agentes de información entre sí que determinan cuándo un agente de información dado, activa uno o más agentes de información relacionados con el fin de cumplir con uno o más valores de información del agente de información dado que luego son utilizados por el agente de información dado.
13. Un medio no transitorio legible por ordenador que almacena instrucciones ejecutables por ordenador para una plataforma de asistente virtual multiservicio que, cuando son ejecutadas por un procesador, hacen que el procesador realice operaciones que comprenden pasos para:
recibir una o más expresiones (104) de un usuario;
generar una entrada de usuario analizada a partir de una o más expresiones utilizando un módulo de comprensión del lenguaje natural (NLU) (106);
obtener al menos un valor de información a partir de la entrada de usuario analizada y/o datos contextuales utilizando una pluralidad de agentes de información (120);
realizar una o más acciones en respuesta a la entrada de usuario analizada, los datos contextuales, y/o el al menos un valor de información utilizando una pluralidad de agentes de acción (112), en donde la pluralidad de agentes de información (120) y la pluralidad de agentes de acción (112) están interrelacionados a través de una o más conexiones de relación, en donde la una o más conexiones de relación comprende al menos una conexión de prerrequisito (1406) que activa uno o más agentes de información de prerrequisito para cumplir una o más condiciones de prerrequisito para un agente de acción dado, , en donde la una o más conexiones de relación se seleccionan además del grupo que consiste en una conexión de valor de conjunto (1408) entre un agente de acción y un agente de información, una conexión de seguimiento (1404) entre dos agentes de acción, y una conexión de inferencia (1412) entre dos agentes de información; y
arbitrar una activación de la pluralidad de agentes de información y la pluralidad de agentes de acción utilizando un masterbot (108) para devolver una respuesta al usuario.
14. Un método implementado por ordenador para una plataforma de asistente virtual multiservicio que, cuando es ejecutado por un procesador, hace que el procesador realice pasos que comprenden:
recibir una o más expresiones (104) de un usuario;
generar una entrada de usuario analizada a partir de una o más expresiones utilizando un módulo de comprensión del lenguaje natural (NLU) (106);
obtener al menos un valor de información a partir de la entrada de usuario analizada y/o datos contextuales utilizando una pluralidad de agentes de información (120);
realizar una o más acciones en respuesta a la entrada de usuario analizada, los datos contextuales, y/o el al menos un valor de información utilizando una pluralidad de agentes de acción (112), en donde la pluralidad de agentes de información (120) y la pluralidad de agentes de acción (112) están interrelacionados a través de una o más conexiones de relación, en donde la una o más conexiones de relación comprende al menos una conexión de prerrequisito (1406) que activa uno o más agentes de información de prerrequisito para cumplir una o más condiciones de prerrequisito para un agente de acción dado, en donde la una o más conexiones de relación se seleccionan además del grupo que consiste en una conexión de valor de conjunto (1408) entre un agente de acción y un agente de información, una conexión de seguimiento (1404) entre dos agentes de acción, y una conexión de inferencia (1412) entre dos agentes de información; y
activar uno o más de la pluralidad de agentes de información y la pluralidad de agentes de acción utilizando un masterbot (108) para devolver una respuesta al usuario.
ES20827373T 2019-06-16 2020-06-15 Methods and systems for deploying and managing scalable multi-service virtual assistant platform Active ES3018884T3 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962862128P 2019-06-16 2019-06-16
US16/528,926 US10629191B1 (en) 2019-06-16 2019-08-01 Methods and systems for deploying and managing scalable multi-service virtual assistant platform
PCT/US2020/037814 WO2020257127A1 (en) 2019-06-16 2020-06-15 Methods and systems for deploying and managing scalable multi-service virtual assistant platform

Publications (1)

Publication Number Publication Date
ES3018884T3 true ES3018884T3 (en) 2025-05-19

Family

ID=70285079

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20827373T Active ES3018884T3 (en) 2019-06-16 2020-06-15 Methods and systems for deploying and managing scalable multi-service virtual assistant platform

Country Status (5)

Country Link
US (5) US10629191B1 (es)
EP (1) EP3963478B1 (es)
CA (1) CA3142624C (es)
ES (1) ES3018884T3 (es)
WO (1) WO2020257127A1 (es)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2982930A1 (en) * 2017-10-18 2019-04-18 Kari Saarenvirta System and method for selecting promotional products for retail
US20190188269A1 (en) * 2017-12-14 2019-06-20 Honeywell International Inc. Providing bots for industrial processes
US11978452B2 (en) * 2019-04-26 2024-05-07 Oracle International Corportion Handling explicit invocation of chatbots
US11651162B2 (en) 2019-04-26 2023-05-16 Oracle International Corporation Composite entity for rule driven acquisition of input data to chatbots
CN112015852B (zh) * 2019-05-31 2025-03-28 微软技术许可有限责任公司 在关于事件的会话中提供响应
US11057320B2 (en) * 2019-06-27 2021-07-06 Walmart Apollo, Llc Operation for multiple chat bots operation in organization
US20210081863A1 (en) * 2019-07-25 2021-03-18 Airwire Technologies Vehicle intelligent assistant
US12090955B2 (en) 2019-07-29 2024-09-17 Airwire Technologies Vehicle intelligent assistant using contextual data
CN114041145A (zh) * 2019-08-02 2022-02-11 谷歌有限责任公司 用于生成和提供建议动作的系统和方法
US11301629B2 (en) * 2019-08-21 2022-04-12 International Business Machines Corporation Interleaved conversation concept flow enhancement
JP7459470B2 (ja) * 2019-09-20 2024-04-02 株式会社リコー 情報処理システム、情報処理方法及びプログラム
US10841251B1 (en) * 2020-02-11 2020-11-17 Moveworks, Inc. Multi-domain chatbot
US11615097B2 (en) * 2020-03-02 2023-03-28 Oracle International Corporation Triggering a user interaction with a device based on a detected signal
US12361474B2 (en) 2020-03-02 2025-07-15 Oracle International Corporation System, non-transitory computer readable medium, and method for integrating voice assistant device and digital assistant device with cloud-based services
US11887138B2 (en) 2020-03-03 2024-01-30 Daisy Intelligence Corporation System and method for retail price optimization
FR3111210B1 (fr) * 2020-06-04 2022-07-08 Thales Sa Communication bidirectionnelle homme-machine
EP3926458B1 (en) * 2020-06-15 2024-09-11 Deutsche Telekom AG Method and device for using the same utterances to trigger different actions with an assistant
US11256484B2 (en) * 2020-06-22 2022-02-22 Accenture Global Solutions Limited Utilizing natural language understanding and machine learning to generate an application
US11410653B1 (en) * 2020-09-25 2022-08-09 Amazon Technologies, Inc. Generating content recommendation based on user-device dialogue
KR20220046964A (ko) 2020-10-08 2022-04-15 삼성전자주식회사 멀티 챗봇을 이용하여 질의에 응답하는 전자 장치 및 그 제어 방법
US11934785B2 (en) * 2020-10-23 2024-03-19 Target Brands, Inc. Multi-task learning of query intent and named entities
US11977813B2 (en) * 2021-01-12 2024-05-07 International Business Machines Corporation Dynamically managing sounds in a chatbot environment
US11783338B2 (en) 2021-01-22 2023-10-10 Daisy Intelligence Corporation Systems and methods for outlier detection of transactions
US11394668B1 (en) 2021-01-26 2022-07-19 The Toronto-Dominion Bank System and method for executing operations in a performance engineering environment
US20240169984A1 (en) * 2021-03-24 2024-05-23 RN Chidakashi Technologies Private Limited System and method for generating a closed domain conversation
US12118790B2 (en) 2021-04-21 2024-10-15 Meta Platforms, Inc. Auto-capture of interesting moments by assistant systems
US12125297B2 (en) 2021-04-21 2024-10-22 Meta Platforms, Inc. Task execution based on real-world text detection for assistant systems
US11861315B2 (en) 2021-04-21 2024-01-02 Meta Platforms, Inc. Continuous learning for natural-language understanding models for assistant systems
US12131733B2 (en) 2021-04-21 2024-10-29 Meta Platforms, Inc. Active listening for assistant systems
US11978453B2 (en) * 2021-06-14 2024-05-07 Amazon Technologies, Inc. Natural language processing routing
US12229784B2 (en) 2021-06-30 2025-02-18 Walmart Apollo, Llc Systems and methods for utilizing feedback data
US20230031071A1 (en) 2021-07-28 2023-02-02 Kevin Carr Handsfree Communication System and Method
US11886281B2 (en) 2021-08-13 2024-01-30 Bank Of America Corporation Artificial intelligence engine providing automated error resolution
US11875127B2 (en) 2021-08-27 2024-01-16 International Business Machines Corporation Query response relevance determination
US12141533B2 (en) * 2021-09-23 2024-11-12 International Business Machines Corporation Leveraging knowledge records for chatbot local search
US12499317B2 (en) 2021-09-23 2025-12-16 International Business Machines Corporation Creating dialogs for a problem-solution data set
CN116170394A (zh) * 2021-11-23 2023-05-26 中国移动通信有限公司研究院 一种多轮对话方法、装置及通信设备
US20230244968A1 (en) * 2022-01-29 2023-08-03 discourse.ai, Inc. Smart Generation and Display of Conversation Reasons in Dialog Processing
CN114900851B (zh) * 2022-05-06 2024-10-11 上海智向信息科技有限公司 一种基于无线组网的自动运维方法、系统和计算机设备
CN114979029B (zh) * 2022-05-16 2023-11-24 百果园技术(新加坡)有限公司 一种虚拟机器人的控制方法、装置、设备及存储介质
US12184516B2 (en) 2022-07-20 2024-12-31 Cisco Technology, Inc. User lifecycle journey and asset data based bot skill selection
US20240037334A1 (en) * 2022-07-28 2024-02-01 Verint Americas Inc. Task Gathering for Asynchronous Task-Oriented Virtual Assistants
US20240105181A1 (en) * 2022-09-27 2024-03-28 Snap One, Llc Methods, systems, and apparatus for automaton networks having multiple voice agents for speech recognition
CN115356953B (zh) * 2022-10-21 2023-02-03 北京红棉小冰科技有限公司 虚拟机器人决策方法、系统和电子设备
US11803402B1 (en) * 2022-12-12 2023-10-31 Sap Se Recommendations for information technology service management tickets
US20240296219A1 (en) * 2023-03-05 2024-09-05 Microsoft Technology Licensing, Llc Adverse or malicious input mitigation for large language models
WO2024186589A1 (en) * 2023-03-05 2024-09-12 Microsoft Technology Licensing, Llc Conversational large language model-based user tenant orchestration
US20240338232A1 (en) * 2023-04-06 2024-10-10 Palantir Technologies Inc. Artificial intelligence system user interfaces
US12106318B1 (en) * 2023-04-19 2024-10-01 Wevo, Inc. Prompt management systems for moderating generative artificial intelligence operations
CN116302365B (zh) * 2023-05-17 2023-08-15 建信金融科技有限责任公司 数据持久层的测试方法、装置、电子设备和存储介质
US20240403289A1 (en) * 2023-05-31 2024-12-05 Palantir Technologies Inc. Large data set management with large language models
CN116502863B (zh) * 2023-06-15 2023-09-19 武汉漫悠悠互联网科技有限公司 一种应用于智能公交线路的均衡调度方法及系统
US12488785B2 (en) * 2023-06-30 2025-12-02 Limbic Limited Dialogue systems
US12393581B2 (en) * 2023-07-12 2025-08-19 Verses AI, Inc. Method and system for specifying an active inference based agent using natural language
US12489722B2 (en) * 2023-12-14 2025-12-02 Google Llc Dynamic memory architecture for use with large language model(s)
US20250312649A1 (en) * 2024-04-04 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for tennis
US20250312676A1 (en) * 2024-04-04 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for basketball
US20250315661A1 (en) * 2024-04-04 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for soccer
WO2025212912A1 (en) * 2024-04-04 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for racing
US20250315648A1 (en) * 2024-04-04 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for baseball
WO2025212873A1 (en) * 2024-04-04 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for football
US20250316085A1 (en) * 2024-04-09 2025-10-09 Stats Llc Systems and methods for agentic operations using multimodal generative models for golf
WO2025216974A1 (en) * 2024-04-09 2025-10-16 Stats Llc Systems and methods for agentic operations using multimodal generative models for cricket
WO2025216969A1 (en) * 2024-04-09 2025-10-16 Stats Llc Systems and methods for agentic operations using multimodal generative models for rugby
US20250322328A1 (en) * 2024-04-12 2025-10-16 International Business Machines Corporation Next best agent selection in an adaptive workflow
US20250355946A1 (en) * 2024-05-17 2025-11-20 Salesforce, Inc. Dynamic prompt generation for generative artificial intelligence based on reactive interactions
WO2025259117A1 (en) * 2024-06-11 2025-12-18 Xero Limited Apparatus, program, and computer-implemented method for automated processing of natural language instructions
US20250390515A1 (en) * 2024-06-21 2025-12-25 Intuit Inc. Query augmentation
US20260003672A1 (en) * 2024-07-01 2026-01-01 Google Llc Machine-Learned Assistant Systems with Predictive Action Scheduling
CN121441874A (zh) * 2024-07-11 2026-01-30 北京字跳网络技术有限公司 任务处理方法、装置、电子设备和存储介质
US20260064759A1 (en) * 2024-08-28 2026-03-05 Microsoft Technology Licensing, Llc Structured retrieval-augmented generation
KR102782134B1 (ko) * 2024-09-05 2025-03-17 난춘 주식회사 중재 에이전트를 이용하여 수요자 에이전트와 공급자 에이전트 사이의 상호작용을 위한 프레임워크를 구축하는 방법 및 장치
US12554779B1 (en) 2024-10-08 2026-02-17 Google Llc Generating content items based on source document metadata using a generative neural network

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7398209B2 (en) * 2002-06-03 2008-07-08 Voicebox Technologies, Inc. Systems and methods for responding to natural language speech utterance
US8943094B2 (en) 2009-09-22 2015-01-27 Next It Corporation Apparatus, system, and method for natural language processing
US9085303B2 (en) * 2012-11-15 2015-07-21 Sri International Vehicle personal assistant
US20140278427A1 (en) * 2013-03-13 2014-09-18 Samsung Electronics Co., Ltd. Dynamic dialog system agent integration
WO2015039105A1 (en) * 2013-09-16 2015-03-19 Persais, Llc System and method for distributed virtual assistant platforms
US9189742B2 (en) 2013-11-20 2015-11-17 Justin London Adaptive virtual intelligent agent
US10534623B2 (en) * 2013-12-16 2020-01-14 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
US9338493B2 (en) * 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9767794B2 (en) * 2014-08-11 2017-09-19 Nuance Communications, Inc. Dialog flow management in hierarchical task dialogs
US20160260029A1 (en) * 2015-03-06 2016-09-08 Speaktoit, Inc. Example-driven machine learning scheme for dialog system engines
KR101712180B1 (ko) * 2015-12-29 2017-03-06 라인 가부시키가이샤 메시지를 송수신하기 위한 컴퓨터로 읽을 수 있는 기록매체에 저장된 프로그램, 방법 및 장치
US20170250930A1 (en) * 2016-02-29 2017-08-31 Outbrain Inc. Interactive content recommendation personalization assistant
US9990591B2 (en) * 2016-04-18 2018-06-05 Google Llc Automated assistant invocation of appropriate agent
US20180053119A1 (en) 2016-08-16 2018-02-22 Rulai, Inc. Method and system for semi-supervised learning in generating knowledge for intelligent virtual agents
US20180054523A1 (en) 2016-08-16 2018-02-22 Rulai, Inc. Method and system for context sensitive intelligent virtual agents
US20180052664A1 (en) 2016-08-16 2018-02-22 Rulai, Inc. Method and system for developing, training, and deploying effective intelligent virtual agent
US20180054464A1 (en) 2016-08-16 2018-02-22 Rulai, Inc. Method and system for collaborative intelligent virtual agents
US10853747B2 (en) * 2016-10-03 2020-12-01 Google Llc Selection of computational agent for task performance
US10224031B2 (en) * 2016-12-30 2019-03-05 Google Llc Generating and transmitting invocation request to appropriate third-party agent
US10552543B2 (en) * 2017-05-10 2020-02-04 International Business Machines Corporation Conversational authoring of event processing applications
US20180336045A1 (en) * 2017-05-17 2018-11-22 Google Inc. Determining agents for performing actions based at least in part on image data
US10552204B2 (en) * 2017-07-07 2020-02-04 Google Llc Invoking an automated assistant to perform multiple tasks through an individual command
US10389882B2 (en) * 2017-07-21 2019-08-20 Brillio, Llc Artificial intelligence (AI)-assisted conference system
US10812343B2 (en) 2017-08-03 2020-10-20 Microsoft Technology Licensing, Llc Bot network orchestration to provide enriched service request responses
US11775891B2 (en) 2017-08-03 2023-10-03 Telepathy Labs, Inc. Omnichannel, intelligent, proactive virtual agent
US11394667B2 (en) * 2017-10-03 2022-07-19 Rupert Labs, Inc. Chatbot skills systems and methods
US10621984B2 (en) * 2017-10-04 2020-04-14 Google Llc User-configured and customized interactive dialog application
US10498898B2 (en) * 2017-12-13 2019-12-03 Genesys Telecommunications Laboratories, Inc. Systems and methods for chatbot generation
US10963273B2 (en) * 2018-04-20 2021-03-30 Facebook, Inc. Generating personalized content summaries for users
US10839167B2 (en) * 2018-12-04 2020-11-17 Verizon Patent And Licensing Inc. Systems and methods for dynamically expanding natural language processing agent capacity

Also Published As

Publication number Publication date
US11031001B1 (en) 2021-06-08
US20200395007A1 (en) 2020-12-17
WO2020257127A1 (en) 2020-12-24
EP3963478C0 (en) 2025-02-26
US20220139385A1 (en) 2022-05-05
US11417320B2 (en) 2022-08-16
EP3963478B1 (en) 2025-02-26
US10930273B2 (en) 2021-02-23
EP3963478A4 (en) 2023-01-18
EP3963478A1 (en) 2022-03-09
US11222629B2 (en) 2022-01-11
US20210201901A1 (en) 2021-07-01
CA3142624A1 (en) 2020-12-24
US10629191B1 (en) 2020-04-21
US20210304740A1 (en) 2021-09-30
CA3142624C (en) 2022-11-01

Similar Documents

Publication Publication Date Title
ES3018884T3 (en) Methods and systems for deploying and managing scalable multi-service virtual assistant platform
US11657215B2 (en) Robust expandable dialogue system
US12073326B2 (en) Joint learning from explicit and inferred labels
US12596730B2 (en) System to assist users of a software application
ES2828648T3 (es) Aparato y procedimiento para proporcionar una oración en base a una entrada de usuario
KR102306105B1 (ko) 바이어 및 셀러의 자동 매칭을 통한 무역 솔루션 제공 방법 및 시스템
US11386338B2 (en) Integrating multiple domain problem solving in a dialog system for a user
US20160335572A1 (en) Management of commitments and requests extracted from communications and content
US20200394362A1 (en) Apparatus and method for providing sentence based on user input
US20180349754A1 (en) Communication reply bot
Cabrera et al. Real-world machine learning systems: A survey from a data-oriented architecture perspective
US11122420B2 (en) Intelligent temporary contact sharing between user equipment
US20240185081A1 (en) Learning Neuro-Symbolic World Models
US11275902B2 (en) Intelligent dialog re-elicitation of information
US20230179547A1 (en) Automated communication exchange programs for attended robotic process automation
US12561524B2 (en) Training machine learning models to automatically detect and correct contextual and logical errors
US20240193523A1 (en) Virtual career mentor that considers skills and trajectory
US20200226942A1 (en) System and Method for Social Learning Utilizing User Devices
US20250265283A1 (en) System to assist users of a software application
US20260122019A1 (en) Integrating task management within messaging applications
US20250131293A1 (en) Machine learning, causal inference, and probabilistic combinatorial techiques for forcastng and ranking prediction-based actions
WO2025226527A1 (en) Systems and methods for strategic application modernization assessment