ES3017065T3 - Optimizing user interface data caching for future actions - Google Patents

Optimizing user interface data caching for future actions Download PDF

Info

Publication number
ES3017065T3
ES3017065T3 ES20180328T ES20180328T ES3017065T3 ES 3017065 T3 ES3017065 T3 ES 3017065T3 ES 20180328 T ES20180328 T ES 20180328T ES 20180328 T ES20180328 T ES 20180328T ES 3017065 T3 ES3017065 T3 ES 3017065T3
Authority
ES
Spain
Prior art keywords
data
action
application
user interface
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
ES20180328T
Other languages
English (en)
Inventor
Fan Zhang
Peng Zhuang
Yi Meng
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of ES3017065T3 publication Critical patent/ES3017065T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

El objeto de esta especificación se refiere generalmente al prealmacenamiento en caché de datos para una acción futura prevista. En algunas implementaciones, un dispositivo cliente incluye un dispositivo de almacenamiento de datos con una caché que almacena los datos recibidos para una o más aplicaciones móviles y un aparato de procesamiento de datos que se comunica con el dispositivo de almacenamiento de datos y una pantalla. Se puede determinar un contexto de interfaz de usuario para una interfaz de usuario dada que se presenta para una aplicación específica. La acción prevista que un usuario del dispositivo cliente realizará en la interfaz de usuario dada se puede determinar con base en el contexto de la interfaz de usuario. Antes de detectar la acción prevista, se puede transmitir a través de una red una solicitud de datos de la siguiente acción que se presentarán en respuesta al usuario que la realice. Los datos de la siguiente acción se pueden recibir y almacenar en la caché. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Optimización del almacenamiento en caché de datos de la interfaz de usuario para acciones futuras
Antecedentes
Internet facilita el intercambio de datos y las transacciones entre usuarios de todo el mundo. Este intercambio de datos permite a los proveedores de datos proporcionar diversos tipos de contenido a una variedad de usuarios. Los datos pueden proporcionarse de diversas maneras, incluida la publicación de los datos en documentos electrónicos (p. ej., páginas web) y dentro de aplicaciones (p. ej., aplicaciones móviles). Los datos, generalmente, se proporcionan a un dispositivo cliente en respuesta a una solicitud del usuario, p. ej., en respuesta a que un usuario seleccione un enlace a una página web. Cada solicitud puede llevar tiempo para que el proveedor de datos identifique los datos apropiados y los transmita a través de Internet al dispositivo cliente.
El documento US 2016/0360271 A1 establece que un dispositivo informático puede enviar un comando de preparación a una aplicación multimedia para hacer que la aplicación multimedia cargue elementos multimedia y metadatos de elementos multimedia en la memoria asociada a la aplicación multimedia. El dispositivo informático puede predecir una aplicación multimedia que es probable que invoque un usuario. El dispositivo informático puede iniciar la aplicación multimedia. El dispositivo informático puede enviar el comando de preparación a la aplicación multimedia para hacer que la aplicación multimedia prepare los elementos multimedia para su reproducción o presentación al usuario. Después de que la aplicación multimedia cargue los elementos multimedia, el dispositivo informático puede recibir metadatos asociados a los elementos multimedia cargados y presentar los metadatos y controles de la aplicación multimedia apropiados en una pantalla del dispositivo informático.
El documento US 2013/0187753 A1 establece que se proporciona un método para mostrar una pantalla de bloqueo en un dispositivo. El método comprende utilizar, al menos, una de información de uso del dispositivo o información de contexto del dispositivo para predecir, al menos, una aplicación que es probable que se utilice en el dispositivo durante un período de tiempo y, cuando se muestra la pantalla de bloqueo durante el período de tiempo, mostrar en la pantalla de bloqueo, al menos, un icono asociado con el inicio de la, al menos, una aplicación prevista.
CHII CHANG et al. "ProMWS: Proactive mobile Web service provision using context-awareness", PERCOM WORKSHOPS, páginas 69-74, establece que se presenta ProMWS, una estrategia de precarga de servicios web móviles consciente del contexto. La estrategia propuesta predice la consulta del usuario móvil y coopera con servicios remotos para precargar el servicio en la memoria caché del dispositivo móvil antes de que el usuario lo solicite.
Compendio
Esta especificación describe sistemas, métodos, dispositivos y otras técnicas, para almacenar en caché previamente datos en un dispositivo cliente en función de una próxima acción que el usuario está determinado, p. ej., predecir, a realizar. La presente invención se define en las reivindicaciones adjuntas.
En general, un aspecto innovador de la materia descrita en esta especificación puede implementarse en un dispositivo cliente que incluye una pantalla que presenta interfaces de usuario para una o más aplicaciones móviles. El dispositivo cliente también puede incluir un dispositivo de almacenamiento de datos que tiene una memoria caché que almacena los datos recibidos a través de una red de comunicación de datos para una o más aplicaciones móviles. El dispositivo cliente también puede incluir un aparato de procesamiento de datos que se comunica con el dispositivo de almacenamiento de datos y la pantalla. El aparato de procesamiento de datos puede determinar un contexto de la interfaz de usuario para una interfaz de usuario dada que se presenta mediante la pantalla para una aplicación dada. El contexto de la interfaz de usuario para la interfaz de usuario dada puede especificar, al menos, uno de (i) un grupo al que pertenecen los datos que se están presentando en la interfaz de usuario dada o (ii) un tipo de datos que se está presentando en la interfaz de usuario dada. El aparato de procesamiento de datos puede determinar, en función del contexto de la interfaz de usuario, una próxima acción prevista que un usuario del dispositivo cliente realizará en la interfaz de usuario dada. El aparato de procesamiento de datos puede transmitir, a través de la red de comunicación de datos y antes de detectar la próxima acción prevista, una solicitud de datos de la próxima acción que se presentarán en respuesta a que el usuario realice la próxima acción prevista. El aparato de procesamiento de datos puede recibir, a través de la red de comunicación de datos, los datos de la próxima acción y almacenar los datos de la próxima acción en la memoria caché. Otras implementaciones de este aspecto incluyen aparatos, métodos, sistemas y programas informáticos correspondientes, configurados para realizar las acciones de los métodos, codificados en dispositivos de almacenamiento informático.
Estas y otras implementaciones pueden incluir, opcionalmente, una o más de las siguientes características. En algunos aspectos, el aparato de procesamiento de datos del dispositivo cliente puede detectar una ocurrencia de la acción prevista en la interfaz de usuario dada, obtener los datos de la próxima acción de la memoria caché, y actualizar la interfaz de usuario para presentar los datos de la próxima acción.
En algunos aspectos, el contexto de la interfaz de usuario especifica un nivel de agregación de los datos que se están presentando en la interfaz de usuario dada. El nivel de agregación puede especificar un nivel jerárquico en el que se agregan los datos.
En algunos aspectos, la próxima acción prevista se determina en función del número de veces que cada acción de un conjunto de posibles acciones que pueden realizarse en la interfaz de usuario dada ha sido realizada por uno o más usuarios, incluido el usuario cuando la interfaz de usuario dada tenía un contexto que coincidía con el contexto determinado de la interfaz de usuario.
En algunos aspectos, el aparato de procesamiento de datos del dispositivo cliente puede detectar un evento desencadenante para determinar la próxima acción prevista. La próxima acción prevista puede determinarse en respuesta a la detección del evento desencadenante.
En algunos aspectos, el aparato de procesamiento de datos del dispositivo cliente puede obtener un modelo de predicción que determina la próxima acción prevista en función del contexto de la interfaz de usuario y convierte el modelo predictivo en mapeos entre las próximas acciones previstas y las probabilidades. Cada mapeo puede ser un mapeo entre una próxima acción prevista respectiva y la probabilidad de que la próxima acción prevista respectiva ocurra para un contexto dado de la interfaz de usuario.
En algunos aspectos, el aparato de procesamiento de datos del dispositivo cliente puede seleccionar el modelo predictivo de un conjunto de modelos predictivos en función de, al menos, una de (i) una precisión de predicción para cada modelo predictivo, (ii) una tasa de aciertos en caché para cada modelo predictivo, (iii) una reducción en la latencia proporcionada por cada modelo predictivo, o (iv) un número de interacciones históricas del usuario realizadas por el usuario en la interfaz de usuario dada.
En algunos aspectos, el aparato de procesamiento de datos del dispositivo cliente puede determinar que los datos de la próxima acción serán presentados por una segunda aplicación diferente de la aplicación dada. Antes de detectar la próxima acción prevista, el aparato de procesamiento de datos puede obtener un código para ejecutar la segunda aplicación y almacenar el código en la memoria caché.
Realizaciones particulares de la materia descrita en esta especificación pueden implementarse para realizar una o más de las siguientes ventajas. La latencia en la obtención y presentación de los datos a un usuario puede reducirse almacenando en caché previamente los datos que es probable que se soliciten en respuesta a la próxima acción del usuario, p. ej., la próxima interacción del usuario con una aplicación. La latencia en la carga de una aplicación web puede reducirse identificando una aplicación web que se utilizará para presentar los datos solicitados en respuesta a la próxima acción del usuario y obteniendo el código, p. ej., secuencias de comandos, utilizadas para cargar la aplicación web. De manera similar, la latencia en la carga de una aplicación móvil puede reducirse identificando una aplicación móvil que se utilizará para presentar los datos solicitados en respuesta a la próxima acción del usuario y cargando la aplicación en segundo plano en el dispositivo cliente del usuario. El almacenamiento en caché previo de los datos también permite que el dispositivo cliente presente los datos más rápidamente, ya que el dispositivo cliente no tiene que esperar a que una solicitud atraviese la red, a que el servidor identifique los datos solicitados y a que los datos solicitados lleguen al dispositivo cliente.
Las técnicas descritas en este documento permiten la evaluación del lado del cliente de la interacción del usuario con una aplicación para predecir una próxima acción que se realizará dentro de la aplicación (o en otra aplicación diferente). Esa predicción permite que el dispositivo cliente solicite los datos necesarios para respaldar la próxima acción de un servidor antes de que se necesiten, de manera que cuando se necesiten los datos, ya estarán almacenados en el dispositivo cliente. Como tal, las técnicas permiten transiciones en tiempo real desde una primera interfaz de usuario a una interfaz de usuario diferente, aunque la transición a la interfaz de usuario diferente puede requerir una cantidad de datos que de otro modo no podrían descargarse lo suficientemente rápido para respaldar la transición en tiempo real. La evaluación de los datos también se realiza en el segundo plano del dispositivo cliente (p. ej., sin interrumpir el uso de la primera interfaz de usuario), de manera que la experiencia del usuario con la primera aplicación no se degrade. Además, las técnicas descritas en este documento utilizan datos en tiempo real (p. ej., interacciones del usuario con el dispositivo móvil) que no estarían disponibles sin el uso de dispositivos informáticos.
Las técnicas descritas en este documento también hacen un uso eficaz y eficiente de la memoria caché limitada de un dispositivo móvil para mejorar las transiciones entre interfaces de usuario que se actualizan (p. ej., con datos nuevos, filtrados, o modificados) en respuesta a una interacción del usuario. El uso de los modelos de próxima acción descritos en este documento mejora la probabilidad de que los datos almacenados en la memoria caché se soliciten realmente. Esto reduce la probabilidad de que el dispositivo móvil tenga que descargar datos para respaldar la interacción del usuario con la interfaz de usuario en el momento en el que el usuario solicita la próxima interfaz de usuario.
Dado que puede haber una cantidad significativa de actividad de configuración y desmontaje involucrada en la realización de descargas de datos móviles, incluyendo la obtención de acceso al procesador del dispositivo móvil, al transceptor de la red móvil o wifi y a otros componentes, la recepción de los datos y el almacenamiento de los datos en una ubicación adecuada, realizar la descarga de datos por adelantado ahorra tiempo y reduce la demanda que se le impone al dispositivo móvil en el momento en el que el dispositivo móvil está haciendo la transición a una interfaz de usuario diferente. Las técnicas descritas en la presente memoria permiten que el dispositivo móvil descargue datos futuros al mismo tiempo que otros datos para reducir el número de veces que se descargan datos y, por lo tanto, reducir la demanda que se le impone al dispositivo móvil que se produciría si el dispositivo móvil tuviera que realizar la actividad de configuración y desmontaje varias veces.
Algunas aplicaciones nativas generan una interfaz de usuario inicial que utiliza datos que forman parte de la aplicación y, por lo tanto, datos que pueden almacenarse en el dispositivo móvil. Sin embargo, una parte significativa de la interfaz de usuario inicial y las interfaces de usuario posteriores se crean, dinámicamente, en función de los datos descargados de un servidor en red. Por tanto, un uso fluido de las interfaces de usuario requiere una transferencia eficiente de datos al dispositivo móvil. Debido a las limitaciones de hardware y de red, la actualización de la interfaz de usuario puede demorarse si todos los datos (o una parte sustancial) se transfieren cuando la interfaz de usuario para la que se utilizan los datos aún no se ha solicitado.
A continuación, se describen diversas características y ventajas de la materia objeto anterior con respecto a las figuras. Otras características y ventajas son evidentes a partir de la materia descrita en la presente memoria y de las reivindicaciones.
Descripción de los dibujos
La Figura 1 es un entorno de ejemplo en el que un sistema de distribución de datos distribuye datos a dispositivos cliente.
La Figura 2 muestra una interfaz de usuario de ejemplo en la que se presentan datos.
La Figura 3 es un diagrama de flujo de un proceso de ejemplo para determinar una próxima acción prevista y almacenar en caché previamente los datos de la próxima acción para la próxima acción prevista.
La Figura 4 es un diagrama de flujo de un proceso de ejemplo para determinar una próxima acción prevista y almacenar en caché previamente los datos de la próxima acción para la próxima acción prevista.
La Figura 5 es un diagrama de flujo de un proceso de ejemplo para mantener métricas de rendimiento para los modelos predictivos que se utilizan para determinar las próximas acciones previstas.
Descripción detallada
En general, los sistemas y técnicas descritas en la presente memoria pueden reducir la latencia en la obtención y presentación de datos almacenando en caché previamente los datos antes de que un usuario los solicite. Un sistema puede determinar una o más próximas acciones previstas (p. ej., acciones futuras) que es probable que un usuario realice en una interfaz de usuario de una aplicación, p. ej., en una aplicación móvil que se ejecuta en un dispositivo móvil o en una aplicación web que se ejecuta en un navegador web. El sistema puede identificar los datos que se presentarán en la interfaz de usuario (o en otra interfaz de usuario a la que la aplicación transita para presentar los datos) si el usuario realmente realiza la próxima acción prevista y almacenar en caché previamente los datos en el dispositivo cliente del usuario antes de que el usuario realice la acción.
El sistema puede determinar la próxima acción prevista en función del contexto de la interfaz de usuario. Por ejemplo, es más probable que un usuario realice una acción en particular cuando se presenta un tipo particular de datos en la interfaz de usuario. Los datos del contexto de la interfaz de usuario utilizados para determinar la próxima acción prevista pueden incluir, por ejemplo, el tipo de datos que se está presentando, un grupo al que pertenecen los datos, un nivel de agregación de los datos, una pestaña de la aplicación que se presenta actualmente, el estado de la interfaz de usuario y/u otros datos de contexto adecuados.
El sistema puede determinar la próxima acción prevista en función de acciones que el usuario que visualiza la interfaz de usuario y/u otros usuarios realizaron en el pasado. Por ejemplo, el sistema puede mantener, para un conjunto de acciones (p. ej., interacciones del usuario) que pueden realizarse en una interfaz de usuario dada, el número de veces que el(los) usuario(s) ha(n) realizado la acción. El sistema también puede mantener, para uno o más contextos de la interfaz de usuario, el número de veces que se realizó cada acción cuando la interfaz de usuario tenía un contexto que coincidía con el contexto de la interfaz de usuario. Por ejemplo, un contexto de la interfaz de usuario puede definirse mediante la presentación de un grupo particular de datos que tienen un tipo de datos particular. Para este contexto de la interfaz de usuario, el sistema puede mantener un recuento del número de veces que se realizó cada acción cuando la interfaz de usuario presentaba el grupo particular de datos que tenía el tipo de datos particular. En algunas implementaciones, el sistema puede seleccionar, como la(s) próxima(s) acción(es) prevista(s), una o más de las acciones que se han realizado con mayor frecuencia en el pasado cuando la interfaz de usuario presentaba el grupo particular de datos que tenía el tipo de datos particular.
En algunas implementaciones, la próxima acción prevista puede incluir la presentación de datos utilizando una aplicación diferente de la aplicación que está presentando, actualmente, la interfaz de usuario. En este ejemplo, el sistema puede almacenar en caché previamente el código para cargar la aplicación diferente en el dispositivo cliente para reducir la latencia en la carga de la aplicación si la próxima acción prevista se realiza realmente. Por ejemplo, el sistema puede almacenar en caché previamente las secuencias de comandos utilizadas para cargar otra aplicación web en una página web presentada, actualmente, por el dispositivo cliente si la otra aplicación web se utilizará para presentar los datos requeridos por la próxima acción prevista. Esto permite que el dispositivo cliente realice la transición entre aplicaciones web dentro de la misma página web (o dentro de diferentes páginas web) de manera fluida y sin retrasos innecesarios. El sistema también puede almacenar en caché previamente los datos que se presentarán en la otra aplicación web para evitar retrasos y demandas innecesarias al dispositivo cliente para obtener los datos.
En algunas implementaciones, las técnicas descritas en este documento pueden utilizarse para almacenar en caché previamente datos para una aplicación de un primer dispositivo en función del contexto de una interfaz de usuario de un segundo dispositivo diferente del primer dispositivo o, de manera más general, en función de las interacciones del usuario con el segundo dispositivo. Por ejemplo, la interacción de un usuario con un asistente de inteligencia artificial (IA) (p. ej., preguntas formuladas o solicitudes proporcionadas al asistente de inteligencia artificial) puede utilizarse para identificar acciones que el usuario probablemente realizará en otro dispositivo y para almacenar en caché previamente datos para las acciones identificadas en el otro dispositivo. En un ejemplo particular, un usuario puede solicitar al asistente de IA rutas para correr cerca de una ubicación particular. En respuesta, un sistema puede determinar que es probable que el usuario acceda a una aplicación de monitorización de la actividad en un dispositivo para llevar puesto (p. ej., un reloj inteligente) o un teléfono inteligente y almacenar en caché previamente los datos para la aplicación de monitorización de la actividad en el dispositivo para llevar puesto o teléfono inteligente.
Las predicciones de acciones entre dispositivos también pueden aplicarse a otros dispositivos, como los automóviles inteligentes (p. ej., automóviles que tienen capacidades informáticas integradas), los automóviles autónomos, los televisores inteligentes, los electrodomésticos inteligentes, y/u otros dispositivos inteligentes adecuados. Por ejemplo, el sistema puede utilizar datos que especifican que un usuario preguntó a un asistente de IA sobre un restaurante en particular para almacenar en caché las instrucciones de navegación para el restaurante en particular para una aplicación de un dispositivo informático integrado en un automóvil, un sistema de navegación de un automóvil, o un sistema de navegación de un automóvil autónomo.
La Figura 1 es un entorno 100 de ejemplo en el que un sistema 110 de distribución de datos distribuye datos a dispositivos cliente 150. El sistema 110 de distribución de datos puede transmitir datos a los dispositivos cliente 150 a través de una red 130 de comunicación de datos, p. ej., una red de área local (LAN), una red de área amplia (WAN), Internet, una red móvil, o una combinación de las mismas. Los dispositivos cliente 150 pueden incluir teléfonos inteligentes, ordenadores tipo tableta, ordenadores portátiles, ordenadores de sobremesa, relojes inteligentes, y/u otros tipos de dispositivos informáticos móviles y no móviles.
Un dispositivo cliente 150 puede incluir una o más aplicaciones 154. Por ejemplo, el dispositivo cliente puede incluir una o más aplicaciones móviles (p. ej., aplicaciones móviles). Una aplicación móvil puede ser una aplicación nativa desarrollada para un tipo particular de dispositivo o para una plataforma en particular. Las aplicaciones 154 pueden incluir aplicaciones web que se ejecutan en un navegador web. Las aplicaciones web pueden incluir código, p. ej., secuencias de comandos, que se descargan al dispositivo cliente 150 y se ejecutan en el navegador web cuando se abre una página web que incluye la aplicación web en el navegador web.
Cada aplicación 154 puede generar una o más interfaces 152 de usuario que se presentan mediante una pantalla del dispositivo cliente 150. Una interfaz 152 de usuario puede presentar datos y otro contenido, como imágenes, vídeos, gráficos, etc. Una interfaz 152 de usuario también puede incluir elementos de la interfaz de usuario que permiten a un usuario navegar dentro de la aplicación (o fuera de la aplicación), modificar datos, ordenar los datos, filtrar los datos, solicitar datos adicionales o diferentes, y/o realizar otras acciones apropiadas. Por ejemplo, una interfaz 152 de usuario puede incluir botones, iconos, barras deslizantes y otros elementos que permiten a un usuario navegar entre pantallas de visualización, modificar datos, ordenar datos, filtrar datos, etc. Una interfaz 152 de usuario puede incluir múltiples pestañas que presentan diferentes datos o diferentes tipos de datos. Un usuario puede navegar entre las pestañas seleccionando la pestaña deseada. En otro ejemplo, una interfaz de usuario puede incluir un selector de rango de fecha y hora que permite a un usuario filtrar datos para un rango de fecha y hora en particular. Una interfaz de usuario de ejemplo se representa en la Figura 2 y se describe a continuación. A efectos del presente documento, las interfaces de usuario se discuten en general. Sin embargo, las técnicas pueden aplicarse a otros datos relacionados con un dispositivo cliente, como el estado del dispositivo cliente y/o interacciones anteriores con el dispositivo cliente. Además, como se utiliza a lo largo de este documento, el término interfaz de usuario no se limita a interfaces gráficas de usuario, sino que puede incluir interfaces de usuario audibles, así como otras interfaces de usuario.
Las aplicaciones 154 pueden presentar los datos recibidos del sistema 110 de distribución de datos en las interfaces 152 de usuario. El sistema 110 de distribución de datos puede mantener datos para una o más aplicaciones 154 y proporcionar los datos a la(s) aplicación(es) 154 en respuesta a solicitudes recibidas de los dispositivos cliente 150. Por ejemplo, cuando el dispositivo cliente 150 carga una aplicación 154, la aplicación 154 puede transmitir una solicitud al sistema 110 de distribución de datos a través de la red 130. La solicitud puede especificar los datos que serán presentados por la aplicación 154. Además, el usuario puede utilizar la(s) interfaz(es) 152 de usuario generada(s) y presentada(s) por la aplicación 154 para solicitar datos adicionales o diferentes. A su vez, la aplicación 154 puede solicitar los datos del sistema 110 de distribución de datos.
El dispositivo cliente 150 también incluye una memoria caché 156 de alta velocidad. La memoria caché 156 de alta velocidad puede incluir uno o más dispositivos de memoria de alta velocidad instalados en el dispositivo cliente 150. Por ejemplo, la memoria caché 156 de alta velocidad puede incluir dispositivos de memoria estática de acceso aleatorio (SRAM) y/o de memoria de estado sólido. El dispositivo cliente 150 también puede incluir otros dispositivos de almacenamiento de memoria, como discos duros, una memoria flash, etc.
La memoria caché 156 de alta velocidad puede almacenar datos para las aplicaciones 154, incluidos datos que aún no han sido solicitados por un usuario del dispositivo cliente 150. Por ejemplo, las aplicaciones 154 (u otra aplicación dedicada) pueden determinar una o más próximas acciones previstas que es probable que el usuario realice. La(s) próxima(s) acción(es) prevista(s) puede(n) ser acciones que tienen, al menos, una probabilidad umbral de ser realizadas por el usuario. La aplicación 154 también puede solicitar, al sistema 110 de distribución de datos, los datos que se presentarán si el usuario realiza la próxima acción prevista. La aplicación 154 puede transmitir esta solicitud antes de que el usuario realice la próxima acción prevista y sin intervención humana. Por ejemplo, la aplicación 154 puede determinar, automáticamente, la próxima acción prevista en respuesta a un evento desencadenante (p. ej., selección de un selector de rango de datos y de tiempo) y solicitar los datos en respuesta a la determinación de la próxima acción prevista. Cuando la aplicación 154 recibe los datos, la aplicación 154 puede almacenar los datos recibidos en la memoria caché 156 de alta velocidad para que los datos puedan presentarse, rápidamente, si el usuario realiza posteriormente la próxima acción prevista.
En algunas implementaciones, los datos recibidos para una próxima acción prevista pueden almacenarse en un disco duro, una memoria flash, o algún otro dispositivo de almacenamiento de memoria que sea diferente de la memoria caché 156 de alta velocidad. Aunque el uso de dicha memoria puede no ser tan rápido como el uso de una memoria caché 156 de alta velocidad, la latencia al solicitar los datos a través de la red 130 después de que el usuario haya realizado la próxima acción prevista aún se elimina o se reduce.
Una aplicación 154 puede utilizar un modelo 158 de próxima acción para determinar una próxima acción prevista para un usuario. En algunas implementaciones, el modelo 158 de próxima acción es específico de la aplicación. Por ejemplo, una aplicación 154 puede tener un modelo 158 de próxima acción correspondiente que determina una próxima acción prevista para un usuario al que se presenta una interfaz 152 de usuario de la aplicación 154. En otro ejemplo, una aplicación 154 puede tener un modelo 158 de próxima acción respectivo para cada interfaz 152 de usuario o para un conjunto de interfaces 152 de usuario generadas y presentadas por la aplicación 154. En este ejemplo, un modelo 154 de próxima acción puede utilizarse para determinar una próxima acción prevista para usuarios a los que se presentan la(s) respectiva(s) interfaz(ces) de usuario del modelo de próxima acción.
En algunas implementaciones, una aplicación 154 puede tener modelos 158 de próxima acción específicos del usuario. Un modelo de próxima acción específico del usuario para una aplicación 154 puede utilizarse para determinar una próxima acción prevista que es probable que un usuario en particular realice en una o más interfaces de usuario de una aplicación 154. Una aplicación 154 también puede tener un modelo de próxima acción general que se utiliza para determinar una próxima acción prevista para múltiples usuarios. Como se describe con más detalle a continuación, la aplicación 154 puede seleccionar entre un modelo específico del usuario y un modelo general para un usuario en particular en función del número de acciones que el usuario ha realizado en las interfaces de usuario de la aplicación 154.
Un modelo 158 de próxima acción para una aplicación 154 puede especificar, para cada acción en un conjunto de acciones que pueden realizarse en una interfaz 152 de usuario de la aplicación 154, la probabilidad de que se realice la acción. Por ejemplo, el modelo 158 de próxima acción puede especificar que una primera acción tiene una probabilidad del 50% de realizarse en la interfaz 152 de usuario mientras que una segunda acción tiene una probabilidad del 45% de realizarse en la interfaz 152 de usuario. En este ejemplo, la aplicación 154 puede seleccionar una o más de las próximas acciones que tienen las probabilidades más altas como la(s) próxima(s) acción(es) prevista(s). Como se describe con más detalle a continuación, las probabilidades especificadas por un modelo 158 de próxima acción para una aplicación 154 pueden basarse en acciones anteriores realizadas en las interfaces de usuario de la aplicación 154.
El(los) modelo(s) 158 de próxima acción para una aplicación puede(n) utilizarse para determinar la próxima acción prevista en función del contexto de una interfaz de usuario que se presenta a un usuario. El contexto de la interfaz de usuario puede definirse mediante un conjunto de uno o más atributos de la interfaz de usuario. Por ejemplo, el contexto de la interfaz de usuario puede definirse mediante atributos como el tipo de datos que se está presentando (p. ej., datos de rendimiento, datos históricos, datos de cuenta, criterios de distribución de elementos de contenido), un grupo al que pertenecen los datos (p. ej., a qué cuenta pertenecen los datos), características de los datos (p. ej., un tamaño de una cuenta a la que pertenecen los datos), un nivel de agregación de los datos, una pestaña de la aplicación que se presenta actualmente, el estado de la interfaz de usuario, y/u otros atributos apropiados de la interfaz de usuario o de los datos que se presentan mediante la interfaz de usuario. El nivel de agregación de los datos puede especificar un nivel jerárquico en el que se agregan los datos. Por ejemplo, pueden obtenerse datos de rendimiento para cada iteración de un evento. Estos datos de rendimiento pueden agregarse para obtener totales diarios, totales semanales, totales mensuales, etc. En este ejemplo, el total mensual estaría en un nivel de agregación más alto que los totales semanales, y los totales semanales estarían en un nivel de agregación más alto que los totales diarios.
En otro ejemplo, las estadísticas pueden agregarse a varios niveles jerárquicos diferentes. Por ejemplo, las estadísticas de un jugador de fútbol pueden agregarse a nivel de partido, a nivel de temporada y a nivel de carrera. En este ejemplo, el nivel de carrera estaría en un nivel de acumulación más alto que el nivel de temporada y el nivel de temporada estaría en un nivel más alto que el nivel de partido.
El(los) modelo(s) 158 de próxima acción para una aplicación 154 puede(n) especificar, para cada contexto de la interfaz de usuario (p. ej., cada conjunto de uno o más atributos de una interfaz de usuario), la probabilidad de que se realice cada una de un conjunto de acciones. Cuando la aplicación 154 utiliza el(los) modelo(s) de próxima acción para determinar una próxima acción prevista, la aplicación 154 puede comparar los atributos de la interfaz de usuario que se presenta actualmente al usuario con los atributos de los contextos de la interfaz de usuario del modelo 158 de próxima acción apropiado (p. ej., el modelo de próxima acción para el usuario y/o la interfaz de usuario o un modelo de próxima acción general para múltiples usuarios y/o la interfaz de usuario). La aplicación 154 puede evaluar las probabilidades de las acciones especificadas por el modelo 154 de próxima acción y seleccionar una o más de las acciones (p. ej., las N acciones principales que tienen las probabilidades más altas) como próximas acciones previstas en función de las probabilidades. La aplicación 154 puede entonces solicitar, al sistema 110 de distribución de datos, los datos que serán presentados por la aplicación 154 (u otra aplicación) si el usuario realiza la(s) próxima(s) acción(es) prevista(s). Cuando los datos se reciben del sistema 110 de distribución de datos, la aplicación 154 puede almacenar los datos en la memoria caché 156 de alta velocidad.
Si el(los) atributo(s) de la interfaz de usuario actual no coincide(n) con el(los) atributo(s) de un contexto de la interfaz de usuario para el modelo 158 de próxima acción, la aplicación 154 puede seleccionar un contexto de la interfaz de usuario que sea más similar a la interfaz de usuario actual. Por ejemplo, la aplicación 154 puede seleccionar un contexto de la interfaz de usuario que tenga el mayor número de atributos coincidentes entre la interfaz de usuario actual y los contextos de la interfaz de usuario.
En algunas implementaciones, el(los) modelo(s) 158 de próxima acción para una aplicación 154 puede(n) incluir un modelo predictivo que ha sido entrenado utilizando técnicas de aprendizaje automático. Por ejemplo, el(los) modelo(s) 158 de próxima acción pueden entrenarse utilizando características (p. ej., atributos) de las interfaces de usuario y datos de acciones históricas que especifican acciones realizadas por los usuarios cuando las interfaces de usuario tenían contextos particulares. Los atributos de una interfaz de usuario que se presenta a un usuario pueden aplicarse al modelo predictivo, y el modelo predictivo puede generar probabilidades para cada una de un conjunto de acciones. La aplicación 154 puede entonces seleccionar la(s) próxima(s) acción(es) prevista(s) en función de las probabilidades.
En algunas implementaciones, un modelo predictivo puede convertirse en mapeos entre las próximas acciones previstas y las probabilidades en el dispositivo cliente 150. Cada mapeo puede ser un mapeo entre una próxima acción prevista respectiva y la probabilidad de que la próxima acción prevista respectiva ocurra para un contexto dado de la interfaz de usuario. De esta manera, la aplicación 154 puede buscar, más rápidamente, las probabilidades en el mapeo que si la aplicación 154 tuviera que aplicar los atributos de la interfaz de usuario al modelo predictivo.
En algunas implementaciones, un modelo 158 de próxima acción puede determinar una próxima acción que, si la realiza un usuario, haría que el dispositivo cliente 150 cargue otra aplicación diferente de la aplicación donde se realiza la acción. Por ejemplo, un usuario puede estar viendo un resumen de los datos de la cuenta en una primera aplicación web que se ejecuta en un navegador web. Para ver datos más detallados que se presentan utilizando una segunda aplicación web, el usuario puede seleccionar un botón de navegación que haga que el navegador web navegue a una página web diferente en la que se ejecuta la segunda aplicación web. En otro ejemplo, la selección de una interfaz de usuario puede hacer que el navegador web cargue una aplicación web diferente dentro de la misma página web.
Si la próxima acción determinada utilizando el modelo 158 de próxima acción haría que el dispositivo cliente 150 cargue otra aplicación, la aplicación 154 puede solicitar el código para la otra aplicación o hacer que el dispositivo cliente 150 cargue la otra aplicación en el segundo plano del dispositivo cliente. Por ejemplo, si la otra aplicación es una aplicación web, el código para la aplicación web puede obtenerse y almacenarse en la memoria caché 156 de alta velocidad. Si la otra aplicación es una aplicación móvil, la aplicación móvil puede cargarse en el segundo plano del dispositivo cliente 150. La aplicación 154 también puede solicitar los datos que se presentarán si se realiza la próxima acción prevista. Estos datos también pueden almacenarse en la memoria caché 156 de alta velocidad. Cargando la aplicación (u obteniendo el código para cargar la aplicación) y obteniendo los datos antes de que el usuario realice la próxima acción prevista, la aplicación puede cargarse (o presentarse) y los datos pueden presentarse más rápido que si el dispositivo cliente 150 esperara hasta que se realice la próxima acción prevista.
En algunas implementaciones, una aplicación 154 puede incluir un modelo 158 de próxima acción separado para cada tipo de acción que puede realizarse en una interfaz 152 de usuario. Por ejemplo, la aplicación 154 puede incluir un modelo de próxima acción para acciones de cambio de lugar que hacen que la aplicación 154 navegue a una nueva pestaña o página y otro modelo de próxima acción para acciones de cambio de alcance que cambian el alcance de los datos que se presentan en la interfaz de usuario (p. ej., cambios de nivel de filtrado o de agregación). El modelo de próxima acción apropiado puede seleccionarse en función de un evento desencadenante para el tipo de acción. Por ejemplo, la aplicación 154 puede utilizar un modelo de cambio de alcance para predecir qué rango de fecha y hora es probable que seleccione un usuario en respuesta a la selección por parte del usuario de un elemento de la interfaz de usuario selector de rango de fecha y hora. En algunas implementaciones, la aplicación 154 puede utilizar múltiples modelos de próxima acción para determinar múltiples próximas acciones previstas y obtener y almacenar datos para cada una de las múltiples próximas acciones previstas en la memoria caché 156 de alta velocidad antes de que el usuario realice las acciones. Por ejemplo, la aplicación 154 puede utilizar un modelo de próxima acción de cambio de lugar para determinar una próxima acción prevista de cambio de lugar y un modelo de próxima acción de cambio de alcance para determinar una próxima acción prevista de cambio de alcance. La aplicación 154 puede entonces obtener y almacenar los datos para ambas próximas acciones previstas en la memoria caché 156 de alta velocidad.
El sistema 110 de distribución de datos incluye un servidor front-end 112 que recibe solicitudes de datos y proporciona los datos en respuesta a las solicitudes. Por ejemplo, el servidor front-end 112 puede recibir solicitudes de datos de las aplicaciones 154 de los dispositivos cliente 150. Las solicitudes pueden incluir solicitudes de datos de la próxima acción en función de las próximas acciones previstas determinadas utilizando el(los) modelo(s) 158 de próxima acción.
El servidor front-end 112 puede proporcionar las solicitudes a un servidor 116 de gestión de datos. El servidor 116 de gestión de datos puede obtener los datos apropiados de un dispositivo 124 de almacenamiento de datos de la aplicación (p. ej., disco(s) duro(s), memoria flash, etc.)) y proporcionar los datos al servidor front-end 112. A su vez, el servidor front-end 112 puede transmitir los datos al dispositivo cliente 150 desde el que se recibió la solicitud a través de la red 130 de comunicación de datos.
El servidor 116 de gestión de datos puede gestionar los datos para las aplicaciones, como las aplicaciones 154 de los dispositivos cliente 150. El servidor 116 de gestión de datos puede recibir los datos de los desarrolladores de aplicaciones, de los servidores que agregan los datos que son mostrados por las aplicaciones, o de otras fuentes y almacena los datos en el dispositivo 124 de almacenamiento de datos de la aplicación.
El sistema 110 de distribución de datos también incluye un servidor 114 de predicción de la próxima acción. El servidor 114 de predicción de la próxima acción puede generar modelos 158 de próxima acción, actualizar modelos 158 de próxima acción, monitorizar el rendimiento de los modelos 158 de próxima acción, y/o determinar próximas acciones previstas para las aplicaciones 154.
El servidor 114 de predicción de la próxima acción puede generar modelos de próxima acción en función de los datos de acción almacenados en un dispositivo 120 de almacenamiento de datos de acción. Los datos de acción pueden especificar, para las interfaces 152 de usuario particulares de las aplicaciones 154, acciones que se realizaron en las interfaces 152 de usuario. Los datos de acción también pueden especificar el contexto de las interfaces 152 de usuario cuando ocurrieron las acciones. Por ejemplo, los datos de acción pueden incluir, para cada acción (de un conjunto de acciones potenciales) realizada en una interfaz 152 de usuario de una aplicación 154, datos que identifican la interfaz de usuario que se presentó cuando se realizó la acción y uno o más atributos de la interfaz de usuario cuando se realizó la acción. Como se describió anteriormente, los atributos pueden incluir el tipo de datos que se está presentando, un grupo al que pertenecen los datos, características de los datos, un nivel de agregación de los datos, una pestaña de la aplicación que se presenta actualmente, el estado de la interfaz de usuario, y/u otros atributos apropiados de la interfaz de usuario o de los datos que se presentan mediante la interfaz de usuario. Los datos de acción también pueden incluir, para cada acción realizada en una interfaz 152 de usuario de una aplicación, el momento en el que se realizó la acción y/o un identificador anónimo único para un usuario que realizó la acción.
Las aplicaciones 154 pueden configurarse para enviar datos de acción al servidor front-end 112 en respuesta a la detección de acciones realizadas en las interfaces 152 de usuario de las aplicaciones 154. Por ejemplo, si un usuario utiliza un elemento de filtrado de una interfaz 152 de usuario de una aplicación para filtrar un conjunto particular de datos a un rango de fecha y hora particular, la aplicación 154 puede realizar el filtrado para el usuario y presentar los datos filtrados en la interfaz 152 de usuario. La aplicación 154 también puede enviar al servidor front-end 112 datos de acción que especifican, por ejemplo, el rango de fecha y hora, atributos del conjunto particular de datos (p. ej., el grupo al que pertenecen los datos, el tipo de datos, la cuenta a la que pertenecen los datos, etc.), atributos de la interfaz 152 de usuario en la que se realizó la acción, la hora a la que se realizó la acción y un identificador único para el usuario o el dispositivo 150 de usuario. El servidor front-end 112 puede enviar los datos de acción al servidor 114 de predicción de la próxima acción y el servidor 114 de predicción de la próxima acción puede almacenar los datos de acción en el dispositivo 120 de almacenamiento de datos de acción. Las aplicaciones 154 pueden enviar los datos de acción para cada acción después de que se realice la acción y/o periódicamente.
El servidor 114 de predicción de la próxima acción puede generar uno o más modelos 158 de próxima acción para una aplicación 154 y almacenar el(los) modelo(s) de próxima aplicación en el dispositivo 118 de almacenamiento de datos de modelos de próxima acción. La aplicación 154 también puede incluir sus modelos 158 de próxima acción para que la aplicación 154 pueda determinar las próximas acciones previstas en los dispositivos cliente 150. Como se describe con más detalle a continuación, el servidor 114 de predicción de la próxima acción puede utilizar los modelos 158 de próxima acción para determinar las próximas acciones previstas para la aplicación 154.
El servidor 114 de predicción de la próxima acción puede generar el(los) modelo(s) 158 de próxima acción para una aplicación 154 en función de los datos de acción para la aplicación 154 almacenados en el dispositivo 120 de almacenamiento de datos de acción. Como se describió anteriormente, un modelo 158 de próxima acción puede especificar las probabilidades de que se realice una acción en función del contexto de la interfaz de usuario de una interfaz de usuario. En este ejemplo, el servidor 114 de predicción de la próxima acción puede determinar las probabilidades de las acciones en función del número de veces que ocurrió cada acción para cada contexto de la interfaz de usuario. Por ejemplo, si una acción en particular ocurrió diez veces cuando la interfaz de usuario para la aplicación 154 tenía un contexto de la interfaz de usuario en particular y se realizaron un total de cien acciones en la interfaz de usuario cuando la interfaz de usuario tenía el contexto de la interfaz de usuario en particular, la probabilidad de la acción en particular puede ser del 10% (10/100).
En algunas implementaciones, a las acciones más recientes se les asigna un peso mayor al determinar las probabilidades de las acciones. Por ejemplo, el peso de una acción puede disminuir con el tiempo. De esta forma, las acciones más recientes que son más populares (p. ej., que han ocurrido con mayor frecuencia dentro de un período de tiempo en particular) pueden tener una probabilidad mayor, lo que puede dar como resultado que la acción sea la próxima acción prevista. En algunas implementaciones, la probabilidad de una acción en particular se actualiza en función de los datos de una nueva acción que se recibe utilizando las siguientes relaciones:
Relación (1) p = (1 -a)p+ a
Relación (2)p= (1 -a)p
En este ejemplo, (p) es la probabilidad de que se realice la acción en particular y (a) es el grado de disminución del peso. En este ejemplo, la probabilidad de que ocurra la acción en particular se actualiza utilizando la Relación (1) si se realizó la acción en particular. Si no se realizó la acción en particular, la probabilidad se actualiza utilizando la Relación (2). El uso de estas relaciones da como resultado que la n-ésima acción más reciente tenga un peso de (1 - a)n.
Como se describió anteriormente, una aplicación 154 puede tener modelos 158 de próximas acciones específicos del usuario y modelos de próxima acción generales para múltiples usuarios. Un modelo de próxima acción específico del usuario para un usuario en particular puede generarse y actualizarse utilizando datos de acción para el usuario en particular. Modelos de próxima acción generales pueden generarse y actualizarse utilizando datos de acción para múltiples usuarios diferentes.
En algunas implementaciones, el servidor 114 de predicción de la próxima acción actualiza el modelo 158 de próxima acción siempre que se reciban nuevos datos de acción que afecten al modelo 158 de próxima acción. El servidor 114 de predicción de la próxima acción puede entonces enviar el modelo 158 de próxima acción actualizado a las aplicaciones 154 en los dispositivos cliente 150.
En algunas implementaciones, el servidor 114 de predicción de la próxima acción genera modelos 158 de próxima acción para diferentes tipos de acciones. Por ejemplo, como se describió anteriormente, una aplicación 154 puede tener modelos de próxima acción separados para diferentes tipos de acciones. En este ejemplo, el servidor 114 de predicción de la próxima acción puede generar el modelo de próxima acción para un tipo particular de acción utilizando los datos de acción para esos tipos de acciones. Por ejemplo, el servidor 114 de predicción de la próxima acción puede determinar las probabilidades de una acción en particular de un tipo en particular en función del número de veces que se ha realizado la acción en particular cuando la interfaz de usuario tenía un contexto en particular y el número total de acciones del tipo en particular que se han realizado cuando la interfaz de usuario tenía el contexto en particular.
El servidor 114 de predicción de la próxima acción también puede entrenar modelos predictivos utilizando técnicas de aprendizaje automático que utilizan los datos de acción almacenados en el dispositivo 120 de almacenamiento de datos de acción. Por ejemplo, el servidor 114 de predicción de la próxima acción puede generar cadenas de Markov para predecir las próximas acciones del usuario en función de un contexto de la interfaz de usuario actual. Una cadena de Markov es un modelo que utiliza una secuencia de posibles acciones en la que la probabilidad de cada acción depende del estado (p. ej., el contexto) de la interfaz de usuario actual.
En algunas implementaciones, el servidor 114 de predicción de la próxima acción utiliza los modelos 158 de próxima acción para determinar las próximas acciones previstas para un usuario de una aplicación. Por ejemplo, una aplicación 154 puede determinar el contexto de la interfaz de usuario (p. ej., identificar uno o más atributos de la interfaz 152 de usuario) y enviar una solicitud de datos de la próxima acción al servidor front-end 112. La solicitud puede incluir uno o más atributos del contexto de la interfaz de usuario. El servidor 114 de predicción de la próxima acción puede identificar un modelo 158 de próxima acción apropiado del dispositivo 118 de almacenamiento de datos de modelos de próxima acción y utilizar el modelo 158 de próxima acción para determinar una o más próximas acciones previstas en función del contexto de la interfaz de usuario. Por ejemplo, el servidor 114 de predicción de la próxima acción puede identificar el modelo 158 de próxima acción para la aplicación 154. Si la aplicación 154 tiene modelos de próxima acción específicos del usuario, el servidor 114 de predicción de la próxima acción puede identificar el modelo de próxima acción para la aplicación y para el usuario del dispositivo cliente 150 desde el que se recibió la solicitud.
El servidor 114 de predicción de la próxima acción puede proporcionar datos que especifiquen la(s) próxima(s) acción(es) prevista(s) al servidor 116 de gestión de datos. El servidor 116 de gestión de datos puede identificar los datos que se presentarán en el dispositivo cliente 150 si el usuario realiza la(s) próxima(s) acción(es) prevista(s) y proporcionar los datos al servidor front-end 112. A su vez, el servidor front-end 112 puede proporcionar los datos al dispositivo cliente 150 y el dispositivo cliente 150 puede almacenar los datos en la memoria caché 156 de alta velocidad.
El servidor 114 de predicción de la próxima acción también puede mantener métricas de rendimiento para los modelos de próxima acción y almacenar las métricas de rendimiento en un dispositivo 122 de almacenamiento de datos de rendimiento. Las métricas para un modelo de próxima acción pueden incluir una precisión de la predicción para el modelo de próxima acción, una tasa de aciertos en caché para el modelo de próxima acción, y/o una latencia de la acción del usuario para el modelo de próxima acción. La precisión de la predicción para un modelo de próxima acción puede basarse en una relación entre el número de veces que el modelo de próxima acción predijo la acción que el usuario realizó posteriormente y el número total de predicciones realizadas por el modelo de próxima acción. La tasa de aciertos en caché para un modelo de próxima acción puede basarse en una relación entre el número de veces que los datos necesarios para responder a una acción del usuario para la que se utilizó el modelo de próxima acción para determinar una próxima acción prevista se encuentran en la memoria caché 158 de alta velocidad y un número total de veces que se solicitan datos en respuesta a una acción del usuario para la que se utilizó el modelo de próxima acción para determinar una próxima acción prevista. La latencia de la acción del usuario puede indicar la latencia de una acción como la percibe un usuario. Por ejemplo, la latencia de la acción del usuario puede indicar la latencia desde el momento en el que el usuario realiza una acción (p. ej., selecciona una pestaña o envía criterios de filtrado) hasta el momento en el que los datos nuevos o actualizados se representan en el dispositivo cliente 150. Este tiempo puede medirse y agregarse (p. ej., promediarse) para múltiples usos de un modelo de próxima acción para determinar una latencia de la acción del usuario agregada para el modelo de próxima acción.
La Figura 2 muestra una interfaz 200 de usuario de ejemplo en la que se presentan datos. La interfaz 200 de usuario de ejemplo se muestra como si se presentara en un navegador web. La interfaz 200 de usuario también puede presentarse en una aplicación móvil.
La interfaz 200 de usuario incluye un menú 210 de grupo que permite a un usuario seleccionar un grupo de datos para su presentación, p. ej., una campaña o cuenta en particular. Por ejemplo, el usuario puede seleccionar un grupo haciendo clic en el grupo utilizando un ratón o tocando un dispositivo de pantalla táctil en la ubicación del grupo. La selección de un grupo puede ser una próxima acción que se predice mediante un modelo de próxima acción para una aplicación que genera y presenta la interfaz 200 de usuario. Además, el grupo para el que se presentan los datos puede ser un atributo que define el contexto de la interfaz de usuario para la interfaz 200 de usuario. Por ejemplo, los usuarios que visualizan los datos para el grupo 2 pueden visualizar, comúnmente, datos de un tipo en particular. En este ejemplo, cuando se presentan los datos para el grupo 2, el modelo de próxima acción puede utilizarse para determinar que la próxima acción prevista es la selección de datos del tipo en particular y la aplicación puede almacenar en caché previamente los datos del tipo en particular para el grupo 2.
La interfaz 200 de usuario también incluye un menú 215 de tipo de datos que permite a un usuario seleccionar el tipo de datos para el grupo que se va a presentar. Los datos del tipo seleccionado de datos y para el grupo seleccionado se presentan en un área 205 de visualización. Como se mencionó anteriormente, la selección de un tipo de datos puede ser una próxima acción que se predice utilizando un modelo de próxima acción. El tipo de datos que se presenta también puede ser un atributo que define el contexto de la interfaz de usuario para la interfaz 200 de usuario.
La interfaz 200 de usuario también incluye un selector 220 de rango de fecha y hora que permite al usuario seleccionar un rango de fecha y hora para los datos que se presentan en el área 205 de visualización. En este ejemplo, el rango de fecha y hora seleccionado es 1/11/2016 - 30/11/2016. Los datos presentados en el área 205 de visualización pueden filtrarse para que sólo se presenten los datos relacionados con el rango de fecha y hora seleccionado. La interfaz 200 de usuario puede incluir otros elementos de filtrado, como aquellos para filtrar en función de los valores de los datos o de otros criterios de filtrado.
La selección de un rango de fecha y hora en particular (o relativo) puede ser una próxima acción que es determinada por un modelo de próxima acción. Por ejemplo, los usuarios pueden ver a menudo los datos del mes anterior cuando visualizan datos de un tipo en particular. En este ejemplo, el tipo particular de datos es un atributo del contexto de la interfaz de usuario que permite que el modelo de próxima acción prediga que la próxima acción será una selección del mes anterior para los datos. En respuesta, la aplicación puede almacenar en caché previamente los datos del mes anterior del tipo de datos en particular, p. ej., para el grupo seleccionado. Además, la selección del selector 220 de rango de fecha y hora puede ser un evento desencadenante que hace que la aplicación determine una próxima acción prevista. Por ejemplo, la aplicación puede acceder al modelo de próxima acción y utilizar el modelo de próxima acción para determinar qué próxima acción tiene la mayor probabilidad dado el grupo y el tipo de datos para los datos que se presentan en el momento en que se seleccionó el selector 220 de rango de fecha y hora. De esta forma, los datos pueden almacenarse en caché previamente mientras el usuario especifica un rango de fecha y hora deseado utilizando el selector 220 de rango de fecha y hora.
Otro evento desencadenante pueden ser una fecha y hora personalizadas introducidas por el usuario. Por ejemplo, el elemento de la interfaz de usuario puede permitir que un usuario especifique unos datos y tiempos personalizados y seleccione algún botón para filtrar los datos en función de la fecha y hora personalizadas. En este ejemplo, la aplicación puede determinar que la próxima acción prevista será que el usuario seleccione el botón para filtrar los datos. En respuesta, la aplicación puede enviar una solicitud de los datos para los datos y tiempos introducidos antes de que el usuario seleccione el botón.
La interfaz 200 de usuario también incluye un selector 225 de nivel de agregación que permite a un usuario seleccionar un nivel de agregación basado en el tiempo para los datos presentados en el área 205 de visualización. Por ejemplo, el selector 225 de nivel de agregación puede permitir que se presenten datos diarios, datos mensuales, o datos anuales en el área 205 de visualización. La selección de un nivel de agregación en particular puede ser una próxima acción prevista determinada utilizando un modelo de próxima acción. Por ejemplo, los usuarios pueden, normalmente, ver datos diarios cuando el rango de fecha y hora es de, al menos, un mes, pero menos de tres meses. En este ejemplo, el rango de fecha y hora seleccionado es un atributo del contexto de la interfaz de usuario que permite que se utilice el modelo de próxima acción para determinar que la acción prevista que el usuario, probablemente, realizará es una selección de un nivel de agregación diario.
Una aplicación puede utilizar un modelo de próxima acción para determinar una próxima acción prevista en función de uno o más del grupo seleccionado, del tipo de datos seleccionado, del rango de fecha y hora seleccionado y del nivel de agregación seleccionado. A medida que el usuario realiza diferentes selecciones en la interfaz de usuario, la aplicación puede utilizar el contexto de la interfaz de usuario actualizado y el modelo de próxima acción para determinar próximas acciones previstas posteriores y almacenar en caché previamente los datos que se presentarán en la interfaz 200 de usuario si el usuario realiza las próximas acciones previstas antes de que el usuario realice las próximas acciones previstas.
La Figura 3 es un diagrama de flujo de un proceso 300 de ejemplo para determinar una próxima acción prevista y almacenar en caché previamente los datos de la próxima acción para la próxima acción prevista. Las operaciones del proceso 300 pueden ser implementadas, por ejemplo, por un sistema que incluya uno o más aparatos de procesamiento de datos, como el dispositivo cliente 150 de la Figura 1. El proceso 300 también puede ser implementado por instrucciones almacenadas en un soporte de almacenamiento informático, donde la ejecución de las instrucciones por parte de un sistema que incluya un aparato de procesamiento de datos hace que el aparato de procesamiento de datos realice las operaciones del proceso 300.
El sistema determina un contexto de la interfaz de usuario para una interfaz de usuario que se está presentando (302). Por ejemplo, la interfaz de usuario puede ser generada y presentada por una aplicación (p. ej., una aplicación web o una aplicación móvil). El contexto de la interfaz de usuario puede estar definido por uno o más atributos de la interfaz de usuario, como el tipo de datos que se está presentando, un grupo al que pertenecen los datos, características de los datos, un nivel de agregación de los datos, una pestaña de la aplicación que se presenta actualmente, el estado de la interfaz de usuario, y/u otros atributos apropiados de la interfaz de usuario o de los datos que son presentados por la interfaz de usuario.
El sistema determina una acción prevista del usuario en función del contexto de la interfaz de usuario (304). La acción prevista del usuario puede ser una acción que es probable que un usuario de la aplicación realice en la interfaz de usuario en función del contexto de la interfaz de usuario. Por ejemplo, la acción prevista del usuario puede ser una acción que tenga, al menos, una probabilidad umbral de ser realizada por el usuario. En otro ejemplo, la acción prevista del usuario puede ser una acción del usuario que tenga la probabilidad más alta entre múltiples acciones posibles del usuario que pueden realizarse en la interfaz de usuario.
En algunas implementaciones, el sistema utiliza un modelo de próxima acción para determinar la próxima acción prevista. Por ejemplo, el modelo de próxima acción puede especificar, para cada acción de un conjunto de acciones, la probabilidad de que la acción se realice en función de un contexto de la interfaz de usuario. En un ejemplo en particular, el modelo de próxima acción puede especificar que una acción del usuario de navegar a una pestaña en particular tiene una probabilidad del 10% cuando la interfaz de usuario tiene un contexto que incluye la presentación de una segunda pestaña diferente de la pestaña en particular y que incluye un grupo particular de datos. El modelo de próxima acción también puede especificar que la acción del usuario de navegar a la pestaña en particular tiene una probabilidad del 20% cuando la interfaz de usuario tiene un contexto que incluye la presentación de una tercera pestaña que incluye un grupo diferente de datos.
En algunas implementaciones, el sistema puede seleccionar múltiples próximas acciones previstas para las que almacenar en caché previamente los datos. Por ejemplo, múltiples próximas acciones previstas pueden tener, al menos, una probabilidad umbral de ser realizadas por el usuario. En otro ejemplo, el sistema puede seleccionar un número específico de acciones que tengan las probabilidades más altas. De esta forma, es más probable que el sistema obtenga y almacene en caché previamente los datos del usuario antes de que éste realice la acción.
El sistema transmite, a través de una red de comunicación de datos, una solicitud de datos de la próxima acción que se presentarán en respuesta a que el usuario realice la próxima acción prevista (306). El sistema puede transmitir la solicitud a un sistema de distribución de datos, como el sistema 110 de distribución de datos de la Figura 1. Por ejemplo, el sistema puede enviar una solicitud que especifique los datos que solicitaría el sistema si el usuario hubiera realizado, realmente, la próxima acción prevista. En otro ejemplo, el sistema puede enviar una solicitud que especifique la acción en lugar de, o además de, los datos que se presentarán en respuesta a que el usuario realice la próxima acción prevista. En este ejemplo, el sistema 110 de distribución de datos puede identificar los datos apropiados en función de la próxima acción prevista.
El sistema recibe, a través de la red de comunicación de datos, los datos de la próxima acción (308). Por ejemplo, el sistema puede recibir los datos del sistema 110 de distribución de datos de la Figura 1.
El sistema almacena los datos de la próxima acción en una memoria caché del sistema (310). Por ejemplo, el sistema puede incluir una memoria caché de alta velocidad u otro almacenamiento de memoria local del sistema en el que el sistema almacena los datos de la próxima acción. Almacenando los datos de la próxima acción en memoria local, los datos de la próxima acción pueden presentarse más rápidamente si el usuario, realmente, realiza la próxima acción prevista, ya que el sistema no tendría que esperar a que la solicitud atraviese la red y a que lleguen los datos de la próxima acción.
El sistema detecta una ocurrencia de la próxima acción prevista en la interfaz de usuario (312). Por ejemplo, la interfaz de usuario puede ser presentada por una aplicación que está siendo ejecutada por el sistema. La aplicación puede monitorizar las interacciones del usuario con la interfaz de usuario y realizar acciones, p. ej., actualizar datos, navegar a una pestaña diferente, etc., en respuesta a la detección de las interacciones del usuario.
El sistema obtiene los datos de la próxima acción de la memoria caché en respuesta a la detección de la ocurrencia de la próxima acción prevista (314). Por ejemplo, el sistema puede obtener los datos de la próxima acción de la memoria caché del sistema sin enviar otra solicitud a través de la red.
El sistema actualiza la interfaz de usuario para presentar los datos de la próxima acción (316). Por ejemplo, si la próxima acción prevista es navegar a una pestaña diferente y el usuario seleccionó la pestaña diferente, el sistema puede navegar por la interfaz de usuario a la pestaña diferente y presentar los datos de la próxima acción en la pestaña diferente. En otro ejemplo, si la próxima acción prevista es filtrar datos para un rango de fecha y hora en particular, el sistema puede presentar los datos filtrados en la interfaz de usuario.
La Figura 4 es un diagrama de flujo de un proceso 400 de ejemplo para determinar una próxima acción prevista y almacenar en caché previamente los datos de la próxima acción para la próxima acción prevista. Las operaciones del proceso 400 pueden ser implementadas, por ejemplo, por un sistema que incluya uno o más aparatos de procesamiento de datos, como el sistema 110 de distribución de datos de la Figura 1. El proceso 400 también puede ser implementado por instrucciones almacenadas en un soporte de almacenamiento informático, donde la ejecución de las instrucciones por parte de un sistema que incluya un aparato de procesamiento de datos hace que el aparato de procesamiento de datos realice las operaciones del proceso 400.
El sistema recibe una solicitud de datos de la próxima acción de un dispositivo cliente (402). Por ejemplo, el sistema puede recibir la solicitud de un dispositivo cliente que está presentando una interfaz de usuario generada por una aplicación que se ejecuta en el dispositivo cliente. El dispositivo cliente puede transmitir la solicitud al sistema a través de una red de comunicación de datos, p. ej., en respuesta a la detección de un evento desencadenante. El evento desencadenante puede incluir seleccionar un elemento de la interfaz de usuario de filtro (p. ej., un selector de rango de fecha y hora), un elemento de la interfaz de usuario de nivel de agregación, una barra de direcciones, pasar un puntero (p. ej., un cursor) sobre los datos, u otro evento apropiado.
En otro ejemplo, el dispositivo cliente puede transmitir la solicitud sin detectar un evento desencadenante. Por ejemplo, el dispositivo cliente puede transmitir una solicitud cada vez que se actualice la interfaz de usuario. En este ejemplo, el dispositivo cliente puede intentar mantenerse un paso por delante del usuario determinando una próxima acción prevista para cada interfaz de usuario que el usuario visualice.
La solicitud puede incluir datos del contexto de la interfaz de usuario que definan el contexto de la interfaz de usuario. Por ejemplo, la solicitud puede incluir datos que especifiquen uno o más atributos de la interfaz de usuario que se presenta al usuario.
El sistema determina, en función de los datos del contexto de la interfaz de usuario, una próxima acción prevista que un usuario del dispositivo cliente realizará en la interfaz de usuario (404). Por ejemplo, como se describió anteriormente, el sistema puede utilizar un modelo de próxima acción para determinar una o más próximas acciones previstas para el usuario en función de los datos del contexto de la interfaz de usuario.
El sistema identifica los datos de la próxima acción para la próxima acción prevista (406). Los datos de la próxima acción para la próxima acción prevista incluyen datos que serán presentados por el dispositivo cliente si el usuario realmente realiza la próxima acción prevista.
El sistema proporciona los datos de la próxima acción al dispositivo cliente para su almacenamiento en una memoria caché del dispositivo cliente (408). El dispositivo cliente puede almacenar los datos de la próxima acción en la memoria caché. Si el dispositivo cliente detecta que se realizó la próxima acción prevista, el dispositivo cliente puede obtener los datos de la memoria caché y presentar los datos al usuario.
La Figura 5 es un diagrama de flujo de un proceso 500 de ejemplo para mantener métricas de rendimiento para los modelos predictivos que se utilizan para determinar las próximas acciones previstas. Las operaciones del proceso 500 pueden ser implementadas, por ejemplo, por un sistema que incluya uno o más aparatos de procesamiento de datos, como el sistema 110 de distribución de datos de la Figura 1. El proceso 500 también puede ser implementado por instrucciones almacenadas en un soporte de almacenamiento informático, donde la ejecución de las instrucciones por parte de un sistema que incluya un aparato de procesamiento de datos hace que el aparato de procesamiento de datos realice las operaciones del proceso 500.
El sistema selecciona un modelo previsto para determinar una próxima acción prevista para un usuario (502). En algunas implementaciones, el sistema selecciona el modelo de próxima acción en función de un número de acciones realizadas por un usuario en las interfaces de usuario generadas y presentadas por una aplicación. Por ejemplo, si el usuario ha realizado menos de un número umbral de acciones, el sistema puede seleccionar un modelo de próxima acción general, generado en función de las acciones realizadas por múltiples usuarios, ya que el sistema puede no tener datos suficientes para que el usuario genere un modelo de próxima acción específico del usuario para la aplicación.
En algunas implementaciones, el sistema selecciona el modelo de próxima acción en función de una o más métricas de rendimiento para los modelos de próxima acción. Por ejemplo, el sistema puede seleccionar el modelo de próxima acción que tenga la mayor precisión de predicción, la mayor tasa de aciertos en caché, y/o la menor latencia de acción del usuario.
El sistema utiliza el modelo de próxima acción seleccionado para determinar una próxima acción prevista del usuario y obtener datos en función de la próxima acción prevista del usuario (504). Por ejemplo, el sistema puede obtener datos para la próxima acción prevista de un servidor y almacenar los datos en una memoria caché de un dispositivo cliente.
El sistema determina si el usuario realizó la próxima acción prevista (506). Por ejemplo, el sistema puede recibir datos de un dispositivo cliente en el que se presenta la interfaz de usuario que indiquen si se realizó la próxima acción del usuario. El sistema también puede recibir datos que indiquen si los datos de la acción realizada por el usuario se encontraron en la memoria caché del dispositivo cliente y/o datos que indiquen una latencia en la presentación de los datos en respuesta a la acción realizada por el usuario.
El sistema actualiza la(s) métrica(s) de rendimiento para el modelo de próxima acción seleccionado (508). Por ejemplo, el sistema puede actualizar la precisión del rendimiento, la tasa de aciertos en caché, y/o la latencia de la acción del usuario para el modelo de próxima acción en función de los datos recibidos.
Las realizaciones de la materia y las operaciones descritas en esta especificación pueden implementarse en circuitos electrónicos digitales, o en software, firmware o hardware informático, incluidas las estructuras descritas en esta especificación y sus equivalentes estructurales, o en combinaciones de una o más de ellas. Las realizaciones de la materia descrita en esta especificación pueden implementarse como uno o más programas informáticos, es decir, uno o más módulos de instrucciones del programa informático, codificados en un soporte de almacenamiento informático para su ejecución por, o para controlar el funcionamiento de, un aparato de procesamiento de datos. De forma alternativa o, además, las instrucciones del programa pueden codificarse en una señal propagada generada artificialmente, p. ej., una señal eléctrica, óptica, o electromagnética generada por máquina, que se genera para codificar información para su transmisión a un aparato receptor adecuado para su ejecución por parte de un aparato de procesamiento de datos. Un soporte de almacenamiento informático puede ser, o estar incluido en, un dispositivo de almacenamiento legible por ordenador, un sustrato de almacenamiento legible por ordenador, una matriz o dispositivo de memoria de acceso aleatorio o en serie, o una combinación de uno o más de ellos. Además, si bien un soporte de almacenamiento informático no es una señal propagada, un soporte de almacenamiento informático puede ser una fuente o un destino de las instrucciones del programa informático codificadas en una señal propagada generada artificialmente. El soporte de almacenamiento informático también puede ser, o estar incluido en, uno o más componentes o medios físicos separados (p. ej., varios CD, discos, u otros dispositivos de almacenamiento).
Las operaciones descritas en esta especificación pueden implementarse como operaciones realizadas por un aparato de procesamiento de datos sobre datos almacenados en uno o más dispositivos de almacenamiento legibles por ordenador o recibidos de otras fuentes.
El término "aparato de procesamiento de datos" abarca todo tipo de aparatos, dispositivos y máquinas para procesar datos, incluyendo a modo de ejemplo un procesador programable, un ordenador, un sistema en un chip, o varios, o combinaciones, de los anteriores. El aparato puede incluir circuitos lógicos de propósito especial, p. ej., una FPGA (matriz de puertas programable in situ) o un ASIC (circuito integrado de aplicación específica). El aparato también puede incluir, además de hardware, un código que cree un entorno de ejecución para el programa informático en cuestión, p. ej., un código que constituya el firmware del procesador, una pila de protocolos, un sistema de gestión de bases de datos, un sistema operativo, un entorno de ejecución multiplataforma, una máquina virtual o una combinación de uno o más de ellos. El aparato y el entorno de ejecución pueden realizar varias infraestructuras de modelos informáticos diferentes, como servicios web, infraestructuras de computación distribuida y de computación en red.
Un programa informático (también conocido como programa, software, aplicación de software, secuencia de comandos, o código) puede estar escrito en cualquier forma de lenguaje de programación, incluidos los lenguajes compilados o interpretados, los lenguajes declarativos o procedimentales, y puede desplegarse en cualquier forma, incluso como programa independiente o como módulo, componente, subrutina, objeto, u otra unidad adecuada para su uso en un entorno informático. Un programa informático puede, pero no necesariamente, corresponder a un archivo en un sistema de archivos. Un programa puede almacenarse en una parte de un archivo que contiene otros programas o datos (p. ej., una o más secuencias de comandos almacenadas en un documento de lenguaje de marcado), en un solo archivo dedicado al programa en cuestión, o en múltiples archivos coordinados (p. ej., archivos que almacenan uno o más módulos, subprogramas, o partes de código). Un programa informático puede desplegarse para ser ejecutado en un ordenador o en múltiples ordenadores que están ubicadas en un emplazamiento o distribuidos en varios emplazamientos e interconectados por una red de comunicación.
Los procesos y flujos lógicos descritos en esta especificación pueden ser realizados por uno o más procesadores programables que ejecutan uno o más programas informáticos para realizar acciones operando sobre datos de entrada y generando una salida. Los procesos y flujos lógicos también pueden ser realizados por, y el aparato también puede implementarse como, circuitos lógicos de propósito especial, p. ej., una FPGA (matriz de puertas programable in situ) o un ASIC (circuito integrado de aplicación específica).
Los procesadores adecuados para la ejecución de un programa informático incluyen, a modo de ejemplo, microprocesadores tanto de propósito general como de propósito especial, y uno o más procesadores de cualquier tipo de ordenador digital. Generalmente, un procesador recibirá instrucciones y datos de una memoria de sólo lectura o de una memoria de acceso aleatorio o de ambas. Los elementos esenciales de un ordenador son un procesador para realizar acciones de acuerdo con instrucciones y uno o más dispositivos de memoria para almacenar instrucciones y datos. Generalmente, un ordenador también incluirá, o estará acoplado, de forma operativa, para recibir datos de o transferir datos a, o ambos, uno o más dispositivos de almacenamiento masivo para almacenar datos, p. ej., discos magnéticos, magneto-ópticos, o discos ópticos. Sin embargo, un ordenador no necesita tener dichos dispositivos. Además, un ordenador puede estar integrado en otro dispositivo, p. ej., un teléfono móvil, un asistente digital personal (PDA), un reproductor de audio o vídeo móvil, una consola de juegos, un receptor del Sistema de Posicionamiento Global (GPS), o un dispositivo de almacenamiento portátil (p. ej., una unidad flash de bus serie universal (USB)), por nombrar solo algunos. Los dispositivos adecuados para almacenar instrucciones y datos del programa informático incluyen todas las formas de memoria no volátil, medios y dispositivos de memoria, incluidos, a modo de ejemplo, dispositivos de memoria semiconductores, p. ej., EPROM, EEPROM y dispositivos de memoria flash; discos magnéticos, p. ej., discos duros internos o discos extraíbles; discos magneto-ópticos; y discos CD ROM y DVD-ROM. El procesador y la memoria pueden complementarse con circuitos lógicos de propósito especial o incorporarse a ellos.
Para proporcionar interacción con un usuario, las realizaciones de la materia descrita en esta especificación pueden implementarse en un ordenador que tenga un dispositivo de visualización, p. ej., un monitor CRT (tubo de rayos catódicos) o LCD (pantalla de cristal líquido), para mostrar información al usuario y un teclado y un dispositivo señalador, p. ej., un ratón o una bola de seguimiento, mediante el cual el usuario puede proporcionar una entrada al ordenador. También pueden utilizarse otros tipos de dispositivos para proporcionar interacción con un usuario; por ejemplo, la retroalimentación proporcionada al usuario puede ser cualquier forma de retroalimentación sensorial, p. ej., retroalimentación visual, retroalimentación auditiva, o retroalimentación táctil; y la entrada del usuario puede recibirse en cualquier forma, incluyendo una entrada acústica, de voz, o táctil. Además, un ordenador puede interactuar con un usuario enviando documentos a y recibiendo documentos de un dispositivo que es utilizado por el usuario; por ejemplo, enviando páginas web a un navegador web en el dispositivo cliente de un usuario en respuesta a solicitudes recibidas desde el navegador web.
Las realizaciones de la materia descrita en esta especificación pueden implementarse en un sistema informático que incluya un componente de back end, p. ej., como un servidor de datos, o que incluya un componente de middleware, p. ej., un servidor de aplicaciones, o que incluya un componente de front end, p. ej., un ordenador de cliente que tenga una interfaz gráfica de usuario o un navegador web a través del cual un usuario puede interactuar con una implementación de la materia descrita en esta especificación, o cualquier combinación de uno o más de dichos componentes de back end, de middleware, o de front end. Los componentes del sistema pueden interconectarse mediante cualquier forma o medio de comunicación digital de datos, p. ej., una red de comunicación. Ejemplos de redes de comunicación incluyen una red de área local ("LAN") y una red de área amplia ("WAN"), una red interconectada (p. ej., Internet) y redes de pares (p. ej., redes de pares ad hoc).
El sistema informático puede incluir clientes y servidores. Un cliente y un servidor, generalmente, están alejados entre sí y, normalmente, interactúan a través de una red de comunicación. La relación de cliente y servidor surge en virtud de los programas informáticos que se ejecutan en los respectivos ordenadores y que tienen una relación clienteservidor entre sí. En algunas realizaciones, un servidor transmite datos (p. ej., una página HTML) a un dispositivo cliente (p. ej., con el fin de mostrar datos a y recibir la entrada de usuario de un usuario que interactúa con el dispositivo cliente). Los datos generados en el dispositivo cliente (p. ej., un resultado de la interacción del usuario) pueden recibirse desde el dispositivo cliente en el servidor.
Aunque esta especificación contiene muchos detalles de implementación específicos, estos no deben interpretarse como limitaciones del alcance de cualquier invención o de lo que puede reivindicarse, sino más bien como descripciones de características específicas para realizaciones particulares de invenciones particulares. Ciertas características que se describen en esta especificación en el contexto de realizaciones separadas también pueden implementarse en combinación en una única realización. A la inversa, varias características que se describen en el contexto de una única realización también pueden implementarse en múltiples realizaciones por separado o en cualquier sub combinación adecuada. Además, aunque las características pueden describirse anteriormente como que actúan en ciertas combinaciones e incluso inicialmente reivindicadas como tales, en algunos casos una o más características de una combinación reivindicada pueden eliminarse de la combinación, y la combinación reivindicada puede dirigirse a una sub combinación o a una variación de una sub combinación.
De manera similar, aunque las operaciones se representan en los dibujos en un orden en particular, esto no debe entenderse como que requiere que dichas operaciones se realicen en el orden particular mostrado o en orden secuencia!, o que se realicen todas las operaciones ilustradas, para lograr los resultados deseados. En ciertas circunstancias, la multitarea y el procesamiento paralelo pueden ser ventajosos. Además, la separación de varios componentes del sistema en las realizaciones descritas anteriormente no debe entenderse como que requiere dicha separación en todas las realizaciones, y debe entenderse que los componentes y sistemas del programa descritos, generalmente, pueden integrarse juntos en un único producto de software o empaquetarse en múltiples productos de software.
Por tanto, se han descrito realizaciones particulares de la materia. Otras realizaciones están dentro del alcance de las siguientes reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un método realizado por uno o más aparatos (110) de procesamiento de datos, comprendiendo el método: determinar un contexto de la interfaz de usuario para una interfaz (152) de usuario dada que se presenta mediante una pantalla de un dispositivo cliente (150) para una aplicación (154) dada;
determinar, en función del contexto de la interfaz de usuario, una próxima acción prevista que un usuario del dispositivo cliente (150) realizará en la interfaz (152) de usuario dada;
determinar que la próxima acción prevista hará que el dispositivo cliente (150) cargue una segunda aplicación (154) diferente de la aplicación (154) dada;
antes de detectar una ocurrencia de la próxima acción prevista, obtener un código para ejecutar la segunda aplicación (154); y
almacenar el código en una memoria caché.
2. El método de la reivindicación 1, en donde el contexto de la interfaz de usuario para la interfaz (152) de usuario dada incluye, al menos, uno de (i) un grupo al que pertenecen los datos que se están presentando en la interfaz (152) de usuario dada o (ii) un tipo de datos que se está presentando en la interfaz (152) de usuario dada.
3. El método de la reivindicación 1, que comprende, además:
transmitir, a través de una red de comunicación de datos y antes de detectar la próxima acción prevista, una solicitud de datos de la próxima acción que se presentarán en respuesta a que el usuario realice la próxima acción prevista;
recibir, a través de la red de comunicación de datos, los datos de la próxima acción;
y
almacenar los datos de la próxima acción en la memoria caché.
4. El método de la reivindicación 1, en donde la segunda aplicación (154) es una aplicación web y el código comprende una o más secuencias de comandos para cargar la aplicación web en un navegador web.
5. El método de la reivindicación 1, en donde la segunda aplicación (154) genera una o más interfaces de usuario diferentes a partir de la interfaz (152) de usuario dada.
6. El método de la reivindicación 1, en donde determinar que la próxima acción prevista utilizará una segunda aplicación (154) diferente de la aplicación (154) dada comprende determinar que los datos de la próxima acción, que se presentarán en respuesta a que el usuario realice la próxima acción prevista, se presentarán utilizando la segunda aplicación (154).
7. El método de la reivindicación 1, en donde:
la aplicación (154) dada es una primera aplicación web y la segunda aplicación (154) es una segunda aplicación web diferente de la primera aplicación web;
y
las operaciones comprenden:
la detección de una ocurrencia de la próxima acción prevista en la interfaz (152) de usuario dada; y
la transición de un navegador web de la primera aplicación web a la segunda aplicación web.
8. Un dispositivo cliente (150), que comprende:
una pantalla configurada para presentar interfaces (152) de usuario para una o más aplicaciones móviles; un dispositivo de almacenamiento de datos que tiene una memoria caché configurada para almacenar los datos recibidos a través de una red de comunicación de datos para una o más aplicaciones móviles (154);
un aparato de procesamiento de datos que se comunica con el dispositivo de almacenamiento de datos y con la pantalla, y configurado para realizar el método de cualquier reivindicación anterior.
9. Un sistema (110), que comprende:
un aparato de procesamiento de datos; y
un aparato de memoria en comunicación de datos con el aparato de procesamiento de datos y que almacena instrucciones ejecutables por el aparato de procesamiento de datos y que tras dicha ejecución hacen que el aparato de procesamiento de datos realice operaciones que comprenden:
recibir, de un dispositivo cliente (150), una solicitud de datos de la próxima acción, incluyendo la solicitud un contexto de la interfaz de usuario para una interfaz (152) de usuario dada que se presenta mediante una pantalla del dispositivo cliente (150) para una aplicación (154) dada;
determinar, en función del contexto de la interfaz de usuario, una próxima acción prevista que un usuario del dispositivo cliente (150) realizará en la interfaz (152) de usuario dada;
determinar que la próxima acción prevista hará que el dispositivo cliente (150) cargue una segunda aplicación diferente de la aplicación (154) dada;
antes de detectar una ocurrencia de la próxima acción prevista, proporcionar, al dispositivo cliente y para su almacenamiento en una memoria caché del dispositivo cliente (150), un código para ejecutar la segunda aplicación (154).
10. El sistema (110) de la reivindicación 9, en donde el contexto de la interfaz de usuario para la interfaz (152) de usuario dada incluye, al menos, uno de (i) un grupo al que pertenecen los datos que se están presentando en la interfaz de usuario dada o (ii) un tipo de datos que se está presentando en la interfaz (152) de usuario dada.
11. El sistema (110) de la reivindicación 9, en donde las operaciones comprenden:
transmitir, a través de una red de comunicación de datos y antes de detectar la próxima acción prevista, una solicitud de datos de la próxima acción que se presentarán en respuesta a que el usuario realice la próxima acción prevista;
recibir, a través de la red de comunicación de datos, los datos de la próxima acción; y
almacenar los datos de la próxima acción en la memoria caché.
12. El sistema (110) de la reivindicación 9, en donde la segunda aplicación (154) es una aplicación web y el código comprende una o más secuencias de comandos para cargar la aplicación web en un navegador web.
13. El sistema (110) de la reivindicación 9, en donde la segunda aplicación (154) genera una o más interfaces de usuario diferentes a partir de la interfaz (152) de usuario dada.
14. El sistema (110) de la reivindicación 9, en donde determinar que la próxima acción prevista utilizará una segunda aplicación (154) diferente de la aplicación (154) dada comprende determinar que los datos de la próxima acción, que se presentarán en respuesta a que el usuario realice la próxima acción prevista, se presentarán utilizando la segunda aplicación (154).
15. Un medio legible por ordenador que almacena instrucciones que, cuando son ejecutadas por uno o más procesadores de un dispositivo informático, hacen que el dispositivo informático realice un método según cualquiera de las reivindicaciones 1 a 7.
ES20180328T 2016-12-28 2017-06-07 Optimizing user interface data caching for future actions Active ES3017065T3 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/392,894 US10356200B2 (en) 2016-12-28 2016-12-28 Optimizing user interface data caching for future actions

Publications (1)

Publication Number Publication Date
ES3017065T3 true ES3017065T3 (en) 2025-05-12

Family

ID=59078214

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20180328T Active ES3017065T3 (en) 2016-12-28 2017-06-07 Optimizing user interface data caching for future actions

Country Status (7)

Country Link
US (3) US10356200B2 (es)
EP (3) EP3731499B1 (es)
JP (2) JP6648292B2 (es)
KR (2) KR102300077B1 (es)
CN (2) CN113259433B (es)
ES (1) ES3017065T3 (es)
WO (1) WO2018125276A1 (es)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240070488A1 (en) * 2019-01-10 2024-02-29 Jagadeshwar Nomula System and Method for Recommending Actions on a Device
US10841425B1 (en) 2014-09-16 2020-11-17 United Services Automobile Association Systems and methods for electronically predicting future customer interactions
US10623514B2 (en) 2015-10-13 2020-04-14 Home Box Office, Inc. Resource response expansion
US10656935B2 (en) 2015-10-13 2020-05-19 Home Box Office, Inc. Maintaining and updating software versions via hierarchy
US10356200B2 (en) 2016-12-28 2019-07-16 Google Llc Optimizing user interface data caching for future actions
US10706433B2 (en) * 2017-01-25 2020-07-07 Mastercard International Incorporated Individual level learning mechanism
US10698740B2 (en) 2017-05-02 2020-06-30 Home Box Office, Inc. Virtual graph nodes
US11366872B1 (en) * 2017-07-19 2022-06-21 Amazon Technologies, Inc. Digital navigation menus with dynamic content placement
US10346304B2 (en) * 2017-07-25 2019-07-09 Microsoft Technology Licensing, Llc Cache management for multi-node databases
US10511681B2 (en) * 2018-03-02 2019-12-17 Adobe Inc. Establishing and utilizing behavioral data thresholds for deep learning and other models to identify users across digital space
US11640429B2 (en) * 2018-10-11 2023-05-02 Home Box Office, Inc. Graph views to improve user interface responsiveness
WO2020167066A1 (en) * 2019-02-15 2020-08-20 Samsung Electronics Co., Ltd. Method and electronic device for machine learning based prediction of subsequent user interface layouts
KR102859994B1 (ko) * 2019-02-19 2025-09-15 삼성전자주식회사 어플리케이션을 프리페치하는 전자 장치 및 방법
US11144179B2 (en) 2019-04-12 2021-10-12 Sap Se Next user interaction prediction
GB2583718A (en) * 2019-05-01 2020-11-11 Samsung Electronics Co Ltd Method, apparatus and computer program for updating a cluster probability model
EP4246507B1 (en) * 2019-05-06 2025-09-10 Google LLC Proactive caching of assistant action content at a client device to enable on-device resolution of spoken or typed utterances
WO2020226667A1 (en) * 2019-05-06 2020-11-12 Google Llc Performing subtask(s) for a predicted action in response to a separate user interaction with an automated assistant prior to performance of the predicted action
CN113906501A (zh) 2019-05-06 2022-01-07 谷歌有限责任公司 在进行预测动作之前响应于与自动化助理的单独用户交互而进行预测动作的(多个)子任务
KR102283779B1 (ko) * 2019-07-18 2021-07-29 건국대학교 산학협력단 질의 응답 방법 및 이를 수행하는 장치들
US11146656B2 (en) * 2019-12-20 2021-10-12 Tealium Inc. Feature activation control and data prefetching with network-connected mobile devices
WO2021141399A1 (en) * 2020-01-10 2021-07-15 Samsung Electronics Co., Ltd. Method and electronic device for accelerating asset execution
US11481111B2 (en) 2020-04-24 2022-10-25 Microsoft Technology Licensing, Llc Utilization of predictive gesture analysis for preloading and executing application components
US11915047B2 (en) 2020-06-30 2024-02-27 Western Digital Technologies, Inc. Managing storage device compute operations
US11681466B2 (en) * 2020-06-30 2023-06-20 Western Digital Technologies, Inc. Proactive storage operation management
CN111563106A (zh) * 2020-07-14 2020-08-21 成都市映潮科技股份有限公司 一种数据缓存方法、装置、系统及可读存储介质
CN114402317B (zh) * 2020-08-21 2025-12-16 谷歌有限责任公司 数据完整性优化
WO2022108019A1 (en) 2020-11-23 2022-05-27 Samsung Electronics Co., Ltd. Electronic device and method for optimizing user interface of application
CN113268201B (zh) 2021-05-13 2024-10-25 三星(中国)半导体有限公司 基于文件属性的缓存管理方法和装置
JPWO2022254837A1 (es) * 2021-05-31 2022-12-08
US11886891B2 (en) * 2021-09-10 2024-01-30 Sap Se Context-based multiexperience element dynamically generated using natural language processing
CN113849532A (zh) * 2021-09-24 2021-12-28 中国第一汽车股份有限公司 缓存预热方法、装置、计算机设备和存储介质
US12481416B2 (en) * 2022-02-01 2025-11-25 Servicenow, Inc. Progressive refresh of user interface screens
US12393943B2 (en) * 2023-10-03 2025-08-19 Bank Of America Corporation Intelligent method for real time cache updates leveraging distributed ledger technology with non-fungible token (NFT) tied system of record (SOR) update indicators

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US6182122B1 (en) * 1997-03-26 2001-01-30 International Business Machines Corporation Precaching data at an intermediate server based on historical data requests by users of the intermediate server
US6154767A (en) * 1998-01-15 2000-11-28 Microsoft Corporation Methods and apparatus for using attribute transition probability models for pre-fetching resources
US6055569A (en) 1998-01-27 2000-04-25 Go Ahead Software Inc. Accelerating web access by predicting user action
US6463509B1 (en) * 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US7966078B2 (en) * 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US20050055426A1 (en) 2000-06-12 2005-03-10 Kim Smith System, method and computer program product that pre-caches content to provide timely information to a user
US8516114B2 (en) * 2002-03-29 2013-08-20 International Business Machines Corporation Method and apparatus for content pre-fetching and preparation
JP4497944B2 (ja) * 2003-02-05 2010-07-07 キヤノン株式会社 受信装置及び受信装置の制御方法
JP4248529B2 (ja) * 2003-02-25 2009-04-02 パナソニック株式会社 移動体端末
US7159191B2 (en) * 2003-03-03 2007-01-02 Flextronics Sales & Marketing A-P Ltd. Input of data
US8112605B2 (en) * 2005-05-02 2012-02-07 Commvault Systems, Inc. System and method for allocation of organizational resources
US20080301300A1 (en) 2007-06-01 2008-12-04 Microsoft Corporation Predictive asynchronous web pre-fetch
US20110040716A1 (en) * 2007-11-02 2011-02-17 Eriko Kato Information terminal device and function use method
US8271413B2 (en) * 2008-11-25 2012-09-18 Google Inc. Providing digital content based on expected user behavior
IL197196A0 (en) 2009-02-23 2009-12-24 Univ Ben Gurion Intention prediction using hidden markov models and user profile
US20110029670A1 (en) * 2009-07-31 2011-02-03 Microsoft Corporation Adapting pushed content delivery based on predictiveness
US8364611B2 (en) * 2009-08-13 2013-01-29 Yahoo! Inc. System and method for precaching information on a mobile device
KR101453743B1 (ko) * 2010-08-16 2014-10-21 에스케이플래닛 주식회사 웹 어플리케이션을 위한 사전 캐싱 방법 및 이를 적용한 단말 장치
US8561208B2 (en) * 2011-05-20 2013-10-15 Adobe Systems Incorporated Secure user interface content
JP5805867B2 (ja) * 2011-06-30 2015-11-10 アマゾン・テクノロジーズ、インコーポレイテッド 遠隔ブラウジングセッション管理
US20130187753A1 (en) * 2012-01-20 2013-07-25 Research In Motion Limited Predictive Context-Aware Dynamic Lock Screen
US9582603B1 (en) * 2012-02-27 2017-02-28 Amazon Technologies, Inc. Managing preloading of data on client systems
US20130222329A1 (en) 2012-02-29 2013-08-29 Lars-Johan Olof LARSBY Graphical user interface interaction on a touch-sensitive device
US9756108B2 (en) 2012-05-29 2017-09-05 Google Inc. Preloading resources of a web page
US9239794B1 (en) * 2012-06-11 2016-01-19 Google Inc. Managing a prefetch buffer with probabilistic access predictions
US8990143B2 (en) 2012-06-29 2015-03-24 Intel Corporation Application-provided context for potential action prediction
US9836213B2 (en) * 2012-07-27 2017-12-05 Symbol Technologies, Llc Enhanced user interface for pressure sensitive touch screen
US20140053056A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
US9058324B2 (en) * 2012-09-28 2015-06-16 Intel Corporation Predictive precaching of data based on context
CN103049163B (zh) * 2012-12-28 2016-12-28 华为技术有限公司 用户界面智能显示控制方法和装置
US9542423B2 (en) * 2012-12-31 2017-01-10 Apple Inc. Backup user interface
US9117179B2 (en) 2013-03-11 2015-08-25 International Business Machines Corporation Predicting user activity in social media applications
US10949894B1 (en) * 2013-06-07 2021-03-16 Groupon, Inc. Method, apparatus, and computer program product for facilitating dynamic pricing
US20140373032A1 (en) * 2013-06-12 2014-12-18 Microsoft Corporation Prefetching content for service-connected applications
JP6183099B2 (ja) 2013-09-25 2017-08-23 日本電気株式会社 入力支援装置、入力支援方法及び入力支援プログラム
US20150163258A1 (en) * 2013-12-05 2015-06-11 Facebook, Inc. Indicating User Availability for Communication
US9519408B2 (en) * 2013-12-31 2016-12-13 Google Inc. Systems and methods for guided user actions
CN103714172A (zh) * 2013-12-31 2014-04-09 华为技术有限公司 页面处理方法、装置及系统
US9032321B1 (en) * 2014-06-16 2015-05-12 Google Inc. Context-based presentation of a user interface
US10963810B2 (en) * 2014-06-30 2021-03-30 Amazon Technologies, Inc. Efficient duplicate detection for machine learning data sets
US10452992B2 (en) * 2014-06-30 2019-10-22 Amazon Technologies, Inc. Interactive interfaces for machine learning model evaluations
US9621650B2 (en) * 2014-09-30 2017-04-11 Google Inc Mobile application state identifier framework
CN105577707B (zh) * 2014-10-08 2019-01-11 阿里巴巴集团控股有限公司 一种远程调用方法与设备
US10547711B2 (en) * 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
JP2016212595A (ja) 2015-05-07 2016-12-15 Mist Technologies株式会社 サーバ装置、プログラム及び情報処理システム
US10097973B2 (en) * 2015-05-27 2018-10-09 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10200824B2 (en) * 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US20160357774A1 (en) * 2015-06-05 2016-12-08 Apple Inc. Segmentation techniques for learning user patterns to suggest applications responsive to an event on a device
US10264319B2 (en) * 2015-06-07 2019-04-16 Apple Inc. Priming media applications and presenting primed media application data
EP3106973A1 (en) * 2015-06-16 2016-12-21 Huawei Technologies Co., Ltd. Context-driven adaptive application launcher grid user interface based on random index predictor for mobile devices
US10949822B2 (en) * 2016-03-25 2021-03-16 Stripe Inc. Methods and systems for providing payment interface services using a payment platform
CN105955650A (zh) * 2016-04-29 2016-09-21 努比亚技术有限公司 一种人机交互操作的方法和装置
US10540739B2 (en) * 2016-11-23 2020-01-21 Roku, Inc. Predictive application caching
US10356200B2 (en) 2016-12-28 2019-07-16 Google Llc Optimizing user interface data caching for future actions

Also Published As

Publication number Publication date
US20200128097A1 (en) 2020-04-23
KR20180102625A (ko) 2018-09-17
US10560546B2 (en) 2020-02-11
JP2020074154A (ja) 2020-05-14
JP2019514091A (ja) 2019-05-30
US20190281128A1 (en) 2019-09-12
US20180183891A1 (en) 2018-06-28
EP3731499A1 (en) 2020-10-28
CN108605053B (zh) 2021-05-25
EP4539435A3 (en) 2025-07-16
EP4539435A2 (en) 2025-04-16
EP3482553A1 (en) 2019-05-15
KR102300077B1 (ko) 2021-09-08
US10356200B2 (en) 2019-07-16
KR102180995B1 (ko) 2020-11-19
CN113259433A (zh) 2021-08-13
EP3731499C0 (en) 2025-03-26
EP3482553B1 (en) 2020-12-23
CN113259433B (zh) 2024-01-09
JP6989628B2 (ja) 2022-01-05
EP3731499B1 (en) 2025-03-26
JP6648292B2 (ja) 2020-02-14
CN108605053A (zh) 2018-09-28
US11310331B2 (en) 2022-04-19
WO2018125276A1 (en) 2018-07-05
KR20200130523A (ko) 2020-11-18

Similar Documents

Publication Publication Date Title
ES3017065T3 (en) Optimizing user interface data caching for future actions
EP4560498B1 (en) Electronic map interfaces
US9952848B2 (en) Dependency-aware transformation of multi-function applications for on-demand execution
JP6007246B2 (ja) 予測マルチレイヤキャッシュアーキテクチャ
US9811327B2 (en) Dependency-aware transformation of multi-function applications for on-demand execution
US20130124563A1 (en) Controlling pre-fetching of map data tiles based on selectable parameters
US8977723B2 (en) Cloud based application fragmentation
US20150193397A1 (en) Delayed code parsing for reduced startup latency
KR20210057338A (ko) 여행 스케줄을 제공하는 방법 및 컴퓨터 프로그램
US11057488B2 (en) Multi-state midtier cache
US20170344519A1 (en) Multi-level font substitution control
US20140136664A1 (en) Resource based mobile device application streaming
US9717985B2 (en) Fragment-based mobile device application streaming utilizing crowd-sourcing
US11490232B2 (en) Location-based conversation identifier
US20180336595A1 (en) Method, apparatus and computer program product for data transmission based on location proximity