Combine parameters of multiple search queries that share a common query line

By comparing the semantic similarity between the current and previous search queries, a combined search query is generated, which solves the inconvenience of users to manually maintain search queries and improves the relevance of search efficiency and results.

CN113468302BActive Publication Date: 2025-08-19GOOGLE LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202110713042.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-06-25
Filing Date
2021-06-25
Publication Date
2025-08-19
Estimated Expiration
2041-08-19

AI Technical Summary

Technical Problem

In the existing online search technology, users need to manually maintain the interactive elements of the search query, especially when using the voice interface, and the results of multiple queries are often repeated, lacking a state maintenance mechanism.

Method used

By comparing the semantic similarity of the current search query to the previous query, determining whether they share the query line, and generating a combined search query, including parameters from multiple queries, provides a state-maintaining mechanism.

Benefits of technology

It reduces the cumbersome operation of users to manually maintain search queries, reduces the possibility of duplicate results, and improves the relevance of search efficiency and results.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113468302B_ABST
    Figure CN113468302B_ABST
Patent Text Reader

Abstract

The present disclosure relates to combining parameters of multiple search queries that share a query line. Methods, systems, and computer-readable media are provided for generating a combined search query based on the search parameters of a user's current search query and the search parameters of one or more previously submitted search queries that the user has determined to have the same query line as the current search query. When two or more search queries are determined to be within a threshold semantic similarity to each other, the two or more search queries can be determined to share a query line. Once the shared query line has been identified and the combined search query has been generated, the user can interact with the search parameters and / or search results to update the search parameters of the combined search query.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to combining parameters of multiple search queries that share a line of inquiry. Background Art

[0002] Individuals (also referred to herein as "users") typically conduct online research by submitting multiple search queries that gradually narrow the search results to a manageable or desired level. However, these searches are typically "stateless" in that for a given query, the user is typically provided with the same results each time. Some search interfaces provide interactive elements that allow the user to add filters and other search parameters, and these parameters can be maintained across multiple search query submissions. However, the user must manually engage these interactive elements, which can be cumbersome or even impossible if the user is conducting his or her research using a voice interface. Summary of the Invention

[0003] This document describes embodiments for determining that multiple search queries are part of a shared query line and for formulating and submitting a combined search query that includes parameters from multiple search queries. As a result, a user can submit multiple search queries in a manner that at least maintains some state that binds the multiple queries together. For example, this can reduce the likelihood of presenting the same results to the user during different rounds of user exploration. It also saves the user from having to manually formulate their own ever-growing search query that captures all the search parameters that the user has entered during different rounds of the user's query line.

[0004] In some embodiments, two search queries can be compared to determine whether they are part of a shared query line, for example, based on whether they are semantically related. For example, both queries can be embedded in a latent space, and the distance between the embeddings can be determined as a proxy for semantic similarity. If the queries are semantically related / similar, parameters from both queries can be used to add "presence" to the user's query line, for example, by making a combined query that includes parameters from both queries. Thus, the user's latest search query has effectively been enhanced with parameters from a previous query, in some cases without the user being explicitly informed of this.

[0005] Additionally or alternatively, in some embodiments, heuristics and / or a "chaining" grammar can be used to determine whether two or more search queries are part of a shared query line. Suppose a user begins by searching for "Bluetooth earbuds." The user may be presented with responsive results, including a list of Bluetooth earbuds. However, the user may then say, "Actually, I need true wireless." In some embodiments, a chaining grammar can be provided to detect what will be referred to herein as a "backlinking phrase": "Actually, I need..." Detecting this backlinking phrase can be used as the rest of the user's utterance ("true wireless earbuds") should be used to strengthen the signal of the previous search query. Thus, a combined search query can be formulated to include the parameters "Bluetooth" (remembered from a previous search), "true wireless," and "earbuds" (also remembered from a previous search). The subsequent search results may include true wireless Bluetooth earbuds, which are earbuds without any wired connection between them.

[0006] In some embodiments, a user may be prompted to approve entry into a "stateful" exploration mode, e.g., in response to determining that the user has entered two or more search queries that appear to be part of a shared line of inquiry. If the user agrees, one or more of the user's previous search queries (such as their most recent search query), and / or subsequent search queries that appear to be part of the same line of inquiry (e.g., semantically similar, linked via link grammar or heuristics, etc.) may be used to make one or more combined search queries, each of which includes search parameters from multiple past search queries. In some embodiments, the user may be informed of their combined search query, e.g., with an optional list of currently applicable search parameters. In some embodiments, the user may be able to add additional parameters by interacting with elements of the search results. For example, a user may strikethrough a word or phrase of a search result to apply a filter that excludes other results that match the struckthrough word or phrase.

[0007] The present specification is directed to methods, systems, and computer-readable media (transitory and non-transitory) related to comparing a current search query to a previous search query, determining based on the comparison that the current search query and the previous search query are related to a shared query line, formulating a combined search query to include at least one search parameter from each of the current search query and the previous search query based on the determination, and submitting the combined search query to search one or more databases based on the combined search query.

[0008] In some embodiments, comparing search queries includes determining a measure of semantic similarity between the current search query and a previous search query. In some embodiments, comparing search queries includes determining a distance in a latent space between a first embedding generated by the current search query and a second embedding generated by the previous search query. In some embodiments, comparing search queries includes applying one or more grammars to the current search query to identify one or more relate-back terms in the current search query.

[0009] In some embodiments, in response to determining that the current search query and the previous search query share an inquiry line, a prompt is provided to the user to entice the user to enter a state-maintaining search mode. In such embodiments, a combined query can be made based on receiving user input in response to the prompt.

[0010] In some embodiments, the search parameters may be provided to the user as part of a graphical user interface ("GUI") presented in the form of a list of active search parameters, including at least one search parameter from each of the current search query and previous search queries. In some embodiments, the GUI may be interactive and provide one or more interactive tokens responsive to the search results of the combined search query, and an updated combined search query may be made based on the one or more tokens. In some of these embodiments, the user may interact with the interactive GUI by providing a strikethrough to one or more tokens. In these embodiments, an updated combined search query may be made to exclude search results that match the one or more tokens. In some embodiments, a similarity function for determining whether queries are part of the same line of inquiry may be trained based on detected user interactions with the one or more tokens.

[0011] In some embodiments, the current search query and the previous search query may be input into one or more computing devices in a computing device coordination ecosystem. In some embodiments, the current search query and the previous search query may be input by the same user. In some embodiments, the current search query and the previous search query may be input by multiple users associated with a shared exploration session identifier. In some embodiments, the method may further include searching a database for one or more historical search queries that are semantically related to the current search query, wherein the previous search query is selected from the one or more historical search queries. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] Figure 1A and Figure 1B An exemplary ecosystem of communicatively coupled computing devices is illustrated that enables interaction between a user and a virtual assistant at least via the ecosystem of communicatively coupled devices, in accordance with implementations described herein.

[0013] Figure 2 An exemplary environment is illustrated in which selected aspects of the present disclosure may be implemented.

[0014] Figure 3A and Figure 3B Illustrated is a computing device including one or more microphones according to embodiments described herein, and illustrates a method for performing a computer program in a manner such as Figure 2 An exemplary method for using a "reverse-dependency" grammar model to identify shared query lines in a voice-enabled search system of the present invention.

[0015] Figure 4 is a flow chart illustrating an exemplary method 400 according to embodiments disclosed herein.

[0016] Figure 5 is a block diagram of an exemplary computing device 510 that can optionally be used to perform one or more aspects of the techniques described herein. DETAILED DESCRIPTION

[0017] As previously described, embodiments are described herein for determining that multiple search queries are part of a shared query line and for formulating and submitting a combined search query that includes parameters from multiple search queries. In some (but not all) embodiments, a human can perform this "stateful" search as described herein by participating in a human-computer dialogue using an interactive software application referred to herein as a "virtual assistant" (also referred to as an "automated assistant," "chatbot," "interactive personal assistant," "intelligent personal assistant," "assistant application," "conversational agent," etc.). For example, a human (also referred to as a "user" when interacting with a virtual assistant) can provide commands and / or requests to the virtual assistant using verbal free-form natural language input (i.e., utterances) and / or by providing textual (e.g., typed) free-form natural language input, which can in some cases be converted to text using speech recognition processing and then processed. The virtual assistant responds to the request by providing a responsive user interface output, which can include auditory and / or visual user interface output. As used herein, free-form natural language input is input made by a user and is not limited to input that presents a group of options for the user to select.

[0018] In some cases, the virtual assistant may analyze the user's free-form natural language input using various types of processing, such as speech recognition processing (if the input is spoken), natural language processing (e.g., coreference resolution, entity tagging, part-of-speech annotation, etc.), syntactic processing, and / or semantic processing. As a result of these different types of processing, in some cases, the virtual assistant may identify the user's intent (e.g., "perform a search," "request the weather," "retrieve information," "operate an appliance," "order food," etc.) and any user-provided parameters that will be used to resolve the user's intent. As an example, an utterance such as "turn the front porch light green" may generate an intent of "modify light output" with parameters of "front porch" and "green." Once the virtual assistant has determined the intent and parameters (if applicable), the virtual assistant may resolve the intent by performing various responsive actions, such as causing the light designated as the "front porch" light to illuminate green.

[0019] The virtual assistant may perform various forms of semantic processing to achieve various goals, such as allowing a user to perform a "stateful" search as described herein. For example, the virtual assistant may perform semantic processing on a user's free-form natural language input to identify keywords to use when generating queries based on the user's input. In some embodiments, semantic processing may be used to identify when two or more search queries issued include a shared query line by monitoring queries submitted by a user over time for a threshold semantic similarity. When the virtual assistant generates a search query and performs a search, the virtual assistant may provide information responsive to the search query as audio and / or visual output at the client computing device and / or one or more additional computing devices.

[0020] The virtual assistant may be configured to access or retrieve one or more previously submitted search queries that were most recently submitted by the user each time a current search query is received from the user via a user interface input, in order to perform a semantic similarity analysis between the previous search queries and the current search query. When the virtual assistant identifies that the current search query and a given previously submitted search query share a threshold semantic similarity, the virtual assistant may be configured to determine that the two search queries share a single query line. In some embodiments, the virtual assistant may be configured to first compare the most recently previously submitted search query with the current search query. If it is determined that the most recently previously submitted search query shares a query line with the current search query, the virtual assistant may compare the current search query with the next most recently submitted previous search query. This process may be repeated until the virtual assistant determines that the next most recently previously submitted search query does not share a query line with the current search query, or until a certain number of most recently previously submitted search queries are determined to share a query line with the current search query.

[0021] Other variations are contemplated. For example, queries that are not received in sequence (e.g., with intervening queries between them) may still be determined to be part of the same line of inquiry if they are semantically related enough. In some embodiments, the fact that two queries are received consecutively and / or within a certain time interval of each other (e.g., during the same conversation session) may be used as another signal to indicate whether the queries are part of the same shared line of inquiry. For example, two queries that otherwise have a moderate semantic similarity measure to each other may still be considered to be part of the same line of inquiry because they are received consecutively, or at least within a time interval of each other. In other words, the fact that the queries are received consecutively may be used as a signal to increase the likelihood that they are considered to be part of the same line of inquiry. On the other hand, if those two queries are received at different times, and / or there are a certain number of intervening queries in between, a moderate measure of semantic similarity alone may not be sufficient to classify the queries as part of the same line of inquiry. In some embodiments, the number of intervening queries (or conversation turns with the virtual assistant) between two queries may be inversely correlated with the likelihood that the two queries can be considered to be part of the same line of inquiry.

[0022] The virtual assistant may be further configured to perform selected aspects of the present disclosure to generate a combined search query that includes at least one search parameter from the current search query and at least one search parameter from each of the most recently previously submitted queries determined to share a line of inquiry with the current search query.

[0023] As used herein, a "search parameter" refers to one or more terms and / or any associated modifiers of a term in a given query. For example, if a user previously submitted the search query "Female presidential candidates NOT Elizabeth Warren," it can be determined that the term "Elizabeth Warren" is modified by "NOT." Thus, the search parameters derived from the previously submitted search query "Female presidential candidates NOT Elizabeth Warren" and subsequently used to form a combined search query, along with one or more search parameters of the current search query, can be "NOT Elizabeth Warren." The resulting combined search query can then be used to identify one or more resources that include the term "NOTE Elizabeth Warren," exclude the term "Elizabeth Warren" if it otherwise appears, or include or reference the term "Elizabeth Warren" only in certain contexts (e.g., contexts where it can be inferred that the exclusion of "Elizabeth Warren" from a group is being discussed).

[0024] In addition, in some embodiments, the search parameters can be mandatory, optional, weighted, or unweighted, and can also be used to rank search results after resources are obtained in response to the combined query. The mandatory / optional and weighted / unweighted designations can be determined by the virtual assistant based on a variety of factors, such as the semantic similarity of the query terms corresponding to the search parameters, the semantic similarity of the queries from which the search parameters are derived, the frequency with which multiple users submit the search parameters to the virtual assistant or a search system associated with the virtual assistant, and / or one or more relationships indicated by a knowledge graph containing entities referenced in one or more queries used in generating the combined search query. Thereafter, search results including the term "Elizabeth Warren" may be demoted or completely excluded from the search results presentation page, search results including the term "notElizabeth Warren" may be promoted in the search results presentation page, or search results referencing "Elizabeth Warren" may be included, excluded, promoted, or demoted based on the inferred context surrounding the inclusion of the term "Elizabeth Warren" in the search results.

[0025] Figures 1A-1BAn exemplary ecosystem of communicatively coupled computing devices 101, 103 is illustrated, according to embodiments described herein, that enables interaction between a user 100 and a virtual assistant, at least via the ecosystem of communicatively coupled computing devices 101, 103. The ecosystem of communicatively coupled computing devices 101, 103 includes at least one computing device 101 including one or more microphones and one or more speakers, and at least one computing device 103 including a display. The display screen of the exemplary computing device 103 is displaying an example of a search query 104A determined from a user utterance 180C and search results 106A, 108A, 110A, and 112A determined in response to the search query 104A. One or more aspects of the virtual assistant can be implemented on the computing devices 101, 103 and / or one or more computing devices in network communication with the computing devices 101, 103.

[0026] Figure 1A The example of illustrates a series of searches performed by the virtual assistant before the virtual assistant determines that a shared line of inquiry exists. Figure 1A In FIG, user 100 has previously submitted search queries for “unlimited cellphone data plans,” “phone trade-in credit,” and “refurbished cell phone” at 180A, 180B, and 180C. In response to receiving each of user interface inputs 180A, 180B, and 180C, the virtual assistant has obtained resources responsive to the search queries and provided them as search results at 182A, 182B, and 182C. In some implementations, the virtual assistant can read all or part of the search results aloud. Figure 1A and 1B In the illustrated embodiment, the virtual assistant provides audible confirmation that the search has been performed at 182A, 182B, and 182C, but the search results are provided to the user via the communicatively coupled computing device 103. For the exemplary query "refurbished cellphone" 104A, exemplary search results 106A, 108A, 110A, and 112A rendered by computing device 103 are shown in FIG. Figure 1A , which may also be provided along with the output of the virtual assistant for presentation to user 100 along with search results 106A, 108A, 110A, and 112A.

[0027] Now go to 1B, the dialogue turn is similar to Figure 1A, except that in the user interface input at 180C, the user 100 now asks a question that is clearly semantically unrelated to the current query line: “Today’s weather forecast.” The virtual assistant responds: “Partially cloudy, high of 82.” Because this question and its response are semantically different from the previous search, the embedding generated by this question / response is likely far from the embedding generated by the previous search query in the latent space. Therefore, this question / response is unlikely to be considered part of the same query line.

[0028] Next, at 180D, user 100 proposes Figure 1A The virtual assistant processes the same question posed at 180C of the exemplary computing device 101, “Search the web for 'refurbished cell phone'”. The virtual assistant can determine that the user interface input at 180D is a current search query that has at least a threshold similarity to the previously submitted search query determined by user interface inputs 180A and 180B, but not 180C. At 180E, the user provides voice input at one or more microphones of the exemplary computing device 101, “Search the web for 'cell phone deals with new plan'”. The virtual assistant can process the voice input and determine that the user 100 intended to perform a search using the search string “cell phone deals with new plan”.

[0029] The virtual assistant can then compare the current search query with the most recently previously submitted search query "refurbishedcell phone" and determine that they are semantically similar enough to be identified as a shared query line. The virtual assistant can additionally or alternatively compare the current search query with one or more previously submitted search queries and determine whether they also share a shared query line with the current search query. This can continue until, for example, the virtual assistant has determined that all search queries generated by the virtual assistant based on user voice input received at 180A, 180B, and 180D share a shared query line with the current search query (180E).

[0030] After the virtual assistant has identified all or a maximum number of the most recently previously submitted search queries that share a query line with the current search query, the virtual assistant can generate a combined search query 104B based on search parameters 105B, 107B, and 109B that determine a combined query for each of the current search query and the most recently previously submitted queries from the shared query line. Figure 1B In the example embodiment, the virtual assistant has generated “mandatory [search] parameters” 105B as “cell phone”, “unlimited data”, and “new plan”, “optional [search] parameters [of] high importance” 107B as “trade-in credit”, and “optional [search] parameters [of] low importance” 109B as “refurbished” and “new phone”. In other embodiments, the parameters may be less than Figure 1B For example, a user might only see the combined or "running" search query string (or list of search parameters): <"cell phone","new plan","unlimited data","trade-in credit","refurbished",and"New Phone">.

[0031] After generating combined search query 104B, the virtual assistant searches one or more search databases based on combined search query 104B, identifies resources responsive to combined search query 104B, ranks them, and provides them as search results 106B, 108B, and 110B to user 110 via a display of example computing device 103. As described above, search results 106B, 108B, and 110B may additionally or alternatively be provided in whole or in part in audio form via one or more speakers in example computing device 101.

[0032] The virtual assistant may provide the user with a visual 104B and / or audio 182D representation of executing a query based on the combined search query 104B rather than the current search query, i.e., “cell phone deals with new plan.” The virtual assistant may additionally provide a visual 104B or audio representation of the search parameters 105B, 107B, and 109B via a display of exemplary computing device 103 or one or more speakers of exemplary computing device 101.

[0033] In some examples, search parameters 105B, 107B, and 109B may be provided in the form of interactive “tags” with which a user may interact via user input (such as voice input received by exemplary device 101 and / or touch input received by a touch screen display of exemplary device 103).

[0034] For example, in Figure 1B, it can be seen that the user 100 provides a "touch-swipe" action 111B corresponding to a "strikethrough" action on the optional graphical "marker" corresponding to the search parameter "new phone" 113B. Such a "strikethrough" action can be used to completely remove the search parameter "new phone" 113B from the combined search query. Alternatively, such an action can be used to change the search parameter "new phone" 113B to a search parameter modified by the Boolean operator "NOT", so that "NOT newphone" would be the modified search parameter. The user 100 can additionally drag the search parameters 105B, 107B and 109B into various mandatory / optional designation categories or provide a "right click", "long press", "double click" or similar touch input to open an edit menu for the search parameters.

[0035] In some embodiments, the user 100 can provide voice commands such as "remove", "combine with or", etc. to perform the same or similar actions on the search parameters as the touch input, as described below with reference to Figure 2 Additionally or alternatively, in some embodiments, the user may interact with one or more markers of the displayed search results 106B, 108B, 110B to modify the combined search, for example, by striking through terms that should be excluded from the next round of search results.

[0036] In some embodiments, the user may be able to strikethrough (or slide away, etc.) an entire search result to exclude it from consideration. In some such embodiments, the difference between the eliminated search results and the remaining search results can be determined and used to infer constraints on subsequent combined search queries. For example, a set of topics can be identified from each search result and compared with similar sets identified for other search results. Topics unique to the eliminated search results can be inferred and used to limit subsequent combined search queries to exclude those terms. For example, suppose a user eliminates individual search results related to "amateur" basketball from a list of search results that would otherwise all be related to "professional" basketball. Although the user did not explicitly delete the word "amateur," this can still be inferred based on a comparison between the eliminated search results and the remaining search results.

[0037] Although Figure 1AThe example of -B depicts a single user 100 participating in a single session with a virtual assistant and is not meant to be limiting. As will be described in more detail below, the techniques described herein can be implemented outside the context of a virtual assistant, for example, as part of a user exploration session conducted using a conventional web browser. Furthermore, there is no requirement that a query be part of the same session (e.g., with a virtual assistant, with a web browser, etc.) in order to be considered for inclusion in the same query line. As noted elsewhere herein, historical search queries (and / or their results) across multiple different sessions and / or across multiple different users can be analyzed for membership in a shared query line and / or used to extract parameters for inclusion in a combined search query.

[0038] Figure 2 An exemplary environment is illustrated in which a combined search query may be generated based on search parameters of a current search query and search parameters of a most recently submitted search query determined to belong to the same query line as the current search query.

[0039] The exemplary environment includes one or more user interface input devices 202, one or more user interface output devices 204, and a search system 212. Although Figure 2 204, but in some embodiments, all or aspects of the search system 212 may be implemented on a computing device that also includes the user interface input device 202 and / or the user interface output device 204. For example, all or aspects of the presentation engine 232 and / or the query processing engine 222 of the search system 212 may be implemented on a computing device. In some embodiments, all or aspects of the search system 212 may be implemented on a computing device that is separate and remote from the computing device that includes the user interface input device 202 and / or the user interface output device 204 (e.g., all or aspects may be implemented "in the cloud"). In some of those embodiments, those aspects of the search system 212 may communicate with the computing device via one or more networks, such as a local area network (LAN) and / or a wide area network (WAN) (e.g., the Internet). In some embodiments, one or more aspects of the search system 212 and the user interface input / output devices 202, 204 may be implemented or assisted by a virtual assistant or a component of a virtual assistant. For example, in some implementations, the query processing engine 222 may be a component of the previously described virtual assistant.

[0040] The user interface input device 202 may include, for example, a physical keyboard, a touch screen, a visual sensor (such as a digital camera, an accelerometer (e.g., to capture gestures), a fingerprint sensor, a radar sensor (e.g., to visually detect gestures), and / or a microphone, to name a few. The user interface output device 204 may include, for example, a display screen, a tactile feedback device, and / or a speaker. The user interface input and output devices 202, 204 may be integrated on one or more computing devices of the user. For example, the user's mobile phone may include the user interface input and output devices 202, 204; or a stand-alone personal virtual assistant hardware device may include the user interface input and output devices 202, 204; or a first computing device may include the user interface input device 202 and a separate computing device may include the user interface output device 204, etc.; a "stand-alone personal virtual assistant hardware device" may be a device that is primarily or specifically designed to allow a user to interact with the virtual assistant using free-form natural language input. These may take various forms, such as a stand-alone "smart" speaker, a smart display, etc.

[0041] like Figure 2 As shown, a user provides a search query to a search system 212 via a user interface input device 202. The search system 212 provides a response output for presentation to the user via a user interface output device 204. Each search query is a request for information. The search query may be, for example, in text form and / or in other forms, such as audio form and / or image form. For example, in some embodiments, the user interface input device 202 may include a keyboard that generates text input in response to user interface input directed to the keyboard. Also, for example, in some embodiments, the user interface input device 202 may include a microphone. In some such cases, a speech recognition module that is local to the search system 212 or that can communicate with the search system 212 may convert the audio speech input received at the microphone into text input. The text input may then be provided to the search system 212. For simplicity, the input is presented in Figure 2 204. In the embodiment of the present invention, the user interface input device 202 is shown as being provided directly to the search system 212 by the user interface input device 202, and the output is shown as being provided directly to the user interface output device 204 by the search system 212. However, it should be noted that in various embodiments, one or more intermediate software and / or hardware components may be inserted between the search system 212 and the user interface input and / or output devices 202, 204, and may optionally process the input and / or output. Thus, in some embodiments, a user may communicate with all or aspects of the search system 212 using multiple client computing devices that together form a coordinated "ecosystem" of computing devices.

[0042] The search system 212 may additionally include the query processing engine 222 described above, the search engine 242 described above, a ranking engine 252, and a presentation engine 232. In some implementations, one or more of the engines 222, 242, 252, and / or 232 may be omitted, combined, and / or implemented in a component separate from the search system 212. For example, one or more of the engines 222, 242, 252, and / or 232, or any operational portion thereof, may be implemented in a component executed by a client computing device that includes the user interface input and / or output devices 202 and 204 and is separate from the search system 212. Furthermore, for example, the search engine 242 and / or the ranking engine 252 may be implemented in whole or in part by a system separate from the search system 212 (e.g., a separate search system in communication with the search system 212).

[0043] The query processing engine 222 processes input received by the search system 212, including search queries. In some implementations, the query processing engine 222 can use natural language processing techniques to generate annotated output based on the input. For example, the query processing engine 222 can process natural language free-form text input generated based on user interface input generated by a user via the user interface input device 202. The generated annotated output includes one or more annotations of the text input and, optionally, one or more (e.g., all) terms of the text input.

[0044] The query processing engine 222 may perform other natural language processing tasks, such as identifying and annotating various types of grammatical information and references to entities included in the text input. For example, the query processing engine 222 may include a part-of-speech tagger, a relevance parser, and an entity tagger, as described above with reference to Figures 1A-1B The entity tagger may be able to use the content of the natural language text input to resolve specific entities and / or may optionally communicate with a knowledge graph or other entity database to resolve specific entities. The query processing engine 222 may also use relevant prior input and / or other relevant data beyond the specific text input to resolve one or more entity references. For example, the user's first query in a conversation with the search system 212 may be "presidential debates", and the user's subsequent query may be "when is the next one". When processing "when is the next one", the coreference resolver may use the prior input "presidential debates" to resolve "one" to "presidentialdebates".

[0045] The query processing engine 222 can be further configured to monitor the search query derived from the text input and the annotations for semantic similarity with one or more previously submitted search queries to determine when two or more search queries submitted by the user include a shared query line. As previously described, in some embodiments, the fact that two queries are received consecutively may increase the likelihood that they are considered part of the same shared query line.

[0046] In some embodiments, the system will monitor only search queries submitted by the same user based on, for example, IP address, sensor data from user interface input devices, browser metadata, and user account login data, as indicated by the search system 212 and the historical query database 285. In systems where input can be provided in the form of voice input, it can be determined that the search queries are submitted by the same user based on the user's voice recognition profile local to or accessible to the search system 212 and / or the historical query database 285.

[0047] In some embodiments, search queries and input from multiple users may be used to determine the existence of a shared query line or to create an updated combined search query. For example, one or more users may provide input indicating another user's participation in a search and / or may provide a shared exploration session identifier that may allow any user with the session identifier and, optionally, some kind of authorization credentials, to participate in or modify the combined query generation process. In some embodiments, only a particular user's previous search queries will be used in determining the existence of a shared query line, but thereafter anyone with the necessary session identifier and credentials may modify the search parameters for their own independent branched query line or for a shared exploration session query line shared between them and a particular user. In other embodiments, when a new user joins a shared exploration session by providing their session identifier and authorization credentials, a certain number of their own recently submitted previous search queries may be compared to the current combined search query and, if semantically similar enough, used in generating new search parameters or modifying existing parameters.

[0048] In some implementations, determining semantic similarity can be accomplished by embedding one or more of the user's N most recently previously submitted search queries and the current search query in a latent space and via the query processing engine 222 or another component in communication with the query processing engine 222. The query processing engine 222 can then determine a distance between each embedding associated with the most recently previously submitted search query and the embedding associated with the current search query. This distance between the embeddings can then be used as a proxy for semantic similarity, with smaller distances indicating greater semantic similarity between the terms represented by the embeddings and larger distances indicating less semantic similarity between the terms.

[0049] In some embodiments, semantic similarity can be determined by a semantic similarity machine learning model that is trained on historical query data for a plurality of users stored in one or more historical query databases 285. The historical query data may include an indication of search parameters submitted to the search system 212 or another search system associated with the one or more historical query databases 285, and / or an indication of one or more top-ranked search results that were determined to be responsive to those search parameters when a search was previously performed based on the search parameters. The semantic similarity machine learning model can be trained to take inputs that include one or more top-ranked search results from a previous search and / or an indication of previous search parameters for the previous search, and provide as output one or more indications of semantic similarity between the current search parameters and the results or parameters of the previous search.

[0050] Thus, embodiments described herein provide for determining that a user's previously submitted search query shares a query line with a current search query based on previous search terms being semantically similar to the current search term and / or based on content of previous search results being semantically similar to the current search term.

[0051] To analyze a search query issued by a user, the query processing engine 222 may access one or more historical query databases 285 associated with the user, and optionally, one or more additional users of the search system 212 or additional search systems associated with the search system 212. In some embodiments, the historical query database 285 may provide the query processing engine 222 with previously submitted search queries in audio, text, annotated, or unannotated form, and the query processing engine 222 may process the previously submitted search queries to generate annotated textual representations of the queries before converting them into embeddings in a latent space or providing them as input to a semantic similarity machine learning model. In some embodiments, the historical query database 285 may store previously submitted search queries as latent space embeddings or in a form that is easily convertible to latent space embeddings. In some embodiments, the historical query database 285 may additionally or alternatively store voice recordings corresponding to user interface inputs received by the search system 212 and / or one or more user interface input devices 202.

[0052] In some embodiments, the query processing engine 222 can access or retrieve one or more recently previously submitted search queries stored in the historical query database 285 each time a current search query is received from the user via the user interface input device 202 to perform a comparison between the previous search query and the current search query. In some embodiments, recently submitted previous search queries that are determined to be within a threshold semantic similarity or within a threshold distance in the embedding space can be grouped together in the historical query database 285, and the query processing engine 222 can then retrieve the entire group or the most recent ones of the group.

[0053] In other embodiments, the query processing engine 222 may compare or retrieve and then compare only a single most recently submitted previous search query with the current search query, and then only if the single most recently submitted previous search query is determined to share a query line with the current search query, the query processing engine compares the current search query with the next most recently submitted previous search query. This process may be repeated until the query processing engine 222 determines that a previously submitted search query does not share a query line with the current search query, or until a maximum number of previously submitted search queries are determined to share a query line with the current search query.

[0054] In some embodiments, the maximum number of previously submitted search queries used in determining the search parameters can be changed based on the similarity determined between the current and previous search parameters. In some embodiments, the maximum number of previous search queries can be dynamically calculated after each search query comparison. The maximum number of previous queries used in generating the search parameters can be determined based on the average or median distance between (a) the next most recently submitted previous search query that has not yet been compared and (b) the combined embedding representing the current search query and all previous search queries that have been determined to share a query line. Additionally or alternatively, the maximum number of previous queries can be changed based on the last distance determined between the embeddings of (a) the current search query and (b) the previously submitted search query. Thus, the maximum number of previously submitted search queries used in generating the search parameters can be increased or decreased based on these numbers, which indicate an overall trend or recent trend of more or less semantic relevance between subsequent comparisons.

[0055] Additionally or alternatively, in some embodiments, heuristics and / or "linking" grammar models may be used to determine whether two or more search queries are part of a shared query line. For example, a user may issue a first search query for "Chris Evans" and be presented with results responsive to a search that may, for example, be related to "Chris Evans," a famous American actor known for starring in superhero movies. The user may then provide input such as "Actually, I meant the English guy," where "Chris Evans" is also the name of a popular talk show host from the United Kingdom. Thereafter, the query processing engine 222 may determine that the phrase "Actually, I meant..." is intended to "link" the phrase "the English guy" to a recently previously submitted search query. The query processing engine 222 may then process the term "the English guy" to determine which search parameters to use to modify the current search query for "Chris Evans." For example, the query processing engine 222 may determine that "English" is an adjective that modifies the noun "guy," and that the noun "guy" can be resolved to refer to "Chris Evans" and is therefore redundant. Therefore, the query processing engine 222 may determine that the search query "Chris Evans" should be modified by the search parameter "English."

[0056] When the query processing engine 222 determines that a given previously submitted search query has the same query line as the current search query, the query processing engine 222 can generate a combined search query that includes at least one search parameter from the current search query and at least one search parameter from the given most recently submitted previous search query. Generating the combined search query can occur automatically, or in some implementations, the user can be prompted to enter a "state-maintaining search mode" or "stateful" session, in which the submitted search query will continue to be modified based on the tracked "state" of the query line until the user exits the "mode" or, in some cases, until a search query with less than a threshold similarity to the previous search query is submitted. In other cases, the "state-maintaining search mode" can continue until a user input is recognized that constitutes an "interruption" of the "state-maintaining search mode," such as switching applications or failing to interact with the search system 212 within a threshold period of time.

[0057] In some implementations, the "state" of searches during the "state-maintaining search mode" can be recalculated for each round, such that a newly updated combined search query can only include at least one parameter from a previous combined search query. In other implementations, the "state" can be calculated for the session as a whole, such that the overall session combined search query includes at least one search parameter from each of the previously submitted search queries determined to be relevant to the session's shared query line.

[0058] Once the search parameters are determined, the query processing engine 222 can provide data describing the search parameters to the search engine 242. As discussed above, the search parameters can be used in various ways by the search engine 242 during the execution of a search of one or more search databases 275. The search engine 242 can view the search parameters as mandatory, optional, unweighted, or weighted search terms, or as filters designed to include or exclude results that mention certain terms or mention certain terms in certain identified contexts of resources associated with the search results. Thus, the search parameters of the combined search query ultimately used to perform the search of the search database(s) 275 can include more, fewer, or different parameters and terms than the parameters of the current search query submitted by the user to the search system 212.

[0059] Once the search engine 242 generates the results of the search of the search database 275 performed based on the combined search query, the results are provided to the ranking engine 252. The ranking engine 252 can rank the search results based on the relevance of the resources associated with the results to the search parameters of the combined search query. When applicable, the ranking engine 252 can be configured to consider any weights assigned to the search parameters when ranking the search results. The ranking engine 252 can also be configured to rank the results so that the highest-ranked result group contains a certain amount of diversity, regardless of whether it is a diversity of resource types, a diversity of resource content, or a diversity of search parameters to which the resources are determined to be responsive.

[0060] The ranked search results are then provided to the presentation engine 232. The presentation engine 232 provides the ranked search results responsive to the combined search query to one or more user interface output devices 204 for presentation to the user in various audible and / or visible output formats. For example, in some implementations, the search system 212 can be implemented as or communicate with a virtual assistant that participates in an audible conversation with the user. In such implementations, the search system 212 can receive a current search query from the user during a conversational session with the virtual assistant and can provide one or more of the ranked search results as part of the conversation in response to receiving the current search query.

[0061] In some implementations, the presentation engine 232 also provides an indication of the search parameters of the combined search query along with the ranked search results to one or more user interface output devices 204. For example, the search system 212 can receive a current search query from a user via touch input from an on-screen keyboard of a mobile device and can provide a search results page via the user interface output device 204 that includes one or more ranked search results and a visual representation of the search parameters of the combined search query used in the search.

[0062] In some implementations, a user can interact with the search parameters of the combined query via one or more of the user interface input devices 202. For example, a user can tap on the screen or provide a spoken command via the microphone of the user interface input device 202 indicating that they desire to have the search parameters of the combined search query removed, replaced, supplemented, modified, or weighted differently. This can include, for example, the user providing a "strikethrough" input on a graphical "marker" element representing a search parameter to remove the search parameter or modify the search parameter such that the modified search parameter is "not [search parameter]."

[0063] As another example, a user may drag a graphical “tag” element up or down in a visual list of search parameters to modify the weighting of the search parameters in the search or drag one graphical “tag” element over another graphical “tag” element to create an aggregate or Boolean search parameter, such as “[search parameter 1] AND [search parameter 2]”. As yet another example, a user may tap on a graphical “tag” element one or more times to cycle through the visual representations of how the search parameters may be used (e.g., tap once to strikethrough, tap twice to bold or italicize to indicate higher / lower weighting of the parameters, etc.). Additionally, the user may be able to provide some touch input, such as a “double tap” or a “long tap”, to bring up a search parameter edit box, where search parameter text may be added or modified via a touch screen, a mouse input device, or a keyboard input device.

[0064] The user may also be able to add search parameters that have not yet been indicated by the output via the user interface input device 202. For example, the user may select a graphical "marker" element with touch input to access an edit menu for search parameters, and type new search parameters to be added to the search via a text input element that appears in response to selecting the edit graphical "marker" element.

[0065] In some implementations, the user may also be able to speak voice commands such as “remove [search parameter],” “weight [search parameter 1] less than [search parameter 2],” and “[search parameter 1] but NOT [search parameter 2],” which may result in forming a combined search parameter of “[search parameter 1] NOT [search parameter 2].” As another example, the user may speak the command “add [search parameter X] to my search” to add a search parameter “[search parameter X]” that was not previously included in the combined search query or indicated in the user interface output.

[0066] When a user provides input to the user interface input device 202 to modify the search parameters of the combined search query, the query processing engine 222 processes the input indication to determine which modifications to make to one or more search parameters. For example, in some implementations, the query processing engine 222 may determine that the input corresponding to a sliding action on a given graphical "marker" element indicates a strikethrough or removal modification of the underlying search parameters. In some voice-enabled implementations, heuristics and / or a "linked" grammar model may be used to determine which modifications should be made. For example, the query processing engine 222 may determine that the user input corresponding to the phrase "actually, take that off" indicates the removal of a recently added search parameter.

[0067] Additionally or alternatively, in some implementations, comparisons of embeddings in a latent space and / or by a semantic similarity machine learning model can be used when determining which modifications to make to the search parameters of a combined query. For example, one or more candidate modifications for a given search parameter or group of search parameters can be determined, and candidate modifications that generate a new combined search query that has a greater or lesser semantic similarity to the old combined search query and / or to the search results determined to be responsive to the old combined search query. Thus, in some implementations, initially, the search system 212 can select those previously submitted previous search queries that have search parameters or results that indicate a very high degree of semantic similarity to the current query used to create the initial combined search query. Thereafter, the search system 212 can select the determined search parameters based on those semantically similar previously submitted search queries that have the lowest degree of similarity to the parameters included in the current query.

[0068] In other implementations, the desired semantic similarity between the newly selected search parameters and the search parameters of the current query may vary based on the semantic similarity of the search query used to determine the current search parameters of the current search query. For example, when the average similarity between the queries used in generating the current search parameters appears to be low, new search parameters corresponding to a higher semantic similarity may be desired, but when the average similarity between the queries used in generating the current search parameters appears to be high, new search parameters corresponding to a lower semantic similarity may be desired.

[0069] In some implementations, the presentation engine 232 may additionally determine one or more search result graphical “tag” elements, in the form of selectable graphical or audio elements, to be provided along with the search results in a graphical user interface (“GUI”) of the user interface output device 204. These search result graphical “tags” may allow a user to directly interact with the search results and current search parameters. In some implementations, the search result “tag” provided in a graphical or audio element adjacent to, immediately following, or included in the search result indication may include suggested search parameters based on the current search parameters and determined according to the content of the resource associated with that result determined to be relevant to those current search parameters.

[0070] Suggested search parameters may be determined by the presentation engine 232, by the query processing engine 222, and / or by one or more other components of the search system 212. For example, a user may be presented with suggestions for search parameters, such as "Include: [search parameter 1]" or "Important: [search parameter 1]." When the user selects these tags, "[search parameter 1]" may be added as a new search parameter, or it may be toggled between optional / mandatory or re-weighted as more / less important. Once the user selects a "tag," an updated combined query is determined by the query processing engine 222 for use in performing an updated search of one or more search databases 275. One or more of the suggested search parameters may be determined as described above with respect to determining search parameter modifications, e.g., the suggested search parameters may be selected based on the terms of the suggested search parameters, the terms of a previously submitted query to which the suggested search parameters are associated, or the semantic similarity of the content of the resources responsive to the associated previously submitted query to the terms of the current combined query.

[0071] In some implementations, an optional uniform resource locator ("URL") link provided along with the search results may also be a "tag." In those implementations, when a user selects a URL link corresponding to a particular search result, the presentation engine 232, the query processing engine 222, and / or one or more other components of the search system 212 may determine one or more modifications to be automatically made to the current search parameters based on the current search parameters and in accordance with the content of the resource determined to be relevant to those current search parameters. One or more terms describing content from a resource may be determined to be relevant to the current search parameters based on their frequency of occurrence, their location within the content of the resource, their relative location within the content of the resource when compared to the location of other recurring or important terms or search parameters, and their appearance in the text (including font, size, and alignment). For example, a term found in a heading at the top of an article, that is bolded, or that is repeated within a certain number of words of the current search parameters may be determined to be relevant to the current search parameters.

[0072] After determining the search parameter modifications, the combined search query will be automatically updated by the query processing engine 222 based on the determined modifications and provided to the search engine 242 for performing an updated search of one or more search databases 275, optionally after first prompting the user to submit the newly updated combined search query or otherwise indicating that they have completed modifying the search parameters.

[0073] In some implementations, similarity learning can be employed to train a similarity function, such as a machine learning model that is used to determine semantic similarity between queries—for example, by embedding those queries into a latent space—based on feedback from the user while the user is in a stateful search session. In some implementations, such a machine learning model can take the form of, for example, the encoder portion of an encoder-decoder network, a support vector machine, or the like. As a non-limiting example, the encoder can be used to generate an embedding of the user's most recent query in a latent / embedding space such that the embedding is clustered according to neighboring embeddings generated from other queries obtained, for example, from the historical query database 285. Parameters from those other queries represented by the neighboring embeddings in the cluster can be combined with the parameter(s) of the most recent query to generate a combined search query. This combined search query can then be used to retrieve a new set of search results.

[0074] However, suppose the user signals that they are dissatisfied with the search results, for example, by quickly pressing the "back" button, by explicitly providing negative feedback (e.g., "Hey assistant, that's not what I was looking for" or "no, I wanted results with <x>parameter.(No, I want to bring <x>Parameters). ”) or by otherwise rejecting or changing the parameters as previously described. In some implementations, this negative feedback can be used to train the encoder network so that the next time it encounters a similar query, the embedding for that query will be away from the aforementioned cluster. For example, in some implementations, the encoder network can be trained to learn similarity using techniques such as regression similarity learning, classification similarity learning, ranking similarity learning, and / or locality sensitive hashing (one or more of which may include techniques such as triplet loss).

[0075] Figure 3A and Figure 3B The diagram shows a computing device 350 including one or more microphones (not depicted) and is shown in a voice-enabled search system such as Figure 2 An example method for using a "reverse-related" grammar model in the search system 212 of the embodiment of the present invention to identify shared query lines according to the implementations described herein. One or more aspects of the process illustrated in this example can be implemented by a virtual assistant according to the implementations described herein. One or more aspects of the virtual assistant can be implemented on the computing device 350 and / or on one or more computing devices in network communication with the computing device 350. In some implementations, the computing device 350 can include or can be communicatively coupled to and / or Figure 2 A portion of one or more of the user interface input devices 202 , and / or a portion of one or more of the user interface output devices 204 .

[0076] exist Figure 3A In

[0045] , a user provides initial voice input 300A to a voice-enabled search system in the form of a voice utterance. The voice-enabled search system then processes the initial voice input 300A to determine initial search parameters 301A. In some implementations, the initial voice input 300A can be provided as part of a conversation between the user and a virtual assistant, and the virtual assistant can provide the initial search parameters 301A to the search system based on processing the initial voice input 300A. For example, the user can speak an utterance including: Figure 3A An initial voice input 300A of the voice utterance “Hey Assistant, search the web for VACATIONSPOTS” is shown. The virtual assistant may process the initial voice input 300A including the voice utterance to determine initial search parameters 301A “vacation spots” and submit them to the search system.

[0077] In response to the initial search parameters 301A, the search system obtains search results 305A, 315A, 325A, and 335A and ranks them according to their relevance to the initial search parameters 301A. In some implementations, the ranked search results 305A, 315A, 325A, and 335A are provided via a visual representation of at least a portion of the search results on a display screen of the computing device 350 or another computing device communicatively coupled to the computing device 350, the virtual assistant, and / or the voice-enabled search system. Additionally or alternatively, in some implementations, the virtual assistant may provide one or more of the highest-ranked search results 305A, 315A, 325A, and 335A for audible presentation to the user via one or more speakers of the computing device 350 or another computing device communicatively coupled to the computing device 350, the virtual assistant, and / or the voice-enabled search system.

[0078] During or shortly after presentation of the search results, the user may provide a subsequent voice input 300B that the user intends to be "reverse-related" to their initial voice input 300A, such as Figure 3B For example, subsequent voice input 300B may include the voice utterance “Actually, I meant ones in the US” to indicate that they want their search to be limited to resorts within the United States. The voice-enabled search system and / or virtual assistant may determine that the phrase “Actually, I meant…” is intended to “reverse” the phrase “ones in the US” to include resorts within the United States. Figure 3A , is a most recent voice input to the initial voice input 300A in the example of . Such an "inversely related" phrase is used as an indication that the subsequent voice input 300B is part of a shared line of inquiry with the initial voice input 300A. The voice-enabled search system and / or virtual assistant can then process the term "onesin the US" in accordance with the implementations described herein to determine modified search parameters 301B to use in the search. For example, the voice-enabled search system and / or virtual assistant can determine that "in the US" is a prepositional phrase intended to modify the noun "ones" and can resolve "ones" to refer to "vacation spots."

[0079] Based on identifying the user's intent to "reverse correlate" the subsequent voice input 300B to the initial voice input 300A, the voice-enabled search system and / or virtual assistant can identify at least one search parameter from each of the initial voice input 300A and the subsequent voice input 300B to include in the modified search parameter 301B of "vacation spots US".

[0080] In some implementations, determining the modified search parameters 301B can be accomplished by reprocessing the speech utterance including the initial speech input 300A in light of the context provided by a subsequent speech utterance including the subsequent speech input 300B, and vice versa, such that different transcriptions of the utterances can be determined to best correspond to the speech inputs 300A, 300B based on the context provided by each utterance to the other.

[0081] In some implementations, determining the modified search parameters 301B can be accomplished by embedding one or more different transcriptions of the initial and / or subsequent speech utterances in a latent space, selecting embeddings to correspond to the initial speech input 300A and the subsequent speech input 300B, respectively, based on the distance of the embeddings from each other in the latent space, and selecting one or more terms from each speech input 300A, 300B transcription to be included in the modified search parameters 301B in accordance with the implementations discussed above.

[0082] After determining the modified search parameters 301B, the virtual assistant can provide the modified search parameters 301B to the search system, and the search system will perform a new search based on the modified search parameters 301B. In response to the modified search parameters 301B, the search system obtains at least search results 305B, 315B, 325B, and 335B and ranks them according to their relevance to the modified search parameters 301B. In some implementations, the ranked search results 305B, 315B, 325B, and 335B are provided via a visual representation of at least a portion of the search results on a display screen of the computing device 350 or another computing device communicatively coupled to the computing device 350, the virtual assistant, and / or the voice-enabled search system. Additionally or alternatively, in some implementations, the virtual assistant may provide one or more of the top-ranked search results 305B, 315B, 325B, and 335B for audible presentation to the user via one or more speakers of computing device 350 or another computing device communicatively coupled to computing device 350, the virtual assistant, and / or the voice-enabled search system.

[0083] Figure 4 4 is a flowchart illustrating an example method 400 according to implementations disclosed herein. For convenience, the operations of the flowchart are described with reference to a system performing the operations. The system may include various components of various computer systems, such as search system 212, user interface input device 202, and user interface output device 204. Furthermore, while the operations of method 400 are shown in a particular order, this is not intended to be limiting. One or more operations may be reordered, omitted, or added.

[0084] At block 410, the system receives submission of a current search query in the form of text input, for example, via the query processing engine 222. The text input may be generated as part of a conversation between a user and the system and may be based on user interface input generated by a user interface input device such as a microphone or a graphical keyboard appearing on a touch screen.

[0085] At block 420, the system compares the current search query to one or more previous search queries submitted by the user, e.g., via the query processing engine 222. This may occur, for example, via embedding a representation of the current search query in a latent space and computing a distance between that embedding and one or more embeddings representing one or more previously submitted search queries.

[0086] At block 430, the system determines, for example, via the query processing engine 222, that one or more of the current search query and the previously submitted search query are related to a shared query line. In some implementations, this can be determined based on embeddings of the current search query and the previously submitted search query being within a threshold distance of each other in latent space. The distance can represent a certain threshold semantic similarity, thereby indicating a high likelihood that the search queries are related to the user's single search effort.

[0087] In various implementations, other signals may be embedded with the search query or otherwise used to determine semantic similarity. For example, the temporal proximity of two queries may affect whether they are considered semantically similar, especially in cases where semantic similarity by itself (i.e., based exclusively on the content of the query) may not be decisive enough. As another example, attributes and / or parameters of the response search results may also be embedded with the search query that caused those search results to be retrieved. Suppose the user did not explicitly mention "basketball" in the search query, but the search results presented in response to the user's search query are primarily related to basketball, and the user actively responds to those results (e.g., by clicking on one or more of them). The topic of "basketball" can be embedded with the user's search, combined with other tags explicitly provided by the user, to serve as an additional constraint in determining whether subsequent searches are part of the same line of inquiry.

[0088] At block 440, the system formulates a combined search query based on the current search query and one or more previous search queries, for example, via the query processing engine 222. The combined search query may include at least one term or search parameter from the current search query and at least one of the previous search queries determined to be related to the same query line as the current search query. In the event that multiple previous search queries are determined to be related to the same query line as the current search query, the system may select a threshold number of search parameters and / or may determine a weighting factor to assign to a search parameter based on the similarity of a given previous search query to the current search query and / or to other previous search queries. Optionally, the system may be configured to prioritize diversity in search parameters to a certain extent, such that the system will only select a search parameter to be included in the combined search query if there is sufficient semantic difference from other selected search parameters or terms.

[0089] At block 450, the system performs a search of one or more databases based on the combined search query, for example, via search engine 242. The system searches the one or more databases to identify resources that are responsive to the combined search query. The system then ranks the search results corresponding to the resources based on their responsiveness to the combined query, for example, via ranking engine 252. In implementations where weighting factors have been assigned to one or more search parameters, the system can consider the weighting factors when determining responsiveness.

[0090] At box 460, the system provides search results for output to the user, for example, via search engine 242, ranking engine 252, and / or presentation engine 232. The system can provide search results at one or more user interface output devices included in the system or communicatively coupled to the system. The system can determine the number of search results to be provided based on the output device and / or presentation format. For example, when the output is provided to a user interface output device that includes a microphone but does not include a display screen and / or when the output is to be presented in audio form, only the N highest-ranked search results can be provided. As another example, when the output is to be provided on a small display screen, the number of highest-ranked search results to be provided can be selected so that the optional links associated with the search results are of sufficient size and distance from each other to allow for the determination accuracy of the touch input corresponding to the optional link selection. In some implementations, a portion of the search results can be provided along with a visual or audio indication that the user can select a graphical element or speak a specific phrase to receive another portion of the search results.

[0091] Figure 5 is a block diagram of an example computing device 510 that can optionally be used to perform one or more aspects of the techniques described herein. In some implementations, one or more of the search system 212, the virtual assistant, and / or one or more of the user interface input and / or output devices 202, 204 can include one or more components of the example computing device 510.

[0092] The computing device 510 typically includes at least one processor 514 that communicates with a number of peripheral devices via a bus subsystem 512. These peripheral devices may include a storage subsystem 524 (including, for example, a memory subsystem 525 and a file storage subsystem 526), a user interface output device 520, a user interface input device 522, and a network interface subsystem 516. The input and output devices allow a user to interact with the computing device 510. The network interface subsystem 516 provides an interface to an external network and couples to corresponding interface devices in other computing devices.

[0093] The user interface input devices 522 may include a keyboard, a pointing device such as a mouse, trackball, touchpad, or graphic tablet, a scanner, a touch screen incorporated into a display, an audio input device such as a voice recognition system, a microphone, and / or other types of input devices. In general, the use of the term "input device" is intended to include all possible types of devices and methods for inputting information into the computing device 510 or onto a communication network.

[0094] The user interface output device 520 may include a display subsystem, a printer, a fax machine, or a non-visual display such as an audio output device. The display subsystem may include a cathode ray tube (CRT), a flat panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem may also, for example, provide a non-visual display via an audio output device. Typically, the use of the term "output device" is intended to include devices and methods for outputting information from the computing device 510 to a user or to all possible types of another machine or computing device.

[0095] The storage subsystem 524 stores programming and data structures that provide the functionality of some or all of the modules described herein. For example, the storage subsystem 524 may include a Figure 4 These software modules are typically executed by processor 514 alone or in conjunction with other processors.

[0096] The memory 525 used in the storage subsystem 524 can include a number of memories, including a main random access memory (RAM) 530 for storing instructions and data during program execution and a read-only memory (ROM) 532 in which fixed instructions are stored. The file storage subsystem 526 can provide persistent storage for program and data files and can include a hard disk drive, a floppy disk drive and associated removable media, a CD-ROM drive, an optical drive, or a removable media cartridge. Modules that implement the functionality of certain implementations can be stored by the file storage subsystem 526 in the storage subsystem 524 or in other machines accessible by the processor 514.

[0097] The bus subsystem 512 provides a mechanism for the various components and subsystems of the computing device 510 to communicate with each other as intended. Although the bus subsystem 512 is shown schematically as a single bus, alternative implementations of the bus subsystem may use multiple busses.

[0098] Computing device 510 can be of various types, including a handheld computing device, a smart phone, a workstation, a server, a computing cluster, a blade server, a server farm, or any other data processing system or computing device. Due to the ever-changing nature of computers and networks, Figure 5 The description of the computing device 510 depicted in FIG is intended only as a specific example for the purpose of illustrating some implementations. Many other configurations of the computing device 510 are possible with more Figure 5 The computing devices depicted in the drawings may have more or fewer components.

[0099] In situations where the systems described herein collect personal information about a user or can utilize personal information, the user may be provided with an opportunity to control whether a program or feature collects user information (e.g., information about the user's social network, social actions or activities, occupation, preferences of the user, or the user's current geographic location) or to control whether and / or how content that may be more relevant to the user is received from a content server. In addition, certain data may be processed in one or more ways before it is stored or used so that personally identifiable information is removed. For example, the user's identity may be processed so that personally identifiable information cannot be determined for the user, or the user's geographic location may be generalized (e.g., to a city, zip code, or state level) in the case where geographic location information is obtained so that the user's specific geographic location cannot be determined. Thus, the user may control how information is collected and / or used about the user.

[0100] Although several implementations have been described and illustrated herein, various other means and / or structures for performing functions and / or obtaining results and / or one or more of the advantages described herein may be utilized, and each of such variations and / or modifications is considered to be within the scope of the implementations described herein. More generally, all parameters, dimensions, materials, and configurations described herein are intended to be exemplary, and the actual parameters, dimensions, materials, and / or configurations will depend on one or more specific applications for which the teachings are used. Those skilled in the art will recognize or be able to ascertain many equivalents to the specific implementations described herein using more than routine experimentation. Therefore, it should be understood that the foregoing implementations are presented only by way of example, and within the scope of the appended claims and their equivalents, implementations may be practiced in a manner different from that specifically described and claimed. Embodiments of the present disclosure relate to each individual feature, system, article, material, kit, and / or method described herein. In addition, any combination of two or more such features, systems, articles, materials, kits, and / or methods is included within the scope of the present disclosure, provided that such features, systems, articles, materials, kits, and / or methods are not mutually inconsistent.< / x> < / x>

Claims

1. A method implemented using one or more processors, comprising: obtaining data indicative of voice input provided by a user to an input device associated with the user, the data including a current search query; comparing the current search query to a previous search query, wherein the comparing comprises determining a distance in a latent space between a first embedding generated from the current search query and a second embedding generated from the previous search query; determining, based on the comparison, that the current search query and the previous search query are related to a shared query line; based on the determination, formulating a combined search query to include at least one search parameter from each of the current search query and the previous search query; submitting the combined search query to cause one or more databases to be searched based on the combined search query; and Search results responsive to the combined search query are caused to be provided at an output device associated with the user.

2. The method according to claim 1, wherein The comparing includes determining a measure of semantic similarity between the current search query and the previous search query.

3. The method according to claim 1, wherein The current search query and the previous search query are input to one or more computing devices in a computing device coordination ecosystem.

4. The method according to claim 1, wherein The current search query and the previous search query are entered by a single user or by multiple users associated with a shared exploration session identifier.

5. The method of claim 1 , further comprising searching a database for one or more historical search queries that are semantically related to the current search query, wherein The previous search query is selected from the one or more historical search queries.

6. A method implemented using one or more processors, comprising: obtaining data indicative of voice input provided by a user to an input device associated with the user, the data including a current search query; comparing the current search query to a previous search query, wherein the comparing includes applying one or more grammars to the current search query to identify phrases in the current search query that indicate one or more terms of the current search query are related to a shared query line with the previous search query; determining, based on the comparison, that the current search query and the previous search query are related to the shared query line; based on the determination, formulating a combined search query to include at least one search parameter from each of the current search query and the previous search query; submitting the combined search query to cause one or more databases to be searched based on the combined search query; and Search results responsive to the combined search query are caused to be provided at an output device associated with the user.

7. A method implemented using one or more processors, comprising: obtaining data indicative of voice input provided by a user to an input device associated with the user, the data including a current search query; comparing the current search query to a previous search query; determining, based on the comparison, that the current search query and the previous search query are related to a shared query line; In response to determining that the current search query and the previous search query are related to the shared line of inquiry: causing an output device associated with the user to provide a prompt to the user, wherein the prompt solicits the user to enter a search session in which queries submitted will continue to be modified based on the tracking state of the shared query line; receiving, from the input device associated with the user, responsive user input provided by the user in response to the prompt; and formulating a combined search query to include at least one search parameter from each of the current search query and the previous search query based on determining that the current search query and the previous search query are related to the shared query line and based on the responsive user input; submitting the combined search query to cause one or more databases to be searched based on the combined search query; and Search results responsive to the combined search query are caused to be provided at the output device associated with the user.

8. A method implemented using one or more processors, comprising: obtaining data indicative of voice input provided by a user to an input device associated with the user, the data including a current search query; comparing the current search query to a previous search query; determining, based on the comparison, that the current search query and the previous search query are related to a shared query line; based on the determination, formulating a combined search query to include at least one search parameter from each of the current search query and the previous search query; submitting the combined search query to cause one or more databases to be searched based on the combined search query; as well as An active search parameter list is caused to be provided at an output device associated with the user, the active search parameter list including the at least one search parameter from each of the current search query and the previous search query.

9. A method implemented using one or more processors, comprising: obtaining data indicative of voice input provided by a user to an input device associated with the user, the data including a current search query; comparing the current search query to a previous search query; determining, based on the comparison, that the current search query and the previous search query are related to a shared query line; based on the determination, formulating a combined search query to include at least one search parameter from each of the current search query and the previous search query; submitting the combined search query to cause one or more databases to be searched based on the combined search query; causing search results responsive to the combined search query to be provided at an output device associated with the user; as well as After causing the search results responsive to the combined search query to be provided at the output device associated with the user: receiving, from the input device associated with the user, an indication of a user interaction with one or more tags of at least one of the search results; and An updated combined search query is formulated based on the one or more tokens.

10. The method according to claim 9, wherein: The user interaction includes a user striking through the one or more tags on a graphical user interface of the input device associated with the user, and the updated combined search query is formulated to exclude search results matching the one or more tags.

11. A system comprising one or more processors and a memory, the memory storing instructions which, when executed by the one or more processors, cause the one or more processors to perform the method according to any one of claims 1 to 10.

12. At least one non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform the method according to any one of claims 1-10.

Citation Information

Patent Citations

  • Session-based query suggestions

    US8725756B1