Systems and methods for low latency provisioning of content
By using machine learning models on the server side to predict user queries, generating and storing links in advance, the latency issue in map application content delivery is resolved, resulting in faster content display and response.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2019-12-05
- Publication Date
- 2026-03-27
AI Technical Summary
In existing technologies, map applications experience significant latency during content delivery, resulting in slow content retrieval and display on client devices.
By using machine learning models on the server side to predict users' search queries, potentially necessary links can be generated and stored in advance, allowing client devices to directly display content when they receive instructions from users to select a map application.
It reduces the latency of content delivery and improves the response speed of map applications, allowing users to obtain the information they need more quickly.
Smart Images

Figure CN115066682B_ABST
Abstract
Description
BACKGROUND
[0001] People can use a map application on their client device to get directions to various brick-and-mortar stores or entertainment venues. When people access the map application, a third party, such as a content provider, associated with the current location of the people using the map application can provide content to the people, such as links to provide directions to their store or entertainment venue. Thus, people can easily see which stores are in their area. The third party can determine and provide the content in response to a signal from the client device indicating that the user is accessing the map application and has entered a query. The third party can select content to provide to the user based on the query. Unfortunately, to determine which content to provide, the server can perform a significant amount of processing. Such processing, combined with the time it takes for the client device to generate and send a request for content including the query, can result in a significant amount of latency. The server can process the query, identify relevant content, and send the content back to the client device. This process can take time and result in the client device slowly retrieving and displaying such content. SUMMARY
[0002] Systems and methods performed herein provide low-latency transmission of content. A machine learning model can be implemented by a server to predict whether a user will select a map application on a client device and, if the user selects the map application or otherwise enters a query, data associated with the client device can be used to predict a search query that the user will make. The data about the client device can include various location information and previous search queries that the user has performed via the map application or other applications on the client device. The server can predict the user’s search query before receiving any search query input from the user. The server can use the predicted search query to obtain links to various geographic locations that the user can wish to travel to. The server can store the links so that they are ready to send to the client device when an indication is received that the client device is executing the map application. In some implementations, the server can proactively send the links to the client device to be stored in a cache of the client device so that, when the user selects the map application, the client device can retrieve and present the links on a user interface of the client device before the client device sends any request for content or otherwise receives the query input. Advantageously, by selecting and / or sending the links to the client device before the user enters the query input, the server can provide the links to the client device more quickly with less latency than traditional techniques. Traditional techniques typically rely on processing device information to provide content after the user enters a search query into the map application.
[0003] In an aspect described herein, a method for low-latency provisioning of content is described. The method can include receiving, by a server, one or more signals indicative of a current location of a client device from the client device; retrieving, by the server, features of the client device from a database prior to receiving an input query from a map application of the client device; and generating, by the server, a set of identifications comprising the current location of the client device and the features of the client device. The method can further include determining, by the server, that a query prediction exceeds a threshold; selecting, by the server, a link to a geographic location of an entity associated with the query prediction in response to the determination that the query prediction exceeds the threshold; and transmitting, by the server, the selected link to the client device prior to receiving a query from a user of the client device in response to a selection of the map application on the client device by the user.
[0004] In some implementations, the set of identifications can further include previous locations of the client device and timestamps associated with the previous locations and the current location. The method can further include comparing, by the server, a first timestamp and a first previous location to a second timestamp and the current location; and determining, by the server, a speed of travel based on the comparison. In some implementations, determining that the query prediction exceeds the threshold can be performed at least partially in response to the determined speed of travel.
[0005] In some implementations, the method can further include comparing, by the server, a third timestamp and a third previous location to a fourth timestamp and the current location; determining, by the server, that the user has not moved for a period of time based on the comparison. In some implementations, determining that the query prediction exceeds the threshold can be performed at least partially in response to the determination that the user has not moved for a period of time.
[0006] In some implementations, the features include previously visited locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with the previous searches, a current time of day, or one or more queries associated with other client devices for a period of time.
[0007] In some implementations, determining that the query prediction exceeds the threshold can further include identifying that a correlation between the one or more previous features and the one or more current features exceeds a second threshold.
[0008] In some implementations, the method can further include receiving a selection of the selected link by the user; and increasing, in response to receiving the selection of the selected link by the user, a prediction score associated with the selected link. The query prediction can be proportional to the prediction score associated with the selected link.
[0009] In another aspect described herein, a system for low latency provisioning of content is described. A server can include a network interface in communication with a client device and a processor. The network interface can be configured to receive one or more signals from the client device indicative of a current location of the client device. The processor can be configured to: retrieve, from a database, features of the client device prior to receiving an input query from a map application; generate an identification set comprising the current location of the client device and the features of the client device; determine that a query prediction exceeds a threshold; and in response to the determination that the query prediction exceeds the threshold, select a link to a geographic location of an entity that can be associated with the query prediction. The network interface can be further configured to transmit the selected link to the client device prior to receiving a query from a user of the client device in response to a selection of the map application on the client device by the user. In some implementations, the identification set can further comprise a previous location of the client device and a timestamp associated with the previous location and the current location.
[0010] In some implementations, the processor can be further configured to compare the first timestamp and the first previous location to the second timestamp and the current location and determine a travel speed based on the comparison. Determining that the query prediction exceeds the threshold can be performed at least partially in response to the determined travel speed.
[0011] In some implementations, the processor can be further configured to compare the third timestamp and the third previous location to the fourth timestamp and the current location and determine that the user has not moved for a period of time based on the comparison. Determining that the query prediction exceeds the threshold can be performed at least partially in response to the determination that the user has not moved for a period of time.
[0012] In some implementations, the features include previously visited locations, previous searches, previous inputs corresponding to selections of links, timestamps associated with previous searches, a current time of day, or one or more queries associated with other client devices for a period of time. The processor can be further configured to identify that a correlation between the one or more previous features and the one or more current features exceeds a second threshold.
[0013] In some implementations, the processor can be further configured to receive a selection of the selected link by the user and increase a prediction score associated with the selected link in response to receiving the selection of the selected link by the user. The query prediction can be proportional to the prediction score associated with the selected link.
[0014] In another aspect, a method for low-latency provisioning of content is described. The method can include sending, by a client device and to a server, one or more signals indicative of a current location of the client device; in response to a selection of a map application by a user, executing, by the client device, the map application; and in response to executing the map application, sending, by the client device and to the server, one or more signals indicative of the selection of the map application. The method can further include receiving, by the client device and from the server, an identification of a link to a geographic location of an entity selected by the server in response to determining that a query prediction exceeds a threshold based on features of the client device and the current location of the client device prior to receiving an input query from the user of the client device; and displaying, by the client device, the link to the geographic location of the entity within the map application.
[0015] In some implementations, the features of the client device include a speed of movement of the client device, previously visited locations, previous searches, previous inputs corresponding to selections of links, or timestamps associated with previous searches. The query prediction can be further based on a correlation between the features of the client device and one or more of the current location of the device and a current time of day. In some implementations, the query prediction can be further based on the current time of day or one or more queries associated with other client devices.
[0016] In some implementations, the method can further include receiving, by the client device and via the map application, a selection of the received link by the user; and sending, by the client device and to the server, an indication of the user selection, the server increasing a prediction score associated with the selected link. The query prediction can be proportional to the prediction score associated with the selected link.
[0017] In another aspect, a method for low-latency provisioning of content is described. The method can include sending, by a client device and to a server, one or more signals indicative of a current location of the client device; in response to a selection of a map application by a user, executing, by the client device, the map application; and in response to executing the map application, sending, by the client device and to the server, one or more signals indicative of the selection of the map application. The method can further include receiving, by the client device and from the server, an identification of a link to a geographic location of an entity selected by the server in response to determining that a query prediction exceeds a threshold based on features of the client device and the current location of the client device prior to receiving an input query from the user of the client device; and displaying, by the client device, the link to the geographic location of the entity within the map application.
[0018] In some implementations, the features of the client device can include a speed of movement of the client device, previously visited locations, previous searches, previous inputs corresponding to selections of links, or timestamps associated with previous searches. The query prediction can also be based on a correlation between the features of the client device and one or more of a current location of the device and a current time of day. The features can also include previously visited locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with previous searches, a current time of day, or one or more queries associated with other client devices within a time period. In some implementations, determining that the query prediction exceeds the threshold can also include identifying that a correlation between the one or more previous features and the one or more current features exceeds a second threshold.
[0019] In some implementations, the method can also include receiving a selection of the selected link by the user and, in response to receiving the selection of the selected link by the user, increasing the prediction score associated with the selected link. The query prediction can be proportional to the prediction score associated with the selected link.
[0020] In an aspect described herein, a method for low-latency provisioning of content is described. The method can include receiving, by a server, one or more signals from a client device indicating a current location of the client device; retrieving, by the server, features of the client device from a database; generating, by the server, a set of identifications, the set of identifications including the current location of the client device and the features of the client device; and determining, by the server, that an application launch state exceeds a threshold; in response to determining that the application launch state exceeds the threshold, determining, by the server, that a query prediction exceeds a second threshold. The method can also include, in response to determining that the query prediction exceeds the second threshold, selecting a link to a geographic location of an entity that can be associated with the query prediction; and sending the selected link to the client device prior to receiving an indication that a map application was selected by the user.
[0021] In some implementations, the set of identifications can also include a previous location of the client device and timestamps associated with the previous location and the current location. The method can also include comparing the first timestamp and the first previous location to the second timestamp and the current location; and determining a speed of travel based on the comparison. Determining that the query prediction exceeds the threshold can be performed at least partially in response to the determined speed of travel.
[0022] In some implementations, the method can also include comparing a third timestamp and a third previous location to a fourth timestamp and the current location, and determining that the user has not moved within a time period based on the comparison. Determining that the query prediction exceeds the threshold can be performed at least partially in response to the determination that the user has not moved within a time period.
[0023] In some implementations, the features include previously accessed locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with previous searches, a current time of day, or one or more queries associated with other client devices. Determining that the query prediction exceeds the threshold can further include identifying that a correlation between the one or more previous features and the one or more current features exceeds a third threshold.
[0024] In some implementations, the method can further include receiving a selection of the selected link by the user; and in response to receiving the selection of the selected link by the user, increasing a prediction score associated with the selected link. The query prediction can be proportional to the prediction score associated with the selected link.
[0025] Optional features of an aspect can be combined with any other aspect. BRIEF DESCRIPTION OF DRAWINGS
[0026] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the disclosure will become apparent from the description, the drawings, and the claims, wherein:
[0027] Figure 1 is a block diagram of two sequences of a mobile device requesting content from an intermediate server, in accordance with some implementations;
[0028] Figure 2 is a block diagram of an implementation of a system for low-latency provisioning of content, in accordance with some implementations;
[0029] Figure 3A is a diagram of a machine learning model for predicting queries, in accordance with some implementations;
[0030] Figure 3B is a diagram of a machine learning model for predicting a launch state of a mobile application, in accordance with some implementations;
[0031] Figure 4 is a flow diagram illustrating a server-side method for low-latency provisioning of content, in accordance with some implementations;
[0032] Figure 5 is a flow diagram illustrating a client-side method for low-latency provisioning of content, in accordance with some implementations;
[0033] Figure 6 is a flow diagram illustrating another server-side method for low-latency provisioning of content, in accordance with some implementations; and
[0034] Figure 7 is a flow diagram illustrating another client-side method for low-latency provisioning of content, in accordance with some implementations.
[0035] Like reference numerals and designations in different figures indicate like elements. DETAILED DESCRIPTION
[0036] When a user accesses a map application, various client devices can display content to the user so that the user can more easily view locations that they can access and that are relevant to them. To display such content, the client devices typically wait for the user to select the map application and enter a query before any relevant content can be provided. Because the map application can need to load, present a form for the user to input, and wait for the user to input, such a process can take a significant amount of time. Once the map application receives the input, the map application can generate a request for content and send the request to a server. The server can receive the request, determine which content to provide to the client device (e.g., by sending the input query to various content servers), and send the content back to the requesting client device. Each of these steps can take time because the client device and intermediate servers process data and send messages back and forth.
[0037] For example, referring first to Figure 1 , block diagrams of two sequences 102 and 118 are shown that each include a client device requesting content from an intermediate server, according to some implementations. Sequence 102 can be a sequence that includes a client device 104 that communicates with an intermediate server 110. The client device 104 can execute a map application that can display the current location of the client device 104 and provide directions to various geographic locations in the surrounding area of the client device 104. To obtain any relevant content (e.g., a link to a geographic location of an entity), the client device 104 can execute the map application, receive a query input from the user, and send the query input to the intermediate server 110. In turn, the intermediate server 110 can identify relevant content based at least on the query input, the current location of the client device, and characteristics of the client device, and send the relevant content to the client device 104. In contrast, sequence 120 can be a sequence of another client device 122 that periodically sends location information to an intermediate server 126. The intermediate server 126 can use the location information, along with other characteristics about the client device 122, to identify content to send to the client device 122 before or after receiving a signal indicating that the map application has been selected. When the client device 122 sends a request for content to the intermediate server 126, the intermediate server 126 can send preselected content back to the client device 122.
[0038] At sequence 102, a user can access a map application on a client device 104. In accessing the map application, the user can enter a query in a query form associated with the map application. As the user enters the query, the client device 104 can send a request for content 108 to an intermediary server 110. With the request for content, the client device 104 can send one or more signals 106 to the intermediary server 110 indicating the query and / or a current location of the client device 104. Upon receiving the request for content and via a content request analyzer 112, the intermediary server 110 can process the request and send the query to content servers to determine which content server can associate a highest value with the query. A link selector 114 can receive a link from the content server to a geographic location of an entity associated with the highest value and send the link to the client device 104.
[0039] In contrast, sequence 118 illustrates an example sequence in which a client device 122 sends a similar request for content 134 to an intermediary server 126. However, in sequence 118, the intermediary server 126 can have already selected a link to a geographic location of an entity to provide to the client device 122. Accordingly, the intermediary server 126 can send a signal 136 including the preselected link back to the client device 122 without performing any processing. Sequence 118 can include stages that enable preselection of content and subsequent low-latency transmission. In a first stage 120, the client device 122 can periodically send a location signal 124 to the intermediary server 126. The intermediary server 126 can receive such location information and, via a query prediction analyzer 128, predict a query that a user using the map application of the client device 122 is likely to make. To make the prediction, the query prediction analyzer 128 can identify a current location and other characteristics of the client device 122 and determine a query prediction. A link selector 130 can use the query prediction to select a link to provide to the client device 122.
[0040] In a second stage 120, a user can select the map application on the client device 122. Upon receiving the selection, the client device 122 can execute the map application and send a signal 124 including a request for content to the intermediary server 126. The intermediary server 126 can receive the selection and identify the previously identified link. The intermediary server 126 can send a signal 136 including the previously identified link back to the client device 122 without expending any time to perform any additional processing.
[0041] In another implementation, the intermediary server 126 can periodically predict whether a user will likely launch a map application on the client device 122 within a predetermined time period. The intermediary server 126 can use current location and feature information about the client device 122 to make such a prediction. If the intermediary server 126 predicts that the user will likely launch the map application, the intermediary server 126 can preemptively predict a query via the query prediction analyzer 128 and select a link via the link selector 130. The intermediary server 126 can then send the selected link back to the client device 122 before receiving any indication that the user selected the map application. The client device 122 can store the content in a cache. Thus, when the user selects the map application, the client device 122 can retrieve the content from the cache and display it to the user via the user interface without having to spend time requesting the content from the intermediary server 126.
[0042] Advantageously, as illustrated by the sequence 120, because the intermediary server 126 can pre-select content to provide to the client device 122, the intermediary server 126 can provide the content to the client device 122 with reduced latency as compared to other approaches. As exemplified by the sequence 102, other approaches can involve the intermediary server processing and selecting content in response to receiving a request for the content. By implementing the sequence 120, the intermediary server 126 can select content and provide the content to the client device 122 in some cases before the user selects the map application and / or provides any other input. Thus, upon receiving a selection of the map application from the user, the client device 122 can display such content without having to wait for the intermediary server 126 to process any information.
[0043] For example, now referring to Figure 2FIG. 1 illustrates an implementation of a system 100 for low-latency provision of content according to some implementations. The system 100 is shown to include a client device 102, a network 112, an intermediary server 114, and a content server 136 and 138. The client device 102 can access the Internet via the network 112. The network 112 can include a synchronous or asynchronous network. The client device 102 can periodically send location signals (e.g., via GPS, cell tower location, etc.) to the intermediary server 114. The intermediary server 114 can receive such signals and store them as a characteristic of the client device 102. The client device 102 can also send a signal to the intermediary server 114 indicating that a map application is being accessed by a user. The intermediary server 114 can send content, such as a link associated with a geographic location of an entity that can be relevant to the client device 102, to the client device 102 based on the current location of the client device 102 and these characteristics. According to a configuration, the intermediary server 114 can send the content to the client device 102 before the user selects the map application to access it or upon receiving an indication that the user has selected the map application.
[0044] The client device 202 can include any type and form of media device or computing device, including a desktop computer, a laptop computer, a portable computer, a tablet computer, a wearable computer, an embedded computer, a smart television, a set-top box, a console, an Internet of Things (IoT) device, or a smart appliance, or any other type and form of computing device. A client device can be variously referred to as a client, a device, a client device, a user device, a computing device, an anonymous computing device, or any other such term. A client device can receive data via any appropriate network, including a local area network, a wide area network such as the Internet, a satellite network, a cable network, a broadband network, a fiber-optic network, a microwave network, a cellular network, a wireless network, or any combination of these or other such networks. In many implementations, a network can include multiple sub-networks, which can be of the same or different types, and can include multiple additional devices (not shown), including gateways, modems, firewalls, routers, switches, and the like.
[0045] The client device 202 can include one or more client devices configured to periodically send location signals to the intermediary server 114 and to execute a map application that can provide a user with directional indications to various locations. In some implementations, the client device 202 is shown to include a processor 204 and a memory 206. One or more components within the client device 202 can facilitate communication between each component within the client device 202 and external components, such as the intermediary server 114 and other servers (not shown). The client device 202 can communicate with any device.
[0046] In some implementations, the processor 204 can include one or more processors configured to execute instructions for modules and / or components in memory 206 within the client device 202. In some implementations, the memory 206 is shown to include a sender 208 and a map application 210. The memory 206 can include any number of components. By executing instructions for the modules in the memory 206 to perform the operations of each component 208 and 210, the processor 204 can enable the intermediary server 214 to provide content (e.g., a link to a geographic location of an entity) to the client device 202 prior to the user providing input to a query form associated with the map application 210.
[0047] The map application 210 can include an application, server, service, daemon, routine, or other executable logic to generate a map of a user's current location and provide directions to various geographic locations of entities around the area. The user can select the map application 210 to view an interface including the user's current location and various identifications of entities on the map. The user can create a profile on the map application 210 and view various points of interest in the surrounding area. For example, a user located in San Diego can view various beach points of interest, such as beach restaurants or locations for surf lessons, via the map application 210. The user can also rate and explore various entities via the map application 210. For example, the map application 210 can provide options for various entities to explore in various groupings, such as restaurants, coffee shops, points of interest, gas stations, parks, hotels, etc. The user can select any of these groupings to obtain directions to the locations of the associated entities.
[0048] The user can also input a query into a form of the map application 210. The query can be a search for a particular location or entity, or a search for a type of entity. For example, the user can input a query to obtain directions to ACME Corporation. Based on the query, the map application 210 can search a database (e.g., a local database or a cloud database, such as a database stored on the intermediary server 214) and obtain directions to ACME Corporation and provide an interface showing this direction. The user can follow the directions to ACME Corporation. In some implementations, the map application 210 can determine the fastest route based on current traffic data and update in real-time to ensure the user arrives at ACME Corporation as quickly as possible. The map application 210 can also update the route if the user makes a wrong turn or otherwise takes a detour. The map application 210 can provide a route to any location. In some implementations, the user can query a general topic, such as "hamburgers." The map application 210 can recognize the query and obtain links to various different restaurants that provide hamburgers near the user. As described above, the user can select one of the links to view directions to the desired restaurant.
[0049] In some implementations, upon receiving a user's selection of the map application 210, the client device 202 can execute the map application 210. In turn, the map application 210 can cause the transmitter 208 to transmit a current location signal indicative of the current location of the client device 202 to the intermediary server 214. Upon execution, the map application 210 can also cause the transmitter 208 to transmit a request for content (e.g., a link to a geographic location of an entity). As described below, the transmitter 208 can transmit the request and receive the link from the intermediary server 214 before the user enters any query into the map application 210. As described below, after the intermediary server 214 generates a query prediction that the user is likely to make and selects a link based on the query prediction, the client device 202 can receive the link. Upon receiving the link, the map application 210 can display the link at a user interface. The user can select the link to view an associated direction indication to the geographic location of the entity.
[0050] In some implementations, the client device 202 can receive a link to a geographic location of an entity before transmitting any request for content or otherwise indicating that the user selected the map application 210. For example, the client device 202 can periodically transmit location signals to the intermediary server 214. For each portion of these location signals, the intermediary server 214 can predict whether the user will soon (e.g., within 1 second, 5 seconds, 30 seconds, 1 minute, 5 minutes, etc.) select the map application 210. The intermediary server 214 can make such predictions until the intermediary server 214 determines that the user will likely soon select the map application 210. Once the intermediary server 214 makes such a determination, the intermediary server 214 can generate a query prediction and select a link based on the query prediction. The intermediary server 214 can transmit the link to the client device 202. The client device 202 can receive the link and store it in a cache or otherwise in memory of the client device 202. Thus, when the user selects the map application 210, the map application 210 can retrieve the link from the cache or memory of the client device 202 to display it to the user. If the user does not select the map application 210 as predicted by the intermediary server 214, the client device 202 can discard (e.g., erase or remove) the link from its cache or memory.
[0051] The transmitter 208 can include an application, server, service, daemon, routine, or other executable logic to transmit current location information and / or an indication that the user selected the map application 210 to the intermediary server 214. The transmitter 208 can be configured to periodically transmit a signal indicating the current location of the client device 202 to the intermediary server 214. The transmitter 208 can transmit the signal based on the map application 210 operating in the background, or automatically without regard to whether the map application 210 is operating. The transmitter 208 can also automatically transmit current location information to the intermediary server 214 when the user selects the map application 210 to execute it. In the current location signal, the transmitter 208 can include a device identifier so that the intermediary server 214 can identify which device transmitted the location signal.
[0052] Through the transmitter 208, the client device 202 can transmit its location information to the intermediary server 214 via GPS or via information about the cell phone tower with which the client device 202 is communicating. In some implementations, the client device 202 can transmit the location data to another device (e.g., a satellite or another server), which in turn transmits the location information to the intermediary server 214. The client device 202 can transmit its location information in any manner.
[0053] In some implementations, the transmitter 208 can also transmit a signal to the intermediary server 214 indicating that the user selected the map application 210. With such a signal, the transmitter 208 can transmit a request for content (e.g., a link to a geographic location of an entity). In response, the transmitter 208 can receive content to be displayed through the map application 210. In some implementations, the transmitter 208 can receive such content without transmitting any request and prior to the user selecting the map application 210.
[0054] In some implementations, the intermediary server 214 can include one or more servers or processors configured for low-latency provisioning of content. In some implementations, the intermediary server 214 is shown to include a processor 216 and a memory 218. In brief overview, through the processor 216, the intermediary server 214 can be configured to obtain and store data (e.g., location information) related to various client devices (e.g., the client device 202), receive a current location signal from the client device 202, generate a set of identifiers using features of the client device 202 and the current location, use the set of identifiers to predict a query of the user prior to the user providing any input, select a link associated with the predicted query, and send an identification of the link to the client device 202. One or more components within the intermediary server 214 can facilitate communication between each component within the intermediary server 214 and external components, such as the client device 202. The intermediary server 214 can include multiple connected devices (e.g., as a server farm, a group of blade servers, or a multi-processor system), each of which can provide portions of the necessary operations.
[0055] In some implementations, the processor 216 can include one or more processors configured to execute instructions of modules or components in the memory 218 within the intermediary server 214. In some implementations, the processor 216 can execute modules within the memory 218. In some implementations, the memory 218 is shown to include a device identifier 220, a feature generator 222, a set of identifiers generator 224, an application 226, a link selector 228, a transmitter 230, a link database 232, and a feature database 234. In some implementations, the processor 216 can include or can be in communication with a co-processor, such as a tensor processing unit (TPU), that is solely dedicated to using machine learning techniques to determine whether a user will soon select the map application 210 on the client device 202 and / or to predict a query that the user can input into the map application 210.
[0056] The memory 218 is shown to include a device identifier 220. In some implementations, the device identifier 220 can include an application, server, service, daemon, routine, or other executable logic to identify which device is sending location signals and / or requesting content from the intermediary server 214. The device identifier 220 can periodically receive location information from the client devices, identify which client device sent the location information, and store the location information in the feature database 234. The device identifier 220 can receive the location information by actively polling the client devices or automatically receiving the location information when the client devices 202 send the location information. The device identifier 220 can periodically poll the client devices at set intervals (as determined by an administrator) or at various points in time to determine their locations. Conversely, the client devices can periodically send their current locations at set intervals or at various points in time, in some cases as a result of executing the map application 210 in the background. In some implementations, the client devices can automatically send their location information to the intermediary server 214 at each instant that a user selects the map application on the respective client device. For example, if a user selects the map application 210 on the client device 202, the client device 202 can automatically send a location signal to the intermediary server 214 indicating the current location of the client device 202, and in some cases a signal to the intermediary server 214 indicating that the map application 210 has been selected.
[0057] The device identifier 220 can receive the location signal and the signal indicating that the map application 210 has been selected and update and identify which client device sent these signals. The device identifier 220 can identify the client device based on a device identifier or another identifier (e.g., an IP address or a MAC address) associated with the signals. The device identifier 220 can receive the location signal and, in some cases, the signal indicating that the user selected the map application, and store them in the feature database 234. Both signals can be stored as features that the identity set generator 224 can retrieve to generate identity sets when predicting queries for the associated client device.
[0058] In some implementations, the memory 218 is also shown to include a feature database 234. The feature database 234 can be a dynamic database that includes features of client devices for which the intermediary server 214 has collected data. The feature database 234 can be a graph database, MySQL, Oracle, Microsoft SQL, PostgreSql, DB2, a document store, a search engine, a key-value store, etc. The feature database 234 can be configured to house any amount of data and can be comprised of any number of components. The features can include location data, previously visited locations, previous queries, previous inputs corresponding to selections of links to geographic locations, entities associated with previous locations, timestamps associated with previous searches, etc. In some implementations, the features can also include information about the client device 202 related to browser activity of the client device 202, such as visited webpages, visited domains, and previous searches performed on the Internet. The feature database 234 can include any type of information about the client device 202. In some implementations, the feature database 234 can be formatted as a lookup table in which the features are individually associated with their respective devices. The device identifier 220 can store the features in the feature database 234 by identifying the corresponding device identifiers in the feature database 234. Further, the identity set generator 224 can use the features of the client device to generate an identity set based on their association in the lookup table. Information can be added to or deleted from the feature database 234 at any time.
[0059] The memory 218 is shown to include a feature generator 222. In some implementations, the feature generator 222 can include an application, server, service, daemon, routine, or other executable logic to generate features and add them to the feature database 234 and / or provide them to the identity set generator 224. The feature generator 222 can generate features of the client device 202 based on the current location of the client device 202 and features that have already been stored in the feature database 234. For example, the feature database 234 can include previous locations of the client device 202 and timestamps indicating times that the client device 202 was in the previous locations. The device identifier 220 can receive a current location signal of the client device 202 and identify a timestamp indicating a time that the client device 202 sent the current location signal and / or a time that the intermediary server 214 received the signal. The feature generator 222 can compare the timestamps and the current location to determine a speed of travel of the client device 202. The identity set generator 224 can use the speed of travel as an identity in the identity set.
[0060] Further, the feature generator 222 can compare the travel speed to a threshold to determine whether the client device is moving and / or, in some implementations, determine a mode of travel of the client device 202. For example, the feature generator 222 can compare the travel speed to a threshold of three miles per hour to determine whether the person is walking or moving in some other manner. If the feature generator 222 determines that the travel speed exceeds the threshold, the feature generator 222 can determine that the client device is moving. In some implementations, the feature generator 222 can use such thresholds to determine a type of movement of the client device. For example, the feature generator 222 can compare the travel speed to a threshold of 30 miles per hour to determine whether the client device 202 is moving in a car, to a threshold of 15 miles per hour to determine whether the client device 202 is moving on a bicycle, to a threshold of 7 miles per hour to determine whether the client device 202 is traveling with someone who is running, and so on. Each threshold can be any amount and can be associated with any mode of transportation. Further, the feature generator 222 can compare the travel speed to any threshold. In some implementations, the feature generator 222 can compare the travel speed to each threshold and determine that the client device 202 is traveling in the mode of transportation associated with the highest threshold. The feature generator 222 can determine the mode of transportation and provide it to the identity set generator 224 for use in the identity set.
[0061] If the feature generator 222 determines that the client device 202 is traveling in the manner of a car, the feature generator 222 can use the speed and / or current location of the client device to determine more features of the client device 202. For example, the feature generator 222 can determine that the client device 202 is traveling on an interstate highway based on a travel speed that exceeds a threshold (e.g., 70 miles per hour). The feature generator 222 can also determine that the client device 202 is traveling on a local road based on a travel speed that is less than a threshold (e.g., 40 miles per hour). Any threshold can be used to determine such features. The feature generator 222 can provide these features to the identity set generator 224 for use in the identity set.
[0062] In some implementations, the feature generator 222 can determine that the client device 202 is staying at the same location. The feature generator 222 can do so based on a movement speed being less than a threshold and / or determining that the client device 202 has not left an area having a predetermined radius for a particular period of time. The feature generator 222 can make such a determination by comparing location information and associated time stamps between different locations to each other. The feature generator 222 can provide a feature to the identity set generator 224 indicating that the client device 202 is staying at the same location for use in an identity set. In some implementations, the feature generator 222 can store any generated features in the feature database 234.
[0063] The memory 218 is shown to include an identity set generator 224. In some implementations, as described below, the identity set generator 224 can include an application, server, service, daemon, routine, or other executable logic to generate an identity set for use as input to one or more machine learning models of the application 226. The identity set can be a feature vector. The identity set generator 224 can generate the identity set using a current location of the client device 202, features stored in the feature database 234, features generated by the feature generator 222, and / or in some cases features associated with other client devices. The identity set generator 224 can generate the identity set using any information or features.
[0064] Examples of features and information that the identification set generator 224 can use include, but are not limited to, previously visited locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with previous searches, current time of day, or one or more queries associated with other client devices within a predetermined radius of the client device and / or within a time period. The identification set generator 224 can retrieve the features of the client device 202 from the feature database 234 and / or receive them from the feature generator 222. The identification set generator 224 can obtain some features, such as the current time of day, through other mechanisms, such as an internal clock of the intermediary server 214. The identification set generator 224 can also retrieve features of other client devices (e.g., queries of other client devices within a time period) from the feature database 234. Each feature can be associated with a timestamp, which can be used as input in the identification set and / or to determine whether to include the feature in the identification set. For example, the identification set generator 224 can only include features of the client device 202 and / or other client devices generated within the previous week. The identification set generator 224 can identify features from the timestamps associated with the features. The identification set generator 224 can use the timestamps for other reasons, such as to identify a particular day of the week or a particular time of day to use features in the identification set from that time onward. The identification set generator 224 can use features from any time period and based on any criteria.
[0065] To generate the identification set, the identification set generator 224 can convert each feature into a form that is readable by a machine learning model. For example, each feature can be converted or associated with a numerical value, binary code, matrix, vector, etc. The identification set generator 224 can identify the numerical value associated with a feature from a lookup table in a database (e.g., the feature database 234). In some implementations, the identification set generator 224 can use the value and / or numerical value of a feature associated with a word (e.g., a previously visited location) in the database as an identification in the identification set. The identification set generator 224 can normalize these numbers to a value between -1 and 1 using any technique, so they can be operated on by a machine learning model. The identification set generator 224 can normalize the numbers into any range of values. Once normalized, if at all, the application 226 can input the identification set into one or more learning models.
[0066] The identification set generator 224 can generate the identification set periodically over time, or each time the intermediary server 214 receives a location signal from the client device 202. The identification set generator 224 can generate the identification set at any time. The application 226 can use each identification set as input to one or more machine learning models to determine whether the user will likely select the map application 210 and / or to predict a query of the user.
[0067] Memory 218 is shown to include an application 226. In some implementations, application 226 can include an application, server, service, daemon, routine, or other executable logic that can determine whether a user will select map application 210 to launch it and / or determine a query prediction of the user prior to the user entering any portion of a query into map application 210. Application 226 can include one or more machine learning models, such as but not limited to neural networks, random forests, support vector machines, and the like, that are configured to automatically determine whether a user will soon (e.g., within a predetermined time period) select map application 210 to execute it (e.g., in a binary classification system) and / or a query prediction that can be used to select a link to a geographic location of an entity to display to the user. For example, a first learning model of application 226 can receive the set of identifications generated by identification set generator 224 and determine whether a user will soon select the map application to execute it on the client device. A second machine learning model of application 226 can receive the same set of identifications and generate a query prediction of the client device prior to the user of the client device providing an input query. In some implementations, the second machine learning model can generate a query prediction in response to the first machine learning model predicting that the user will likely soon select the map application.
[0068] Application 226 can receive the set of identifications including various features as described above from identification set generator 224 and apply the set of identifications to one or each of the machine learning models. In some implementations, a first machine learning model can predict whether a user will soon select map application 210 to execute it on client device 202. The first machine learning model can do so based on the set of identifications generated by identification set generator 224. In some implementations, the first machine learning model can generate a confidence score for two launch states (a positive launch state and a negative launch state). The positive launch state can be associated with a prediction that the user will soon select map application 210, while the negative launch state can be associated with a prediction that the user will not soon select map application 210. For example, the set of identifications can include a feature of client device 202 that indicates that client device 202 is not moving and is in the morning. Based on various tuned weights and / or parameters, the first machine learning model can determine a low confidence score for the positive launch state and / or a high confidence score for the negative launch state because the user is less likely to select map application 210. Conversely, if the feature indicates that the user has moved in the last hour and is in the afternoon, the first machine learning model can determine a high confidence score for the positive launch state and a low confidence score for the negative launch state. The first machine learning model can generate any confidence score for a launch state based on any feature.
[0069] The application 226 can compare the confidence score to a predetermined threshold to determine whether the user will likely select the map application 210 soon. If the application 226 determines that the confidence score associated with the positive launch state exceeds the threshold, the application 226 can determine that the user will likely or will select the map application 210. However, if the application 226 determines that the confidence score associated with the negative launch state exceeds the predetermined threshold, instead of or in addition to the confidence score associated with the positive launch exceeding the threshold, the application 226 can determine that the user can not select the map application 210. In some implementations, the first machine learning model can repeat the prediction of whether the user will select the map application 210 soon each time the identification set is received from the identification set generator 224. Accordingly, the application 226 can be able to predict situations in which the user can select the map application 210 so that content can be selected and / or provided to the client device 202 before the user makes the selection, while avoiding any unnecessary selection or transmission of content.
[0070] In some implementations, in response to the application 226 determining that the user will likely select the map application 210, the second machine learning model can predict a query prediction that the user will likely input into the map application 210 after selecting the map application 210. The query prediction can be a string of words that the second machine learning model predicts the user will input into the map application 210 to obtain directions to a particular location and / or search for a set of locations. The second machine learning model can predict the query prediction based on the same or similar identification set that was input into the first machine learning model. For example, the second machine learning model can predict that the user will input the phrase “pizza” based on an identification set that the current time of day is 7:00 PM and the current location is around a plurality of pizza shops. The second machine learning model can predict any word or phrase as the query prediction.
[0071] In some implementations, the second machine learning model can predict a confidence score for the plurality of query predictions based on the various sets of identifications. The application 226 can select a query prediction that is associated with a highest confidence score and / or that exceeds a threshold as the query prediction that most accurately predicts what the user is likely to input into the map application 210 as a query. For example, the second machine learning model can predict that the query prediction associated with the "pizza" string has an 80% confidence score, the query prediction associated with the "Acme Inc." string has a 30% confidence score, and the query prediction associated with the "movie theater" string has a 15% confidence score. The second machine learning model can compare each of the confidence scores to one another and determine that the pizza string has the highest confidence score. Accordingly, the application 226 can select the pizza string as the most likely query. In some implementations, the second machine learning model can compare the pizza string confidence score to a threshold. If the threshold is exceeded, the application 226 can still select the string. However, if the confidence score does not exceed the threshold, the transmitter 230 can send a signal to the client device 202 indicating that no query prediction was found. If multiple query predictions are associated with the same highest confidence score, or in some cases, depending on the configuration of the application 226, multiple confidence scores exceed the threshold, the transmitter 230 can send a similar signal.
[0072] In some implementations, the second machine learning model can generate the query prediction based on the indication that the intermediate server 214 receives that the user selected the map application 210. The set of identifications generator 224 can generate the set of identifications using the current location of the client device 202 and other features about the client device 202 when the map application 210 is selected, and the second machine learning model can predict the query before the user provides any input to the map application 210. Accordingly, the content can be provided to the client device 202 before receiving a request from the client device 202, immediately upon receiving such a request.
[0073] The memory 218 is shown to include a link selector 228. In some implementations, the link selector 228 can include an application, server, service, daemon, routine, or other executable logic to select a link to a direction indication to a geographic location of an entity. The link selector 228 can select a link from a link database 232, and the transmitter 230 can transmit the link to the client device 202. The link can be a link to a geographic location of an entity, including various direction indications from a current location of the client device 202 to the geographic location. In some implementations, the link selector 228 can select the link based on a query prediction of a machine learning model of the application 226. The links in the link database 232 can be individually associated with various query predictions, and in some cases, a current location of the client device. The link selector 228 can identify one or more links from the link database 232 by comparing the selected query prediction to a lookup table in the link database 232. The transmitter 230 can transmit the one or more links to the client device 202 so that the user can select and obtain a direction indication to the geographic location associated with the link. The link selector 228 can use the query prediction, along with other contextual information (e.g., feature data) including information about the current location of the client device 202, to select one or more links to transmit to the client device 202. The link selector 228 can select any number of links to transmit to the client device 202.
[0074] In some implementations, the memory 218 is further shown to include a link database 232. The link database 232 can be a dynamic database that includes features of client devices for which the intermediary server 214 has collected data. The link database 232 can be a graph database, MySQL, Oracle, Microsoft SQL, PostgreSql, DB2, document store, search engine, key-value store, etc. The link database 232 can be configured to house any number of data, and can be comprised of any number of components. The links can include links to websites of entities, links to direction indications to physical geographic locations of entities, links to pictures associated with the entities, etc. Each link can be associated with one or more entities (e.g., content providers or content servers). Each link can also be associated with one or more search queries. The link database 232 can be associated with any type of location or entity. In some implementations, the link database 232 can be formatted as a lookup table, where links are individually associated with various content providers and / or search queries. The link selector 228 can retrieve links from the link database 232. The transmitter 230 can transmit the links to the client device 202.
[0075] In some implementations, the link selector 228 can select a link by sending a predicted query to one or more content servers (e.g., content server 236 and content server 238). The link selector 228 can send the predicted query to the content servers with feature information about the client device 202. Each content server can associate a value with the predicted query. The link selector 228 can receive (e.g., select) and associate with the link the content server that associates the highest value with the query prediction. In some implementations, the link selector 228 can receive multiple links associated with the highest value. The transmitter 230 can transmit any link received or selected by the link selector 228 to the client device 202 for processing.
[0076] The memory 218 is shown to include the transmitter 230. The transmitter 230 can include an application, server, service, daemon, routine, or other executable logic to transmit a link to a geographic location of an entity to various client devices, such as the client device 202. The transmitter 230 can transmit any link selected by the link selector 228 based on a query prediction made by the second machine learning model of the application 226. Depending on the configuration of the transmitter 230, the transmitter 230 can transmit the link to the client device 202 before the intermediate server 214 receives a request for content or any indication that the user selected the map application 210 of the client device 202. In some implementations, the transmitter 230 can transmit the selected link after the intermediate server 214 receives a request for content and / or an indication that the user selected the map application 210. However, if the application 226 determines that it cannot determine a query prediction based on the location and / or feature information of the client device 202, the transmitter 230 can transmit a signal to the client device 202 indicating that a query prediction was not found. Similarly, if a link is not selected, the transmitter 230 can transmit a signal to the client device 202.
[0077] Referring to Figure 3A A diagram of an example neural network 300 for predicting a query is shown in accordance with some implementations. The neural network 300 can be similar to the neural network 200 described with reference to FIG. 2. The neural network 300 can be configured to receive a query prediction request 302 that includes a location of an entity and / or feature information about a client device 304. The neural network 300 can be configured to output a predicted query 306 based on the location of the entity and / or the feature information about the client device 304. Figure 2An example implementation of a machine learning model of the application 226 is shown and described. The application 226 can include any number and / or any type of learning model, such as but not limited to neural networks, random forests, support vector machines, etc. The neural network 300 is shown to include inputs associated with features of a client device in communication with an intermediary server (e.g., intermediary server 214) for serving content. The inputs can include, for example, a current location 302, a previous location 304, a current time 306, a previous query 308, a query of another device 310, a speed of movement 312, and a timestamp of a previous search 314. The inputs 302-314 can operate as input nodes that provide weighted outputs to nodes of a hidden layer 316. In some implementations, the inputs can be associated with a feature vector. The nodes of the hidden layer 316 can perform various functions on the weighted signals of the inputs and provide weighted output signals to an output layer 318. The output layer 318 can include one or more output nodes and provide a confidence score of a likelihood of various search queries of a user that is accessing or will access a map application on its client device. The neural network 300 can include any number of components (e.g., any number of hidden layers / nodes, input nodes, output nodes, etc.).
[0078] The output of each of the input nodes 302-314 and the nodes of the hidden layer 316 can be a signal or a combination of signals of the neural network 300. Each of the signals or signal combinations can be associated with a weight (e.g., a prediction score). For example, the input signal associated with the current time 306 can have a weight of 0.8, while the input signal associated with the previous query 308 can have a weight of 0.2. The weights can indicate the importance of a particular input compared to other inputs. For example, the input related to the speed of movement 312 can have a higher weight than the input related to the timestamp of the previous search 314. Each input’s signal can each have any weight. The weights can be adjusted via training as described below. Further, as described below, the nodes of the hidden layer 316 can perform one or more operations on the signals and then output the weighted signals to the output layer 318.
[0079] The inputs 302-314 can be values associated with features of the client device. The inputs 302-314 can be fed into the neural network 300 over time, so the neural network 300 can continuously predict the user’s query in real-time. In some implementations, the inputs 302-314 can be continuously fed into the neural network 300, or fed into the neural network 300 as samples at periodic intervals (e.g., as time series data). The data of the inputs 302-314 can be associated with timestamps indicating when the data was collected or generated. For example, the neural network 300 can receive a list of previous locations 304 and timestamps associated with the list as inputs. Each timestamp can indicate a time when the client device was at a particular location. The timestamps can be at intervals, such as every 5 seconds, every 10 seconds, every 20 seconds, etc. The timestamps can be generated based on a time when the client device sent a location signal to an intermediary server or a time when the intermediary server received the location signal.
[0080] The input nodes associated with the inputs 302-314 can be the first layer of the neural network 300 representing the input layer of the neural network 300. Each input can be a node of the input layer that sends a weighted signal to one or more nodes of the hidden layer 316. The inputs 302-314 can be values converted from values collected by a server or processor associated with the neural network 300 into numerical values, binary codes, matrices, vectors, etc. The server can then normalize these numbers to a value between -1 and 1 using any technique, so the numbers can be operated on by the nodes of the hidden layer 316. The server can normalize the numbers into any range of values. After the server normalizes these numbers to a value between -1 and 1, the neural network 300 can send these values as weighted signals to the nodes of the hidden layer 316.
[0081] The hidden layers 316 can be one or more layers of nodes that receive input signals or combinations of input signals from the inputs 302-314. The nodes of the hidden layers 316 can perform one or more operations on the input signals or combinations of signals and provide the signals or combinations of signals to the output layer 318. Although two hidden layers are shown, there can be any number of hidden layers. The nodes of each hidden layer can provide output signals to the nodes of other hidden layers or to the output layer 318. In some embodiments, the number of nodes or layers of the hidden layers 316 is associated with the number of input nodes and / or the number of output nodes of the neural network 300. The neural network 300 can perform operations, such as multiplication, linear operations, sigmoid, hyperbolic tangent, or any other activation function, at each of the layers of the hidden layers 316 based on the values associated with the input nodes 302-314 and the weights associated with the signals or combinations of signals transmitted between the input nodes 302-314 and the nodes of the hidden layers 316. The weighted signals or combinations of signals from the hidden layers 316 can be sent to the output layer 318.
[0082] The output layer 318 can be a layer of the neural network 300 that is dedicated to providing confidence scores for various query predictions. A query prediction can be a string that the neural network 300 predicts a user accessing a map application can search for when selecting and accessing the map application. The confidence score can indicate the likelihood that the query prediction is correct. For example, an output node of the output layer 318 can correspond to a 70% likelihood that a user will search for a hamburger restaurant in a search form of the map application. Another output node can correspond to a 20% likelihood that the user will search for a hamburger restaurant in the same search form. The neural network 300 can determine 70% confidence scores, 20% confidence scores, and any number of other confidence scores for other query predictions based on the inputs 302-314. Such confidence scores can be compared to each other and / or to a threshold by a server to predict whether the confidence scores are correct.
[0083] The weights associated with the signals or combinations of signals propagated between the inputs 302-314 and the hidden layer 316 and subsequently between the hidden layer 316 and the output layer 318 can be determined automatically based on training data provided by an administrator. The training data can include inputs similar to the inputs 302-314 and expected outputs based on the inputs. The neural network 300 can initially have randomized weights associated with each of its signals or combinations of signals, but after a sufficient amount of training data is input to the neural network 300, the weights can be determined to reach a degree of certainty identified by the administrator as sufficient. In some implementations of the systems and methods described herein, the input and signal or combination of signals associated with the highest weight can be a feature associated with the user's current location, the current time of day, and / or the speed of movement. Any input or signal can be associated with any weight. To use the training data, the neural network 300 can be a supervised system that implements backpropagation. After the training data is used as input and the probability of the output is identified by the neural network 300, the neural network 300 can identify the expected output from the training data and identify a difference between the actual output and the expected output. The neural network 300 can identify the difference as a delta and modify the weights so that the actual output is closer to the expected output at a rate proportional to the difference. The neural network 300 can modify the weights of its signals or combinations of signals using a learning rate that identifies the degree of change of each weight for an iteration of training data implemented in the neural network 300. As more and more training data is fed into the neural network, the weights of the signals or combinations of signals can change and the delta can get smaller. Thus, in some implementations, the results can become more accurate over time.
[0084] In some implementations, the neural network 300 can be trained in real-time when a user selects a link selected based on a query prediction made by the neural network 300. For example, the neural network 300 can predict a score of 90% for a query prediction of the "ACME" string. The server can select a link based on the query prediction and cause the link to be displayed at the client device. The user can select the link, indicating that the query prediction of the ACME string was correct. The neural network 300 can use backpropagation techniques based on the selected link to increase any weights of the signals associated with the ACME string as described above.
[0085] In some implementations, the neural network 300 can be a semi-supervised system in which the training data used as input into the system includes labeled and unlabeled training data. This is advantageous when there is a large amount of data available that would take a human a significant amount of time to label with the correct output. In a semi-supervised system, the neural network 300 can receive data that includes only the input to determine the output and label the data based on the output. The newly labeled data can then be implemented into the neural network 300 along with the labeled data set to train the neural network 300 using backpropagation techniques. Using a semi-supervised system, the neural network 300 can continually update as it predicts queries and users select links based on the predicted queries.
[0086] Advantageously, by using the neural network 300, the server can automatically predict a user's query before the user provides any input or, in some cases, selects the map application. The server can use the prediction to select content, such as a link to a geographic location associated with an entity, based on the predicted query in response to only the user's selection of the map application.
[0087] Referring to Figure 3B FIG. 3 shows a diagram of an example neural network 320 for predicting a launch state of a mobile application, according to some implementations. The neural network 320 can be an example implementation of the second machine learning model of the application 226. When the second machine learning model is represented as a neural network, the second machine learning model can be any type of machine learning model. The neural network 320 can predict a launch state of a mobile application. As described above, the launch state can indicate whether a user of the client device will likely launch the map application within a predetermined time period (e.g., 1 second, 5 seconds, 15 seconds, 1 minute, 5 minutes, etc.). The neural network 320 can predict the launch state based on inputs of a current location 322, a previous location 324, a current time 326, a previous query 328, a query of another device 330, a mobile velocity 332, and a timestamp of a previous search 334. The inputs 322-334 can include any number of inputs. Further, as can be seen, the inputs 322-334 can be similar to the inputs 302-314 described with reference to FIG. 3. Thus, the same data that can be used to predict a query can be used to determine whether a user will launch the map application within a predetermined time threshold. Figure 3A
[0088] The neural network 320 can operate similarly to the neural network 300 and can include similar components. For example, in addition to the inputs 322-334, the neural network 320 can include a hidden layer 336. The hidden layer 336 can include any number of hidden layers that receive weighted outputs from input nodes associated with the inputs 322-334. The hidden layer 336 can perform various activation functions on the values of the weighted signals, such as multiplication, linear operations, sigmoid, and hyperbolic tangent, and provide weighted outputs to an output layer 338.
[0089] The output layer 338 can include two output nodes, one of which can be associated with the likelihood that the user will likely access the map application within the predetermined time threshold (e.g., a positive launch state) and the other of which can be associated with the likelihood that the user will likely not access the map application within the predetermined time threshold (e.g., a negative launch state). The confidence score can be any quantity and can or can not sum to 1.0 or 100%.
[0090] The neural network 320 can be trained using similar supervised and semi-supervised training methods as those described above with respect to the neural network 300. For example, a training dataset can include input-output pairs that include input device features labeled with the correct output (e.g., [1, 0]) indicating whether the user will or will not select the map application. The neural network 320 can generate confidence scores for both launch application states and compare the confidence scores to the labeled outputs. The neural network 320 can adjust its internal weights / parameters using the backpropagation techniques discussed above so that it can more accurately predict the launch application states for future inputs.
[0091] The neural network 320 can train in real-time based on whether the neural network 320 correctly predicted whether the user will select the map application. The neural network 320 can identify instances in which the neural network 320 correctly predicted that the user will select the map application and use backpropagation techniques on the output so that the weights of the neural network 320 can be adjusted according to the correct prediction. Thus, the weights associated with correct predictions can increase. The neural network 320 can similarly train using correct predictions that the user will not select the map application. Thus, the neural network 320 can gradually become more accurate over time in predicting whether users will or will not select their respective map applications.
[0092] Advantageously, by using the neural network 320, the server can automatically predict when a user is likely to open the map application. The server can continuously feed inputs indicating the current characteristics of the client device bearing the map application into the neural network 320, receiving a confidence score for the launch prediction output for each set of inputs. In some instances, if the server predicts that the user will open the map application within a predetermined threshold, the server can feed the same inputs into the neural network 300 to determine a query prediction for the user as described above. Using the query prediction, the server can select content such as a link to a geographic location, and in some cases, send the link to the user's client device before the user opens the map application. Thus, when the user selects the map application on the client device to access it, the map application can automatically retrieve and display the link without any latency typically associated with sending and receiving signals from the server, as would typically exist if the client device requested the content in response to accessing the map application and entering a query using previous systems and methods.
[0093] Referring to Figure 4 A flow diagram illustrating a server-side method for low-latency provisioning of content is shown, in accordance with some implementations. The method 400 can be performed by a server (e.g., the intermediary server 214). The operations of the method 400 can be performed at any time and in any order. At operation 402, the server can periodically receive signals indicating a location of a client device. The server can receive the signals automatically or when polling the client device. The server can receive the signals or poll the client device periodically at set times of day, pseudo-randomly, at set intervals, or in any other varying or pattern. Upon receiving a signal including a location of the client device, the server can tag the location with a timestamp and, in some cases, a device identifier identifying the client device, indicating that the server received the signal or the client device sent the signal. The server can store the tagged location as a previous location or characteristic in a characteristics database upon receipt.
[0094] At operation 404, the server can receive a current location of the client device. The current location can represent the location of the client device when the client device sent the signal. In some implementations, operation 404 can be performed and thereafter operations 406-422 can be performed each instant that the server receives a location signal during operation 402. The server can receive the current location of the client device and timestamp it similarly to how the server timestamps the location of the client device in operation 402. At operation 406, the server can retrieve features of the client device from a database of the server. Examples of features include, but are not limited to, previously visited locations, previous queries, previous inputs corresponding to selections of links to geographic locations, entities associated with previous locations, timestamps associated with previous searches, a current time of day, or one or more queries associated with other client devices within a time period, etc. Each feature can be associated with a time at which the server stored it in the database or otherwise generated it. The server can retrieve the features by identifying a device identifier of the client device and comparing the device identifier to the database. The server can identify matching identifiers in the database and retrieve features associated with the matching identifiers.
[0095] In some implementations, the server can only retrieve features associated with a predetermined time frame. The time frame can be associated with a time at which the server retrieves the features from the database. For example, the server can only retrieve features associated with times within an hour of the time at which the server is retrieving the features. The time frame can be any length. Advantageously, by only using features associated within a given time frame, the server can use more relevant data when applying the features to a machine learning model to predict queries as described below. For example, at 7pm, a previous location of the user between 6:30pm and 7:30pm can be more relevant to predicting a query of the user than a previous location of the user during a workday.
[0096] In some implementations, in addition to or instead of the time frame described above, the server can retrieve only features associated with dates or times after or before another date or time set by the administrator. For example, the server can be configured to retrieve only features associated with the client device within the last week. In another example, the server can be configured to retrieve only features associated with the client device that were generated or received after 12:00 PM in the day. Advantageously, by using such a time limit, the administrator can ensure that relevant data is used to predict the user's query. For example, if the user has been sick for a week, then this user can not have gone to as many different places, or can have various doctor's appointments to travel to. If the server is configured to retrieve only features within the last week, then the server can more accurately predict the user's search query in the map application compared to if the server used all feature values that the server ever stored. The user can customize the server to use any number of time thresholds and / or time frames to retrieve data from.
[0097] At operation 408, the server can generate an identification set. The server can generate the identification set using the current location of the client device and the retrieved features. The server can generate the identification set (e.g., a feature vector) by identifying values associated with each feature in the database. Non-numeric categorical features can be associated with numeric values in the database. For example, Baltimore can be associated with a value of 32, a previous query for "hamburger" can be associated with a value of 86, and the entity FakeCo can be associated with a value of 114. Any feature can have a value in the database. The server can generate the identification set by retrieving such values associated with features of the client device and values associated with the current location of the client device. The numeric values can be represented as themselves in the identification set, or as other values similar to the non-numeric features. Each value in the identification set can be an identification. In some implementations, the server can normalize the values (e.g., to values between -1 and 1) according to the server's machine learning model so that the machine learning model can process the identification set.
[0098] In some implementations, in addition to using features from the database and the current location of the client device to generate the identification set, the server can use the features and / or the current location to generate further features of the client device to input into the identification set. For example, the server can determine the speed at which the client device is moving by comparing the current location to the client device's most recent previous location and the associated timestamp. The server can input the determined speed into the identification set. Advantageously, by determining the speed of the client device, the server can determine whether the person is moving and, in some cases, the mode of travel. For example, the server can determine that the client device is traveling at 60 miles per hour. Accordingly, the server can determine that the person is moving in a car and can access locations further away than if the person was traveling at 5 miles per hour and thus walking. The server can input the speed, the fact that the client device is moving, or the mode of travel into the identification set.
[0099] In some cases, the server can set a speed threshold to determine whether the device is moving. For example, the server can set a speed threshold of 3 miles per hour. If the server determines that the client device is moving at less than 3 miles per hour, the server can determine that the client device is not moving. The server can input such a determination into the identification set.
[0100] In some implementations, in addition to or instead of using the speed of movement of the client device to determine whether the device is moving, the server can use the current location of the user. For example, if the user is located on a highway, the server can determine that the user is traveling by car. If the user is at the user's home, the server can determine that the user is not moving. The server can use any location to determine whether the user is moving.
[0101] At operation 410, the server can determine whether the query prediction exceeds a threshold. The server can input the set of identifications generated at operation 408 into a machine learning model and obtain an output including one or more confidence scores for various query predictions based on the set of identifications. Each query prediction can be associated with a word or phrase of a string of words that includes a word that the machine learning model predicts a user will input into the map application when the map application is selected via the client device. The server can compare the confidence score for each word or phrase to a predetermined threshold and determine whether any of the confidence scores for the words or phrases exceed the predetermined threshold. If the server does not identify a word or phrase that exceeds the threshold, at operation 412, the server can send a signal to the client device indicating that no query prediction was found. In some implementations, if the server identifies more than one confidence score that exceeds the threshold, the server can send a similar signal to the client device. However, if the server identifies a query prediction that exceeds the threshold, at operation 414, the server can identify the query prediction associated with the word or phrase that exceeds the threshold.
[0102] At operation 414, the server can determine whether the identified query prediction is associated with a link to a geographic location of an entity. The link to a geographic location can be content provided by a third-party content provider that a user can select to obtain directions to the geographic location. For example, ACME can provide a link to a geographic location associated with ACME (e.g., has a physical store) that a user can select to obtain directions to ACME. The server can send the link to the client device that the client device can display via the map application. The user can select the link and obtain directions to ACME from the user’s current location. The user can travel to ACME using the directions.
[0103] To determine whether the identified is associated with a link, the server can compare the identified query prediction to a database storing links to various geographic locations of entities. Each link to a geographic location can be associated with various query predictions. Further, a query prediction can be associated with multiple geographic locations within the database. In some implementations, the server can compare the identified query prediction to the database and select a link associated with the identified query prediction. The server can select the link that is closest in geographic location and in context to the identified query prediction. For example, the server can select a link associated with the nearest burger restaurant as a result of the identified query prediction of “burger.” In some implementations, the server selects multiple links to send to the client device. An administrator can define how many links to transmit to the client device.
[0104] In some implementations, the server can send the predicted query and / or the features of the client device to one or more content providers. The content providers can associate values with the query predictions and send back to the server the link associated with the highest value and / or each link associated with the value associated therewith. The server can receive (e.g., select) the link associated with the highest value. In some implementations, the server can receive multiple links based on the identified query predictions.
[0105] If the server determines that there are no links associated with the query prediction, at operation 418, the server can send a signal to the client device indicating that no links were found. However, if the server identifies one or more links as described above, at operation 420, the server can select one or more of the identified links. In some implementations, the server can select the link associated with the highest value. The server can receive such a link from a content provider. In some implementations, based on the manner in which the server is configured, the server can select multiple links. In such implementations, the server can select the link associated with the highest value. The server can select any number of links.
[0106] At operation 422, the server can receive a signal indicating a selection of the map application. The server can receive the signal from the client device or from a server associated with the map application. In some implementations, the signal indicating a selection of the map application can include a request for content (e.g., links to geographic locations). At operation 424, the server can send the selected links to the client device. In some implementations, the server can transmit the links with a graphical user interface of the map application. The links can appear on a user interface displaying a map of the area. The user can select the links to view directions to the geographic locations associated with the links. In some implementations, the server can send multiple links. If the links appear in a list, the server can organize the links (e.g., from top to bottom) based on which link is associated with the highest value, which link is associated with the closest destination, which link is most relevant to the user, etc. The server (or the client device) can organize the links in any manner on the interface.
[0107] Advantageously, because the server selects the links to send to the client device prior to receiving the signal indicating a selection of the map application, the server can not need to spend time processing any contextual information about the client device to select the links to send. Upon receiving the signal indicating a selection of the map application, the server can already have the links ready to send. Thus, the server can send the links immediately upon receiving the signal, resulting in a low latency transmission of the content.
[0108] In some implementations, operation 422 can be performed during or prior to operation 404, or otherwise immediately prior to operation 406. For example, at operation 404, the server can receive a signal indicating a selection of a map application at the same time as receiving a signal indicating a current location of the client device. Upon receiving the signal indicating the selection of the map application, at operation 406, the server can retrieve features from the database and perform other operations of method 400 to provide contextually relevant links to the client device. The server can provide the links to the client device prior to the user entering any portion of a query into the map application. The server can be able to quickly provide contextually relevant links due to the ease of retrieving periodically obtained signals indicating the location of the client device at the time of receiving a request for content from the client device. Using such signals can enable the server to provide contextually relevant content without waiting for a query to be entered. Furthermore, because the server can use previous signals to select links, the server can provide contextually relevant content to the client device.
[0109] Referring to Figure 5 , a flowchart illustrating a client method 500 for low latency provisioning of content is shown, in accordance with some implementations. Method 500 can be performed by any client device (e.g., client device 202) or server (e.g., intermediary server 214). The steps of method 500 can be performed at any time and in any order. At operation 502, the client device can periodically send a signal to a server indicating a location of the client device. The location can be a current location of the client device at various points in time. The client device can send its location using various techniques, such as through GPS, cell phone tower signals, etc. The client device can send its location in the background of the client device, so the user can operate various applications and / or make phone calls at the same time as the client device is sending its current location.
[0110] At operation 504, the client device can receive a selection of the map application. The client device can receive the selection from the user through a touchpad, mouse click, or through any other selection mechanism. In some implementations, the processor of the client device automatically selects the map application. For example, the map application can be configured to automatically send a location signal to the server. To this end, the processor of the client device can automatically select the map application, which can facilitate the transmission of the location of the client device. At operation 506, the client device can execute the map application. The client device can process the selection of the map application and generate a user interface associated with the map application to the user. The user interface can show a geographic map of the area surrounding the current location of the user. The user interface can also show a query form that the user can select to input a query associated with a location for which the user wishes to receive directions. At operation 508, the client device can send a signal to the server indicating the selection of the map application. The signal can include the current location of the client device. In some implementations, the signal also includes a request for content such as a link to a geographic location of an entity, as described above.
[0111] At operation 510, the server can receive the signal and determine whether the query prediction exceeds a threshold. To this end, the server can perform the operations 404-410 shown and described with reference to Figure 4 For example, based on the current location of the client device and other characteristics, the server can predict the content (e.g., intent) that the user will likely query in the query form of the map application. Examples of different predictions include, but are not limited to, "pizza restaurant," "beach," "breakfast," etc. The server can predict any query. As described above, the server can predict a confidence score for multiple queries and determine whether any of the confidence scores exceed a predetermined threshold. If none of the confidence scores exceed the threshold (or more than one confidence score exceeds the threshold), then at operation 512, the client device can receive a signal indicating that no query prediction was found.
[0112] However, if the server determines that the query prediction exceeds the threshold, then at operation 514, the server can determine whether a link associated with the query prediction exists. To this end, the server can perform the operations 414-416 shown and described with reference to Figure 4 For example, the server can identify the query prediction associated with the confidence score that exceeds the threshold and send the query prediction to one or more content providers that can associate values with links. The server can receive a link (or multiple links, depending on how the server is configured) that is associated with the highest value. However, if the server does not identify or select a link associated with the query prediction, then the server can send a signal to the client device indicating that no link was found, which the client device can receive at operation 516.
[0113] If the server selects the link, at operation 518, the client device can receive an identification of the link to the geographic location of the entity. The client device can receive any number of links. At operation 520, the client device can display the links to the geographic location at a user interface associated with the map application. The client device can display the links in a list format, and / or in some cases, at representative locations of the geographic location on a map of the user interface. The user can select a link to view a directional indication to the geographic location.
[0114] Advantageously, and as described above, the client device can quickly receive the link from the server when sending the signal indicating that the map application was selected. As a result of the pre-processing performed by the server using the periodic location signals sent to the server by the client device, the client device can receive the link with low latency. In some implementations, the server periodically sends links to the client device, which the client device can discard if the user does not select the map application. Thus, in either implementation, the client device can quickly display any received links to the user upon receiving a selection of the map application.
[0115] Referring to Figure 6 , a flowchart illustrating another server-side method 600 for low-latency provisioning of content is shown, in accordance with some implementations. The method 600 can be performed by a server (e.g., the intermediary server 214). The operations of the method 600 can be performed at any time and in any order. The method 600 can be similar to the method 400, however, the entirety of the method 600 can be performed by the server prior to receiving any signal indicating a user's selection of the map application. The method 600 can be performed to predict whether a user will select the map application, and if the server determines that the user is likely to select the map application soon, provide contextually relevant content (e.g., a link to a geographic location of an entity that the user can want to visit) to the client device. The server can provide the content, and thus, when the user selects the map application, the client device can immediately display the link without sending any request for the content or waiting for the server to process the request. The performance of the method 600 can reduce the time it takes for the client device to provide contextually relevant content to the user.
[0116] At operation 602, the server can periodically receive a signal indicating a location of the client device. At operation 604, the server can receive a signal indicating a current location of the client device. At operation 606, the server can retrieve features from a database. At operation 608, the server can generate a set of identifications. Each of the operations 602-608 can be similar to the corresponding operations 402-408 shown and described with reference to Figure 4 the corresponding operations 402-408 shown and described with reference to
[0117] At operation 610, the server can determine whether the launch application state exceeds a threshold. The launch application state can be a prediction of whether the user will likely select the map application to execute the map application on the client device. The prediction can be for whether the user will likely select the map application within a time threshold (e.g., 1 second, 5 seconds, 10 seconds, 30 seconds, 1 minute, 5 minutes, etc.). The time threshold can be any time configured by an administrator. The server can predict the launch application state by inputting the identification set generated at operation 608 into a machine learning model configured to predict the launch application state. The machine learning model can be a binary classifier that can predict whether the user will likely select the map application or whether the user will likely not select the map application. In some implementations, the machine learning model can predict a confidence score for each launch application state. For example, the server can predict a confidence score indicating the likelihood that the user will select the map application and another confidence score indicating the likelihood that the user will not select the map application. In some implementations, the server can only predict the confidence score for one of these states.
[0118] The server can compare the confidence scores to the threshold to determine whether the user will likely select the map application to execute it within the time threshold. If the confidence score indicating that the user will likely select the map application does not exceed the threshold, the server can return to operation 604 and periodically repeat operations 604-610 until the server determines that the machine learning model generates a confidence score that exceeds the threshold. If the confidence score for each state exceeds the threshold, the server can also return to operation 604. Advantageously, by repeatedly generating the identification set using the location data and various features of the client device and applying the identification set to the threshold, the server can constantly prepare to select the link to the various geographic locations when the user selects the map application.
[0119] If the server determines that the confidence score associated with the application startup state exceeds a threshold, then in operation 612, the server can determine whether the query prediction exceeds the threshold. If the server determines that the query prediction does not exceed the threshold, then in operation 614, the server can send a signal to the client device indicating that no query prediction was found. However, if the server determines that the query prediction does exceed the threshold, then in operation 616, the server can identify the query prediction that exceeds the threshold (or, in some implementations, identify multiple query predictions that exceed the threshold, depending on how the server is configured). In operation 618, the server can determine whether the query prediction is associated with a link. If the server determines that the query prediction is not associated with a link, then in operation 620, the server can send a signal to the client device indicating that no link was found. However, if the server determines that the query prediction is associated with a link, then in operation 622, the server can select a link to the geographic location associated with the query prediction. In operation 624, the server can send the link to the geographic location to the client device.
[0120] Each of operations 612-624 can be similar to reference Figure 4 The corresponding operations 410-420 and 424 are shown and described. As described above, each operation 602-624 of method 600 can be performed before the client device receives input indicating a selection of a map application. The server can predict when the user is likely to select a map application, predict the queries the user will perform if the user selects a map application, and send a context-relevant geographic location link to the client device before the user selects a map application. Therefore, when the user selects a map application, the client device can quickly display the link without sending a request to the server, reducing the lag time in displaying the link. In some implementations, operation 624 is performed in response to the user selecting a map application and receiving a signal indicating this information. Because the server has already selected the link to send to the client device at this time, the server can send the link without any time-consuming processing.
[0121] Now refer to Figure 7FIG. 7 shows a flowchart illustrating another client method 700 for low latency provisioning of content, in accordance with some implementations. The method 700 can be performed by a client device (e.g., the client device 202). The operations of method 700 can be performed at any time and in any order. The method 700 can be similar to the method 500, however, the client device performing the method 700 can receive a link to a geographic location of an entity to display to a user prior to the user selecting a map application associated with the link. The method 700 can be performed to quickly display content to a user that can enable the user to view and select a link that provides the user with directional indications to a contextually relevant location. Prior implementations can require the user to provide input and wait for a server to process the input to receive contextually relevant content. By performing the method 700, the content can be made available to the user more quickly in some implementations.
[0122] At operation 702, the client device can periodically send a signal indicating a location of the client device. At operation 704, the client device can send a signal to the server indicating a current location of the client device. The operations 702 and 704 can be similar to the operations 502 and 504 shown and described with reference to Figure 5 The operations 706 and 708 can be similar to the operations 610 and 612 shown and described with reference to Figure 6 The operations 706 and 708 can be similar to the operations 610 and 612 shown and described with reference to Figure 6 The operations 710 and 714 can be similar to the operations 612 and 618 shown and described with reference to Figure 5 The operations 710 and 714 can be similar to the operations 612 and 618 shown and described with reference to
[0123] If the server determines that the launch application state exceeds a threshold, the query prediction exceeds a threshold, and / or the query prediction is associated with a link, at operation 716, the client device can receive an identification of the link. With the identification of the link, if the user opens the map application, the client device can identify the link to display on the user interface of the client device. Once the identification is received, the client device can store it in a cache or other memory of the client device. In some implementations, the client device can receive more than one link identification. At operation 718, the client device can determine whether the client device received a map application selection. The client device can determine whether it received a map application selection within a predetermined time period of receiving the identification of the link set by an administrator. The map application selection can be a user or system input that causes the map application to execute on the client device. If the client device determines that it did not receive a map application selection, at operation 720, the client device can discard the identification of the link. The client device can discard the identification of the link by removing it from the cache or other memory.
[0124] However, if the client device receives a map application selection, at operation 722, the client device can execute the map application. The client device can execute the map application by processing the map application in memory. At operation 724, the client device can display the link to the geographic location of the entity in a user interface associated with the map application. In some implementations, the client device can display the link in a list on the interface. The list can appear next to a map associated with the map application. The client device can display any number of links in the list. Further, in some implementations, the client device can display the links at various locations on the map associated with the user interface.
[0125] Advantageously, by receiving the identification of the link to display prior to selecting the map application, the client device can be able to quickly display the link when the user selects the map application. Previous systems typically required the client device to request such links from a server and enter into a query form associated with the map application upon receiving a selection of the map application. The method 700 can reduce the time it takes for a user to view the link because the link can already be stored on the client device when the user makes the selection.
[0126] In situations in which the systems described in this specification collect personal information about users or their applications that is stored or used, the users are provided with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location). In addition or as an alternative, certain data can be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity can be treated so that no personally identifiable information can be determined for the user, or a user's geographic location can be generalized where location information is obtained (such as to a city, postal code, or state level), so that a particular location of a user cannot be determined. Thus, the user can have control over how information is collected about the user and used by a content server.
[0127] Implementations of the subject matter and operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on one or more computer storage media for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be, or include by way of example a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or include by way of example a random access memory (RAM), a read only memory (ROM), an erasable programmable read only memory (EPROM), EEPROM, or flash memory, compact disc read only memory (CD-ROM), digital versatile disc (DVD), or other optical storage, magnetic cassettes, magnetic tapes, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that is used to store computer program instructions. Combinations of the above should also be included within the scope of computer storage media. The foregoing description of various aspects of the subject matter described in this specification is provided as an overview of some aspects of the subject matter described in this specification. This summary is not intended to provide an exclusive or exhaustive explanation of the subject matter described in this specification. The detailed description is included to provide further information about the subject matter described in this specification.
[0128] The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0129] The term "client" or "server" includes all kinds of apparatus, devices, and machines for processing data, such as a programmable processor, a computer, a system on a chip, or multiple ones of the same or a combination thereof. The apparatus can include special purpose logic, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). In addition to hardware, the apparatus can also include code that creates an execution environment for the computer programs in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
[0130] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and networks.
[0131] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0132] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0133] To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display), OLED (organic light-emitting diode), TFT (thin-film-transistor), plasma, other flexibly configured display, or any other monitor for displaying information to the user and a keyboard, a pointing device, e.g., a mouse, a trackball, a touchscreen, a touchpad, etc., or a microphone, for the user to provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device of the user; for example, a web browser can be used to send and receive web pages to and from a user's computer.
[0134] Implementations of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. The communication network can include local area networks (“LANs”) and wide area networks (“WANs”), the Internet, and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0135] Although this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions, but rather as descriptions of particular implementations of certain inventions. Certain features that are described in this specification in the context of separate implementations can also be implemented in combinations with each other. Conversely, various features that are described in the context of a single implementation can also be implemented separately from that single implementation or in any suitable combination. Moreover, although operations can be depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the illustrated order, or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing can be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated in a single software product or packaged into multiple software products.
[0136] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring such an order, or sequential order, to achieve desirable results. In certain circumstances, multitasking and parallel processing can be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated in a single software product or packaged into multiple software products.
[0137] Accordingly, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the process depicted in the accompanying figures does not necessarily require the particular order shown, or sequential order, to achieve the desired results. In some implementations, multitasking and parallel processing can be advantageous.
Claims
1. A method for low-latency serving of content, comprising: receiving, by a server from a client device, one or more signals indicative of a current location of the client device; repeatedly predicting, by the server, whether a user will open a map application within a predetermined time period until a map application prediction exceeds a first threshold; retrieving, by the server from a database, features of the client device prior to receiving an input query from the map application of the client device; generating, by the server, an identification set comprising the current location of the client device and the features of the client device; predicting, by the server, a query using the identification set; determining, by the server, that a query prediction exceeds a second threshold after predicting that the user will open a map application within the predetermined time period; selecting, by the server, a link to a geographic location of an entity associated with the query prediction in response to a determination that the query prediction exceeds the second threshold; and sending, by the server, the selected link to the client device prior to receiving a query from the user of the client device in response to the user’s selection of the map application on the client device. the identification set further comprises a previous location of the client device and a timestamp associated with the previous location and the current location.
2. The method of claim 1, wherein, predicting that the user will open a map application within a predetermined time period comprises:
3. The method of claim 2, wherein, comparing a first timestamp and a first previous location to a second timestamp and the current location; and determining a speed of travel based on the comparison. predicting that the user will open a map application within a predetermined time period comprises:
4. The method of claim 2, wherein, comparing a third timestamp and a third previous location to a fourth timestamp and the current location; and determining that the user has not moved within a second time period based on the comparison. the features comprise previously visited locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with the previous searches, a current time of day, or one or more queries associated with other client devices within another time period.
5. The method of claim 1, wherein, determining that the query prediction exceeds the second threshold further comprises identifying that a correlation between one or more previous features and one or more current features exceeds a third threshold.
6. The method of claim 5, wherein, 7. The method of claim 1, further comprising: receiving a selection of the selected link by the user; and increasing a prediction score associated with the selected link in response to receiving the selection of the selected link by the user; and wherein the query prediction is proportional to the prediction score associated with the selected link.
8. A system for low-latency serving of content, comprising: a server comprising a network interface in communication with a client device and a processor; wherein the network interface is configured to: receive one or more signals indicative of a current location of the client device from the client device; wherein the processor is configured to: repeatedly predict whether a user will open a map application within a predetermined time period until a map application prediction exceeds a first threshold; retrieving, from a database, characteristics of the client device prior to receiving an input query from the map application; generating an identification set comprising the current location of the client device and the characteristics of the client device; using the identification set to predict a query; determining that a query prediction exceeds a second threshold after predicting that the user will open a map application within the predetermined time period; and in response to the determination that the query prediction exceeds the second threshold, selecting a link to a geographic location of an entity associated with the query prediction; and wherein the network interface is further configured to transmit the selected link to the client device prior to receiving a query from the user of the client device and in response to the selection of the map application on the client device by the user.
9. The system of claim 8, wherein, the identification set further comprises a previous location of the client device and a timestamp associated with the previous location and the current location.
10. The system of claim 9, wherein, to predict that the user will open a map application within a predetermined time period, the processor is configured to: compare a first timestamp and a first previous location to a second timestamp and a current location, and determine a speed of travel based on the comparison.
11. The system of claim 9, wherein, to predict that the user will open a map application within a predetermined time period, the processor is configured to: compare a third timestamp and a third previous location to a fourth timestamp and the current location, and determine that the user has not moved within another time period based on the comparison.
12. The system of claim 8, wherein, the characteristics comprise a previously visited location, a previous search, a previous input corresponding to a selection of a link, a timestamp associated with the previous search, a current time of day, or one or more queries associated with other client devices within another time period.
13. The system of claim 12, wherein, the processor is further configured to identify that a correlation between one or more previous characteristics and one or more current characteristics exceeds a third threshold.
14. The system of claim 8, wherein, the processor is further configured to: receive a selection of the selected link by the user, and in response to receiving the selection of the selected link by the user, increase a prediction score associated with the selected link; and wherein the query prediction is proportional to the prediction score associated with the selected link.
15. A method for low latency provisioning of content, comprising: sending, by a client device, one or more signals indicative of a current location of the client device to a server; in response to a selection of a map application by a user, executing, by the client device, the map application; in response to executing the map application, sending, by the client device, one or more signals indicative of the selection of the map application to the server; prior to receiving an input query from a user of the client device, receiving, by the client device from the server, an identification of a link to a geographic location of an entity selected by the server after predicting that the user will open a map application within a predetermined time period and in response to determining that a query prediction exceeds a second threshold, wherein the determination that the query prediction exceeds the second threshold is determined by the server repeatedly predicting whether a user will open a map application within a predetermined time period until a map application prediction exceeds a first threshold and based on features of the client device and the current location of the client device, wherein the features of the client device are retrieved by the server from a database prior to receiving an input query from the map application of the client device; and displaying, by the client device within the map application, the link to the geographic location of the entity.
16. The method of claim 15, wherein, The features of the client device include a speed of movement of the client device.
17. The method of claim 15, wherein, The features of the client device include previously visited locations, previous searches, previous inputs corresponding to selections of links, or timestamps associated with the previous searches.
18. The method of claim 17, wherein, The query prediction is further based on a correlation between the features of the client device and one or more of the current location of the device and a current time of day.
19. The method of claim 15, wherein, The query prediction is further based on one or more queries associated with other client devices within a current time of day or another time period.
20. The method of claim 15, further comprising: receiving, by the client device via the map application, a selection of the received link by a user; and sending, by the client device to the server, an indication of the user selection, the server increasing a prediction score associated with the selected link; and wherein the query prediction is proportional to the prediction score associated with the selected link.
21. A method for low latency provisioning of content, comprising: sending, from a client device and to a server, one or more signals indicating a current location of the client device; prior to receiving a selection of a map application by a user, receiving, by the client device from the server, an identification of a link to a geographic location of an entity, wherein the identification of the link to the geographic location of the entity is selected by the server after predicting that the user will open a map application within a predetermined time period and in response to determining that a query prediction exceeds a second threshold, wherein the determination that the query prediction exceeds the second threshold is determined by the server repeatedly predicting whether a user will open a map application within a predetermined time period until a map application prediction exceeds a first threshold and based on features of the client device and the current location of the client device, wherein the features of the client device are retrieved by the server from a database prior to receiving an input query from the map application of the client device; in response to the selection of the map application by the user, executing, by the client device, the map application; and displaying, by the client device within the map application, the link to the geographic location of the entity.
22. The method of claim 21, wherein, The characteristics of the client device include a speed of movement of the client device.
23. The method of claim 21, wherein, The characteristics of the client device include previously visited locations, previous searches, previous inputs corresponding to selections of links, or timestamps associated with the previous searches.
24. The method of claim 23, wherein, The query prediction is further based on a correlation between the characteristics of the client device and one or more of a current location of the device and a current time of day.
25. The method of claim 21, wherein, The characteristics include previously visited locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with the previous searches, a current time of day, or one or more queries associated with other client devices within another time period.
26. The method of claim 25, wherein, Determining that the query prediction exceeds the threshold further includes identifying that a correlation between one or more previous characteristics and one or more current characteristics exceeds a third threshold.
27. The method of claim 21, further comprising: receiving a selection of the selected link by a user; and in response to receiving the selection of the selected link by the user, increasing a prediction score associated with the selected link; and wherein the query prediction is proportional to the prediction score associated with the selected link.
28. A method for low latency serving of content, comprising: receiving, by a server, one or more signals from a client device indicating a current location of the client device; retrieving, by the server from a database, characteristics of the client device prior to receiving an input query from a map application of the client device; generating, by the server, an identification set comprising the current location of the client device and the characteristics of the client device; determining, by the server, that a launch application state exceeds a first threshold, wherein the launch application state is a prediction of whether a user will open a map application within a predetermined time period; in response to determining that the launch application state exceeds the first threshold, predicting, by the server, a query using the identification set and determining that a query prediction exceeds a second threshold; in response to determining that the query prediction exceeds the second threshold, selecting a link to a geographic location of an entity associated with the query prediction; and sending the selected link to the client device prior to receiving an indication that a user selected the map application.
29. The method of claim 28, wherein, The identification set further comprises a previous location of the client device and a timestamp associated with the previous location and the current location.
30. The method of claim 28, further comprising: comparing a first timestamp and a first previous location to a second timestamp and a current location; and determining a speed of travel based on the comparison.
31. The method of claim 30, further comprising: comparing a third timestamp and a third previous location to a fourth timestamp and the current location; and determining that the user has not moved within a time period based on the comparison.
32. The method of claim 28, wherein, The characteristics include previously visited locations, previous searches, previous inputs corresponding to selections of links to geographic locations, timestamps associated with the previous searches, a current time of day, or one or more queries associated with other client devices within another time period.
33. The method of claim 32, wherein, Determining that the query prediction exceeds the threshold further comprises identifying a correlation between one or more previous features and one or more current features exceeds a third threshold.
34. The method of claim 28, further comprising: receiving a user selection of the selected link; and in response to receiving the user selection of the selected link, increasing a prediction score associated with the selected link; and wherein the query prediction is proportional to the prediction score associated with the selected link.
Citation Information
Patent Citations
Systems and Methods to Target Predictive Location Based Content and Track Conversions
US20080248815A1
Event extraction systems and methods
US20180349488A1
Providing context-relevant information to users
US9195703B1