Using context information to facilitate command processing for virtual assistants

JP7631460B2Active Publication Date: 2025-02-18APPLE INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023160075
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2011-09-30
Filing Date
2023-09-25
Publication Date
2025-02-18
Estimated Expiration
2032-09-28

AI Technical Summary

Benefits of technology

【0020】 コンテクストは、バーチャルアシスタントの動作において種々の計算及び推測に適用される。例えば、コンテクストは、ユーザ入力が処理されるときに、曖昧さを減少するか、さもなければ、解答の数を制限するのに使用される。従って、コンテクストは、例えば、これに限定されないが、次のものを含めて、種々の処理段階中の解答を制限するのに使用される。 ●スピーチ認識:ボイス入力を受け取り、そしてその解釈の候補を、例えば、「彼女にコールする(call her)」、「カラー(collar)」及び「ハーブにコールする(call Herb)」というテキストで発生する。コンテクストを使用して、スピーチ認識モジュールによりどのワード及びフレーズが考慮されるか、それらがどのようにランクされるか、そしてどれが考慮のためのスレッシュホールドより高いとして受け容れられるかについて、制限することができる。例えば、ユーザのアドレス帳は、アザーワイズ·ランゲッジ·ジェネラル·モデル·オブ·スピーチ(otherwise language-general model of speech)に個人名を追加して、それらの名前を認識できるようにし、プライオリティを与えることができる。 ●自然言語処理:テキストをパーズし、そしてワードをシンタクティック及びセマンティックロールに関連付け、例えば、ユーザ入力が代名詞「彼女(her)」で指された個人へ電話コールをしようとしていると決定し、そしてその個人のための特定のデータ表現を見出す。例えば、テキストメッセージングアプリケーションのコンテクストは、「彼女(her)」の解釈を「私がテキストで会話している個人(the person with whom I am conversing in text」を意味するように制限する上で助けとなる。 ●タスクフロー処理:ユーザタスク、タスクステップ、及びタスクでアシストするのに使用されるタスクパラメータ、例えば、「彼女(her)」と称される個人に対してどの電話番号を使用するか、識別する。この場合も、テキストメッセージングアプリケーションのコンテクストは、電話番号の解釈を、テキストメッセージング会話に対して現在又は最近使用された番号をシステムが使用しなければならないことを指示するように制限することができる。 ●ダイアログ発生:例えば、ユーザの意図を「OK、私は、レベッカに彼女の電話でコールする···(OK, I’ll call Rebecca on her mobile…)」という応答で言い換えるために、タスクに関するユーザとの会話の一部分としてアシスタント応答を発生する。冗舌及び非公式トーンのレベルは、コンテクスト情報により案内できる選択である。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007631460000001
    Figure 0007631460000001
  • Figure 0007631460000002
    Figure 0007631460000002
  • Figure 0007631460000003
    Figure 0007631460000003
Patent Text Reader

Abstract

To provide mechanisms for improving interpretation and processing of commands provided to a virtual assistant.SOLUTION: A virtual assistant uses context information to supplement natural language or gestural input from a user. The context helps to clarify the user's intent, reduce the number of candidate interpretations of the user's input, and reduce the need for the user to provide very clear input. The context includes any available information that is usable by the assistant to supplement explicit user input to constrain an information-processing problem and / or to personalize results. The context can be used to constrain solutions during various phases of processing, including, for example, speech recognition, natural language processing, task flow processing, and dialog generation.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to virtual assistants, and more particularly to mechanisms for improving the interpretation and processing of commands given to such assistants.

[0002] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims priority as a continuation-in-part of U.S. Utility Application No. 12 / 479,477, entitled “Contextual Voice Commands,” filed June 5, 2009, attorney docket number P7393US1, the entire disclosure of which is incorporated herein by reference.

[0003] This application also claims priority as a continuation-in-part of U.S. Utility Application No. 12 / 987,982, entitled “Intelligent Automated Assistant,” filed on January 10, 2011, Attorney Docket No. P10575US1, the entire disclosure of which is incorporated herein by reference.

[0004] U.S. Utility Application No. 12 / 987,982 claims priority from U.S. Provisional Application No. 61 / 295,774, entitled “Intelligent Automated Assistant,” filed on January 18, 2010, Attorney Docket No. SIRIP003P, the entire disclosure of which is incorporated herein by reference.

[0005] This application further claims priority from U.S. Provisional Patent Application No. 61 / 493,201, entitled “Generating and Processing Data Items That Represent Tasks to Perform,” filed Jun. 3, 2011, Attorney Docket No. P11337P1, the entire disclosure of which is incorporated herein by reference.

[0006] This application is related to U.S. utility patent application entitled “Generating and Processing Data Items That Represent Tasks to Perform”, attorney docket number P11337US1, filed on even date herewith, the entire disclosure of which is incorporated herein by reference.

[0007] This application is related to U.S. utility patent application entitled "Automatically Adapting User Interfaces for Hands-Free Interaction," attorney docket number P11357US1, filed on even date herewith, the entire disclosure of which is incorporated herein by reference. [Background technology]

[0008] Today's electronic devices can access a large, growing and diverse amount of functions, services and information via the Internet and from other sources. The functionality of such devices is rapidly increasing because many consumer devices, smart phones, tablet computers, etc., can run software applications to perform various tasks and provide different types of information. Often, each application, function, website or feature has its own user interface and its own operating paradigm, many of which are difficult for users to learn or overwhelm. In addition, many users also have difficulty discovering what functions and / or information are available on their electronic devices or on various websites, and thus such users become frustrated or overwhelmed, or simply cannot make effective use of the available resources.

[0009] In particular, novice users, people with disabilities or disabilities, and / or the elderly, busy, distracted, and / or vehicle operators may have difficulty effectively interfacing with their electronic devices and / or engaging with online services, particularly as such users may experience problems with the large number of different and inconsistent functions, applications, and websites available. Summary of the Invention [Problem to be solved by the invention]

[0010] Thus, existing systems are often difficult to use and navigate, and often present users with inconsistent and unhelpful interfaces, often preventing users from taking advantage of the technology.

[0011] Intelligent automated assistants, also referred to herein as virtual assistants, can provide an improved interface between humans and computers. Such assistants, which may be embodied as described in U.S. Utility Patent Application No. 12 / 987,982, entitled “Intelligent Automated Assistant,” filed January 10, 2011, Attorney Docket No. P10575US1, the entire disclosure of which is incorporated herein by reference, allow a user to interact with a device or system using natural language in spoken and / or textual form. Such assistants interpret user input, manipulate the user's intent into tasks and parameters for the tasks, perform services to support those tasks, and generate output that is understandable to the user.

[0012] A virtual assistant can draw from any of a number of information sources to process user input, including, for example, knowledge bases, models, and / or data. In many cases, the user's input alone is insufficient to clearly define the user's intent and the task to be performed. This is due to noise in the input stream, individual differences between users, and / or the inherent ambiguity of natural language. For example, a user of a text messaging application to a phone invokes a virtual assistant and says the command "call her." Although such a command is perfectly legal English, it is not a precise executable statement since there are many interpretations and possible answers to the request. Thus, without further information, the virtual assistant cannot correctly interpret and process such input. This kind of ambiguity leads to errors, incorrect actions being performed, and / or significantly burdening the user with requests to clarify the input. [Means for solving the problem]

[0013] According to various embodiments of the present invention, a virtual assistant uses context information (also referred to herein as "context") to supplement natural language or gesture input from a user. This helps clarify the user's intent, reduces the number of possible interpretations of the user's input, and alleviates the need for the user to provide very clear input. Context includes available information that can be used by the assistant to supplement clear user input to limit information processing problems and / or personalize results. For example, if an input from a user includes a pronoun (such as "her" in the command "call her"), the virtual assistant uses the context to infer the referent of the pronoun, e.g., to verify the identity of the individual receiving the call and / or the phone number to be used. Other uses of context are described below.

[0014] According to various embodiments of the present invention, a number of mechanisms can be implemented to obtain and apply context information to perform calculations in a virtual assistant implemented in an electronic device. In various embodiments, the virtual assistant is an intelligent automated assistant as described in U.S. Utility Patent Application No. 12 / 987,982, entitled "Intelligent Automated Assistant," filed January 10, 2011, Attorney Docket No. P10575US1, the entire disclosure of which is incorporated herein by reference. Such assistants engage users in an integrated conversational fashion using natural language dialogue and invoke external services at appropriate times to obtain information or perform various actions. According to the techniques described herein, context information is used in such assistants to reduce ambiguity when performing information processing functions such as, for example, speech recognition, natural language processing, task flow processing, and dialog generation.

[0015] According to various embodiments of the present invention, a virtual assistant can use context to perform a variety of different types of operations, functions, and / or features, and / or to be configured, designed, and / or operate to combine multiple features, operations, and applications of the electronic device in which it is installed. In some embodiments, a virtual assistant of the present invention can use context when actively eliciting input from a user, interpreting the user's intent, disambiguating among competing interpretations, requesting and receiving disambiguation information as necessary, and / or performing (or initiating) an action based on the discerned intent.

[0016] Actions are accomplished, for example, by activating and / or interfacing with applications or services available on the electronic device, as well as services available over an electronic network such as the Internet. In various embodiments, such activation of external services is accomplished via an application programming interface (API) or other suitable mechanism. In this manner, a virtual assistant implemented according to various embodiments of the present invention can integrate, simplify, and improve a user's experience with many different applications and functions of an electronic device, as well as with services available over the Internet. Thus, a user is relieved of the burden of learning what features are available on the device and web-connected services, how to interface with such services to achieve his or her desires, and how to interpret output received from such services; rather, the assistant of the present invention can act as an intermediary between the user and such various services.

[0017] In addition, in various embodiments, the virtual assistant of the present invention provides a conversational interface that users find more intuitive and effortless than traditional graphic user interfaces. The user can engage in a conversational dialogue with the assistant using any of a number of available input and output mechanisms, such as, for example, speech, graphic user interfaces (buttons and links), text entry, etc. The system is implemented using any of a number of different platforms, such as device APIs, web, e-mail, etc., or a combination thereof. A request for additional input is provided to the user in the context of such a conversation. Given previous events and communications within a given session, as well as historical and profile information about the user, short-term and long-term memory is engaged so that the user input can be interpreted in the appropriate context.

[0018] Additionally, in various embodiments, context information derived from user interactions with device features, operations, or applications can be used to streamline other features, operations, or applications of the device or other devices. For example, a virtual assistant can use the context of a phone call (such as the person called) to streamline the initiation of a text message (e.g., determine that a text message should be sent to the same person without the user having to explicitly identify the recipient of the text message). Thus, a virtual assistant of the present invention can interpret the instruction "send him a text message," where "him" is interpreted based on context information derived from the current phone call and / or device features, operations, or applications. In various embodiments, the virtual assistant takes into account various forms of available context information to determine which address book contacts to use, which contact data to use, which phone numbers to use as contacts, etc., so that the user does not have to manually re-specify such information.

[0019] Context information sources include, for example, but are not limited to, the current state of the device used as the interface to the assistant, such as the current time, location, application, or data object; personal data, such as the user's address book, calendar, and application usage history; and the state of the dialog between the user and the virtual assistant, such as recently mentioned people and / or places.

[0020] Context is applied to various calculations and inferences in the operation of the virtual assistant. For example, context is used to reduce ambiguity or otherwise limit the number of answers when user input is processed. Thus, context is used to limit answers during various processing stages, including, but not limited to, the following: ● Speech Recognition : A voice input is received and potential interpretations are generated, e.g., in the text "call her," "collar," and "call herb." Context can be used to constrain which words and phrases are considered by the speech recognition module, how they are ranked, and which are accepted above a threshold for consideration. For example, a user's address book can add personal names to the otherwise language-general model of speech to make those names recognizable and give them priority. ● Natural Language Processing : Parse the text and associate words with syntactic and semantic roles, for example, determine that the user input is an attempt to make a phone call to an individual referred to by the pronoun "her", and find a specific data representation for that individual. For example, the context of a text messaging application can help restrict the interpretation of "her" to mean "the person with whom I am conversing in text". ● Taskflow Processing : Identifying the user task, task steps, and task parameters used to assist in the task, e.g., which phone number to use for an individual referred to as "her." Again, the context of a text messaging application can restrict the interpretation of the phone number to dictate that the system should use a currently or recently used number for a text messaging conversation. ● Dialogue occursGenerate assistant responses as part of a conversation with the user about the task: for example, to rephrase the user's intent with a response like "OK, I'll call Rebecca on her mobile..." The level of verbosity and informal tone is a choice that can be guided by context information.

[0021] In various embodiments, the virtual assistant of the present invention can control various features and operations of an electronic device. For example, the virtual assistant can call services that interface with the device's functions and applications via an API or other means to perform functions and operations that would otherwise be initiated using the device's traditional user interface. Such functions and operations include, for example, setting an alarm, making a phone call, sending a text or e-mail message, adding a calendar event, and the like. Such functions and operations are performed as add-on functions in the context of a conversational dialog between the user and the assistant. Such functions and operations are either specified by the user in a dialog-like context or are automatically performed based on the context of the dialog. Thus, it will be apparent to one skilled in the art that the assistant can be used as a control mechanism to initiate and control various operations in an electronic device, and that this mechanism can be used as an alternative to traditional mechanisms such as buttons or a graphic user interface. As described herein, context information can be used to inform and improve such use of the virtual assistant as a control mechanism.

[0022] The accompanying drawings illustrate numerous embodiments of the invention and, together with the following description, serve to explain the principles of the invention according to these embodiments. Those skilled in the art will recognize that the specific embodiments illustrated in the drawings are merely illustrative and are not intended to limit the scope of the invention. [Brief description of the drawings]

[0023] [Figure 1] FIG. 1 is a block diagram illustrating a virtual assistant and some examples of sources of context that affect its operation, according to one embodiment. [Diagram 2] 1 is a flow chart illustrating a method for using context for various processing steps in a virtual assistant according to one embodiment. [Diagram 3] 1 is a flow chart illustrating a method for using context for speech elicitation and interpretation according to one embodiment. [Figure 4] 1 is a flow chart illustrating a method for using context in natural language processing according to one embodiment. [Diagram 5] 1 is a flow chart illustrating a method for using context in task flow processing according to one embodiment. [Figure 6] FIG. 2 is a block diagram illustrating an example of sources of context distributed between a client and a server according to one embodiment. [Figure 7] 7a, 7b, 7c and 7d are event diagrams illustrating an example of a mechanism for obtaining and matching context information according to one embodiment. [Figure 8a] 4 illustrates an example representation of context information that may be used in conjunction with an embodiment of the present invention. [Figure 8b] 4 illustrates an example representation of context information that may be used in conjunction with an embodiment of the present invention. [Figure 8c] 4 illustrates an example representation of context information that may be used in conjunction with an embodiment of the present invention. [Figure 8d] 4 illustrates an example representation of context information that may be used in conjunction with an embodiment of the present invention. [Figure 9] 4 illustrates an example of a configuration table that specifies communication and caching policies for various context information sources according to one embodiment. [Figure 10] FIG. 10 is an event diagram illustrating an example of accessing the context information sources configured in FIG. 9 during processing of a dialogue sequence according to one embodiment. [Figure 11] 1 is a screenshot illustrating an example of the use of application context in the text messaging domain to derive pronoun referents according to one embodiment; [Figure 12] 1 is a screenshot illustrating an example of the use of application context in the text messaging domain to derive pronoun referents according to one embodiment; [Figure 13] 1 is a screenshot illustrating an example of the use of application context in the text messaging domain to derive pronoun referents according to one embodiment; [Figure 14] 1 is a screenshot showing a virtual assistant prompting for name disambiguation according to one embodiment. [Figure 15] 11 is a screenshot showing a virtual assistant using dialog context to infer location for a command according to one embodiment. [Figure 16] 11 is a screenshot illustrating an example of the use of a phone's favorites list as a source of context according to one embodiment. [Figure 17] 11 is a screenshot illustrating an example of the use of the current application context to enable commands to be interpreted and acted upon according to one embodiment. [Figure 18] 11 is a screenshot illustrating an example of the use of the current application context to enable commands to be interpreted and acted upon according to one embodiment. [Figure 19]11 is a screenshot illustrating an example of the use of the current application context to enable commands to be interpreted and acted upon according to one embodiment. [Figure 20] 11 is a screenshot illustrating an example of the use of the current application context to enable commands to be interpreted and acted upon according to one embodiment. [Figure 21] 11 is a screenshot showing an example of the use of the current application context to interpret a command to invoke a different application. [Figure 22] 11 is a screenshot illustrating an example of the use of event context in the form of an incoming text message according to one embodiment. [Diagram 23] 11 is a screenshot illustrating an example of the use of event context in the form of an incoming text message according to one embodiment. [Figure 24] 11 is a screenshot illustrating an example of the use of event context in the form of an incoming text message according to one embodiment. [Figure 25A] 11 is a screenshot illustrating an example of the use of previous dialog context according to one embodiment. [Figure 25B] 11 is a screenshot illustrating an example of the use of previous dialog context according to one embodiment. [Figure 26A] 11 is a screenshot showing an example of a user interface for selecting between candidate interpretations according to one embodiment. [Figure 26B] 11 is a screenshot showing an example of a user interface for selecting between candidate interpretations according to one embodiment. [Figure 27] FIG. 1 is a block diagram illustrating one embodiment of a virtual assistant system. [Figure 28] FIG. 1 is a block diagram illustrating a computing device suitable for implementing at least a portion of a virtual assistant in accordance with at least one embodiment. [Figure 29]FIG. 1 is a block diagram illustrating an architecture for implementing at least a portion of a virtual assistant in a standalone computing system according to at least one embodiment. [Diagram 30] FIG. 1 is a block diagram illustrating an architecture for implementing at least a portion of a virtual assistant in a distributed computing network according to at least one embodiment. [Diagram 31] FIG. 1 is a block diagram illustrating a system architecture showing multiple different types of clients and modes of operation. [Diagram 32] FIG. 2 is a block diagram illustrating a client and a server communicating with each other to implement the present invention according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0024] According to various embodiments of the present invention, various contextual information is obtained and applied to perform information processing functions in supporting the operation of the virtual assistant. For purposes of explanation, the term "virtual assistant" is equivalent to the term "intelligent automated assistant," both of which refer to an information processing system that performs one or more of the following functions: ● Interpreting human language input in oral and / or text form; • operationalizing a representation of a user's intent into an executable form, such as a representation of a task with steps and / or parameters; ● executing the task representation by invoking a program, method, service, API, etc.; and • Producing an output response to the user in verbal and / or graphical form.

[0025] One example of such a virtual assistant is described in related U.S. Utility Application No. 12 / 987,982, entitled “Intelligent Automated Assistant,” filed January 10, 2011, Attorney Docket No. P10575US1, the entire disclosure of which is incorporated herein by reference.

[0026] Various technologies are described in detail below with reference to embodiments illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects and / or features described herein. However, it will be apparent to one of ordinary skill in the art that one or more aspects and / or features described herein can be practiced without some or all of these specific details. In other respects, well-known process steps and / or structures are not described in detail so as not to obscure some aspects and / or features described herein.

[0027] One or more different inventions are described in this application. Moreover, for one or more of the inventions described herein, numerous embodiments are described for illustrative purposes only. The embodiments described herein are not intended to be limiting. One or more of the inventions are broadly applicable to numerous embodiments, as is readily apparent from this disclosure. These embodiments are described in sufficient detail to enable one of ordinary skill in the art to practice one or more of the inventions, and it is understood that other embodiments may be utilized and that structural, logical, software, electrical, and other changes may be made without departing from the scope of one or more of the inventions. Thus, one of ordinary skill in the art will recognize that one or more of the inventions may be practiced with various changes and modifications. Certain features of one or more inventions will be described with reference to one or more specific embodiments and the accompanying drawings, which form a part of this disclosure and in which certain embodiments of the one or more inventions are illustrated. However, such features are not limited in use to one or more specific embodiments or to the accompanying drawings to which reference is made when describing them. This disclosure is not intended to describe verbatim all embodiments of one or more inventions, nor is it intended to list features of one or more inventions that must be present in all embodiments.

[0028] The section headings and title of this patent application are provided for convenience only and are not intended to limit the disclosure in any way.

[0029] Devices that are in communication with each other need not be in communication with each other at all times unless otherwise specified. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries.

[0030] The description of an embodiment in which multiple components are in communication with one another does not imply that all such components are required, but rather, various optical components are described to illustrate the wide variety of possible embodiments of one or more inventions.

[0031] Moreover, although process steps, method steps, algorithms, and the like may be described in a sequential order, such processes, methods, and algorithms may be configured to work in any suitable order. In other words, the sequence or order of steps described in this patent application does not, in itself, indicate a requirement that the steps be performed in that order. Furthermore, although certain steps are described or implied as not occurring simultaneously (e.g., because one step is described after another step), they may be performed simultaneously. Furthermore, illustration of a process by depicting a drawing does not imply that the illustrated process excludes other changes or modifications thereto, nor does it imply that the illustrated process, or any of its steps, are required by one or more inventions, nor does it imply that the illustrated process is preferred.

[0032] It will be readily apparent that when a single device or article is mentioned, two or more devices / articles (whether or not they cooperate) may be used in place of the single device / article. Similarly, when two or more devices or articles are mentioned, it will be readily apparent that a single device / article may be used in place of the two or more devices or articles (whether or not they cooperate).

[0033] Alternatively, the functions and / or features of a device may be performed by one or more other devices that are not explicitly described as having such functions / features, and therefore other embodiments of one or more inventions need not include the device itself.

[0034] The techniques and mechanisms described herein are sometimes described in the singular for clarity. Note, however, that a particular embodiment may include multiple iterations of a technique or multiple instantiations of a mechanism unless otherwise indicated.

[0035] Although described within the context of technology for implementing intelligent automated assistants, also known as virtual assistants, it should be understood that various aspects and techniques described herein may be deployed and / or applied in other areas of technology involving human and / or computerized interaction with software.

[0036] Other aspects of virtual assistant technology (e.g., utilized by, provided by and / or implemented in one or more virtual assistant system embodiments described herein) are disclosed in one or more of the following documents, the entire disclosures of which are incorporated herein by reference: • U.S. Utility Patent Application No. 12 / 987,982, entitled “Intelligent Automated Assistant,” filed on January 10, 2011, Attorney Docket No. P10575US1; • U.S. Provisional Patent Application No. 61 / 295,774, entitled “Intelligent Automated Assistant,” filed on January 18, 2010, Attorney Docket No. SIRIP003P; No. 11 / 518,292, entitled “Method And Apparatus for Building an Intelligent Automated Assistant,” filed on September 8, 2006; and ●U.S. Provisional Patent Application No. 61 / 186,414, entitled “System and Method for Semantic Auto-Completion,” filed June 12, 2009.

[0037] Hardware Architecture In general, the virtual assistant techniques disclosed herein are implemented in hardware or a combination of software and hardware. For example, they may be implemented in an operating system kernel, a separate user process, a library package coupled to a network application, a specially configured machine, and / or a network interface card. In certain embodiments, the techniques disclosed herein are implemented in software, such as an operating system, or an application running on an operating system.

[0038] At least some of the software / hardware hybrid implementations of the virtual assistant embodiments disclosed herein are implemented in programmable machines that are selectively activated or reconfigured by a computer program stored in memory. Such network devices have multiple network interfaces configured or designed to use different types of network communication protocols. The general architecture for some of these machines will be apparent from the description disclosed herein. According to certain embodiments, at least some of the features and / or functions of the various virtual assistant embodiments disclosed herein are embodied in one or more general-purpose network host machines, such as end-user computer systems, computers, network servers or server systems, mobile computing devices (e.g., personal digital assistants, mobile phones, smartphones, laptops, tablet computers, etc.), consumer electronic devices, music players, or other suitable electronic devices, routers, switches, etc., or combinations thereof. In at least some embodiments, at least some of the features and / or functions of the various virtual assistant embodiments disclosed herein are embodied in one or more virtualized computing environments (e.g., network computing clouds, etc.).

[0039] 28, a block diagram is shown depicting a computing device 60 suitable for implementing at least a portion of the virtual assistant features and / or functions disclosed herein. The computing device 60 may be, for example, an end-user computer system, a network server or server system, a mobile computing device (e.g., a personal digital assistant, a mobile phone, a smart phone, a laptop, a tablet computer, etc.), a consumer electronic device, a music player, or other suitable electronic device, or any combination or portion thereof. The computing device 60 may be adapted to communicate with other computing devices, such as clients and / or servers, over a communications network, such as the Internet, using known protocols for communication, whether wireless or wired.

[0040] In one embodiment, the computing device 60 includes a central processing unit (CPU) 62, an interface 68, and a bus 67 (such as a peripheral component interconnect (PCI) bus). When operating under the control of appropriate software or firmware, the CPU 62 is responsible for implementing specific functions associated with the function of the specially configured computing device or machine. For example, in at least one embodiment, a user's personal digital assistant (PDA) or smart phone is configured or designed to function as a virtual assistant system using the CPU 62, memory 61, 65, and the interface 68. In at least one embodiment, the CPU 62 is adapted to perform one or more of the different types of virtual assistant functions and / or operations under the control of software modules / components including, for example, an operating system and appropriate application software, drivers, etc.

[0041] CPU 62 includes one or more processors 63, such as, for example, a processor from the Motorola or Intel family of microprocessors or the MIPS family of microprocessors. In some embodiments, processor 63 includes specially designed hardware for controlling the operation of computing device 60 (e.g., an application specific integrated circuit (ASIC), an electronically erasable programmable read only memory (EEPROM), a field programmable gate array (FPGA), etc.). In certain embodiments, memory 61 (non-volatile random access memory (RAM) and / or read only memory (ROM)) also forms part of CPU 62. However, there are many different ways of coupling memory to a system. Memory block 61 is used for various purposes, such as, for example, caching and / or storing data, programming instructions, etc.

[0042] As used herein, the term "processor" is not limited to integrated circuits referred to in the art as processors, but is intended to refer broadly to microcontrollers, microcomputers, programmable logic controllers, application specific integrated circuits, and other programmable circuits.

[0043] In one embodiment, the interfaces 68 are implemented as interface cards (sometimes referred to as "line cards"). Generally, they control the transmission and reception of data packets over a computing network, and sometimes support other peripheral devices used with the computing device 60. Among the interfaces that may be implemented are Ethernet interfaces, Frame Relay interfaces, cable interfaces, DSL interfaces, Talk-in-Ring interfaces, and the like. Additionally, other interfaces may be implemented, such as, for example, Universal Serial Bus (USB), serial, Ethernet, Firewire, PCI, parallel, radio frequency (RF), Bluetooth, and the like. TMVarious types of interfaces may be provided, such as, near field communications (e.g., using near field magnetic fields), 802.11 (WiFi), Frame Relay, TCP / IP, ISDN, Fast Ethernet interfaces, Gigabit Ethernet interfaces, Asynchronous Transfer Mode (ATM) interfaces, High Speed ​​Serial Interfaces (HSSI) interfaces, Point of Sale (POS) interfaces, Fiber Data Distribution Interfaces (FDDI), etc. Typically, such interfaces 68 include ports suitable for communicating with an appropriate medium. In some cases, they may include a separate processor, and in some cases, volatile and / or non-volatile memory (e.g., RAM).

[0044] The system shown in FIG. 28 illustrates one particular architecture of a computing device 60 for implementing the inventive techniques described herein, but this is not the only device architecture in which at least a portion of the features and techniques described herein may be implemented. For example, an architecture having one or any number of processors 63 may be used, and such processors 63 may be present in a single device or distributed among multiple devices. In one embodiment, a single processor 63 handles communication and route calculation. In various embodiments, different types of virtual assistant features and / or functions are implemented in a virtual assistant system that includes a client device (such as a personal digital assistant or smartphone running client software) and a server system (such as the server system described in more detail below).

[0045] Regardless of the configuration of the network devices, the system of the present invention uses one or more memories or memory modules (e.g., memory block 65) configured to store data, program instructions for general network operation, and / or other information related to the function of the virtual assistant technology described herein. The program instructions, for example, control the operation of an operating system and / or one or more applications. The memory(s) may also be configured to store data structures, keyword taxonomy information, advertising information, user click and impression information, and / or other specific non-program information described herein.

[0046] Because such information and program instructions are used to implement the systems / methods described herein, at least some network device embodiments include a non-transitory machine-readable storage medium that is configured or designed to store, for example, program instructions, state information, etc. for performing various operations described herein. Such non-transitory machine-readable storage media include, for example, but are not limited to, magnetic media such as hard disks, floppy disks, and magnetic tapes; optical media such as CD-ROM disks; magneto-optical media such as floptical disks; and hardware devices specifically configured to store and execute program instructions, for example, read-only memory devices (ROM), flash memory, memristor memory, random access memory, etc. Program instructions include both machine code, such as that generated by a compiler, and files containing high-level code that are executed by the computer using an interpreter.

[0047] In one embodiment, the system of the present invention is embodied in a stand-alone computing system. Referring to FIG. 29, a block diagram is shown depicting an architecture for implementing at least a portion of a virtual assistant in a stand-alone computing system according to at least one embodiment. The computing device 60 includes a processor 63 that executes software for implementing the virtual assistant 1002. The input device 1206 is of any type suitable for receiving user input, including, for example, a keyboard, a touch screen, a microphone (e.g., for voice input), a mouse, a touch pad, a trackball, a five-way switch, a joystick, and / or combinations thereof. The output device 1207 is a screen, a speaker, a printer, and / or combinations thereof. The memory 1210 is a random access memory having a structure and architecture known in the art for use by the processor 63 during execution of the software. The storage device 1208 is a magnetic, optical, and / or electrical storage device for storing data in digital form, including, for example, flash memory, a magnetic hard drive, a CD-ROM, and the like.

[0048] In another embodiment, the system of the present invention is embodied in a distributed computing network having, for example, multiple clients and / or servers. Referring to Figure 30, a block diagram illustrating an architecture for implementing at least a portion of a virtual assistant in a distributed computing network according to at least one embodiment is shown.

[0049] In the configuration shown in Figure 30, multiple clients 1304 are provided, with each client 1304 executing software for implementing a client-side portion of the present invention. In addition, multiple servers 1304 may be provided to handle requests received from the clients 1304. The clients 1304 and servers 1340 may communicate with each other over an electronic network 1361, such as the Internet. The network 1361 may be implemented using known network protocols, including, for example, wired and / or wireless protocols.

[0050] Additionally, in one embodiment, server 1340 can call external services 1360 when necessary to obtain additional information or to reference stored data regarding previous interactions with a particular user. Communication with external services 1360 can occur, for example, over network 1361. In various embodiments, external services 1360 include web-enabled services and / or features associated with or installed on the hardware device itself. For example, in embodiments in which assistant 1002 is embodied in a smart phone or other electronic device, assistant 1002 can obtain information stored in a calendar application (app), contacts, and / or other sources.

[0051] In various embodiments, the Assistant 1002 can control numerous features and operations of the electronic device on which it is installed. For example, the Assistant 1002 can call external services 1360 that interface with the device's functions and applications via an API or other means to perform functions and operations that would otherwise be initiated using the device's traditional user interface. Such functions and operations include, for example, setting an alarm, making a phone call, sending a text or e-mail message, adding a calendar event, and the like. Such functions and operations are performed as add-on functions in the context of a conversational dialog between the user and the Assistant 1002. Such functions and operations are either specified by the user in a dialog-like context or are automatically performed based on the dialog context. Thus, it will be apparent to one skilled in the art that the Assistant 1002 can be used as a control mechanism for initiating and controlling various operations on the electronic device, and that this mechanism can be used in place of traditional mechanisms such as buttons or a graphic user interface.

[0052] For example, the user provides input to the Assistant 1002 that "I need to wake tomorrow at 8am." Once the Assistant 1002 determines the user's intent using the techniques described herein, the Assistant 1002 calls an external service 1340 to interface with the device's alarm clock function or application. The Assistant 1002 sets an alarm on the user's behalf. In this manner, the user can use the Assistant 1002 as an alternative to traditional mechanisms for setting alarms or performing other functions on the device. If the user's request is ambiguous or requires further clarification, the Assistant 1002 uses various techniques described herein, including active elicitation, paraphrasing, suggestion, etc., and including obtaining context information, to ensure that the correct service 1340 is called and the intended action is taken. In one embodiment, the Assistant 1002 prompts the user for confirmation and / or to request additional context information from an appropriate source before calling a service 1340 to perform a function. In one embodiment, the user can selectively disable the ability of the assistant 1002 to call specific services 1340, or disable all such service calls if desired.

[0053] The system of the present invention may be embodied in any of a number of different types of clients 1304 and modes of operation. With reference to FIG. 31, a block diagram is shown depicting a system architecture showing a number of different types of clients 1304 and modes of operation. Those skilled in the art will appreciate that the various types of clients 1304 and modes of operation shown in FIG. 31 are merely exemplary, and that the system of the present invention may be embodied using clients 1304 and / or modes of operation other than those depicted herein. Furthermore, the system may include any or all of such clients 1304 and / or modes of operation, alone or in any combination. Illustrated examples include the following: ● A computing device 1402 with input / output devices and / or sensors. A client component is deployed on such computing device 1402. At least one embodiment is implemented using a web browser 1304A or other software application to enable communication with the service 1340 over the network 1361. The input and output channels may be of any type, including, for example, visual and / or auditory channels. For example, in one embodiment, the inventive system is implemented using a voice-based communication method, allowing the implementation of an assistant for the blind where the equivalent of a web browser is speech-driven and uses speech for output. • Mobile devices with I / O and sensors 1406 where the clients are embodied as applications on the mobile device 1304B. This includes, but is not limited to, mobile phones, smart phones, personal digital assistants, tablet devices, network game consoles, etc. - A consumer device 1410 with I / O and sensors where the client is embodied as an embedded application in the device 1304C. • Automobiles and other vehicles 1414 with dashboard interfaces and sensors in which clients are embodied as embedded system applications 1304D. This includes, but is not limited to, car navigation systems, voice control systems, in-car entertainment systems, etc. • A network computing device 1418, such as a router, or other device that resides in or interfaces with a network, in which the client is embodied as a device-resident application 1304E. ● An email client to which an embodiment of the Assistant is connected via an email modality server 1426. The email modality server 1426 acts as a communications bridge taking input from the user, for example as email messages sent to the Assistant, and sending output from the Assistant to the user as responses. ● An instant messaging client 1428 to which an embodiment of the assistant is connected via a messaging modality server 1430. The messaging modality server 1430 acts as a communications bridge taking input from the user as messages sent to the assistant and sending output from the assistant to the user as response messages. ● A voice call 1432 to which an embodiment of the Assistant is connected via a Voice over Internet Protocol (VoIP) modality server 1430. The VoIP modality server 1430 acts as a communications bridge that takes input from the user as spoken voice to the Assistant and sends output from the Assistant to the user, e.g., as synchronous speech in response.

[0054] For messaging platforms including, but not limited to, e-mail, instant messaging, discussion forums, group chat sessions, live help or customer support sessions, etc., the assistant 1002 acts as a participant in the conversation. The assistant 1002 monitors the conversation and responds to individuals or groups using one or more of the techniques and methods described herein for one-to-one interactions.

[0055] In various embodiments, the functionality for implementing the techniques of the present invention may be distributed among multiple client and / or server components. For example, various software modules may be implemented to perform various functions related to the present invention, and such modules may be variously implemented to execute on the server and / or client components. Further details of such configurations are provided in related U.S. Utility Application No. 12 / 987,982, entitled “Intelligent Automated Assistant,” filed Jan. 10, 2011, Attorney Docket No. P10575US1, the entire disclosure of which is incorporated herein by reference.

[0056] In the example of FIG. 32, the input retrieval and output processing functions are distributed between the client 1304 and the server 1340, with the client portion of the input retrieval 2794a and the client portion of the output processing 2792a located on the client 1304, and the server portion of the input retrieval 2794b and the server portion of the output processing 2792b located on the server 1340.

[0057] The following components are located on the server 1340: ● Complete vocabulary 2758b; ● A complete library of language pattern recognizers 2760b; ● Short-term personal memory master version 2752b; ●Long-term personal memory master version 2754b.

[0058] In one embodiment, the client 1304 maintains a subset and / or portion of these components locally to improve responsiveness and reduce dependency on network communications. Such subset and / or portion may be maintained and updated based on well-known cache management techniques. Such subset and / or portion may be, for example, • Vocabulary subset 2758a; ● Subset 2760a of the library of language pattern recognizers; ● Short-term personal memory cache 2752a; ● Long-term personal memory cache 2754a.

[0059] Additional components may be embodied as part of server 1340, including, for example: ● Language interpreters 2770; ● Dialogue flow processor 2780; ● Output processor 2790; ● Domain entity database 2772; ●Task flow model 2786; ●Service Orchestration 2782; ●Service Capability Model 2788.

[0060] Each of these components is described in more detail below. The server 1340 obtains additional information by interfacing with external services 1360 when necessary.

[0061] Conceptual Architecture Referring to FIG. 27, a simplified block diagram of a particular embodiment of a virtual assistant 1002 is shown. As detailed in the related U.S. utility patent application cited above, different embodiments of the virtual assistant 1002 may be configured, designed, and / or operated to provide a variety of different types of operations, functions, and / or features generally associated with virtual assistant technology. Furthermore, as detailed herein, many of the various operations, functions, and / or features of the virtual assistant 1002 disclosed herein may enable or provide different types of effects and / or benefits to different entities interacting with the virtual assistant 1002. The embodiment shown in FIG. 27 may be implemented using any of the hardware architectures described above, or a different type of hardware architecture.

[0062] For example, according to different embodiments, the virtual assistant 1002 can be configured, designed, and / or operated to provide a variety of different types of operations, functions, and / or features, such as, for example, one or more (or a combination) of the following: ● Automate the application of data and services available over the Internet to discover, browse, select, purchase, reserve, or order products and services. In addition to automating the process of using these data and services, the virtual assistant 1002 can also combine and use multiple sources of data and services at once, for example combining information about a product from multiple review sites, checking price and availability from multiple distributors, checking their location and time restrictions, and helping the user find a personalized answer to their problem. ● Automate the use of data and services available via the Internet to discover, research, select, book, and otherwise learn about things to do (including but not limited to movies, events, performances, exhibitions, shows and attractions), places to go (including but not limited to travel destinations, hotels and other places to stay, landmarks and other places of interest, etc.), places to eat and drink (restaurants, bars, etc.), meeting times and locations, and other entertainment sources or social engagements that can be found on the Internet. ● Operating applications and services via natural language dialogs provided by dedicated applications in a graphical user interface including search (including location-based search); navigation (maps and directions); database lookups (finding jobs or people by name or other properties, etc.); obtaining weather conditions and forecasts; checking the price of a market item or the status of a financial transaction; monitoring traffic or flight status; accessing and updating calendars and schedules; managing reminders, alerts, tasks and projects; communicating via e-mail or other messaging platforms; and enabling device operation (e.g., dialing phones, controlling lights and temperature, controlling home security devices, playing music or videos, etc.) from local or remote locations. In one embodiment, the virtual assistant 1002 is used to initiate, operate and control many of the functions and applications available on the device. - Providing personalized recommendations for activities, products, services, entertainment sources, time management, or any other type of recommendation service that would benefit from natural language two-way dialogue and automated access to data and services.

[0063] According to different embodiments, at least a portion of the various types of functions, operations, actions, and / or other features provided by the virtual assistant 1002 are embodied in one or more client systems, one or more server systems, and / or combinations thereof.

[0064] According to different embodiments, at least a portion of the various types of functions, operations, actions, and / or other features provided by the virtual assistant 1002 use context information to interpret and operationalize user input, as described in more detail herein.

[0065] For example, in at least one embodiment, the virtual assistant 1002 can operate to utilize and / or generate a variety of different types of data and / or other types of information when performing a particular task and / or operation. This includes, for example, input data / information and / or output data / information. For example, in at least one embodiment, the virtual assistant 1002 can operate to access, process, and / or otherwise utilize information from one or more different types of sources, such as, for example, one or more local and / or remote memories, devices, and / or systems. Additionally, in at least one embodiment, the virtual assistant 1002 can operate to generate one or more different types of output data / information, which can be stored, for example, in the memory of one or more local and / or remote devices and / or systems.

[0066] Different forms of input data / information accessed and / or utilized by the virtual assistant 1002 may include, for example, but are not limited to, one or more (or a combination) of the following: ●Mobile devices such as mobile phones and tablets, computers with microphones, Bluetooth® headsets, automobile voice control systems via telephone systems, recording in answering services, audio voicemail in integrated messaging services, consumer applications with voice input such as clock radios, voice input from telephone offices, home entertainment control systems, and games consoles. ●Text input from a computer or mobile device keyboard, a remote control or other consumer electronic device keypad, e-mail messages sent to an Assistant, instant messages or similar short messages sent to an Assistant, text received from players in a multi-user gaming environment, and text streamed in a message feed. ● Location information coming from sensors or location-based systems, including, for example, Global Positioning System (GPS) and Assisted GPS (A-GPS) in mobile phones. In one embodiment, location information is combined with explicit user input. In one embodiment, the system of the present invention can detect when the user is at home based on known address information and a current location determination. Thus, some assumptions are made regarding the type of information that is of interest when the user is at home and not outside of the home, and the type of services and actions that should be invoked on the user's behalf based on whether the user is at home or not. ● Time information from the client device's clock. This includes, for example, the time from a phone or other client device indicating the local time and the time zone. In addition, the time is used in relation to the user's requests, for example to interpret phrases such as "in an hour" and "tonight." ● Compass, accelerometer, gyroscope, and / or heading speed data and other sensor data from mobile or handheld devices or embedded systems such as automobile control systems. This also includes device positioning data from remote controls to appliances and game consoles. ● Clicks and menu selections and other events from a graphic user interface (GUI) on devices with a GUI. Further examples include touches on a touch screen. Events from sensors and other data-driven triggers, such as alarm clocks, calendar alerts, price change triggers, location triggers, push notifications from the server to the device, etc.

[0067] Input to the embodiments described herein also includes the context of the user interaction history, including dialog and request history.

[0068] As discussed in the related U.S. utility patent application referenced above, many different forms of output data / information can be generated by the virtual assistant 1002. These include, but are not limited to, one or more (or a combination) of the following: ● Text output sent directly to an output device and / or to the device's user interface; ● Texts and graphics sent to the user via e-mail; ● Text and graphics sent to users via messaging services; ● Speech output that includes one or more (or a combination) of the following: Synchronous Speech ○Sample speech ○ Recorded message • Graphical layout of information with pictures, rich text, video, sound and hyperlinks (e.g. content rendered in a web browser); • Actuator outputs that control physical actions of a device, such as turning the device on or off, making a sound, changing color, vibrating, controlling lights, etc; ● Invoking other applications on the device, such as calling mapping applications, voice dialing phones, sending e-mails or instant messages, playing media, entering calendar, task manager and note applications, and other applications; Actuator outputs that control physical actions on devices attached to or controlled by the device, such as operating a remote camera, controlling a wheelchair, playing music on a remote speaker, playing video on a remote display, etc.

[0069] However, it should be apparent that the virtual assistant 1002 of FIG. 27 is only one example of a wide variety of virtual assistant system embodiments that can be implemented. Other embodiments of the virtual assistant system (not shown) may include, for example, more, fewer, and / or different components / features than those illustrated in the exemplary virtual assistant system embodiment of FIG.

[0070] The virtual assistant 1002 may include a number of different types of components, devices, modules, processes, systems, etc., embodied and / or instantiated using, for example, hardware and / or a combination of hardware and software. For example, as shown in the example embodiment of FIG. 27, the assistant 1002 may include one or more (or a combination of) the following types of systems, components, devices, processors, etc. ● one or more active ontologies 1050; • an active input drawer component 2794 (including a client portion 2894a and a server portion 2794b); • Short-term personal memory component 2752 (including master version 2752b and cache 2752a); • Long-term personal memory component 2754 (including master version 2754b and cache 2754a, e.g., personal database 1058, application preferences and usage history 1072, etc.); ● Domain model components 2756; • Vocabulary component 2758 (including the complete vocabulary 2758b and subset 2758a); • A language pattern recognizer component 2760 (including full library 2760b and subset 2760a); ● Language interpreter component 2770; ● Domain entity database 2772; ● Dialogue flow processor component 2780; ● Service orchestration components 2782; ●Service components 2784; ● Task flow model components 2786; ● Dialogue flow model components 2787; ● Service model components 2788; ●Output processor component 2790.

[0071] In some client / server-based embodiments, some or all of these components are distributed between the client 1304 and the server 1340 .

[0072] In one embodiment, the virtual assistant 1002 receives user input 2704 via any suitable input modality including, for example, touch screen input, keyboard input, oral input, and / or combinations thereof. In one embodiment, the assistant 1002 also receives context information 1000, including event context 2706 and / or any of a number of other types of context described in detail herein.

[0073] Upon processing the user input 2704 and the context information 1000 according to the techniques described herein, the virtual assistant 1002 generates an output 2708 for presentation to the user. The output 2708 is generated based on an appropriate output modality informed by the context 1000 and other factors, if any. Output modalities include, for example, visual output presented on a screen, auditory output (including verbal output and / or beeps and other sounds), haptic output (such as vibration), and / or combinations thereof.

[0074] Additional details regarding the operation of the various components shown in FIG. 27 are provided in related U.S. Utility Application No. 12 / 987,982, entitled “Intelligent Automated Assistant,” filed January 10, 2011, Attorney Docket No. P10575US1, the entire disclosure of which is incorporated herein by reference.

[0075] context As described above, in one embodiment, the virtual assistant 1002 obtains and applies various context information to perform information processing functions. As will become apparent from the following description: • A range of sources of contextual information for use by the virtual assistant 1002; ●Technologies for representing, organizing and searching contextual information; How to enable context information to support the operation of multiple functions of a virtual assistant; and A method for efficiently acquiring, accessing and applying context information in a distributed system.

[0076] Those skilled in the art will appreciate that the following description of sources, techniques, and methods for using context information is merely exemplary, and that other sources, techniques, and methods can be used without departing from the essential characteristics of the invention.

[0077] Context Source Throughout the information processing steps performed by the virtual assistant 1002, many different kinds of context can be used to reduce the possible interpretations of the user input, including, for example, application context, personal data context, and previous dialog history. It will be apparent to one skilled in the art that other sources of context can also be utilized.

[0078] 1 is a block diagram illustrating a virtual assistant 1002 according to one embodiment and some examples of sources of context that affect its operation. The virtual assistant 1002 takes user input 2704, such as spoken or typed language, processes the input, and generates output 2708 to the user and / or performs actions on behalf of the user 2710. It should be apparent that the virtual assistant 1002 shown in FIG. 1 is only one example of a wide range of virtual assistant system embodiments that can be embodied. Other embodiments of the virtual assistant system (not shown) may include, for example, more, fewer, and / or different components / features than those illustrated in the exemplary virtual assistant 1002 shown in FIG. 1.

[0079] As described in more detail herein, the virtual assistant 1002 can utilize any of a number of different sources of knowledge and data, such as dictionaries, domain models, and / or task models. From the perspective of the present invention, such sources, referred to as background sources, are internal to the assistant 1002. In addition to user input 2704 and background sources, the virtual assistant 1002 can also utilize information from a number of context sources, including, for example, device sensor data 1056, application preferences and usage history 1072, dialogue history and assistant memory 1052, personal database 1058, personal acoustic context data 1080, current application context 1060, and event context 2706. These are described in more detail herein.

[0080] Application Context 1060 Application context 1060 refers to the application or similar software state in which a user does something. For example, a user can use a text messaging application to chat with a particular individual. The virtual assistant 1002 does not have to be specific to or part of the user interface of the text messaging application. Rather, the virtual assistant 1002 can receive context from multiple applications, with each application contributing its context to inform the virtual assistant 1002.

[0081] If the user is currently using an application when the virtual assistant 1002 is invoked, the state of that application can provide useful context information. For example, if the virtual assistant 1002 is invoked from within an email application, the context information can include sender information, recipient information, data and / or sent time, subject, email content, data extracted from the mailbox or folder name, etc.

[0082] 11-13 are a set of screenshots showing an example of the use of application context in the text messaging domain to derive pronoun referents according to one embodiment. FIG. 11 shows a screen 1150 displayed while the user is in a text messaging application. FIG. 12 shows a screen 1250 after the virtual assistant 1002 is activated in the context of a text messaging application. In this example, the virtual assistant 1002 presents a prompt 1251 to the user. In one embodiment, the user can provide verbal input by tapping a microphone icon 1252. In another embodiment, the assistant 1002 can accept verbal input at any time and does not require the user to tap the microphone icon 1252 until the user provides input, so the icon 1252 becomes a reminder that the assistant 1002 is waiting for verbal input.

[0083] In Figure 13, a user engages in a dialog with virtual assistant 1002 shown in screen 1253. The user's speech input "call him" is echoed, and virtual assistant 1002 responds by calling a specific individual at a specific telephone number. To interpret the user's ambiguous input, virtual assistant 1002 uses a combination of multiple context sources to derive a pronoun referent, as described in more detail herein.

[0084] 17-20 illustrate another example of the use of the current application context to enable commands to be interpreted and acted upon in accordance with one embodiment.

[0085] In Figure 17, a user is presented with their e-mail inbox 1750 and the user selects to view a particular e-mail message 1751. Figure 18 shows the e-mail message 1751 selected for viewing, which in this example includes an image.

[0086] 19, the user activates the virtual assistant 1002 while viewing an e-mail message 1751 from within an e-mail application. In one embodiment, the display of the e-mail message 1751 moves up the screen to make room for a prompt 150 from the virtual assistant 1002. This display reinforces the idea that the virtual assistant 1002 is providing assistance in the context of the currently viewed e-mail message 1751. Thus, user input to the virtual assistant 1002 is interpreted in the current context in which the e-mail message 1751 is being viewed.

[0087] In FIG. 20, the user gives the command 2050 "Reply let's get this to marketing right away." Context information, including information about the email message 1751 and the email application in which it is displayed, is used to interpret the command 2050. This context can be used to determine the meaning of the words "reply" and "this" in the command 2050 and to work out how to configure the email composition process for a particular recipient in a particular message thread. In this case, the virtual assistant 1002 can access the context information to determine that "marketing" refers to a recipient named John Applecore and determine the email address to use for that recipient. Thus, the virtual assistant 1002 composes the email 2052 for the user to approve and send. In this way, the virtual assistant 1002 can perform a task (composing an email message) based on user input together with context information describing the current state of the application.

[0088] Application context can also help in identifying the meaning of a user's intent across applications. FIG. 21 shows an example in which a user invokes virtual assistant 1002 in the context of viewing an e-mail message (such as e-mail message 1751), but the user's command 2150 is "Send him a text...". Command 2150 is interpreted by virtual assistant 1002 as an indication that a text message should be sent, not an e-mail. However, the use of the word "him" indicates that the same recipient (John Applecore) is intended. Thus, virtual assistant 1002 recognizes that communication should be made to this recipient over a different channel (a text message to a personal phone number obtained from contact information stored on the device). Thus, virtual assistant 1002 composes text message 2152 for the user to approve and send.

[0089] Examples of context information that can be obtained from an application include, but are not limited to: ● Application identity; ● The current object(s) being operated on in the application, such as the current e-mail message, the current song or playlist or channel being played, the current book or movie or photo, the current calendar day / week / month, the current reminder list, the current phone call, the current text message conversation, the current maps location, the current web page or search query, the current or other location for location-sensing applications, the current social network profile, or other application-specific notion of a current object; Names, places, dates, and other identifiable entities or values ​​that can be extracted from the current object.

[0090] Personal Database 1058 Another source of context data is a user's personal database 1058 on a device such as a phone, e.g., an address book containing names and phone numbers. Figure 14 shows an example of a screenshot of the virtual assistant 1022 prompting for name disambiguation according to one embodiment. Here, the user says "Call Herb" and the virtual assistant 1002 prompts the user to select a matching contact in the user's address book. Thus, the address book is used as a source of personal data context.

[0091] In one embodiment, the user's personal information is obtained from the personal database 1058 for use as context for interpreting and / or operationalizing the user's intent or other functions of the virtual assistant 1002. For example, data in the user's contact database can be used to reduce ambiguity in interpreting the user's commands when the user refers to someone by their first name only. Contextual information that can be obtained from the personal database 1058 includes, but is not limited to, the following: ● The user's contact database (address book)···including names, phone numbers, physical addresses, network addresses, account identifiers, and information about important dates···about the people, companies, organizations, places, websites, and other entities to which the user refers; ● The user's own name, preferred pronunciation, addresses, phone numbers, etc.; ● The user's kinship status, e.g., mother, father, sister, head of household, etc; ● The user's calendar data, including names of calendar events, special days, or other named entries referenced by the user; ● A user's reminder or task list, which includes a list of things to do, remember or get to that the user refers to; ● Song titles, genres, playlists and other data related to your music library that you browse; ● people, places, categories, tags, labels or other symbolic names in photos or videos or other media in the user's media library; - The title, author, genre or other symbolic name of a book or other document in the user's personal library.

[0092] Dialogue History 1052 Another source of context data is the user's dialog history 1052 with the virtual assistant 1002. Such history includes, for example, references to domains, people, places, etc. FIG. 15 shows an example of the virtual assistant 1002 using dialog context to infer a location for a command according to one embodiment. In screen 1551, the user first asks "What's the time in New York," and the virtual assistant 1002 responds 1552 by giving the current time in New York City. The user then asks "What's the weather." Using the previous dialog history, the virtual assistant 1002 infers that the location intended for the weather question is the last location mentioned in the dialog history. Therefore, the response 1553 gives weather information for New York City.

[0093] As another example, if the user says "find camera shops near here" and then, after reviewing the results, says "how about San Francisco?", the assistant uses the dialog context to determine that "how about" means "do the same task (find camera stores)" and that "in San Francisco" means "changing the locus of the search from here to San Francisco." The virtual assistant 1002 can also use previous details of the dialog, such as previous outputs given to the user, as context. For example, if the virtual assistant 1002 uses a clever response intended as humor, such as "Sure thing, you're the boss," it can remember that it has already said this and avoid repeating the phrase within the dialog session.

[0094] Context information from the dialog history and virtual assistant memory includes, for example, but is not limited to: • People mentioned in the dialogue; ● Places and locations mentioned in the dialogue; ● The current time frame that is the focus; The current application domain that is the focus, such as email or calendar; The current task that is the focus, such as reading an email or creating a calendar entry; ● The current domain object that is the focus, such as the email message that was just read, or the calendar entry that was just created; ● The current state of the dialog or transaction flow, such as whether a question has been asked and what answer is expected; ● A history of user requests, such as "good Italian restaurants"; ● A history of the results of user requests, such as the set of restaurants returned; ● History of phrases used by the assistant in dialogues; ● Facts told to the Assistant by the user, such as "my mother is Rebecca Richards" and "I liked that restaurant."

[0095] 25A and 25B are a series of screenshots illustrating the use of previous dialog context according to one embodiment. In FIG. 25A, a user enters a request 2550 for a new email from John. The virtual assistant 1002 responds by displaying an email message 2551 from John. In FIG. 25B, the user enters a command 2552, "Reply let's get this to marketing right away." The virtual assistant 1002 uses the previous dialog context to interpret the command 2552; in particular, the command is interpreted as referring to the email message 2551 displayed in FIG. 25.

[0096] Equipment Sensor Data 1056 In one embodiment, the physical device running the virtual assistant 1002 has one or more sensors. Such sensors provide a source of contextual information, including, but not limited to, the following: ● The user's current location; ● The local time of the user's current location; • Location, orientation and movement of equipment; ● Current light levels, temperature and other environmental measurements; • The characteristics of the microphone and camera in use; ● Signatures of the current network being used and connected networks including Ethernet, Wi-Fi and Bluetooth. Signatures include the MAC address of the network access point, the assigned IP address, device identifiers such as the Bluetooth name, frequency channel, and other characteristics of the wireless network.

[0097] The sensors may be of any type including, for example, an accelerometer, a compass, a GPS unit, an altitude detector, a light sensor, a thermometer, a barometer, a clock, a network interface, a battery test circuit, and the like.

[0098] Application preferences and usage history 1072 In one embodiment, information 1072 describing user preferences and settings and usage history for various applications is used as context for interpreting and / or operating the user's intent or other functions of the virtual assistant 1002. Such preferences and history 1072 may include, for example, but are not limited to: Shortcuts, favorites, bookmarks, friends lists, or other collections of user data about people, companies, addresses, phone numbers, locations, websites, email messages, or other criteria; ● Recent calls made on the device; ● Recent text message conversations, including the parties to the conversation; ● Recent requests for maps or directions; ● Recent web searches and URLs; ● Stocks listed in the Stock Application; ● Recently played songs or videos or other media; ● Name of the alarm set in the Alerts application; ● The name of an application or other digital object on the device; - The user's preferred language, or the language used at the user's location.

[0099] An example of using a phone's favorites list as a source of context according to one embodiment is shown in Figure 16. Screen 1650 shows a list of favorite contacts 1651. If a user gives the input "call John," this list of favorite contacts 1651 is used to determine that "John" refers to John Appleseed's mobile number, since this number appears in the list.

[0100] Event Context 2706 In one embodiment, the virtual assistant 1002 can use context associated with asynchronous events that occur independent of user interaction with the virtual assistant 1002. Referring to Figures 22-24, an example is shown illustrating activation of the virtual assistant 1002 after an event occurs that provides an event context or alert context according to one embodiment. In this case, the event is an incoming text message 2250, as shown in Figure 22. In Figure 23, the virtual assistant 1002 is invoked and the text message 2250 is shown along with a prompt 1251. In Figure 24, the user enters the command "call him" 2450. The virtual assistant 1002 uses the event context to disambiguate the command by interpreting "him" to mean the individual who sent the incoming text message 2250. The virtual assistant 1002 further uses the event context to determine which phone number to use for the outgoing call. A confirmation message 2451 is displayed to indicate that the call will be made.

[0101] Alert context information includes, but is not limited to, the following: ●Incoming text messages or pages; ● Incoming e-mail messages; ●Incoming telephone calls; ● Reminder notifications or task alerts; ● Calendar alerts; ● Alert clocks, timers, or other time-based alerts; ● Notifications of scores or other events from the game; ● Financial event notifications such as stock price alerts; ● news flashes or other broadcast announcements; ● Push notifications from any application.

[0102] Personal Audio Context Data 1080 When interpreting speech input, the virtual assistant 1002 can also take into account the acoustic environment in which the speech is input. For example, the noise profile of a quiet office is different from that of a car or public place. If the speech recognition system can identify and store acoustic profile data, they can also be provided as context information. When combined with other context information such as the properties of the microphone in use, the current location, and the current dialog state, the acoustic context aids in recognizing and interpreting the input.

[0103] Representing and Accessing Context As described above, the virtual assistant 1002 can use context information from any of a number of different sources. Any of a number of different mechanisms can be used to represent the context so that it is available to the virtual assistant 1002. Figures 8a-8d show some examples of representing context information for use in connection with various embodiments of the present invention.

[0104] Representation of people, places, times, domains, tasks and objects Figure 8a shows example context variables 801-809 that represent simple properties such as the geographic coordinates of the user's current location. In one embodiment, current values ​​can be maintained for a core set of context variables, such as current user, current location as focus, current time frame as focus, current application domain as focus, current task as focus, and current domain object as focus. A data structure such as that shown in Figure 8a can be used for such a representation.

[0105] Figure 8b shows an example of a more complex representation 850 that can be used to store context information for a contact. Also shown is an example representation 851 that includes data for a contact. In one embodiment, a contact (or person) is represented as an object with properties for name, gender, address, phone number, and other properties that are kept in a contact database. Similar representations can be used for location, time, application domain, tasks, domain objects, etc.

[0106] In one embodiment, a set of current values ​​of a given format is represented. Such a set may refer to current people, current place, current time, etc.

[0107] In one embodiment, the context values ​​are arranged in a history such that the current context value frame occurs at N iterations, and the context value frame that is currently at the N-1 iteration returns to some limit on the desired history length. Figure 8c shows an example of an array 811 that contains a history of context values. In particular, each column in Figure 8c represents a context variable, and the rows correspond to different times.

[0108] In one embodiment, the set of typed context variables are arranged in the history as shown in Figure 8d. In this example, a set of context variables 861 that refer to an individual is shown along with another set of context variables 871 that refer to a location. Thus, relevant context data for a particular time in the history can be retrieved and applied.

[0109] Those skilled in the art will appreciate that the particular representations shown in Figures 8a-8d are merely exemplary, and that numerous other mechanisms and / or data formats for representing context can be used, including, for example: In one embodiment, the current user of the system is represented in some special way so that the virtual assistant 1002 knows how to address the user and refer to the user's home, work, mobile phone, etc. In one embodiment, relationships among people are represented so that the virtual assistant 1002 can understand references such as "my mother" or "my family head." ● Places are represented as objects with properties such as name, street address, geographic coordinates, etc. ● Time is represented as an object with properties including universal time, time zone offset, and resolution (such as years, months, days, hours, minutes, or seconds). Time objects can also represent symbolic times such as "today", "this week", "this (coming) weekend", "next week", "Annie's birthday", etc. Time objects can also represent durations or points in time. ● Context can also be given in terms of an application domain representing a service or application or domain of discourse, e.g., email, text messaging, phone, calendar, contacts, photos, videos, maps, weather, reminders, clock, web browser, Facebook, Pandora, etc. The current domain indicates which of these domains is the focus. A context may also define one or more tasks or operations to perform within the domain. For example, within the email domain there are tasks such as reading email messages, searching emails, composing new emails, etc. - Domain objects are data objects associated with various domains, for example, an email domain operates on email messages, a calendar domain operates on calendar events, and so on.

[0110] For purposes of this discussion, these representations of context information are referred to as context variables of a given type. For example, a representation of the current user is a context variable of the type "personal".

[0111] Representation of Context Derivation In one embodiment, the derivation of a context variable is explicitly represented so that it can be used in information processing. The derivation of context information characterizes the source and / or set of inferences that are made to complete or retrieve information. For example, the "Personal" context value 851 depicted in Figure 8b is derived from the "Text Message Domain Object" obtained from the event context 2706. This source of context value 851 is represented.

[0112] Representing the history of user requests and / or intent In one embodiment, a history of user requests can be stored. In one embodiment, a history of a deep structural representation of the user's intent (derived from natural language processing) can also be stored. This allows the virtual assistant 1002 to take the meaning of new input in the context of previously interpreted input. For example, if a user asks "what is the weather in New York?", the language interpreter 2770 interprets the question as referring to the location of New York. Then, when the user says "what is it for this weekend?", the virtual assistant 1002 refers to this previous interpretation and determines that "what is it" should be interpreted as meaning "what is the weather."

[0113] Viewing the results history In one embodiment, the history of the results of user requests can be stored in the form of domain objects. For example, a user request "find me some good Italian restaurants" returns a set of domain objects that represent restaurants. If the user then enters a command such as "call Amilio's," the virtual assistant 1002 searches results for restaurants named "Amilio's" in the search results, which is a smaller set than all possible places that can be called.

[0114] Late binding of context variables In one embodiment, a context variable can represent information that is retrieved or derived on demand. For example, a context variable representing a current location, when accessed, can call an API that retrieves the current location data from the device and can perform other processing, such as calculating a street address. The value of that context variable can be maintained for a period of time based on a caching policy.

[0115] Contextual Search The virtual assistant 1002 can search for relevant contextual information to solve an information processing problem using any of a number of different solutions. Different types of searches include, but are not limited to, for example: ● Search by context variable name If the name of the requested context variable is known, such as "current user first name," the virtual assistant 1002 can search for that instance. If history is kept, the virtual assistant 1002 first searches the current value, then looks at earlier data until a match is found. ● Searching by Context Variable FormatIf the type of the requested context variable is known, such as "personal," the virtual assistant 1002 can search for instances of context variables of this type. If history is kept, the virtual assistant 1002 first searches the current value, then looks at earlier data until a match is found.

[0116] In one embodiment, if the current information processing problem requires a single match, then the search terminates when a match is found. If multiple matches are allowed, matching results may be searched for until a certain limit is reached.

[0117] In one embodiment, if appropriate, the virtual assistant 1002 can limit its search to data that has a derivation. For example, when looking for "people" objects in an email taskflow, the virtual assistant 1002 only considers context variables whose derivation is an application related to the domain.

[0118] In one embodiment, the virtual assistant 1002 uses rules that use available properties of the context variables and rank matches based on heuristics. For example, when processing a user input that includes the command "tell her I'll be late," the virtual assistant 1002 interprets "her" by referring to the context. In doing so, the virtual assistant 1002 can apply rankings to indicate preferences for "people" objects whose derivation is application usage history for communication applications such as text messaging and e-mail. As another example, to interpret the command "call her," the virtual assistant 1002 can apply rankings to prefer "people" objects with phone numbers over those without known phone numbers. In one embodiment, ranking rules are associated with domains. For example, different ranking rules can be used to rank "person" variables in the "e-mail" and "phone" domains. It will be apparent to one skilled in the art that such ranking rules can be generated and / or applied based on the particular representation of and access to the required context information.

[0119] Using Context to Improve Virtual Assistant Operations As described above, context can be applied to various calculations and inferences in connection with the operation of the virtual assistant 1002. Figure 2 is a flow chart illustrating a method 10 of using context for various processing steps in the virtual assistant 1002 according to one embodiment.

[0120] The method 10 is implemented in connection with one or more embodiments of a virtual assistant 1002.

[0121] In at least one embodiment, method 10 is operable to perform and / or embody various types of functions, operations, actions, and / or other features, such as one or more (or a combination thereof) of the following: Execute an interface control flow loop of a conversational interface between the user and the virtual assistant 1002. At least one iteration of method 10 serves as one ply in the conversation. The conversational interface is an interface in which the user and the assistant 1002 communicate by speaking back and forth in a conversational manner. Provides a supervisory control flow for the virtual assistant 1002. That is, this procedure controls the collection of input, the processing of the input, the generation of output, and the presentation of the output to the user. Coordinates communication between components of the virtual assistant 1002, i.e. dictates where the output of one component is fed to another, and where global inputs from and actions to the environment occur.

[0122] In at least some embodiments, portions of method 10 may be implemented in other devices and / or systems on a computer network.

[0123] According to particular embodiments, multiple instances or threads of method 10 may be implemented and / or initiated simultaneously through the use of one or more processors 63, and / or hardware and / or other combinations of hardware and software. In at least one embodiment, one or more portions or selected portions of method 10 may be implemented in one or more clients 1304, one or more servers 1340, and / or combinations thereof.

[0124] For example, in at least some embodiments, various aspects, features, and / or functions of method 10 may be performed, embodied, and / or initiated by software components, network services, databases, etc., or combinations thereof.

[0125] According to different embodiments, one or more different threads or instances of method 10 are initiated in response to detection of one or more conditions or events that satisfy one or more different types of criteria (e.g., minimum threshold criteria) for triggering initiation of at least one instance of method 10. Various types of conditions or events that may trigger initiation and / or instantiation of one or more different threads or instances of the method may include, for example, but are not limited to, one or more of the following (or a combination thereof): A user session with an instance of the virtual assistant 1002, such as, but not limited to, one or more of the following: ○ Mobile device application startup, e.g., a mobile device application embodying an embodiment of the virtual assistant 1002; ○ Computer application startup, e.g., an application embodying an embodiment of the Virtual Assistant 1002; ○ A dedicated button on the mobile device that is pressed, e.g. the "speech input button"; ○ buttons on peripheral devices attached to a computer or mobile device, such as headsets, telephone handsets or base stations, GPS navigation systems, consumer electronics, remote controls, or other devices with buttons associated with calling for assistance; ○ A web session initiated from a web browser to a website embodying the virtual assistant 1002; ○ Interactions initiated from within an existing web browser session to a website embodying the virtual assistant 1002, e.g., where the services of the virtual assistant 1002 are requested; ○ An e-mail message sent to the modality server 1426 that mediates communication with an embodiment of the virtual assistant 1002; ○ A text message sent to a modality server 1426 that mediates communication with an embodiment of the virtual assistant 1002; ○ A telephone call made to a modality server 1434 that mediates communications with an embodiment of the virtual assistant 1002; ○Events such as alerts or notifications sent to the application providing the embodiment of the virtual assistant 1002. When the device providing the virtual assistant 1002 is turned on and / or started.

[0126] According to different embodiments, one or more different threads or instances of method 10 may be initiated and / or implemented manually, automatically, statically, dynamically, simultaneously, and / or combinations thereof. Additionally, different instances and / or embodiments of method 10 may be initiated at one or more different time intervals (e.g., during specific time intervals, at regular periodic intervals, at irregular periodic intervals, on-demand, etc.).

[0127] In at least one embodiment, a given instance of method 10 utilizes and / or generates a variety of different types of data and / or other types of information when performing a particular task and / or operation, including context data as described herein. Data may also include other types of input data / information and / or output data / information. For example, in at least one embodiment, at least one instance of method 10 may access, process, and / or otherwise utilize information from one or more different types of sources, such as one or more databases. In at least one embodiment, at least a portion of the database information is accessed via communication with one or more local and / or remote memory devices. Additionally, at least one instance of method 10 generates one or more different types of output data / information, which may be stored, for example, in a local memory and / or a remote memory device.

[0128] In at least one embodiment, the initial configuration of a given instance of method 10 is accomplished using one or more different types of initialization parameters. In at least one embodiment, at least a portion of the initialization parameters are accessed via communication with one or more local and / or remote memory devices. In at least one embodiment, at least a portion of the initialization parameters provided to an instance of method 10 correspond to and / or are derived from input data / information.

[0129] In the particular example of FIG. 2, assume that one user accesses an instance of virtual assistant 1002 over a network from a client application with speech input capabilities.

[0130] Elicit and interpret speech input 100. Elicitation includes presenting prompts in an appropriate mode. In various embodiments, the client's user interface provides multiple input modes. These include, for example: ● An interface for typing that invokes an active typing withdrawal procedure; ● An interface for speech input that invokes an active speech input elicitation procedure; ● Active GUI based input drawer, menu-based input selection interface.

[0131] Techniques for accomplishing each of these are described in the related patent applications referenced above. It will be apparent to those skilled in the art that other input modes may be provided. The output of step 100 is a set of candidate interpretations 190 of the input speech.

[0132] The set of candidate interpretations 190 is processed 200 by a language interpreter 2770 (also called a natural language processor or NLP), which parses the text input and generates 290 a set of possible interpretations of the user's intent.

[0133] In step 300, the representation of the user's intent 290 is sent to a dialog flow processor 2780 that embodies an embodiment of the dialog and flow analysis procedure described with reference to Figure 5. The dialog flow processor 2780 determines which interpretation of the intent is most likely, maps that interpretation to an instance of the domain model and parameters of the task model, and determines the next flow step in the task flow.

[0134] In step 400, the identified flow steps are executed. In one embodiment, the invocation of the flow steps is accomplished by a service orchestration component 2782, which invokes a set of services on behalf of the user's request. In one embodiment, these services contribute some data to a common result.

[0135] In step 500, a dialog response is generated. In step 700, the response is sent to the client device for output. The device's client software renders it on the client device's screen (or other output device).

[0136] After viewing the response, if the user is finished, the method ends 790. If the user is not finished, another iteration of the loop begins by returning to step 100.

[0137] The context information 1000 is used by various components of the system at various points in the method 10. For example, as shown in Figure 2, the context 1000 is used in steps 100, 200, 300 and 500. The use of the context 1000 in these steps is further described below. However, it will be apparent to one skilled in the art that the use of the context information is not limited to these particular steps and that the system may use the context information at other points as well without departing from the essential features of the invention.

[0138] Moreover, it will be apparent to one skilled in the art that different embodiments of method 10 may include additional features and / or operations other than those illustrated in the particular embodiment shown in FIG. 2 and / or may omit at least a portion of the features and / or operations of method 10 illustrated in the particular embodiment of FIG. 2.

[0139] Using Context in Speech Elicitation and Interpretation 3 is a flow chart illustrating a method 100 of using context in speech elicitation and interpretation to improve speech recognition according to one embodiment. Context 1000 is used in speech recognition disambiguation, for example to guide the generation, ranking and filtering of candidate hypotheses that match phonemes to words. Different search recognition systems use various mixtures of generation, ranking and filtering, but context 1000 can generally be applied to reduce the hypothesis space at any stage.

[0140] The method begins at 100. An assistant 1002 receives voice or speech input 121 in the form of an auditory signal. A speech-to-text service 122 or processor generates a set of candidate text interpretations 124 of the auditory signal. In one embodiment, the speech-to-text service 122 is implemented using, for example, Nuance Recognizer available from Nuance Communications, Inc. of Burlington, Massachusetts.

[0141] In one embodiment, the assistant 1002 uses a statistical language model 1029 to generate candidate text interpretations 124 of the speech input 121. In one embodiment, the context 1000 is applied to bias the generation, filtering, and / or ranking of the candidate interpretations 124 generated by the speech-to-text service 122. For example, ● The speech-to-text service 122 can use vocabulary from the user personal database 1058 to bias the statistical language model 1029. The speech-to-text service 122 can use the dialog state context to select a custom statistical language model 1029. For example, when asking a yes / no question, a statistical language model 1029 is selected that biases those words towards listening. The speech-to-text service 122 can now use application context to bias towards relevant words. For example, "call her" is preferred over "collar" in a text messaging application context because such a context provides a "personal object" that can be called.

[0142] For example, a given speech input leads the speech-to-text service 122 to generate the interpretations "call her" and "collar". Guided by the statistical language model (SLM) 1029, the speech-to-text service 122 is tuned by grammatical constraints such as hearing "call" followed by the name. The speech-to-text service 122 is also tuned based on the context 1000. For example, if "Herb" is a first name in the user's address book, this context can be used to lower the threshold for considering "Herb" as an interpretation of the second syllable. That is, the presence of a name in the user's personal data context influences the selection and tuning of the statistical language model 1029 used to generate hypotheses. The name "Herb" can be part of the general SLM 1029 or can be added directly by the context 1000. In one embodiment, it can be added as an additional SLM 1029 that is tuned based on the context 1000. In one embodiment, this is the tuning of the existing SLM 1029 that is tuned based on the context 1000 .

[0143] In one embodiment, the statistical language model 1029 is also tuned to look for words, names and phrases from the application preferences and usage history 1072 stored in the long term personal memory 2754 and / or the personal database 1058. For example, the statistical language model 1029 is fed text from to-do items, list items, personal notes, calendar entries, names of people in a contacts / address book, email addresses in a contacts / address book, street or city names, etc.

[0144] The ranking component analyzes 124 the candidate interpretations and ranks 126 them based on how well they fit into the syntactic and / or semantic model of the virtual assistant 1002. A source of constraints on the user input may be used. For example, in one embodiment, the assistant 1002 ranks the output of the speech-to-text interpreter based on how well the interpretations parse in a syntactic and / or semantic sense, a domain model, a task flow model, and / or a dialog model, etc., i.e., assessing how well various combinations of words in the candidate interpretations 124 fit into the concepts, relationships, entities, and properties of the active ontology and its associated models, as described in the related U.S. utility patent application referenced above.

[0145] The ranking 126 of the candidate interpretations is also influenced by the context 1000. For example, if the user is currently engaged in a conversation in a text messaging application when the virtual assistant 1002 is invoked, then the phrase "call her" is likely to be a more correct interpretation than the word "collar" because "her" has the potential to call in this context. Such a bias can lead to a ranking of hypotheses 126 that favor "call her" or "call" when the current application context dictates an application that provides "callable entities."<contact name> This can be achieved by tuning into a preferred phrase such as "."

[0146] In various embodiments, the algorithms or procedures used by assistant 1002 to interpret the text input, including the embodiment of the natural language processing procedures shown in FIG. 3, are used to rank and score the candidate text interpretations 124 generated by speech-to-text service 122.

[0147] Context 1000 can also be used to filter candidate interpretations 124, instead of or in addition to limiting the generation of candidate interpretations or influencing their ranking. For example, a filtering rule may specify that the context of an address book entry for "Herb" is sufficient to indicate that a phrase containing it should be considered a top candidate 130, even though it is below a filtering threshold. Depending on the particular speech recognition technology used, constraints based on contextual biases may be applied to the generation, ranking and / or filtering stages.

[0148] In one embodiment, if the ranking component 126 determines that the highest ranking speech interpretation from the interpretations 124 ranks above a specified threshold, the highest ranking interpretation is automatically selected 130. If no interpretation ranks higher than the specified threshold, possible candidate interpretations 134 of the speech are presented 132 to the user. The user then makes a selection 136 from the displayed options.

[0149] Figures 26A and 26B are screenshots depicting an example of a user interface for selecting between candidate interpretations according to one embodiment. Figure 26A shows the presentation of user speech 2651 with a dot under the ambiguous interpretation. When the user taps on the text, alternative interpretations 2652A, 2652B are shown as shown in Figure 26B. In one embodiment, the context 1000 influences which of the candidate interpretations 2652A, 2652B is the preferred interpretation (shown as the initial default as in Figure 25A), as well as the selection of a limited set of alternatives to present as in Figure 26B.

[0150] In various embodiments, user selection 136 among the displayed options is accomplished by mode of input, including, for example, multimodal input. Such input modes include, but are not limited to, actively elicited type input, actively elicited speech input, actively presented GUI for input, etc. In one embodiment, the user can select among candidate interpretations 134, for example, by tapping or speaking. In the case of speaking, the possible interpretations of a new speech input are significantly constrained 134 by the small set of options provided.

[0151] Regardless of whether an input is automatically selected 130 or user selected 136, the resulting one or more text interpretations 190 are returned. In at least one embodiment, the returned input is annotated such that information about which selection was made in step 136 is stored with the text input. This can allow, for example, semantic concepts or entities underlying the string to be associated with the string upon return, improving the accuracy of subsequent language interpretations.

[0152] Any of the sources described with reference to FIG. 1 can provide context 1000 for the speech elicitation and interpretation method shown in FIG. 3. For example, - "Personal Acoustic Context Data" 1080 is used to select among possible SLMs 1029 or otherwise tune them to optimize for the recognized acoustic context. ● "Device Sensor Data" 1056 describing properties of the microphone and / or camera in use is used to select among possible SLMs 1029 or otherwise tune them to optimize for the recognized acoustic context. • Vocabulary from the personal database 1058 and application preferences and usage history 1072 are used as context 1000. For example, media titles and artist names are used to tune the language model 1029. ● The current dialog state, a portion of the dialog history, and the assistant memory 1052 are used to bias the generation / filter / rank of candidate interpretations 124 by the text-to-speech service 122. For example, one type of dialog state asks a yes / no question. When in such a state, the procedure 100 can select an SLM 1029 that biases towards hearing those words, or biases the ranking and filtering of those words in a context-specific tuning at 122.

[0153] Using Context in Natural Language Processing The context 1000 is used to facilitate natural language processing (NLP), i.e., parsing text input into semantic structures that represent possible parses. Figure 4 is a flow chart illustrating a method for using context in natural language processing performed in a language interpreter 2770, according to one embodiment.

[0154] The method begins at 200. Input text is received 202. In one embodiment, the input text 202 is matched 210 against words and phrases using a pattern recognizer 2760, a vocabulary database 2758, and ontologies and other models 1050 to identify associations between the user input and concepts. Step 210 produces a set of candidate syntactic parses 212, which are matched 220 for semantic relevance to generate candidate semantic parses 222. The candidate parses are then processed at 230 to remove ambiguous alternatives, filtered and sorted by relevance 232, and returned.

[0155] Throughout natural language processing, context information 1000 can be applied to reduce the hypothesis space and limit the possible parses. For example, if the language interpreter 2770 receives two candidates "call her" and "call Herb", the language interpreter 2770 finds bindings 212 for the words "call", "her" and "Herb". The application context 1060 is used to limit the possible word meanings for "call" to mean "phone call". The context is also used to find the referents of "her" and "Herb". For "her", the context sources 1000 are searched for sources of callable entities. In this example, the parties to a text messaging conversation are callable entities and this information is part of the context coming from the text messaging application. In the case of "Herb," ​​the user's address book is a source of contextual clarity, along with other personal data, such as application preferences (such as favorite numbers from domain entity database 2772) and application usage history (such as recent phone calls from domain entity database 2772). In the example where the current text messaging party is Rebecca Richards and the user has Herb Gowen in their address book, the two parses generated by language interpreter 2770 would result in semantic structures representing "PhoneCall(Rebecca Richards)" and "PhoneCall(Herb Gowen)".

[0156] Data from the application preferences and usage history 1072, the dialog history and assistant memory 1052, and / or the personal database 1058 may also be used by the language interpreter 2770 in generating candidate syntactic parses 212. Such data may be obtained, for example, from the short-term and long-term memories 2752, 2754. In this manner, input previously given in the same session and / or known information about the user may be used to improve performance, reduce ambiguity, and enhance the conversationality of the interaction. Data from the active ontology 1050, the domain model 2756, and the task flow model 2786 may also be used to perform evidential reasoning in determining valid candidate syntactic parses 212.

[0157] In semantic matching 220, the language interpreter 2770 considers combinations of possible parse results based on how well they fit a semantic model, such as a domain model and a database. Semantic matching 220 uses data from, for example, the active ontology 1050, the short-term personal memory 2752, and the long-term personal memory 2754. For example, semantic matching 220 uses data from previous references to venues or local events in a dialog (from the dialog history and assistant memory 1052), or personally favorite venues (from application preferences and usage history 1072). The semantic matching 220 step also uses the context 1000 to interpret phrases into domain intent structures. A set of candidate or potential semantic parse results is generated 222.

[0158] In a disambiguation step 230, the language interpreter 2770 weights the evidential strength of the candidate semantic parse results 222. Disambiguation 230 involves reducing the number of candidate semantic parses 222 by eliminating unlikely or redundant alternatives. Disambiguation 230 uses data, for example, from the structure of the active ontology 1050. In at least one embodiment, connections between nodes in the active ontology provide evidential support for disambiguating among the candidate semantic parse results 222. In one embodiment, the context 1000 is used to assist in such disambiguation. Such disambiguation includes, for example, determining one of multiple people with the same name, determining the referent for a command such as "reply" (e-mail or text message), dereferencing pronouns, and so on.

[0159] For example, an input such as "call Herb" potentially references entities that match "Herb." Such entities are numerous in the user's address book (personal database 1058), as well as in the database of business names from personal database 1058 and / or domain entity database 2772. Multiple context sources may limit the set of matches to "Herb" and / or rank and filter them in step 232. For example, ● other “application preferences and usage history” 1072, such as Herb who is on your favorite phone number list, or who has been recently called, or who is a recent party to a text message conversation or e-mail thread; ● Herb mentioned in the personal database 1058, e.g., Herb who is the name of a relative such as a father or brother, or who is a participant listed in a recent calendar event. If the task is to play media rather than a phone call, names from the media title, producer, etc. are constraining sources. Recent precedence of a dialog in a request or result. For example, after searching for e-mails from John, as described above with reference to Figures 25A-25B, the user can compose a response while the search results are still in the dialog context. The assistant 1002 can use the dialog context to identify a particular application domain object context.

[0160] The context 1000 can also help to reduce ambiguity of words rather than proper names. For example, if a user of an e-mail application tells the assistant 1002 to "reply" (as shown in FIG. 20), the context of the application can help determine that the word should be associated with EmailReply rather than TextMessagingReply.

[0161] In step 232, the language interpreter 2770 filters and classifies 232 the top-level semantic parse as an expression of user intent 290. The context 1000 is used to inform such filtering and classification 232. The result is an expression of user intent 290.

[0162] Using Context in Taskflow Processing Figure 5 is a flow diagram illustrating a method for using context in a task flow process performed by a dialog flow processor 2780, according to one embodiment, in which candidate parses generated from the method of Figure 4 are ranked and instantiated to generate executable operational task descriptions.

[0163] The method begins at 300. A plurality of candidate representations of user intent 290 are received. As discussed with reference to Figure 4, in one embodiment, the representations of user intent 290 include a set of semantic parses.

[0164] In step 312, the dialog flow processor 2780 determines a preferred interpretation of the semantic parse along with other information to determine the task to perform and its parameters based on the determination of the user intent. Information can come from, for example, the domain model 2756, the task flow model 2786, and / or the dialog flow model 2787, or a combination thereof. For example, the task is PhoneCall and the task parameter is the PhoneNumber to call.

[0165] In one embodiment, the context 1000 is used to perform step 312 to guide parameter binding by inferring default values ​​and resolving ambiguities 312. For example, the context 1000 guides the instantiation of a task description and determines whether there is a best interpretation of the user's intent.

[0166] For example, the intent input 290 is "PhoneCall(RebeccaRichards)" and "PhoneCall(HerbGowen". The PhoneCall task requires a parameter PhoneNumber. Multiple sources of context 100 can be applied to determine which phone numbers for Rebecca and Herb will work. In this example, Rebecca's address book entry in the contacts database has two phone numbers, and Herb's entry has no phone number but one email address. Using context information 1000 from a personal database 1058 such as the contacts database, the virtual assistant 1002 prefers Rebecca over Herb because there is a phone number for Rebecca but not for Herb. To determine which phone number to use for Rebecca, the application context 1060 can be consulted to select the number to be used to carry the text messaging conversation with Rebecca. Thus, the virtual assistant 1002 selects Rebecca's phone number from the contacts database. It may be determined that "call her" in the context of a text messaging conversation with Richards means to place a telephone call to the mobile phone that Rebecca uses for text messaging. This specific information is returned in step 390.

[0167] The context 1000 can be used for more than just reducing ambiguity in phone numbers: when multiple values ​​are possible for a task parameter, this can be used as long as a source of context 1000 with the value of that parameter is available. Other examples where the context 1000 can reduce ambiguity (and avoid the need to prompt the user to select candidates) include, but are not limited to, spaces in e-mail addresses, physical addresses, times and dates, locations, list names, media titles, artist names, company names, or other values.

[0168] Other kinds of inferences required for the task flow process 300 can also be derived from the context 1000. For example, default value inferences can use the current location, time, and other current values. Default value inferences are useful for determining values ​​for task parameters that are implicit in the user's request. For example, when someone says "what is the weather like?", they implicitly mean what the current weather around them is like.

[0169] In step 310, the dialog flow processor 2780 determines whether this interpretation of the user intent is strongly supported enough to proceed and / or is better supported than another ambiguous parse. If there is competing ambiguity or significant uncertainty, step 322 is performed to set the dialog flow steps such that the execution phase of the dialog will produce an output that prompts the user for further information. An example of a screenshot prompting the user to resolve the ambiguity is shown in Figure 14. The context 1000 is used in step 322 to categorize and annotate a displayed menu of candidate items for the user to select.

[0170] In step 320, the task flow model is examined to determine the appropriate next step. Information may come from, for example, the domain model 2756, the task flow model 2786, and / or the dialog flow model 2787, or a combination thereof.

[0171] The result of step 320 or step 322 is a representation 390 of the user request that contains sufficient task parameters for the dialog flow processor 2780 and service orchestration 2782 to dispatch to the appropriate service.

[0172] Using Context to Improve Dialogue Generation During dialog response generation 500, assistant 1002 can paraphrase its understanding of the user's intent and how it operates in the task. Such an output could be, for example, "OK, I'll call Rebecca on her mobile...". This allows the user to allow assistant 1002 to perform related task automation, such as making a call. In dialog generation step 500, assistant 1002 decides how much detail to send back to the user in paraphrasing its understanding of the user's intent.

[0173] In one embodiment, the context 1000 is also used to guide the selection of an appropriate level of detail in a dialog and to filter based on previous output (to avoid repeating information). For example, the assistant 1002 can use the knowledge that a person and phone number have been inferred from the context 1000 to decide whether to mention a name and phone number and at what level of detail. Examples of rules that can be applied include, but are not limited to, the following: • Refer to individuals who should be called by their names when pronouns are clarified by context. ● Only use first names when an individual can be inferred from a familiar context such as a text message. When a phone number is inferred from an application or personal data context, use a symbolic name for the phone number, such as "Mobile Phone", rather than the actual number to be dialed.

[0174] In addition to guiding the appropriate level of detail, the context 1000 is also used, for example, in the dialog generation step 500 to filter previous occurrences to avoid repetition and to reference entities previously mentioned in the conversation.

[0175] Those skilled in the art will appreciate that the context 1000 may be used in other ways as well. For example, in connection with the technology described herein, the context 1000 may be used based on the mechanisms described in related U.S. Utility Application No. 12 / 479,477, entitled "Contextual Voice Commands," filed June 5, 2009, Attorney Docket No. P7393US1, the entire disclosure of which is incorporated herein by reference.

[0176] Context Collection and Communication Mechanism In various embodiments, different mechanisms are used to collect and communicate context information in the virtual assistant 1002. For example, in one embodiment where the virtual assistant 1002 is embodied in a client / server environment and its services are distributed between the client and the server, the source of the context 1000 is also distributed.

[0177] 6, an example is shown of distributing sources of context 1000 between a client 1304 and a server 1340, according to one embodiment. The client device 1304, which may be a mobile computing device or other device, is the source of context information 1000, such as device sensor data 1056, current application context 1060, event context 2706, etc. Other sources of context 1000 may be distributed across the client 1304 or server 1340, or some combination of both. Examples include application preferences and usage history 1072c, 1072s; dialog history and assistant memory 1052c, 1052s; personal databases 1058c, 1058s; and personal audio context data 1080c, 1080s. In each of these examples, the sources of context 1000 reside on the server 1340, the client 1304, or both. Moreover, as discussed above, the various steps illustrated in FIG. 2 may be performed by either the client 1304 or the server 1340, or a combination of both.

[0178] In one embodiment, the context 1000 may communicate between distributed components, such as clients 1304 and servers 1340. Such communication may occur via local APIs or over a distributed network or by any other means.

[0179] 7a-7d are event diagrams illustrating examples of mechanisms for obtaining and integrating context information 1000 according to various embodiments. Various techniques exist for loading or communicating context so that it is available to the virtual assistant 1002 when needed or useful. Each of these mechanisms is described with respect to four events that can be arranged with respect to the operation of the virtual assistant 1002: device or application initialization 601; initial user input 602; initial input processing 603; and context-dependent processing 604.

[0180] 7a shows a solution in which the context information 1000 is loaded 602 using a "pull" mechanism when user input begins. When the user invokes the virtual assistant 1002 and provides at least some input 602, the virtual assistant 1002 loads 610 the context 1000. This loading 610 can be done by requesting or retrieving the context information 1000 from an appropriate source. The input process 603 starts 610 when the context 1000 is loaded.

[0181] 7b shows a solution in which some context information 1000 is loaded 620 when a device or application is initialized 601, and additional context information 1000 is loaded using a pull mechanism when user input begins 602. In one embodiment, the context information 1000 loaded at initialization 620 contains static context (i.e., context that does not change frequently) and the context information 1000 loaded 621 when user input starts 602 contains dynamic context (i.e., context that changes since the static context was loaded 620). Such a solution can improve performance by removing the cost of loading static context information 1000 from the run-time performance of the system.

[0182] Figure 7c shows a variation of the solution of Figure 7b. In this example, the dynamic context information 1000 is allowed to continue loading 621 after the input processing has started 603. Thus, the loading 621 can be performed in parallel with the input processing. The procedure of the virtual assistant 1002 is only blocked in step 604 when the processing depends on the received context information 1000.

[0183] FIG. 7d shows a fully configurable embodiment that handles the context in any of up to five different ways. ● Static context information 1000 is synchronized 640 one way from the context source to the environment or device running the virtual assistant 1002. When data changes in the context source, the changes are pushed to the virtual assistant 1002. For example, an address book is synchronized to the virtual assistant 1002 when it is first created or enabled. When the address book is modified, the changes are pushed to the virtual assistant 1002 immediately or in a batched fashion. As shown in FIG. 7d, such synchronization 640 can occur at any time, including before user input begins 602. • In one embodiment, when user input starts 602, the static context source may check for a synchronization state, and if necessary, begin the process of synchronizing 641 the remaining static context information 1000. When user input starts 602, a certain dynamic context 1000 is loaded 642, as are 610 and 621. A procedure that consumes a context 1000 is blocked only to wait for the not yet loaded context information 1000 that it needs. Other context information 1000 is loaded 643 on demand by the process when it needs it. ● The event context 2706 is sent 644 from the source to the device running the virtual assistant 1002 when an event occurs. A process consuming the event context 2706 only waits for the cache of the event to be ready, and can then proceed at any time without blocking. The event context 2706 thus loaded contains either: - Event context 2706, e.g., unread message notifications, that are loaded before user input starts 602. Such information can be maintained, for example, using a synchronized cache. ● Event context 2706 that is loaded simultaneously with or after user input starts 602. For example, while a user is interacting with the virtual assistant 1002, a text message arrives and an event context notifying the assistant 1002 of this event can be pushed in parallel with the assistant 1002's processing.

[0184] In one embodiment, flexibility in obtaining and matching context information 1000 is achieved by defining, for each source of context information 1000, a communication policy and an access API that balances the cost of communication against the value of making the information available on a per-request basis. For example, variables associated with each speech-to-text request, such as personal acoustic context data 1080, or device sensor data 1050 describing microphone parameters, can be loaded on a per-request basis. Such communication policies can be specified, for example, in a configuration table.

[0185] 9 shows an example of a configuration table 900 that can be used to specify communication and caching policies for various sources of context information 1000 according to one embodiment. For each of a number of different context sources, including user names, address book names, address book numbers, SMS event context, and calendar databases, a particular type of context loading is specified for each step of FIG. 2, namely, speech input retrieval and interpretation 100, natural language interpretation 200, task identification 300, and dialog response generation 500. Each entry in table 900 indicates one of the following: ● Sync: Context information 1000 is synchronized in the devices; ● On-demand: the context information 1000 is provided in response to a virtual assistant's 1002 request therefor; Push: Context information 1000 is pushed to the device.

[0186] The fully configurable method allows a large space of potentially relevant context information 1000 to be utilized to streamline natural language interactions between humans and machines. Rather than constantly loading all this information and incurring inefficiencies, some information is maintained in both the context source and the virtual assistant 1002, while other information is queried on demand. For example, as described above, information such as names that are used for real-time operations such as speech recognition are maintained locally, while information used by only a few possible requests, such as the user's personal calendar, is queried on demand. Data that cannot be predicted when the user invokes the assistant, such as incoming SMS events, are pushed as they occur.

[0187] FIG. 10 is an event diagram 950 illustrating an example of an assistant 1002 accessing the context information sources configured in FIG. 9 while processing an interaction sequence in a dialog with a user according to one embodiment.

[0188] The sequence shown in FIG. 10 represents the following dialogue sequence: ●T1: Assistant 1002: “Hello Steve, what can I do for you?” ●T2: User: “When is my next meeting?” ●T3: Assistant 1002: “Your next meeting is at 1:00pm in the boardroom.” ●T4:[Sound of incoming SMS message] ●T5:User:“Read me that message.” ●T6: Assistant 1002: “Your message from Johnny says “How about lunch” ●T7: User: “Tell Johnny I can't make it today.” ●T8: Assistant 1002: “OK, I’ll tell him.”

[0189] At time T0, before the interaction begins, we synchronize 770 the username, and then synchronize 771 the address book name. These are examples of static context that is loaded at initialization, as shown in element 640 of Figure 7d. This allows the assistant 1002 to refer to the user by his first name ("Steve").

[0190] At time T1, synchronization steps 770 and 771 are completed. At time T2, the user speaks a request, which is processed based on steps 100, 200, and 300 of Figure 2. In the task identification step 300, the virtual assistant 1002 queries 774 the user's personal database 1058 as a source of context 1000, and more specifically, the virtual assistant 1002 requests information from the user's calendar database configured for on-demand access according to table 900. At time T3, step 500 is performed and a dialog response is generated.

[0191] At time T4, an SMS message is received, which is an example of an event context 2706. A notification of the event is pushed 773 to the virtual assistant 1002 based on the configuration of table 900.

[0192] At time T5, the user asks the virtual assistant 1002 to read an SMS message. The presence of the event context 2706 guides the NLP component in performing step 200 to interpret "that message" as a new SMS message. At time T6, step 300 can be performed by the task component to call the API to read the SMS message to the user. At time T7, the user forms a request with an ambiguous verb ("tell") and name ("Johnny"). The NLP component interprets the natural language 200 by resolving these ambiguities using various sources of context 1000, including the event context 2706 received in step 773, which tells the NLP component that the command refers to an SMS message from an individual named Johnny. At step T7, flow step 400 is performed, including matching 771 the name by looking up the number to use from the received event context object. Thus, assistant 1002 can compose a new SMS message and send it to Johnny, which is confirmed in step T8.

[0193] The present invention has been described in particular detail with respect to a contemplated embodiment. It will be apparent to those skilled in the art that the present invention may be embodied in other embodiments. First, the particular names of components, capitalization of terms, attributes, data structures, or other programming or structural aspects are not essential or meaningful, and mechanisms embodying the invention or its features may have different names, formats, or protocols. Furthermore, the system may be embodied via a combination of hardware and software as described herein, or may be embodied entirely in hardware elements or entirely in software elements. Also, the particular distribution of functions among various system components described herein is merely exemplary and not essential, and functions performed by a single system component may be performed by multiple components, and functions performed by multiple components may be performed by a single component.

[0194] In various embodiments, the invention may be embodied as a system or method for performing the techniques described above, singly or in any combination. In another embodiment, the invention may be embodied as a computer program product comprising a non-transitory computer-readable storage medium and computer program code encoded thereon for causing a processor of a computing device or other electronic device to perform the techniques described above.

[0195] When the specification refers to "one embodiment" or "one embodiment," it is meant that a particular feature, structure, or characteristic described in connection with that embodiment is included in at least one embodiment of the invention. The appearances of the phrase "in one embodiment" in various places in the specification do not necessarily all refer to the same embodiment.

[0196] Some portions of the foregoing are presented in terms of algorithms and symbolic representations of operations on data bits within a computing device memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps (instructions) leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It is convenient at times, primarily for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. Further, it is convenient at times to refer to arrangements of steps requiring physical manipulations of physical quantities as modules or code devices, without loss of generality.

[0197] It should be noted, however, that these and similar terms are all associated with and are merely convenient labels applied to the appropriate physical quantities. Unless otherwise indicated, and as will be apparent from the following description, throughout this description, descriptions using terms such as "processing" or "computing" or "calculating" or "displaying" or "determining" refer to the actions and processes of a computer system or similar electronic computing module and / or device that manipulates and transforms data represented as physical (electronic) quantities in the memory or registers of a computer system, or such other information storage, transmission or display device.

[0198] Some aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention may be embodied in software, firmware and / or hardware, and when embedded in software, may be downloaded to reside on and operate from different platforms for use with a variety of operating systems.

[0199] The present invention also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computing device selectively activated or reconfigured by a stored computer program. Such a computer program may be stored on a computer readable storage medium, such as, but not limited to, a floppy disk, an optical disk, a CD-ROM, any type of disk including a magneto-optical disk, a read-only memory (ROM), a random access memory (RAM), an EPROM, an EEPROM, a magnetic or optical card, an application specific integrated circuit (ASIC), or any type of medium suitable for storing electronic instructions, each coupled to a computer system bus. Furthermore, the computing devices referred to herein may include a single processor, or may be architectures using a multi-processor design to increase computing power.

[0200] The algorithms and displays described herein are not inherently related to any particular computing device, virtual system, or other apparatus. Various general-purpose systems may be used with programs in accordance with the techniques described herein, or it may prove convenient to construct more specialized apparatus to perform the required method operations. The required structure for a variety of these systems will appear from the above description. Moreover, the invention has not been described with reference to any particular programming language. It will be apparent that a variety of programming languages ​​may be used to implement the teachings of the invention as set forth above, and that the foregoing references to specific languages ​​are made for the purpose of disclosing the best possible mode of the invention.

[0201] Thus, in various embodiments, the present invention may be embodied as software, hardware, and / or other elements for controlling a computer system, computing device, or other electronic device, or combinations thereof. Such electronic devices may include, for example, a processor, input devices (e.g., keyboard, mouse, touchpad, trackpad, joystick, trackball, microphone, and / or combinations thereof), output devices (e.g., screen, speaker, etc.), memory, long-term storage (e.g., magnetic storage, optical storage, etc.), and / or network connectivity according to techniques well known in the art. Such electronic devices may be portable or non-portable. Electronic devices that may be used to embody the present invention include, for example, mobile phones, personal digital assistants, smart phones, kiosks, desktop computers, laptop computers, tablet computers, consumer electronic devices, consumer entertainment devices, music players, cameras, televisions, set-top boxes, electronic gaming consoles, and the like. Electronic devices for embodying the present invention may use an operating system such as iOS or MacOS available from Apple, Inc. of Cupertino, Calif., or other operating systems used by the device.

[0202] While the present invention has been described above with respect to a limited number of embodiments, it will be apparent to one of ordinary skill in the art having the benefit of the foregoing description that other embodiments may be devised without departing from the scope of the invention as set forth herein. Moreover, the language used herein has been selected primarily for purposes of readability and explanation, and not to define the scope or bounds of the inventive subject matter. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the appended claims. [Explanation of symbols]

[0203] 60: Computing equipment 61: Memory 62: CPU 63: Processor 65: Memory 68: Interface 1000: Context 1002: Virtual Assistant 1050: Active Ontology 1052: Dialogue History and Assistant Memory 1056: Equipment sensor data 1058: Personal Database 1060: Current application context 1072: Application preferences and usage history 1080: Personal Audio Context Data 1206: Input device 1207: Output device 1208: Storage device 1210:Memory 1304:Client 1340:Service 1361: Network 1360: External services 2704: User input 2706: Event Context 2708: Output to user 2710: Other actions 2752: Short-term personal memory 2754: Long-term personal memory 2756: Domain Model 2758: Vocabulary 2760: Language Pattern Recognizer 2770: Language Interpreter 2772: Domain entity database 2780: Dialogue Flow Processor 2782: Service Orchestration 2784:Service 2786: Task flow model 2787: Dialogue flow model 2788: Service model 2790: Output Processor 2794: Active input extraction

Claims

1. 1. A computer-implemented method comprising: An electronic device having one or more processors and a memory, receiving user input including a named relationship; In response to receiving the user input, identifying the contact information based on an association between the named relationship and a name corresponding to the contact information; responsive to identifying the contact information, displaying a message including the name associated with the contact information; performing at least one task using the contact information; Including, Computer-implemented method.

2. the association between the named relationship and the name is created by the user; 10. The computer-implemented method of claim 1.

3. the association between the named relationship and the name is based on a previous user input; 3. A computer-implemented method according to claim 1 or 2.

4. The previous user input includes a dialog history of the user.

4. The computer-implemented method of claim 3.

5. the previous user input includes a verbal input of the user that includes the named relationship; 4. The computer-implemented method of claim 3.

6. the contact information includes a telephone number, and the at least one task includes initiating a call using the telephone number. A computer implemented method according to any preceding claim.

7. the contact information includes a telephone number, and the at least one task includes initiating a text message using the telephone number. A computer implemented method according to any preceding claim.

8. the contact information includes an email address, and the at least one task includes drafting the email using the email address. A computer implemented method according to any preceding claim.

9. The named relationships include family relationships. A computer implemented method according to any preceding claim.

10. The named relationships include mother, father, sister, brother, or superior. A computer implemented method according to any preceding claim.

11. the received user input is received speech data; A computer implemented method according to any preceding claim.

12. the received user input is received text data; A computer implemented method according to any preceding claim.

13. the received user input is received speech data and received text data; A computer implemented method according to any preceding claim.

14. A non-transitory computer-readable storage medium storing one or more programs, comprising: The one or more programs contain instructions which, when executed by one or more processors of an electronic device, cause the electronic device to perform a method according to any one of claims 1 to 13. A non-transitory computer-readable storage medium.

15. 1. An electronic device comprising: A memory for storing a computer program according to claim 14; one or more processors capable of executing the computer programs stored in the memory; Including, Electronic devices.

16. A method for carrying out the method according to any one of claims 1 to 13, Electronic devices.

Citation Information

Patent Citations

  • Data inputting device and storage medium with data input processing program

    JP2001188721A

  • Information collecting device and storage medium

    JP2001318839A

  • Senior person enabled communication system, and user terminal

    JP2007329881A

  • General-purpose search interface system and method

    JP2007524901A

  • Method, computer program and device for processing e-mail addressed to multiple destination addresses

    JP2011113310A