WO2015081272A2 - Methods and apparatus related to determining task completion steps for tasks and/or electronically providing an indication related to completion of a task - Google Patents

Methods and apparatus related to determining task completion steps for tasks and/or electronically providing an indication related to completion of a task Download PDF

Info

Publication number
WO2015081272A2
WO2015081272A2 PCT/US2014/067733 US2014067733W WO2015081272A2 WO 2015081272 A2 WO2015081272 A2 WO 2015081272A2 US 2014067733 W US2014067733 W US 2014067733W WO 2015081272 A2 WO2015081272 A2 WO 2015081272A2
Authority
WO
WIPO (PCT)
Prior art keywords
task
tasks
user
completion step
entity
Prior art date
Application number
PCT/US2014/067733
Other languages
French (fr)
Other versions
WO2015081272A3 (en
Inventor
Erwin SAR
Timothy Sohn
Andrew Tomkins
Original Assignee
Google Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/090,482 external-priority patent/US20150149227A1/en
Priority claimed from US14/090,716 external-priority patent/US9183039B2/en
Priority claimed from US14/090,265 external-priority patent/US9195734B2/en
Application filed by Google Inc. filed Critical Google Inc.
Publication of WO2015081272A2 publication Critical patent/WO2015081272A2/en
Publication of WO2015081272A3 publication Critical patent/WO2015081272A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group

Abstract

Some aspects of the disclosure are directed to technical features for determining one or more task completion steps for tasks. Some aspects of the disclosure are directed to technical features for determining a task template and assigning one or more completion steps to the task template. Some aspects of the disclosure are directed to technical features for determining the satisfaction of one or more conditions based on the value of one or more dynamic attributes of an entity associated with a task of a user, and providing an electronic indication to the user that indicates the task may be completed based on satisfaction of the one or more conditions.

Description

METHODS AND APPARATUS RELATED TO DETERMINING TASK COMPLETION STEPS FOR TASKS AND/OR ELECTRONICALLY PROVIDING AN INDICATION RELATED TO COMPLETION OF A TASK
ATTORNEY REFERENCE: ZS202-15360 Background
[0001] A user may have interest in creating one or more tasks and the user may utilize one or more computer based applications to create the tasks. For example, a user may have interest in purchasing a product and a task may be created that includes information related to purchasing the product.
Summary
[0002] Some aspects of this specification are directed to technical features for determining one or more task completion steps for tasks. For example, some
implementations are generally directed to determining similarity between a plurality of tasks and assigning a task completion step of at least one of the tasks to at least one of the other similar tasks that has not been previously assigned the task completion step.
Similarity between tasks may be determined, for example, based on similarity between one or more terms and/or entities that are associated with the tasks.
[0003] Assigning a task completion step to a task that has not been previously assigned the task completion step results from technical features that enable determination of conditions under which it is appropriate to utilize a completion step of a task as a completion step for another task. Such assigning of a task completion step to a task may enable the task completion step to be utilized to electronically provide additional information related to the task completion step. For example, an electronic indication may be received that indicates the task is assigned to a user, the task completion step may be identified based on the task completion step being assigned to the task, and the task completion step may be provided electronically to a computing device of the user.
[0004] Some aspects of this specification are directed to technical features for determining a task template and assigning one or more completion steps to the task template. For example, some implementations are generally directed to determining one or more task completion steps to assign to a task template. Determining one or more task completion steps to assign to a task template may include: determining a task template that includes one or more entity categories, determining a task group of tasks that include one or more entities of the one or more entity categories of the task template, and assigning one or more task completion steps that are associated with one or more of the tasks of the task group to the task template. The task group includes tasks that include an entity that is a member of one or more of the entity categories of the task template.
Additionally, a task group may be determined based on similarity between one or more terms and/or entities of the tasks in the task group and one or more terms and/or entities of the task template.
[0005] Assigning one or more task completion steps to a task template results from technical features that enable determination of tasks that conform to the task template, and determination of which completion steps of the conforming tasks to utilize as completion steps for the task completion steps. Such assigning of one or more task completion steps to a task template may enable the task template to be utilized to determine it is appropriate to assign the task completion steps to a task that conforms to the task template. For example, an additional task may be electronically received, the additional task may be determined to conform to the task template, and one or more of the completion steps of the task template may be assigned to the additional task. The assigned one or more completion steps may be, for example, provided to a computing device of a user based on the additional task being assigned to the user.
[0006] Some aspects of this specification are directed to technical features for determining the satisfaction of one or more conditions based on the value of one or more dynamic attributes of an entity associated with a task of a user, and providing an electronic indication to the user that indicates the task may be completed based on satisfaction of the one or more conditions. The entity associated with the task may be determined based on task information related to the task and the entity may be distinct from the user. The one or more dynamic attributes of the entity may include attributes that may change value independent of input from the user. The electronic indication provided to the user may be, for example, a notification that the task may be completed and/or one or more task completion steps that may be performed by a user to complete the task.
[0007] Providing an electronic indication to a user that indicates a task may be completed based on the value of one or more dynamic attributes of an entity associated with the task results from technical features that enable determination of the entity, determination of the dynamic attribute(s), determination of condition(s) of at least one state of a value of the dynamic attribute(s) that are indicative of the user having interest in completing the task, and monitoring the value of the dynamic attribute(s) to determine satisfaction of the condition(s). Providing an indication to a user that indicates a task may be completed based on such considerations may enable the indication to be provided under situations in which the indication is relevant, and/or may prevent the indication from being provided under situation in which the indication may not be relevant.
[0008] In some implementations, a computer implemented method is provided and includes the steps of: identifying electronically a plurality of tasks, wherein one or more of the tasks are identified from one or more electronic databases; determining a task group of the tasks based on similarity between tasks of the task group; determining an associated task of the tasks of the task group, wherein the associated task has a task completion step assigned to the associated task in the one or more electronic databases; identifying an unassociated task of the task group based on the unassociated task being non-associated with the task completion step of the associated task; associating the task completion step of the associated task with the unassociated task; assigning the task completion step to the unassociated task; receiving an electronic indication that the unassociated task is assigned to a user; and providing electronically the task completion step to a user via a computing device of the user based on the task completion step being assigned to the unassociated task.
[0009] This method and other implementations of technology disclosed herein may each optionally include one or more of the following features.
[0010] I n some implementations, the method may further include determining the similarity between the tasks of the task group based on a template similarity measurement for each of the tasks of the task group satisfying a threshold, wherein the template similarity measurement for a given task is based on conformity between the given task and a task template.
[0011] I n some implementations, each of the tasks may include a task objective. I n some of those implementations, a given task objective may include a task action and a task object. In some versions of those implementations, the method may further include determining the similarity between the tasks of the task group based on a similarity measurement for each of the tasks of the task group satisfying a threshold, and wherein the similarity measurement for a given task of the tasks may be based on an action similarity
measurement between the task action of the given task and the task action of one or more other tasks of the task group. The similarity measurement for a given task of the tasks may be based on an object similarity measurement between the task object of the given task and the task object of one or more other tasks of the task group. Each of the task objectives of the tasks may include a textual representation of the task objective and the similarity measurement for a given task of the tasks may be based on similarity between the textual representation of the given task and the textual representation of one or more of the other tasks of the task group.
[0012] In some implementations, the method may further include: identifying a second associated task of the tasks of the task group, wherein the second associated task is associated with a second task completion step, wherein the second associated task is unique from the associated task; and determining a task completion step similarity measurement, wherein the task completion step similarity measurement is indicative of similarity between the associated task completion step and the second associated task completion step, and wherein the similarity of the second associated task with the tasks of the task group is based on the task completion step similarity measurement. In some of those implementations, the task completion step may include a first completion action and a first completion object, wherein the second task completion step includes a second completion action and a second completion object. In some versions of those
implementations, determining the task completion step similarity measurement may include determining a similarity between the first completion action and the second completion action. In some versions of those implementations, determining the task completion step similarity measurement may include determining a similarity between the first completion object and the second completion object.
[0013] In some implementations, the unassociated task may be received from the computing device of the user.
[0014] In some implementations, a computer implemented method is provided and includes the steps of: identifying an entity category, wherein the entity category identifies a grouping of entities that share one or more aspects in common; determining a task template, wherein the task template includes a task action identifier and a task object identifier, and wherein one of the task action identifier and the task object identifier is an indication of the entity category; identifying electronically a plurality of tasks from one or more electronic databases, wherein each of the plurality of tasks is associated with a task entity, and wherein at least one of the plurality of tasks is associated with a task completion step; determining a task group of one or more of the plurality of tasks that conform to the task template, wherein a given task of the task group is determined to conform to the task template based on the task entity of the task being a member of the entity category;
determining a group task completion step, wherein determining the group task completion step is based on a task completion step assigned to one or more of the tasks of the task group in the one or more electronic databases; assigning the group task completion step to the task template; receiving electronically an additional task; determining a similarity measurement indicative of conformity of the additional task to the task template; assigning the group task completion step with the additional task if the similarity measurement satisfies a threshold; and providing the group task completion step to a computing device of a user based on the additional task being assigned to the user.
[0015] This method and other implementations of technology disclosed herein may each optionally include one or more of the following features.
[0016] In some implementations, a given task of the task group that conforms to the task template may include a task action and a task object. In some of those implementations, the task action of the given task may be the task entity, wherein the task object identifier of the task template is an indication of a task object template entity, and determining the given task conforms to the task template may be based on similarity between the task object template entity and the task object. In some versions of those im plementations, the task object the given task may be the task entity, wherein the task action identifier of the task template is an indication of a task action template entity, and determining the given task conforms to the task template may be based on similarity between the task object template entity and the task action. I n some of those implementations, at least one of the task action and the task object of the given task may be associated with a task textual representation. I n some versions of those implementations, at least one of the task action identifier and the task object identifier may be associated with a template textual representation, wherein determining the given task conforms to the task template may be based on textual similarity between the task textual representation and the template textual representation. I n some versions of those implementations, determining the given task conforms to the task template may be based on determining the task textual representation is an alias of an entity that is a member of the entity category.
[0017] In some implementations, the method may further include: identifying an additional task completion step for an additional task of the task group; assigning the additional task completion step to the task template; and ranking the group task completion step and the additional task completion step for the task template. In some of those implementations, the ranking of the group task completion step and the additional task completion step for the task template may be based on counts of occurrences of associations of the group task completion step and the additional task completion step to the tasks of the task group. In some versions of those implementations, the ranking of the group task completion step may be higher than the ranking of the additional task completion step when the count of occurrences of associations of the group task completion step to the tasks of the task group is greater than the count of occurrences of associations of the additional task completion step to the tasks of the task group. In some of those implementations, associating the group task completion step with the task template may occur only when the ranking of the group task completion step satisfies a threshold.
[0018] In some implementations, the additional task is received based on electronic input from the user.
[0019] I n some implementations, the method may further include: identifying an uncategorized task of the plurality of tasks, wherein the uncategorized task is associated with an uncategorized task completion step, and wherein the uncategorized task is not a task of the task group; determining that the uncategorized task conforms to the task template; and assigning the uncategorized task completion step to the task template based on determining that the uncategorized task conforms to the task template.
[0020] I n some implementations, the group task completion step may include an indication of a completion entity category. In some of those implementations, the completion entity category may be the entity category. In some of those implementations, the group task completion step may include a completion action and a completion object, and one of the completion action and the completion object may be associated with the completion entity category. [0021] In some implementations, a method is provided and includes the steps of:
identifying a task electronically assigned to a user, wherein the task includes a task action and a task object; identifying task information related to the task; identifying one or more user attributes of the user; determining an entity associated with the task, wherein the entity is unique from the user, and wherein determining the entity is based on the task information and at least one of the user attributes; identifying a dynamic attribute of the entity, wherein a value of the dynamic attribute changes independent of input of the user and wherein the value is automatically electronically monitored; determining a condition for the task, wherein the condition is based on at least one state of the value of the dynamic attribute, the at least one state indicating a likelihood that the user has interest in completing the task; determining a satisfaction of the condition, the satisfaction of the condition based on comparison of the state to the value of the dynamic attribute; and providing, in response to determining the satisfaction of the condition, an indication to a computing device of the user, the indication related to completion of the task.
[0022] This method and other implementations of technology disclosed herein may each optionally include one or more of the following features.
[0023] In some implementations, the entity may be a person, one of the user attributes may be a user location, and the value of the dynamic attribute may be indicative of a distance between the user location and a location of the person. In some of those implementations, the state may be indicative of a threshold distance between the user location and the location of the person, and determining the satisfaction of the condition may include determining that the distance satisfies the threshold distance.
[0024] In some implementations, the method may further include determining a task completion step based on the task information, wherein the task completion step is one or more actions that may be performed by the user, and wherein the indication to the user is the task completion step. I n some of those implementations, the likelihood may be a low likelihood that the user has interest in completing the task, and the task completion step may include at least one of cancelling the task and rescheduling the task. In some of those implementations, determining the entity may be based on the task completion step. In some of those implementations, one of the user attributes may be one or more locations associated with the user, and determining the task completion step may be based on the one or more locations. In some of those implementations, determining the entity may be based on the one or more locations. In some of those implementations, determining the task completion step may include: identifying a task template based on conformity of the task to the task tem plate; and wherein determining the task completion step is based on one or more possible task completion steps associated with the task template. In some versions of those implementations, determining the entity may be based on the task completion step.
[0025] In some implementations, one of the user attributes may be identified from latent electronic information that is associated with the user. I n some of those
implementations, the latent electronic information may be based on at least one of browser history of the user, an electronically indicated location of the user, electronically stored phone contacts of the user, an electronically stored calendar of the user, and email of the user.
[0026] In some implementations, the condition may be based on an event time when the user has interest in completing the task. In some of those implementations, satisfaction of the condition may be based on the value of the dynamic attribute at the event time.
[0027] In some implementations, the entity may be determined based on at least one of the task action and the task object.
[0028] In some implementations, the dynamic attribute may be identified based on the task information.
[0029] Other implementations may include a non-transitory computer readable storage medium storing instructions executable by a processor to perform a method such as one or more of the methods described herein. Yet another implementation may include a system including memory and one or more processors operable to execute instructions, stored in the memory, to perform a method such as one or more of the methods described herein.
[0030] Particular implementations of the subject matter described herein create an association between a task completion step and a given task based on calculated similarity between the given task and at least one similar task that is already associated with the task completion step. Particular implementations of the subject matter described herein may determine similarity measurements between the tasks that take into account one or more features of the tasks. The new association between the tasks may be utilized, for example, to provide the task completion step as a suggested completion step for an associated task via a remote com puting device. [0031] Particular implementations of the subject matter described herein identify an entity category, determine a task template that includes the identified entity category, determine a task group of tasks that conform to the task template, determine a task completion step of a task that conforms to the task template, and associate the task completion step with the task template. The task template may be utilized to associate the task completion step with a task that conforms to the task template and that is not associated with the task completion step.
[0032] Particular implementations of the subject matter described herein determine a condition for a task that is based on a dynamic attribute of an entity determined from the task. Particular implementations provide an indication to a user that the task may be completed based on satisfaction of the condition. The dynamic attribute may be identified based on one or more user attributes. The dynamic attribute and/or the condition of the task are new aspects of the task that may be determined for the task as described herein.
[0033] It should be appreciated that all combinations of the foregoing concepts and additional concepts discussed in greater detail herein are contemplated as being part of the subject matter disclosed herein. For example, all combinations of claimed subject matter appearing at the end of this disclosure are contemplated as being part of the subject matter disclosed herein.
Brief Description of the Drawings
[0034] FIG. 1 is a block diagram of example environment in which a method for associating a task completion step of a task with a similar task may be implemented and/or in which a task template may be determined and a task completion step may be associated with the task template.
[0035] FIG. 2 is a flowchart of a method for determining a task group of tasks that share similarities and associating a task completion step with one of the tasks.
[0036] FIGS. 3A, 3B, 3C, and 3D are example illustrations of task similarity comparisons.
[0037] FIG. 4 is a flow chart illustrating an example method of associating a task completion step of a task with a task template.
[0038] FIG. 5 is a n example illustration of tasks that may be identified and utilized to determine a task template. [0039] FIG. 6 is another example illustration of tasks that may be identified and utilized to determine a task template.
[0040] FIG. 7 is a n example of utilizing a task template that has been has associated with completion steps to determine task completion steps for a task that conforms to the task template.
[0041] FIG. 8 is a block diagram of an example environment in which an indication that a task may be completed may be provided to a user based on one or more values of a dynamic attribute of an entity associated with the task.
[0042] FIG. 9 is a n example illustration of a task and associated task completion steps.
[0043] FIG. 10 is an example illustration of entities and dynamic attributes of entities that may be determined based on task information and user attributes.
[0044] FIG. 11 is a flow chart illustrating an example method of providing an indication to a user that a task may be completed based on one or more dynamic attributes of an entity.
[0045] FIG. 12 is an example of an indication that a task may be completed.
[0046] FIG. 13 illustrates a block diagram of an example computer system.
Detailed Description
[0047] A user may have interest in completing a task and may indicate interest in completing the task and/or locating information regarding the completion of the task via one or more applications. For example, a user may submit a search query "pay my cell phone bill" to a web browser to identify one or more steps that may be performed by the user to complete the task of paying a cellular phone bill. The user may navigate to a webpage that includes contact information for the cellular phone provider of the user, such as a phone number, a mailing address, and/or an email address of the billing department. The user may utilize this information to complete the task of paying a cellular phone bill.
[0048] A task may be determined for a user based on information that is associated with the user and/or one or more actions of the user. User actions may include, for example, submitting one or more terms to an application that is executing on a computing device, executing a voice command, opening an application, and/or submitting one or more instructions. For example, one or more applications may identify that a user has submitted a search query to determine how to complete a task and the application may determine a task that is associated with one or more completion steps that may be performed to complete the task (e.g., an explicit submission from a user to create a task). For instance, a user may submit a search query of "pay my cell phone bill" to a search engine to request results that include a mailing address and/ora bill payment phone numberforthe cellular phone provider of the user. The user action of submitting a search query to a search engine may identify that the user has interest in creating a task based on the terms of the search query. As another example, a user may create an entry in a calendar application to remind the user of a future task to perform.
[0049] A task includes a task objective that specifies the intended result of a task. For example, a task for a user may be to pay a cellular phone bill and the result when the task is completed is that the cellular phone bill of the user is paid. A task may include one or more task completion steps that may be provided to a user to facilitate the task objective. For example, the task objective of a task of a user may be to pay a cellular phone bill and the user may be provided with a task completion step for the task that includes information that may be utilized to pay the cellular phone bill, such as a phone number and/or bill payment website of the user's cellular phone company. Task objectives and/or task completion steps may include one or more components. For example, task objectives may be represented by a task action and one or more task objects as described herein. Also, for example, a task completion step may be represented by a completion action and one or more completion objects as described herein.
[0050] A task objective may include a task action. The task action may be an action that a user has interest in completing and/or having completed by one or more entities. For example, a user may submit a search query of "pay cellular phone bill" and a task may be created that includes the task action "pay." Also, for example, a created task of "contact Bob" may include the task action "contact." In some implementations, a task action may be determined based on one or more sources in addition to the user actions that were utilized to create the task. For example, a task action may not be explicitly provided by a user, determinable based on the additional information that is associated with the user, and/or determinable based on actions of the user. For example, a user may submit a search query of "cell phone billing address," and a task may be determined with a task action of "pay" based on a determined likelihood that a search that includes "cell phone" and "address" may indicate that a user is searching for an address that is related to a cellular phone and that the user is interested in paying the cellular phone bill. One or more databases may be utilized to identify relationships between input from a user and likely actions to associate with a task. For example, a task database and/or an entity database may be utilized to determine task actions for a task based on associations in the database and/or available information that is associated with the user.
[0051] A task objective may also include one or more task objects. A task object is an entity that is associated with the task action. For example, a task to pay a cellular phone bill may include the task object of "cellular phone bill," where "cellular phone bill" is the object to which the task action, "pay," is related. Also, for example, a task of "contact Bob" may include the task object that the user has interest in contacting: the person "Bob." In some implementations, an object of a task objective may not be a physical entity. For example, a task objective may be "attend meeting," where the task object is "meeting." In some implementations, a task action may be determined based on the task object that is determined for a task. For example, a task that includes a task object that is a phone number may be associated with the task action of "call" based on an association between an entity associated with the action "call" and an entity associated with "phone numbers" that is identified from one or more databases, such as an entity database.
[0052] In some implementations, a task may be associated with one or more task completion steps that may be performed to complete the task. For example, for a task of "pay my cellular phone bill," the user may be provided with a billing phone number, mailing address, and/or a webpage that the user may utilize to complete the task of paying a cellular phone bill. Also, for example, a task objective of "buy bananas" may be associated with task completion steps that specify actions that may be performed to complete a banana purchase, such as directions to a grocery store and/or a webpage address where produce may be purchased. In some implementations, a user may be provided with determined task completion steps for a task. For example, a user may be provided, via a mobile device of the user, with directions to a location where the task may be completed. In some implementations, task completion steps for a task may be provided to one or more users in addition to or instead of the user. For example, task completion steps may be provided to a human-based task fulfillment application, such as a website where one or more users may offer to complete a task for a user.
[0053] A task completion step may include a completion action and one or more completion objects. For example, for the task completion step of "travel to the grocery store," the task completion step may be associated with the completion action of "travel" and the completion object "grocery store." In some implementations, the completion action and/or the completion object of a task completion step may be determined based on one or more terms in a task objective, additional information that is associated with the user that is related to the task, and/or one or more sources of information, such as a task database and/or an entity database. For example, a task action of "contact" may be associated with a completion action of "call" based on determining that an entity with an alias of "contact" is associated with an entity with an alias of "call." Also, for example, a task with a task object of "dad" may be associated with a task completion step that includes a completion object of "Bob" based on determining that an entry in a contacts application of the user indicates that Bob is the father of the user. In some implementations, a task completion step may include a textual representation of a task completion step, a completion action, and/or a completion object.
[0054] A task may be associated with multiple task completion steps that may be performed and that each separately allows a user to satisfy the intended objective of the task by a different completion action and/or completion object. For example, the task of "pay cellular phone bill" may be completed by paying the bill through an online payment service, by mailing payment to a payment address, and/or through a phone payment transaction. The task objective of "pay cellular phone bill" may be associated with task completion steps for mailing a payment, for paying by phone, and/or for paying via an online payment based on determining that the task may be accomplished by any of these methods. In some implementations, different task completion steps for a task may be provided to a user based on one or more factors, such as a time and/or a place where the task may be completed. For example, a user may be provided with a mailing address for a bill when the bill payment will likely be received before the bill due date if the payment is mailed; whereas the user may be provided with an online payment service (and not the mailing address) when the bill payment will not likely be received before the due date if the bill was mailed. Also, for example, different task completion steps may be provided to a user based on the device and/or application that is being utilized by the user. For example, a user may be provided with a bill payment website when the user is identified as utilizing a web browser application of a computing device; whereas a dialing application executing on a mobile device of the user may be populated with the billing phone number when the user is identified as accessing the dialing application of a mobile device.
[0055] In some implementations, a task may include one or more times when a task may be completed and/or locations where a task may be completed. For example, a task may be "pay cellular phone bill" and a due date of the cellular phone bill may be identified based on additional information that may be identified from, for example, emails, user webpage navigation, a calendar application of the user, and/or one or more query terms that were submitted by the user. A date and/or time that are associated with a task may be utilized to determine when to provide task completion steps to a user and/or determine which task completion steps to provide to the user if multiple task completion steps are associated with the task. For example, a user may be provided with a task completion step that is related to mailing a payment for a bill when the due date is one week from the current date (i.e., when the payment will likely reach the cellular phone company by the due date). Also, for example, a user may be provided with a task completion step the day before a bill is due (i.e., when other forms of payment, such as mailing a payment, may not reach the cellular phone company by the due date) that includes calling a billing phone number and/or navigating to a web page where payment may be immediately submitted. In some implementations, one or more task completion steps may be provided to a user based on one or more actions of a user. For example, a task of "Call Bob" may be associated with a user and the user may be provided with a reminder to "Call Bob" when the user accesses a cellular phone.
[0056] I n some implementations, completion steps for a task may be provided to the user when it is convenient for the user to complete the task and/or when it is appropriate to complete the task based on the satisfaction of one or more conditions. For example, a user may create an entry in calendar application to "Contact Bob," a task may be determined based on the entry, and a completion step of "Call 555-5555" may be determined based on identifying a contact number of "555-5555" for "Bob" in a contacts application of the user. The user may be provided with the task completion step of "Call 555-5555" on the date that the user has indicated in the calendar application and/or when the user utilizes and/or is located near a cellular phone. The task completion step may include populating a dialing application of the cellular phone with the phone number and/or providing a notification to the user to perform the completion step of "calling Bob."
[0057] In some circumstances, completion steps may not be determined due to a lack of information regarding how to complete a task and/or because a new type of task is encountered. Additionally or alternatively, a task may have additional completion steps in addition to task completion steps that are determined for the task. When task completion steps for a task are unknown and/or a task may have additional task completion steps, known task completion steps of a similar task may be associated with the task based on a likelihood that similar tasks may be associated with similar completion steps. For example, a task of "buy bananas" may be associated with the task completion step of "Go to the grocery store," but the task of "buy rhubarb" may not be associated with a task completion step. Based on identifying that terms in the two tasks are similar (i.e., both bananas and rhubarb are produce), one or more components may determine that it is likely that both tasks may be completed at a grocery store. The user may be provided the task completion step of "Go to the grocery store" based on the similarity between the tasks.
[0058] In some implementations, one or more components of a task may be associated with a textual representation. For example, a task for paying a cellular phone bill may be associated with the textual representation "pay cel lular phone bill" for the task objective, "pay" for the task action, and/or "cellular phone bill" for the task object. I n some implementations, one or more of the textual representations that are associated with components of a task may be determined based on one or more terms and/or actions that were utilized to initially determine the task. For example, a user may submit a search query of "pay my cellular phone bill" and the textual representation of task objective for the determined task may be "pay cellular phone bill."
[0059] In some implementations, textual representations that are associated with a task may be a modified form of what was utilized to determine the task. Modification of textual representations may include, for example, replacing a term with a canonical form, reordering of terms, replacing terms with synonyms, and/or correcting misspellings. For example, the task that is determined based on the user submitting the query "calling phone company" may be associated with the textual representation "call phone company" and/or the task action for the task may be associated with the textual representation "call" based on replacing "calling" with a canonical form of "call." In some implementations, one or more stop words ("to," "for," "at," etc.) may be removed from textual representations. For example, a user may submit the query "pay the cell phone bill" and the textual
representation that is associated with the determined task may be "pay cell phone bill."
[0060] In some implementations, one or more components of a task may be represented by a reference to an entity in a database. For example, a task action may be a reference to an entity that is associated with the action "Buy." In some implementations, a task component that is a textual representation may be utilized to identify an entity that may additionally be associated with one or more synonyms that may replace the action, such as an entity associated with the alias "Buy" and that is additionally associated with the alias "Purchase."
[0061] Two or more tasks that share similarities may share similar task completion steps. For example, a task of "buy bananas" and a task of "buy apples" may both have a task completion step that includes a location where both bananas and apples may be purchased, such as a grocery store. Both tasks may be associated with a task completion step of "go to the grocery store." In some instances, a given task may not be associated with a task completion step and a similar task that has known task completion steps may be utilized to determine task completion steps for the given task based on similarity between the given task and the similar task. For example, a task of "buy bananas" may be associated with a task completion step of "go to the grocery store," but a task of "buy rhubarb" may not have associated task completion steps (e.g., a user has not previously submitted a task of purchasing rhubarb); however, based on similarities between the tasks "buy bananas" and "buy rhubarb" (i.e., both include buying produce), the task completion step of "go to the grocery store" may be associated with the task "buy rhubarb." Also, for example, "buy apples" may be associated with both "go to the grocery store" and "go to the farmer's market," and "buy bananas" may be associated only with the task completion step of "go to the grocery store." An association between the "buy bananas" task objective and the task completion step of "go to the farmer's market" may be determined based on: similarities between the task objectives "buy apples" and "buy bananas;" similairties between textual representations of one or more components of the tasks, such as the task actions and/or the task objects of the tasks; and/or similarities between the task completion steps of the tasks. Also, for example, the task completion step of "go to the farmer's market" may not be associated with the task "buy bananas" based on, for example, determining that bananas are not an item that is likely available at a local farmer's market.
[0062] In some implementations, one or more tasks may be identified and a task template may be determined based on the identified tasks. For example, tasks with task objectives of "Buy bananas" and "Buy oranges" may be identified based on both tasks objectives including the term "Buy" and the name of a fruit. Additional tasks that include "Buy" and a name of a fruit may be identified as similar and a task template may be determined that includes the term "Buy" and a category [fruit] (As used herein, a term in square brackets denotes a category that may be replaced with one or aliases of entities that are members of the category). One or more of the tasks that conform to the task template may be associated with a task completion step, and based on the task conforming to the task template, the task template may additionally be associated with the task completion step. For example, a task template for tasks of "buy [fruit]" may be associated with the task completion step "Travel to the grocery store," and the task template may be associated with that completion step. Additional task completion steps of tasks that conform to the task template may be associated with the task template.
[0063] Referring to FIG. 1, a block diagram is illustrated of an example environment in which a method of associating a task completion step of a task with a similar task may be implemented and/or in which a task template may be determined and a task completion step may be associated with the task template. The environment includes computing device 105 with task application 110, task recognition engine 115, task similarity engine 120, task database 125, entity database 130, task template generator 135, and task completion step engine 140. The environment also includes a communication network 101 that enables communication between various components of the environment. I n some
implementations, the communication network 101 may include the I nternet, one or more intranets, and/or one or more bus subsystems. The communication network 101 may optionally utilize one or more standard communications technologies, protocols, and/or inter-process communication techniques.
[0064] The task recognition engine 115, the task similarity engine 120, the task template generator 135, the task completion step engine 140, and/or one or more additional components of the example environment of FIG. 1 may each include memory for storage of data and software applications, a processor for accessing data and executing applications, and components that facilitate communication over a network. I n some implementations, the task recognition engine 115, the task similarity engine 120, the task template generator 135, and/or the task completion step engine 140 may include hardware that shares one or more characteristics with the example computer system that is illustrated in FIG. 13. The operations performed by other components of the example environment may be distributed across multiple computer systems. For example, task recognition engine 115, task similarity engine 120, task database 125, task template generator 135, and/or task completion step engine 140 may be computer programs running on one or more computers in one or more locations that are coupled to each other through a network.
[0065] The computing device 105 executes one or more applications and may be, for example, a desktop computer, a laptop computer, a cellular phone, a smartphone, a personal digital assistant (PDA), a tablet computer, a navigation system, a wearable computing device (e.g., glasses, watch, earpiece), and/or other computing device. The computing device 105 includes memory for storage of data and software applications, a processor for accessing data and executing applications, and components that facilitate communication over a communication network 101. In some implementations, the computing device 105 may include hardware that shares one or more characteristics with the example computer system that is illustrated in FIG. 13. In some implementations, the one or more applications executed by the computing device 105 may include a task application 110. As discussed herein, the computing device 105 may optionally be utilized to, directly or indirectly, identify one or more actions of a user and provide user task information and/or additional information to one or more components. The task application 110 may be utilized to access one or more applications such as, for example, e- mail applications and/or calendar applications. I n some implementations, task application 110 may be an add-on to one or more other applications that are executing on computing device 105. In some implementations, task application 110 may be an application that performs one or more actions in addition to identifying task information. For example, task application 110 may be a web browser and additionally provide one or more components with task information based on browser input by a user. Additionally or alternatively, task application 110 may be an application that is dedicated to creating tasks. For example, a user may intend to create a task and the user may utilize task application 110 to submit information to create the intended task.
[0066] In some implementations, task database 125 may be utilized by one or more components to store and/or access tasks. The task database 125 may include one or more storage mediums. For example, in some implementations, the task database 125 may include multiple computer servers each containing one or more storage mediums.
Information discussed herein may optionally be stored in the task database 125 and/or an additional database. For example, tasks and associated information (e.g., actions, entities, unique entity identifiers, textual representations of associated information, task completion steps, etc.) may be stored in task database 125 for later access by one or more components. In this specification, the term "database" will be used broadly to refer to any collection of data. The data of the database does not need to be structured in any particular way, or structured at all, and it can be stored on storage devices in one or more locations. Thus, for example, the database may include multiple collections of data, each of which may be organized and accessed differently.
[0067] In some implementations, one or more of the tasks that are stored in task database 125 may be determined by task recognition engine 115 based on information that is received from task application 110. For example, task application 110 may identify information and/or one or more actions of a user and transmit the information to task recognition engine 115. Task recognition engine 115 may create a task based on the actions of the user and/or other information that was received from task application 110.
[0068] In some implementations, task database 125 may be utilized by one or more components to store tasks, access tasks, and/or store one or more task templates. For example, task recognition engine 115 and/or condition identification engine 160 (FIG. 8) may determine a task for a user and further determine one or more conditions that may be satisfied to provide the task completion steps of the task to the user. The task may be stored in the task database 125 and retrieved by one or more components to provide to the user when the associated conditions have been satisfied. In some implementations, task database 125 may include tasks that have been previously determined for users and stored without an association to a particular user. For example, task recognition engine 115 may store one or more tasks in task database 125 after a task has been provided to a user for later utilization by one or more components. I n some implementations, tasks in task database 125 may be from multiple users. For example, task database 125 may be a repository for tasks that have been identified from information from multiple task applications 110. In some implementations, the identified tasks may be from one user. For example, each user may have a separate task database 125 that includes only tasks associated with that user. In some implementations, the tasks of each user may be stored on the same media and/or in the same database and the tasks of a given user may be accessible only to components of the system for that user. For example, each user may have an instantiation of a task similarity engine 120 and the task similarity engine 120 for a user may have access only to tasks in the task database 125 that have been previously submitted by that user.
[0069] In some implementations, one or more components of a task may be associated with an entity. Entity database 130 may be utilized to identify entities that are associated with, for example, task actions, task objects, completion actions, and/or completion objects of tasks. For example, entity database 130 may include a mapping (e.g., data defining an association) between entities and one or more properties and/or other entities related to the entity. In some implementations, entities are topics of discourse. In some
implementations, entities are persons, places, concepts, and/or things that can be referred to by a textual representation (e.g., a term or phrase) and are distinguisha ble from one another (e.g., based on context). For example, the text "bill" in a query or on a webpage may potentially refer to multiple entities such as President Bill Clinton, actor Bill Paxton, an invoice from a business, and a feature of a duck. In some implementations, an entity may be referenced by a unique entity identifier that may be used to identify the entity. The unique entity identifier may be associated with one or more properties associated with the entity a nd/or with other entities. For example, in some implementations, the entity database 130 may include properties associated with unique identifiers of one or more entities. For example, a unique identifier for the entity associated with the airport with an airport code "LAX" may be associated with a na me or alias property of "LAX," another alias property of "Los Angeles International Airport" (an alternative name by which LAX is often referenced), a phone number property, an address property, and/or an entity type property of "airport" in the entity properties database. Additional and/or alternative properties may be associated with an entity in one or more databases.
[0070] Task recognition engine 115 may receive task information and/or additional information from task application 110 and/or one or more databases to determine a task to associate with a user. Task information and/or additional information may include, for example, actions of a user and documents that are associated with the user. Task recognition engine 115 may determine one or more task completion steps to associate with a task based on the task information and/or the additional information. I n some implementations, task recognition engine 115 may determine one or more tasks and/or task completion steps for a task based on one or more entities in entity data base 130. For example, a user may submit the query "cable phone number" to task application 110 and task recognition engine 115 may determine that the task is "call cable company" based on identifying an entity for the action "call" that is associated with an entity with an alias of "phone number."
[0071] In some instances, task recognition engine 115 and/or task completion step engine 140 may be unable to determine a task completion step for a determined task and/or may be unable to determine with a high enough degree of certainty that a task completion step should be associated with the determined task. For example, task recognition engine 115 may not locate a task in task database 125 that matches the determined task. For example, task recognition engine 115 may determine that a task is "buy rhubarb" and look for a task in task database 125 that matches the task. If one or more components have not previously been presented with the task "buy rhubarb," task recognition engine 115 may not find an associated task completion step that has been previously provided.
[0072] Also, for example, task completion step engine 140 may be provided with a task that has not been previously encountered and/or that is not present in task database 125. Task completion step engine 140 may not be able to determine task com pletion steps for the task based on lack of information. For example, additional information that is provided with a task may not be sufficient to determine task completion steps and/or task completion step engine 140 may be unable to determine additional information from one or more databases. In some implementations, task completion step engine 140 may determine a task completion step for a task, but additional unidentified task completion steps may be appropriate for the task. Task completion step engine 140 may utilize one or more previously determined task templates to determine a task completion step to provide to a user.
[0073] In some instances, a task may have multiple task completion steps that are not currently associated with the task. For example, a task objective may be "contact cable company" and task recognition engine 115 may determine a task completion step of "call 555-5555" based on a task of "contact cable company" that is identified in task database 125. However, additional task completion steps that may be performed to complete the task, such as "navigate to www.webpage.com," may not be associated with the identified task in the task database 125.
[0074] Task similarity engine 120 receives tasks from task recognition engine 115 and/or identifies one or more tasks in task database 125, and determines whether additional task completion steps may be associated with one or more of the tasks based on similarities between the identified tasks. Multiple received and/or identified tasks may have similar or identical task completion steps. For example, a task to "purchase bananas" and a task to "purchase apples" may be performed at the same location (e.g., a grocery store). Based on similarities between tasks, a task that has not been associated with a task completion step may be associated with a similar task completion step of a similar task. In some
implementations, task recognition engine 115 may provide a task to task similarity engine 120 when a task completion step has not been determined for the task. In some implementations, task recognition engine 115 may additionally or alternatively submit tasks that have associated task completion steps. For example, task recognition engine 115 may submit all determined tasks to task similarity engine 120 to determine whether additional task completion steps that were not determined by task recognition engine 115 may be associated with the tasks. [0075] For a given task, task similarity engine 120 identifies one or more tasks that are similar to the given task. The given task may be, for example, a task that was provided to the task similarity engine 120 by the task recognition engine 115, a task that was retrieved from task database 125, and/or a task that was received from one or more alternate components. Similarities between tasks may be determined based on, for example, similarity of task actions of tasks, task objects of tasks, similarities between associated task completion steps of tasks, and/or textual representations of one or more components of tasks.
[0076] In some implementations, task similarity engine 120 may determine one or more similarity measurements that are representative of the similarity of corresponding components of two or more tasks. For example, task similarity engine 120 may determine a similarity measurement between task actions of two tasks, task objects of two tasks, completion actions of two tasks, and/or completion objects of two tasks.
[0077] In some implementations, task similarity engine 120 may determine an overall similarity measurement for similarity between two or more tasks. An overall similarity measurement may be an aggregate measurement that includes similarity measurements of one or more components of given tasks. For example, for two given tasks, task similarity engine 120 may determine a similarity measurement between the task actions of two tasks, determine a similarity measurement between the task objects of the tasks, and determine an overall similarity measurement for the similarity of the tasks based on the task action similarity measurement and the task object similarity measurement. Task similarity engine 120 may determine that two tasks are similar if the similarity measurement between tasks exceeds a threshold similarity measurement. In some implementations, an overall similarity measurement may be calculated based on similarity measurements between task actions of tasks, task objects of tasks, completion actions of tasks, and/or completion objects of tasks.
[0078] Referring to FIGS. 3A through 3D, example tasks and comparisons between tasks that may be performed by task similarity engine 120 are provided. For each task, a task objective is depicted in a gray bold box and task completion steps are provided in the boxes below the task objective. For example, task 300 includes a task objective of "Buy apples" and has an associated task completion step of "Travel to the grocery store." For purposes of illustration, task objectives and task completion steps are depicted as a complete sequence of terms. However, a task objective may include a task action and a task object that may be treated separately for comparison purposes. For example, task 300 includes a task action of "Buy" and a task object of "Apples." Additionally, a task completion step may include a completion action and one or more completion objects that may be treated separately. For example, task 300 includes a task completion step of "Travel to the grocery store" that may be represented by a completion action of "Travel" and a completion object of "Grocery store."
[0079] In each example, lines denoted with S references (SI, S2, etc.) represent similarity measurements that may be determined by task similarity engine 120. The similarity measurements may be based on one or more similarity measurements as described herein and/or alternate similarity measurements. For example, SI denotes a similarity
measurement between the task objective of task 300 and the task objective of task 310. Also, for example, S2 denotes a similarity measurement between the task completion steps of "Travel to the grocery store" of task 300 and "Travel to the grocery store" of task 310. For each depicted similarity measurement, the measurement may be based on comparisons between actions and/or entities of the task objective or task completion step. For example, SI may be a similarity measurement between the task actions of task 300 and task 310 (i.e., "Buy" and "Buy"), the task objects of task 300 and task 310 (i.e., "Apples" and "Bananas"), or a combination of the similarity measurements between the task actions and task objects of the tasks. A task completion step of "?" indicates that a task completion step has not been determined for that task, such as the task completion step of task 330 in FIG. 3B.
[0080] In some implementations, one or more similarity measurements may be weighted differently in determining a similarity measurement between two or more tasks. For example, task similarity engine 120 may utilize the following equation to determine an overall similarity measurement between two tasks based on similarity measurements of task components of the two tasks:
STA * WTA + ST0 * WT0 + SCA * wCA + sco * wco = s0VERALL where:
STA = Similarity between task actions of two tasks,
ST0 = Similarity between task objects of two tasks,
SCA = Similarity between completion actions of two tasks, Sco = Similarity between completion objects of two tasks,
^OVERALL = Similarity between two tasks,
WTA = Weight of similarity measurment STA,
WT0 = Weight of similarity measurment ST0,
WCA = Weight of similarity measurment SCA,
Wco = Weight of similarity measurment Sco, and
WTA+WT0 + WCA + Wco = 1.
[0081] For example, referring to FIG.3A, task similarity engine 120 may determine an overall similarity measurement SOVERALL by determining SI and S2, where SI may be a similarity measurement between task actions and/or task objects of the task objectives of task 300 and task 310 (i.e., STA and/or STE), and where S2 may be a similarity measurement between completion actions and/or completion objects of the task completion steps of task 300 and task 310 (i.e., SCA and/or 5CE). The similarity measurements may be weighted such that, for example, SI contributes 80% of the overall similarity measurement and S2 contributes 20% of the similarity measurement. For example, the overall similarity measurement for the tasks of FIG.3A may be:
(STA + STE * 0.8 + (SCA + SCE) * 0.2 = ^OVERALL
[0082] In some implementations, an overall similarity measurement may be determined by weighting similarity measurements evenly. For example, the previous equation for SOVERALL may be utilized such that:
WTA = WTE = WCA = WCE = .25.
[0083] In some implementations, task similarity engine 120 may determine that two tasks are similar if an overall similarity measurement between the tasks satisfies a threshold. For example, referring to the previous equation for SOVERALL, task similarity engine 120 may determine that two tasks are sufficiently similar if:
$ OVERALL ≥ ^THRESHOLD,
where STHRESHOLD is a threshold similarity value that must be satisfied for tasks to be included in a task group. [0084] In some implementations, a similarity measurement between tasks may be based on textual representations of corresponding components between the tasks. For example, task similarity engine 120 may determine a similarity measurement for two given tasks in part by comparing the similarity of the textual representations of task actions of the tasks. Similarity of textual representations may be determined based on, for example, edit distance, identical terms, identification of synonyms in textual representations, comparison of canonicalized textual representations, and/or one or more additional methods of comparing terms for similarity. For example, referring to FIG. 3A, SI may be determined based on comparing one or more terms of "Buy apples" and "Purchase bananas" for textual similarities. Also, for example, referring to FIG. 3B, S3 may be determined based on comparing the task action of task 320, "Buy," with the task action of task 330, "Buy." Based on the similarity of the two task actions, task similarity engine 120 may assign a value to S3 that is indicative of a similarity between the task actions.
[0085] In some implementations, components of tasks may be compared based on relationships between entities of the tasks. For example, an overall similarity measurement for two tasks may be determined based, in part, on identifying a relationship between entities that represent the same type of component in two tasks. For example, similarity measurement SI may be determined in part based on similarity between the task object "Apples" of task 300 and the task object "Bananas" of task 310. Task similarity engine 120 may determine a similarity measurement for the relationship and utilize the determined measurement to determine an overall similarity measurement for the two tasks. For example, S2 may be determined based on an entity relationship between the task object "Apples" of task 300 and "Bananas" of task 310, and an overall similarity measurement may be determined based on SI and S2.
[0086] In some implementations, determining similarity between tasks may include comparing task actions of two or more tasks. For example, two tasks may be similar if the tasks share a similar task action. I n some implementations, textual representations of task actions may be utilized to determine similarity. For example, referring to FIG. 3B, S3 may be determined based on, in part, similarity between the task action of task 320, "buy," and the task action of task 330, "buy." I n some implementations, task actions of tasks may be compared based on entities and/or aliases of entities that are associated with a task action of a task. For example, referring to FIG.3A, SI may be determined based on identifying that an entity that is associated with the task action "buy/' the task action of task 300, is additionally associated with an alias "purchase," the task action of task 310. Task recognition engine 115 may determine relationships between entities based on one or more entities from entity database 130.
[0087] In some implementations, determining similarity between tasks may include comparing task objects of two or more tasks. Two tasks may be similar if the task objects of the tasks share one or more characteristics. For example, referring to FIG.3A, the task object of task 300 is "apples" and the task object of task 310 is "bananas." Task similarity engine 120 may identify entities for "apples" and "bananas" in entity database 130 and determine that the two entities are both members of a "fruit" category and/or are both associated with an entity of "fruit." In some implementations, a similarity measurement may be determined based on the entity association of the tasks. For example, SI of FIG.3A may be determined by task similarity engine 120 based on similarity between "apples" and "bananas" that is determined based on an identified association (e.g., both are fruits) between entities that are associated with "apples" and "bananas."
[0088] In some implementations, determining a similarity measurement between tasks may include comparing completion actions of two or more tasks. For example, referring to FIG.3C, both task 350 and task 360 have a completion action of "travel." Based on the task actions of "travel" in both tasks, task similarity engine 120 may assign a similarity measurement S6 that is indicative of a strong similarity between the task actions. Also, for example, S6 may be indicative of an exact textual match between the task actions of task 350 and task 360. In some implementations, entities associated with the task completion actions may be identified in an entity database 130 and S6 may be determined based on one or more associations between the identified entities. For example, a completion action of "travel" and a completion action of "go to" may both be associated with the same entity and/or related to similar entities in entity database 130; and task similarity engine 120 may determine a similarity measurement between the tasks that is partially based on the actions being associated with the same identified entity.
[0089] In some implementations, determining a similarity measurement between tasks may include identifying whether two or more tasks include entities that are members of the same or similar categories. For example, referring to FIG. 3D, task 370 includes a completion object of "cell phone provider" and task 380 includes the completion object "Restaurant \." Task similarity engine 120 may determine similarity measurement S8 based on identifying an entity that is associated with "cell phone provider" and an entity that is associated with "Restaurant 1" and determining that both completion objects are associated with entities that are members of a "business" category. In some
implementations, task similarity engine 120 may determine S8 based on both associated entities being members of the "business" category.
[0090] In some implementations, task similarity engine 120 may identify multiple categories and/or multiple entities that are associated with entities of two or more tasks and may determine similarity measurements between tasks based on the multiple categories that are associated with the entities of tasks. For example, referring to FIG. 3D, task similarity engine 120 may identify entities associated with the task objects "cell phone provider" and "Restaurant 1," identify that both identified entities are members of a "business" category, and then further identify that "Restaurant 1" is associated with an entity that is a member of a "restaurant" entity category and that "cell phone provider" is associated with an entity that is a member of a "service provider" category. Task similarity engine 120 may determine the similarity of the entities based on both category associations. Because the task objects are both members of the same category ("business") and both members of separate categories ("restaurant" and "service provider"), task similarity engine 120 may determine a similarity measurement for the tasks that is less indicative of similarity than, for example, two tasks that have task objects that are members of multiple same categories, such as task objects of "Restaurant 1" and "Restaurant 2," which may both be members of a "business" category and both members of a "restaurant" category.
[0091] Task similarity engine 120 may associate a task completion step that is associated with one or more tasks to one or more of the tasks that are similar and that are not associated with that task completion step. Similarity between two or more tasks may be determined, for example, based on one or more of the methods described herein, such as similarity of task actions, task objects, completion actions, and/or completion objects. I n some implementations, multiple similarity measurements of components of tasks may be aggregated to an overall similarity measurement as described herein. [0092] In some implementations, the task similarity engine 120 may associate multiple tasks into a task group based on each of the multiple tasks having a similarity measurement with respect to one or more of the tasks of the task group that satisfies a threshold similarity value. In some implementations, multiple tasks may be compared to one group task of the task group, and the similarity measurement of each of the multiple tasks that satisfies a threshold similarity value with respect to the group task may be included in the task group that includes the group task. For example, referring to FIG. 3B, task 320 may be included in a task group that includes task 330 if S3 satisfies a threshold similarity value. Also, for example, task 340 may be included in the task group that includes task 320 and task 330 if S4 satisfies a threshold similarity measurement. In some implementations, multiple similarity measurements between tasks may be utilized to determine whether the compared tasks are sufficiently similar to be a task group. For example, referring to FIG. 3B, task 320 may additionally be compared to task 340 and the three illustrated tasks may be grouped into a task group based on all similarity measurements between the tasks satisfying a threshold similarity measurement.
[0093] In some implementations, a task group may be determined based on a similarity measurement between each of the tasks of the task group and a task template. A task template is a task pattern that generically describes one or more components of tasks. For example, a task template may be "<purchase> <fruit>," which includes a generic task action that may be associated with an entities of "buy," "purchase," and "procure," and a generic task object that is associated with entities that a re member of an entity category of "fruit," which may include task objects of "apples," "oranges," and "bananas." Task similarity engine 120 may determine a template similarity measurement between each of the plurality of tasks and the task template and determine a task group that includes the tasks of the plurality of tasks that have a template similarity measurement that is indicative of the task conforming to the task template.
[0094] Task template generator 135 may determine one or more task templates. In some implementations, the task template generator 135 may determine a task template based on tasks that have been submitted by one or more users. I n some implementations, the tasks may be identified from the task database 125. In some implementations, task recognition engine 115 and/or task completion step engine 140 may provide tasks to task template generator 135 that were determined based on information that is associated with and/or provided by a user. In some implementations, task recognition engine 115 and/or task completion step engine 140 may provide the tasks to task template generator 135 in real time.
[0095] In some implementations, task template generator 135 may determine one or more task templates independent of previously submitted tasks. For example, task template generator 135 may identify one or more entities, entity categories, and/or one or more terms and determine a task template based on the identified components. Also, for example, task template generator 135 may identify one or more components and determine one or more additional components of the task template based on previously submitted tasks and/or additional information from one or more databases. For example, task template generator 135 may identify an entity category of [fruit] from one or more databases, identify one or more tasks that have been submitted that include an entity that is a member of [fruit], and create a task tem plate that includes [fruit] and one or more additional terms and/or entities that are included in the identified tasks. Also, for example, task template generator 135 may identify an entity category of [fruit] and determine a template that includes the entity category [fruit] and one or more entities that are associated with members of the [fruit] category, such as entities associated with the terms "Buy" and/or "Eat."
[0096] A task template may include one or more entities that may be utilized to identify tasks that conform to the task template. For example, for a task template of "Pay [bill]," "Pay" may be a textual representation of an entity and/or an identifier of an entity that is associated with the action of paying for a service or product. A task with a task object that is a member of the entity category [bill] and that includes a task action that is associated with an entity of "Pay" may be included in a task group of tasks that conform to the task template "Pay [bill]." For example, a task with a task objective of "Pay cell phone bill" may be included in a task group of tasks that conform to the task template "Pay [bill]" based on the task including a reference to a "Pay" entity and the task including a reference to an entity that is a member of a [bill] category.
[0097] To determine a task template, task template generator 135 may identify an entity category in the entity database 130. An entity category is a grouping of entities that share one or more common aspects. For example, task template generator 135 may identify an entity category of [fruit] from entity database 130 that includes entities in the entity database 130 that are fruits (e.g., entities associated with the fruits bananas, apples, oranges, etc.). In some implementations, task template generator 135 may identify one or more aliases for entities in entity database 130 that are members of the entity category. For example, an entity that represents the fruit "bananas" may be associated with the alias "bananas." Also, for example, a single entity may be associated with multiple aliases, such as "cantaloupe" and "muskmelon" (both names for the same fruit).
[0098] In some implementations, task template generator 135 may identify one or more tasks from task database 125 and/or may utilize one or more tasks that are provided by task recognition engine 115 to determine one or more additional terms to include in a task template. For example, task template generator 135 may identify an entity category of [fruit], identify tasks that include an alias for an entity that is a member of the [fruit] category, and identify additional terms and/or entities in the task objectives of the tasks. For example, referring to FIG.5, an example of identified tasks and an associated task template is provided. Tasks 500, 505, and 510 include a textual representation of a task objective for each task in a bold box. For example, task 500 includes the terms "Buy bananas," which is a representation of the task action "buy" and the task entity "bananas." The tasks additionally include a task completion step in a non-bold box below the task objectives. For example, task 500 includes the task completions step of "Travel to the grocery store," which may alternatively be represented by a textual representation of the completion action "travel" and the completion object "grocery store." In the illustrated example, the tasks 500, 505, and 510 may be identified by task template generator 135 from task database 125 and/or the tasks may be provided to task template generator 135 by task recognition engine 115 based on information that was received from task application 110. Task template generator 135 may identify an entity category of "[fruit]" from entity database 130 and identify tasks 500, 505, and 510 based on the tasks including aliases of entities that are members of the entity category [fruit]. In some implementations, the task objects of one or more tasks may be an identifier of an entity. Task template generator 135 may identify the tasks by identifying tasks that include task objects that are members of the entity category. [0099] Task template generator 135 may determine a task template based on the common and/or similar components of the identified tasks. For example, task template generator 135 may determine that one or more of the plurality of tasks have a task action of "buy." Additionally, task template generator 135 may determine that the tasks of the plurality of tasks include entities of the same entity category. For example, task template generator 135 may determine that all of the tasks of the plurality of tasks include a task entity that is a fruit. Task template generator 135 may determine a task template that includes the term or entity that is common to the task objectives and that includes an alias of an entity that is a member of the entity category. For example, task template generator 135 may determine a task template of "buy [fruit]" based on identifying a plurality of tasks that includes the task action "buy" and an alias of an entity that is a member of [fruit].
[00100] Task template generator 135 may determine a task group of tasks that conform to the determined task template. The task group may include one or more tasks that were utilized to determine the task template and/or other tasks that are provided by task recognition engine 115 and/or identified from task database 125. Some of the identified tasks may be associated with completion steps and some of the identified tasks may not have an associated task completion step. Task template generator 135 may identify one or more task completion steps that are associated with tasks that conform to the task template. The task completion steps for tasks may be task completion steps that were determined by the task recognition engine 115 and provided to task template generator 135 and/or task completion steps that are associated with tasks that were identified from task database 125. For example, referring to FIG. 3, task template generator 135 may identify the task completion steps that are associated with tasks 300, 305, and 310. In the illustrated example, all of the tasks are associated with the task completion step of "Travel to the grocery store." In some implementations, task template generator 135 may utilize the identified task completion steps of one or more tasks of the task group to determine the similarity of the tasks. For example, task template generator 135 may determine that tasks 300, 305 and 310 are similar based in part on the tasks having the same task completion step.
[00101] In some implementations, a similarity measurement may be determined for each task that is indicative of whether the task conforms to the task template. The similarity measurement may be based on, for example, the similarity between the terms of the task template and the terms that are in the textual representation of a task objective. For example, for a task template of "Buy [fruit]," a similarity measurement of the similarity between the task template and the task with a task objective of "Buy bananas" may be indicative of the similarity between the entity or term "Buy" that is present in both the task template and the task objective. Also, for example, a similarity measurement may be determined based on the conformity of the entity that is associated with the task object of the task, "bananas," and the entity category of the task template, [fruit].
[00102] Task template generator 135 may associate a task completion step that is associated with one of the tasks of the task group with the task template. In some implementations, task template generator 135 may determine whether to associate a given task completion step with a task template based on a count of occurrences of tasks of the task group (e.g., the number of tasks and/or percentage of tasks) that are associated with the task completion step. For example, referring to FIG.3, task template generator 135 may determine that the identified tasks 300, 305, and 310 are each associated with the task completion step "Travel to the grocery store" and associate the task completion step with task template 315 based on all of the tasks of the task group being associated with the task completion step "Travel to the grocery store." Also, for example, task template generator 135 may identify a fourth task of "Buy pumpkins" that conforms to the template and that is associated with the task completion step "go to the farmer's market." Task template generator 135 may not associate the task completion step "go to the farmer's market" with task template 315 if that task completion step does not appear a threshold number of times in the identified tasks of the task group.
[00103] In some implementations, a task completion step may be associated with a task template only if the popularity of usage of the task completion step satisfies a threshold. For example, one or more tasks of the task group for the task template of "Travel to
[business]" may be associated with the task completion steps "Drive to [business]" and "Fly to [business]" and task template generator 135 may determine that previous users have utilized "Drive to [business]" with a greater frequency than "Fly to [business]." Task template generator 135 may associate, based on the frequency of past usage of each of the task completion steps, the task completion step "Drive to [business]" and not the task completion step "Fly to [business]" if the usage of "Fly to [business]" is below a threshold usage level.
[00104] In some implementations, task template generator 135 may determine multiple entity categories for a task template based on identified tasks. For example, referring to FIG. 6, an example of identified tasks and a task template with multiple entity categories is provided. Tasks 600, 605, and 610 may be identified in task database 125 by task template generator 135 and/or received from task recognition engine 115. The task descriptions of the tasks are provided in a bold box, and the task completion steps that are associated with the tasks are provided below the task descriptions. The task template 615 includes a template in a bold box with task completion steps that have been associated with the task template below the template.
[00105] Task template generator 135 may determine a similarity score for tasks 600, 605, and 610, and determine that the similarity between the tasks satisfies a threshold task similarity measurement. For example, task template generator 135 may determine that entities with aliases of the task actions of tasks 600, 605, and 610 are members of the same entity category (i.e., "Travel" and "Drive" may be members of a [travel methods] entity category). Also, for example, task template generator 135 may determine that the tasks include aliases of task entities that are members of the same entity category (i.e., "Business 1," "Business 2," a nd "Business 3" entities members of a [business] entity category). Task template generator 135 may determine a task template based on similarity between the tasks of the identified plurality of tasks. In the illustrated example, task template generator 135 determines a task template of "[travel methods] [business]" based on identifying that the task descriptions of tasks 600, 605, and 610 are similar. A task group may be determined and task completion steps that are associated with the conforming tasks are identified and associated with the task template 615.
[00106] I n the illustrated example, the task completion steps that are associated with the task template 615 include an entity category that may be utilized to determine task completion steps for other tasks that conform to the template. An entity category that is present in one or more task completion steps may be replaced by an alias of an entity that is a member of the entity category when the task is provided to the user. For example, task template 615 includes a task completion step of "Take car to [business]," and the user may be provided with the task completion step of "Take car to Business 5" for a task of "Travel to Business 5" based on "Business 5" being a member of a [business] category and that "Business 5" is the member of the entity category that is present in the task objective.
[00107] As described herein, task recognition engine 115 receives actions of a user and/or additional information that are associated with the user from task application 110 via communication network 101. Based on the received information, the task recognition engine 115 may determine that the user has interest in creating a task. For example, the user may submit a search query of "pay my cellular phone bill" to a web search engine and task application 110 may identify the submitted query and provide the query, one or more search results of the search query, and/or one or more webpages that were accessed by the user, to task recognition engine 115. I n some implementations, task application 110 may provide task recognition engine 115 with additional information that may be utilized to determine a task. For example, task application 110 may identify an email from a cellular phone company of a user that includes the name of the cellular phone company of the user, and task application 110 may provide the name of the cellular phone company to task recognition engine 115 in addition to information regarding the user interest in creating a task. Task recognition engine 115 may determine a task to associate with the user based on information that is received from the task application 110 and provide the task to task completion step engine 140.
[00108] Task completion step engine 140 may identify one or more completion steps to associate with a task that is received from task recognition engine 115. In some
implementations, task completion step engine 140 may identify one or more entities in entity data base 130 that are associated with aliases of one or more components of a task description and associate a completion step with the task based on information that is associated with the identified entities. For example, a task may be "pay cell phone bill," and task completion step engine 140 may identify an entity that is associated with the cellular phone company of the user in entity database 130. The identified entity may be associated with the phone number of the cellular phone company, such as "555-5555." Task completion step engine 140 may associate a task of "Call 555-5555" with the task of "pay my cell phone bill" based on identifying that the phone number "555-5555" is associated with the cellular phone company entity. [00109] In some implementations, task completion step engine 140 may determine one or more completion steps by determining whether a given task conforms to a task template. In some instances, task completion step engine 140 may not be able to determine task completion steps for a task and/or task completion step engine 140 may determine one or more task completion steps, but not all possible task completion steps for the task. For example, task application 110 may not identify enough information to provide to task completion step engine 140 so that task completion steps for the task may be determined. Also, for example, task completion step engine 140 may not identify sufficient information from task database 125 and/or entity database 130 to determine a task completion step for a task. In some implementations, task completion step engine 140 may determine whether tasks that have associated task completion steps may be com pared to one or more task templates to determine whether additional task completion steps may be associated with the task. For example, task completion step engine 140 may determine task completion steps for a given task by consulting one or more databases and/or based on the provided additional information, and additionally determine whether the task conforms to one or more task templates.
[00110] Task recognition engine 115 may identify one or more task completion steps that are associated with the identified task template but not associated with the determined task. Based on the task conforming to the template, task completion step engine 140 may assign, to the determined task, task completion steps that are assigned to the identified task template. The task completion steps for the determined task may be provided to the user as described herein and/or the task with associated task completion steps may be stored in task database 125 for later utilization by one or more components.
[00111] In some implementations, task recognition engine 115 may determine that a task conforms to multiple task templates. For example, the plant "rhubarb" may be a member of an entity category "[produce]" and an entity category "[medicine]" based on different uses for the rhubarb plant. Task recognition engine 115 may determine that the task "Buy rhubarb" conforms to a task template of "Buy [produce]" and additionally to a task template of "Buy [medicine]." In some implementations, task recognition engine 115 may identify the task completion steps that are associated with all of the multiple task templates and associate the task completion steps with the task. In some implementations, task recognition engine 115 may identify one or more task templates as the most likely task templates and associate only the task completion steps that are associated with the most likely task template or task tem plates with the task. For example, task recognition engine 115 may determine that "rhubarb" is more likely to be associated with tasks that include purchasing rhubarb as produce than with tasks that include purchasing the plant as medicine, and task recognition engine 115 may associate the task completion steps that are associated with "Buy [produce]" (which may include, for example, "Go to the grocery store") and not the task completion steps that are associated with the task template "Buy
[medicine]" (which may include, for example, "Go to the pharmacy"). I n some
implementations, strength of associations of entities with entity categories may be determined via, for example, entity database 130.
[00112] Many other configurations are possible having more or less components than the environment shown in FIG. 1. For example, although the components are each illustrated alone in FIG. 1, it is understood that one or more of the computing device 105, task recognition engine 115, task similarity engine 120, task database 125, task template generator 135, task completion step engine 140, and/or entity database 130 may be combined in some implementations.
[00113] Referring to FIG. 2, a flowchart of a method for determining a task group of tasks that share similarities and associating a task completion step with one of the tasks is provided. Other implementations may perform the steps in a different order, omit certain steps, and/or perform different and/or additional steps than those illustrated in FIG. 2. For convenience, aspects of FIG. 2 will be described with reference to one or more components of FIG. 1 that may perform the method, such as task similarity engine 120 and/or task recognition engine 115.
[00114] At step 200, a plurality of tasks is identified. I n some implementations, the plurality of tasks is identified by a component that shares one or more characteristics with task similarity engine 120. In some implementations, tasks may be identified from a database that shares one or more characteristics with task database 125. In some implementations, one or more tasks may be provided to task similarity engine 120 by a component that shares one or more characteristics with task recognition engine 115. In some implementations, one or more tasks that are identified may be associated with one or more task completion steps. I n some implementations, one or more tasks that are identified may not be associated with a task completion step.
[00115] At step 205, a task group is determined based on similarity between the tasks. In some implementations, task similarity between two or more tasks may be determined based on similarity of one or more components of a task objective of the tasks. For example, task similarity may be determined based on task actions and/or task objects as described herein. In some implementations, task similarity may be based on similarity between one or more components of task completion steps that are associated with two or more tasks. For example, similarity between two tasks may be based on similarity between completion actions and/or completion objects of two or more tasks as described herein. In some implementations, similarity between tasks may be determined based on a combination of two or more similarity measurements. For example, overall similarity between two or more tasks may be based on similarity between both task objects and completion objects of the two or more tasks.
[00116] At step 210, a task completion step that is associated with one or more of the tasks of the task group is identified. In some implementations, the task completion step may have been previously determined by a component that shares one or more characteristics with task recognition engine 115. For example, task recognition engine 115 may determine a task and associate a task completion step with the task based on information that is received from task application 110. In some implementations, task similarity engine 120 may have previously associated a task completion step with the task utilizing a method that may share one or more characteristics with the method that is provided in FIG. 2. For example, task recognition engine 115 may provide a task to task similarity engine 120 to determine task completion steps to associate with the task utilizing the method of FIG. 2 and store the task in task database 125, and task similarity engine 120 may later receive an additional task from task recognition engine 115 identify the previous task in task database 125, associate one or more additional task completion steps with the task based on the task that is received from task recognition engine 115.
[00117] Task similarity engine 120 may determine the task completion step to associate with one of the tasks of the task group. In some implementations, task similarity engine 120 may determine whether to associate a given task completion step with a task of the task group based on the number of tasks and/or percentage of tasks of the task group that are associated with the task completion step. For example, referring to FIG. 3B, task similarity engine 120 may determine that the identified tasks 320 and 340 are associated with the task completion step "Travel to the grocery store" and associate the task completion step with task 330 based on all of the tasks of the task group being associated with the task completion step "Travel to the grocery store." Also, for example, task similarity engine 120 may identify a fourth task of "Buy pumpkins" of the task group and that is associated with the task completion step "Go to the farmer's market." Task similarity engine 120 may not associate the task completion step "Go to the farmer's market" with task 330 if that task completion step does not a ppear a threshold number of times in the identified tasks of the task group.
[00118] In some implementations, task similarity engine 120 may associate a task completion step with a task of the task group for a particular user based on additional information that is associated with the user. For example, a user may be associated with a location where the user lives, information about one or more habits and/or preferences of the user, and/or other information about the user. One or more task completion steps may be associated with a task of a user based on, for example, the likelihood that a user that is associated with the identified information has interest in utilizing the identified task completion step. For example, a task completion step of "Travel to Grocery Store 1" may be associated with a task of a user if the user is located within a threshold distance of "Grocery Store 1."
[00119] At step 215, a task of the task group that is not associated with the task completion step that was identified at step 210 is determined. The task may be determined by a component that shares one or more characteristics with task similarity engine 120. In some implementations, the determined task may not be associated with a task completion step. I n some implementations, the determined task may be associated with one or more task completion steps, but not the task completion step that was identified in step 210.
[00120] At step 220, the task that was identified at step 215 is associated with the task completion step that was identified at step 210. The task may be associated with the task completion step by storing the association between the task and the task completion step in a database that shares one or more characteristics with task database 125. For example, task similarity engine 120 may store a memory address and/or a pointer with a task entry in task database 125 that is associated with and/or points to an entry in the task database 125 for the task completion step. I n some implementations, the task completion step may be provided to task recognition engine 115, which may provide the task completion step to a user at the appropriate time as a suggested completion step for the task that was identified at step 210.
[00121] Referring to FIG. 3A, an example comparison of two tasks is provided. Task 300 includes a task of "buy apples" and a task completion step of "travel to the grocery store." Task 310 includes a task of "Purchase bananas" and a task completion step of "travel to the grocery store." In some implementations, task similarity engine 120 may identify the task actions of the tasks, "buy" and "purchase," and identify entities in entity database 130 that are associated with the task actions. Task similarity engine 120 may further determine that both task actions are associated with the same entity and/or entities that are members of the same category, and assign a value to the similarity measurement of the task similarity, SI, based on both actions being associated with the same entity and/or related entities. Additionally or alternatively, task similarity engine 120 may compare similarity between the task objects of task 300 and task 310 and assign a value to SI and/or adjusted assign value to SI based on similarities between the task objects of "apples" and "bananas." For example, task similarity engine 120 may identify an entity associated with "apples" and a n entity that is associated with "bananas," and identify a category to which both identified entities are members, such as a "fruit" category. Based on determining that "apples" and "ba nanas" are members of the same category, SI may be assigned a value indicative of a likelihood that task 300 and task 310 are related. For example, task similarity engine 120 may determine, based on comparing task components of task 300 and task 310, that there is an 80% likelihood that task 300 and task 310 are similar, and assign SI the value of 0.8.
[00122] In the tasks of FIG. 3A, both task completion steps are "travel to the grocery store." Task similarity engine 120 may identify the task completion step of each of the tasks and assign a value S2 that is indicative of the likelihood that task 300 and task 310 are related. For example, task similarity engine 120 may determine that there is 100% similarity between the task completion steps of task 300 and task 310, and S2 may be assigned a value of 1.0 based on the identical task completion steps for both tasks. [00123] In some implementations of the example tasks of FIG. 3A, task similarity engine 120 may aggregate similarity measurements SI and S2 into one overall similarity measurement and determine the overall similarity of task 300 and task 310 based on the determined overall similarity measurement. Task similarity engine 120 may determine that, based on the values of SI and S2, an overall similarity measurement for similarity between task 300 and task 310 that is an average of SI and S2, or 0.9. In some implementations, SI and S2 may not be weighted evenly as described herein.
[00124] Referring to FIG. 3B, an example of determining a task completion step for a task that does not have an assigned task completion step is illustrated. Task 330 may be a task that has been received from task recognition engine 115, which does not have an associated task completion step. Task similarity engine 120 may identify task 320 from task database 125 and compare task 320 with task 330 to determine whether the similarity between the tasks satisfies a threshold similarity measurement. I n the provided example, both tasks share the same task action, "buy." Additionally, both task objects are members of the same category of "fruit." A user may not have previously submitted the task "buy rhubarb" and/or task recognition engine 115 may not have previously determined a task completion step for "buy rhubarb," so the task may not have an associated task completion step. Task similarity engine 120 may determine a value for S3 that is indicative of similarity between the task actions and/or task objects of task 320 and task 330 and determine that the similarity between the tasks satisfies a threshold similarity measurement. Based on the threshold similarity of the tasks, task similarity engine 120 may assign the task completion step of "Travel to the grocery store" to task 330 based on determining that it is likely that the tasks will have the same task completion step. Also, for example, task similarity engine 120 may additionally identify task 340 and also assign a similarity measurement between task 340 and task 330 that is indicative of similarity between task 340 and task 330. Task similarity engine 120 may determine that, based on multiple tasks sharing the same task completion step and having similar task actions, task 330 is likely to be completed utilizing the same task completion step as the other tasks. Task similarity engine 120 may associate the task completion step "Travel to the grocery store" to task 330 based on the similarity measurements. [00125] Referring to FIG. 3C, another example of comparing tasks and determining whether to assign a task completion step to a task based on similarities with another task is illustrated. I n the illustrated example, task 350 may be a task that is identified from task database 125 and task 360 may be a task that is received from task recognition engine 115. Task similarity engine 120 may determine similarity measurements for similarity between the tasks actions and/or task objects of task 350 and task 360, as described herein, and assign a similarity measurement S5. Additionally, task similarity engine 120 may identify that both tasks share a common task completion step, "Travel to the grocery store," as described herein, and assign a similarity measurement S6 that is indicative of sharing a task completion step. Task similarity engine 120 may determine an overall similarity
measurement for the tasks based on S5 and S6, and if task similarity engine 120 determines that the overall similarity measurement between the tasks satisfies a threshold, the additional task completion step of task 350, "travel to the farmer's market," may be associated with task 360.
[00126] Referring to FIG. 3D, another example of comparing tasks and determining whether to assign a task completion to a task based on similarities with another task is provided. In the illustrated example, both task 370 and task 380 include the same task action, "Contact," and both include task objects that may be identified from entity database 130 as members of an entity category "businesses." Additionally, both tasks include the task completion step with a completion action of "Call" and S8 may be determined based on the completion actions. In some implementations, task similarity engine 120 may assign a value S7 that is indicative of similarity between the task objectives of task 370 and task 380 and associate the task completion step of "Mail cell phone provider" to task 380, as described herein. Also, for example, task similarity engine 120 may associate a task completion step with task 280 that includes the same completion action as "Mail cell phone provider" but additionally substitutes the completion object of the associated task completion step with the task object of task 380, which would make the associated task completion step "Mail Restaurant 1." In some implementations, task similarity engine 120 may identify multiple categories to which the task objects of task 370 and task 380 belong, and assign a value to S7 that is based on the associations of the task objects with multiple identified categories. For example, task similarity engine 120 may determine that "cell phone provider" of task 370 is also a member of the entity category "service provider" and "Restaurant 1" of task 380 is a member of the entity category "restaurant/' and S7 may be less indicative of similarity between the tasks than tasks where the task objects have multiple categories in common. Tasks that include entities that share multiple entity categories may be assigned a similarity value that is more indicative of similarity than tasks with entities that share fewer entity categories.
[00127] In some implementations, the methods described herein may be performed substantially in real time. For example, task application 110 may provide information to task recognition engine 115, task recognition engine 115 may determine a task based on the information, provide the task to task similarity engine 120, and task similarity engine 120 may provide task recognition engine 115 with additional task completion steps for the task, which may be provided to the user at the appropriate time based on fulfillment of one or more conditions. Also, for example, task similarity engine 120 may determine task completion steps for a task when task recognition engine 115 initially provides the task to the task similarity engine 120 and store the task and task completion steps in task database 125 for later access by task recognition engine 115 and/or task application 110.
[00128] In some implementations, the methods described here may be performed utilizing tasks that have been previously stored in task database 125. For example, task similarity engine 120 may identify two or more tasks from task database 125, determine similarity between the tasks, determine one or more task completion steps to associate with one or more of the tasks, and store the determined task completion step in task database 125.
[00129] Referring to FIG. 7, an example of associating task completion steps with a task based on determining that the task conforms to a task template is provided. In the illustrated example, task recognition engine 115 may determine a task 700 based on information that is provided by task application 110 as described herein. Task recognition engine 115 may provide the task to task completion step engine 140 to determine one or more task completion steps to associate with the task. Task completion step engine 140 may identify the task template 705 based on task 700 conforming to the task template. For example, task completion step engine 140 may determine that the provided task has a task objective that includes a task action ("Travel") that is associated with an entity that is a member of the entity category [travel] and additionally includes an alias of a task entity ("Business 1") that is a member of the entity category [business]. Based on the task description "Travel to Business 1" of task 700 conforming to task template 705, task completion step engine 140 may associate one or more of the task completion steps of task template 705 with task 700. For example, task completion step engine 140 may associate the task completion steps of task template 705 with task 700, which may result in task 710. Task 710 may be provided to task recognition engine 115 and/or task completion step engine 140. Task 710 may be utilized to provide one or more task completion steps to a user and/or task 710 may be stored with associated task completion steps in task database 125.
[00130] In some implementations, a ranking may be assigned to one or more task completion steps that are associated with a task template and task completion step engine 140 may determine whether to associate a given task completion step with a conforming task based on the associated ranking. For example, a task completion step that was associated with multiple tasks of the task group that was utilized to determine the task template may have a rank that is more indicative of assigning the task completion step with a conforming task than a task completion step that was associated with fewer tasks of the task group.
[00131] In some implementations, a task with one or more associated task completion steps may be more likely to conform to a task template if a task completion step that is associated with the task matches a task completion step that is associated with the task template. For example, a task of "Buy bananas" may be associated with a task completion step of "Go to the grocery store," and a task template of "Buy [fruit]" may be associated with completion steps of "Go to the grocery store" and "Go to the farmer's market." Because the task conforms to the task template and shares a task completion step with a task completion step that is associated with the task template, the task may be more likely to be associated with the task completion step "Go to the farmer's market" than a task that does not share the task completion step "Go to the grocery store" with the task template.
[00132] Referring to FIG. 4, a flow chart illustrating an example method of associating a task completion step of a task with a task template is provided. Other implementations may perform the steps in a different order, omit certain steps, and/or perform different and/or additional steps than those illustrated in FIG. 4. For convenience, aspects of FIG. 4 will be described with reference to one or more components of FIG. 1 that may perform the method, such as task template generator 135 and/or task recognition engine 115.
[00133] At step 400, a plurality of tasks is identified. I n some implementations, the plurality of tasks is identified by a component that shares one or more characteristics with task template generator 135. In some implementations, tasks may be identified from a database that shares one or more characteristics with task database 125. In some implementations, one or more tasks may be provided to task template generator 135 by a component that shares one or more characteristics with task recognition engine 115. In some implementations, a task that is identified may be associated with one or more task completion steps. In some implementations, a task that is identified may not be associated with a task completion step.
[00134] Identified tasks include a task action and a task object. In some implementations, the task action and/or the task object may be an entity and/or an identifier of an entity in entity data base 130. For example, a task may have a task action that is associated with the entity for the action "Buy." Also, for example, a task may have a task object that is associated with an entity for the fruit "bananas." I n some implementations, a task action and/or a task object of a task may be a textual representation of an alias of an entity in entity data base 130. For example, a task may have a task action of "Purchase," and the task action may be an alias of an entity for the action "Purchase."
[00135] At step 405, an entity category is determined. An entity category may be determined by a component that shares one or more characteristics with task template generator 135. In some implementations, an entity category may be identified and/or determined based on one or more entities from entity database 130. I n some
implementations, the entity category may be determined based on one or more entities that are identified from the plurality of tasks in step 400. For example, task template generator 135 may identify a task entity and/or a textual representation of a task entity in a task of the plurality of tasks that were identified at step 400, and determine that the entity category is the category of the identified task entity. In some implementations, task template generator 135 may determine an entity category first and identify a plurality of tasks at step 400 that each includes a task entity of the determined entity category. [00136] At step 410, one or more identifiers of entities that are members of the entity category are identified. In some implementations, the identifiers may be aliases of the entities that are members of the entity category that was identified at step 405. In some implementations, the aliases are textual representations of the associated entities. For example, for an entity category of "[fruit]" task template generator 135 may identify an entity that is a member of the entity category and that is associated with the textual alias "ba nana." In some implementations, the identifiers are a unique identifier to identify the associated entity. For example, an identifier of an entity may be a memory address and/or database reference number that uniquely identifies an entity in entity database 130.
[00137] At step 415, a task template is determined. The task template includes the entity category that was identified at step 405 and may include one or more additional entities and/or one or more additional terms. For example, a task template may include the entity category [fruit], which may be an entity category that is associated with fruit entities. Also, for example, a task template may include an entity "Buy" in addition to the entity category [fruit]. In some implementations, one or more terms in a task template may be associated with a task action and/or a task object. For example, a task template may include the term "Buy" and that term may be associated with a task action of "Buy." In some
implementations, a task template may include one or more entities. For example, a task template may include the term "buy," which may be associated with an entity of "buy" and/or the task template may include an identifier of an entity of "Buy" that may be utilized to identify the associated entity in entity database 130.
[00138] At step 420, a task group of one or more tasks that conform to the task template is determined. The conforming tasks of the task group may be identified by a component that shares one or more characteristics with task template generator 135. In some implementations, the task group may include one or more of the plurality of tasks from step 200. In some implementations, the task group may include additional and/or alternate tasks. The tasks of the task group are conforming if a given task includes an identifier of an entity that is a member of the entity category that was identified in step 405 and that includes any additional terms and/or entities that are components of the task template. I n some implementations, a similarity measurement may be determined that is indicative of the conformity of a task with the task template and tasks with a similarity measurement that satisfies a threshold value may be included in the task group.
[00139] For example, a task group of tasks that conform to the task template "Buy [fruit]" may include tasks that have a task object that is an entity of the entity category "[fruit]." Additionally or alternatively, a task group of tasks that conform to the task template "Buy [fruit]" may include tasks that have a task action that is associated with the entity "Buy." Also, for example, the task group may include only tasks that include both the task action of "Buy" and a task object that is a member of the entity category "[fruit]."
[00140] At step 425, a task completion step that is associated with one or more of the tasks of the task group is determined. In some implementations, the determined group task completion step may be a task completion step that is associated with a threshold number of the tasks of the task group. For example, a task completion step may be selected as a group task completion step only if a majority of the tasks of the task group are associated with the task. I n some implementations, multiple task completion steps may be identified. For example, one or more tasks of the task group may be associated with a first task completion step and one or more of the tasks of the task group may be associated with a second task completion step, and task template generator 135 may determine that both of the task completion steps should be associated with the task template at step 430.
[00141] At step 430, the task completion step or task completion steps that were identified at step 425 are associated with the task template of step 415. The task template may be stored in one or more databases and utilized by one or more components to associate a completion step with a task that conforms to the task template. For example, a task template may be "Buy [fruit]" with a task completion step of "Travel to the farmer's market," and the conforming task of "buy oranges" may be associated with the task completion step of "Travel to the farmer's market" based on the task conforming to the task template.
[00142] I n some implementations, a user may have interest in completing a task and may utilize one or more applications to identify information that may be useful to completing the task. Additionally or alternatively, a user may have interest in creating a task, being provided with a notification that a task may be completed and/or being provided with a suggested task completion step at a time when the task may be completed. For example, a user may utilize a search engine to submit a search query of "Pay my taxes" and, based on the search query, a task may be created for the user to pay taxes. The task may include one or more task completion steps that may be utilized to pay taxes and the user may be provided with a notification to pay taxes on a particular date, such as a notification 2 weeks before the user's taxes are due. Also, for example, the user may be provided with one or more suggested task completion steps, such as a link to an online tax submission webpage, a link to one or more webpages that include tax forms, and/or a phone number to an accountant. The user may complete the task of "Pay my taxes" based on the provided one or more task completion steps.
[00143] In some instances, determining when a user may have interest in being provided with an indication related to completion of the task (e.g., an indication that a task may be completed and/or task completion step(s)) may be based on one or more dynamic attributes of an entity associated with the task. For example, a user may have interest in performing a task "when the weather is nice," "when Bob is nearby," and/or "when traffic isn't bad." One or more dynamic attributes of entities that are related to a task may be determined and conditions for providing an indication to a user may be based on one or more particular values of the dynamic attributes. Dynamic attributes may include, for example, the location of a person, current cloud conditions, and/or current average speed on an interstate.
[00144] In some implementations, an indication related to completion of the task (e.g., completion steps for a task and/or a notification that a task may be completed) may be provided to the user when it is convenient for the user to complete the task and/or when it is likely that the user has interest in completion of the task at that time based on the satisfaction of one or more conditions. For example, a user may create an entry in a calendar application to "Contact Bob," a task may be determined based on the entry, and a completion step of "Call 555-5555" may be determined based on identifying a contact number of "555-5555" for "Bob" in a contacts application of the user. In some
implementations, the user may be provided with the task completion step of "Call 555- 5555" and/or a notification to "Call Bob" on the date and/or at the time that the user has indicated in the calendar application to "Call Bob" and/or when the user utilizes a cellular phone and/or phone application. The task completion step may include populating a dialing application of the cellular phone with the phone number "555-5555" as a suggested task completion step. I n some implementations, the user may be provided with a notification to "Contact Bob" based on satisfaction of one or more conditions and without a suggested completion step.
[00145] Referring to FIG. 9, an example of a task and associated task completion steps is provided. The task and/or task completion steps may be identified and/or determined based on, for example, one or more methods described herein. The task 900 includes a task action 905 of "Plant" and a task object 910 of "Garden." In some implementations, task action 905 and/or task object 910 may be entity identifiers of one or more entities in a database. In some implementations, task action 905 and/or task object 910 may be textual representations of entities. Task 900 is associated with task completion step 915 and task completion step 930. A task completion step may be associated with a task based on, for example, explicit submission of a task completion step by a user, associating a task completion step of a similar task with the task based on the similarity between the tasks, and/or determining a task completion step based on additional information that is associated with the user (emails, contacts, browsing history, etc.). Task completion step 915 includes a completion action 920 of "Purchase" and a completion object 925 of "Garden Supplies" that may be utilized to provide a user with a task completion step related to purchasing garden supplies when one or more conditions have been satisfied. Task completion step 930 includes a completion action 935 of "Plant" and a completion object 940 of "Garden" that may be utilized to provide a user with a task completion step related to planting a garden. In some implementations, task action 905 and completion action 935 may be identifiers of the same entity in an entity database. Likewise, in some
implementations, task object 910 and completion object 940 may be identifiers of the same entity.
[00146] I n some implementations, an entity that is related to a task may be identified based on task information that is associated with the task and/or based on a user that is associated with the task. A task action entity, a task object entity, and/or entities that are associated with completion steps of a task may be utilized to identify one or more entities related to the task. For example, a task of "Plant my garden" may include a task object of "garden" and one or more entities that are related to a "garden" may be identified via an entity data base. Also, for example, an entity that is associated with a task action of "Plant" may be identified in an entity database, and one or more additional entities that are associated with the "Plant" entity and the "garden" entity may be identified as entities that may be related to the task of planting a garden. For example, an entity associated with "weather," an entity associated with "planting techniques," and/or an entity associated with "garden store" may be identified as associated with the "plant" entity and/or the "garden" entity in an entity database.
[00147] In some instances, determining when to provide an indication to a user related to completion of a task may be based on one or more condition states. A condition state is one or more values of a dynamic attribute that are indicative of a likelihood that the user has interest in being provided an indication related to completing the task. For example, for a task of "Plant my garden when appropriate," determining when planting a garden is appropriate may be contingent on the dynamic attributes of current weather conditions, previous weather conditions, and/or availability of appropriate plants at a gardening store. For example, a "weather" entity may be identified as related to a task of "Plant my garden" and the "weather" entity may include dynamic attributes of "temperature," "rainfall," and/or "cloud conditions" that may vary in value based location and/or anticipated conditions at a location. Also, for example, a "garden store" entity may include dynamic attributes of "plants in stock" and/or "operating hours" that may vary in value based on one or more factors that are controlled by the store.
[00148] Determining when to provide an indication related to completing the task may change based on values of the one or more dynamic attributes. For example, a user may be provided an indication to plant a garden when the temperature of the location of the user's garden has been above freezing for two weeks. Also, for example, a notification to plant a garden may be provided to a user when a gardening store has plants in stock that the user has indicated an interest in planting. An indication to plant a garden may not be appropriate until a value of one or more of the dynamic attributes of a task are indicative of an appropriate time to plant a garden.
[00149] I n some implementations, one or more attributes of a user may be utilized to determine an entity with one or more dynamic attributes. For example, a user may be associated with one or more locations, such as a home address of the user, a work address of the user, and/or a current location of the user. Also, for example, a user may be associated with one or more personal contacts and/or one or more preferences that may be utilized to identify a dynamic attribute of an entity that may be utilized to determine a condition for providing an indication to complete a task.
[00150] In some implementations, determining when to provide an indication related to completion of a task may be based on one or more conditions that are determined based on a value of an identified dynamic attribute of an entity. For example, an entity associated with "weather" may be identified as related to a task of "Plant my garden" based on determining an association between the task action "plant," the task object "garden," and the "weather" entity. Also, for example, an entity associated with "weather at the user's location" may be identified based on a user attribute of a location of a user. In some implementations, the location of the user may be identified from latent information that is associated with the user and that is not explicitly provided by the user, such as emails of the user, user contacts, and/or an IP address of the user. The "weather at the user's location" entity may include dynamic attributes of "temperature," "rainfall," and/or "cloud conditions" and the values of the dynamic attributes may satisfy a condition to provide a user with an indication to plant a garden. The indication may not be provided to the user until the value of one or more of the dynamic attribute is one or more states that indicate likelihood that the user has interest in being provided the indication. For example, a notification to plant a garden may not be provided to a user until the value of a
"tem perature at the user's location" has been above freezing for at least two weeks.
Additionally or alternatively, for example, an indication to plant a garden may not be provided to a user unless the value of a dynamic attribute of "rainfall at the user's location" has been within a certain range for the previous two weeks (i.e., the notification may not be provided if the location has experienced too much rain or too little rain over a time period).
[00151] In some implementations, an indication related to completion of the task may be provided to a user if a task is associated with a determined time and one or more dynamic attributes have values that are indicative of a low likelihood that the user will have interest in completing the task at that time. For example, a task of "have a picnic" may have a completion date of "next Sunday." The task of "have a picnic" may have a condition that the task may be completed only if the values one or more dynamic attributes of an entity that is associated with the task are indicative of likelihood that the user has interest in performing the task. The user may be provided with an indication related to completion of the task that indicates the task may need to be cancelled and/or rescheduled if the values of the dynamic attributes are one or more states on the task completion date that indicate low likelihood that the user has interest in completing the task. For example, a task of "have a picnic" may have a completion date of "next Sunday" and the user may be provided with an indication to cancel the picnic if an entity associated with "weather at the picnic location" has a dynamic attribute of "rain prediction" with a value that indicates that rain is likely "next Sunday."
[00152] Referring to FIG. 8, a block diagram of an example environment is provided in which an indication that a task may be completed may be provided to a user based on one or more values of a dynamic attribute of an entity associated with the task. The
environment includes a computing device 105 executing a task application 110, a task engine 150, an entity engine 170, a condition identification engine 160, an entity database 130, and a task database 125. The environment also includes a communication network 101 that enables communication between various components of the environment. In some implementations the communication network 101 may include the Internet, one or more intranets, and/or one or more bus subsystems. The communication network 101 may optionally utilize one or more standard communications technologies, protocols, and/or inter-process communication techniques.
[00153] As described herein, the computing device 105 executes one or more applications and may be, for example, a desktop computer, a laptop computer, a cellular phone, a smartphone, a personal digital assistant (PDA), a tablet computer, a navigation system, a wearable com puting device (e.g., glasses, watch, earpiece), or another computing device. In the example environment of FIG. 8, the computing device 105 may optionally be utilized to, directly or indirectly, identify a user task of a user, provide user task information, and/or provide a user attribute to one or more components. As also described herein, the task application 110 may be utilized to access one or more applications such as, for example, e- mail applications, a calendar application, and/or a web browser executing on computing device 105. [00154] The task engine 150, entity engine 170, condition identification engine 160, and/or one or more additional components of the example environment of FIG.8 may each include memory for storage of data and software applications, a processor for accessing data and executing applications, and components that facilitate communication over a network. In some implementations, task engine 150, entity engine 170, and/or condition identification engine 160 may include hardware that shares one or more characteristics with the example computer system that is illustrated in FIG.13. The operations performed by components of the example environment may be distributed across multiple computer systems. For example, task engine 150, entity engine 170, and/or condition identification engine 160 may be computer programs running on one or more computers in one or more locations that are coupled to each other through a network.
[00155] As described herein, task database 125 may be utilized by one or more components to store and/or access information and may include one or more storage mediums. For example, in some implementations, the task database 125 may include multiple computer servers each containing one or more storage mediums. Information described herein may optionally be stored in the task database 125 and/or an additional database. For example, tasks and associated information (e.g., task actions, task objects, completion steps, conditions to provide an indication to a user) may be stored in task database 125 for later access by one or more components. As also described herein, entity database 130 may be utilized to identify and/or store one or more entities that may include action entities and/or object entities of tasks and/or completion steps.
[00156] In some implementations, one or more of the tasks that are stored in task database 125 may be identified by task engine 150. In some implementations, task engine 150 may determine a task based on information that is received from task application 110. For example, task application 110 may identify information and/or one or more actions of a user and provide the information to task engine 150. Task engine 150 may create a task based on the provided actions of the user and/or additional information that was received from task application 110. Task engine 150 may store the determined task in task database 125 for later use and/or further utilize the task before storing the task in task database 125.
[00157] In some implementations, task application 110 may provide task engine 150 with information that is associated with a user and/or actions of a user. Task engine 150 may determine a task for a user and/or task completion steps for a task based on the user information that is received from task application 110. For example, a user may submit a search query of "planting a garden" to a web browser and task application 110 may provide the search query to task engine 150. Task engine 150 may utilize the search query and/or one or more documents that were returned to the user as search results to determine a task of "plant a garden."
[00158] Task engine 150 may identify one or more components of the task (e.g., task action and/or task object) and/or one or more components of task completion steps (e.g., completion action and/or completion object) that are associated with the task. For example, a task may be determined based on a user creating a calendar entry of "Meet Bob for lunch" in a calendar application and task engine 150 may identify a task action of "Meet" and task objects of "Bob" and "lunch" based on the terms of the calendar entry. In some implementations, the identified information that is associated with a task may be based on input of the user that is utilized to create the task. For example, task engine 150 may identify a task of "Call Bob" in task database 125 and identify a task action of "Call" and a task object of "Bob" for the task. Also, for example, task engine 150 may identify one or more entities in the entity database 130 that are associated with the task.
[00159] Task engine 150 may identify attributes that are associated with a user based on information that is provided by task application 110 and/or based on information in one or more databases. For example, task application 110 may provide information to task engine 150 that includes the location of the user when the user performed one or more actions. Also, for example, task application 110 may provide task engine 150 with additional information after a task has been determined. For example, task engine 150 may identify a task in task database 125 and user location information may be provided from task application 110 or another application at a later time. In some implementations, task engine 150 may identify user attributes based on one or more additional sources that are associated with the user, such as browser history of the user, one or more emails of the user, calendar application data, contacts from a contacts application of the user, and/or one or more documents that are associated with the user.
[00160] In situations in which the systems discussed herein collect personal information about users, or may make use of personal information, the users may be provided with an opportu nity to control whether progra ms or featu res col lect user information (e.g., information a bout a user's socia l network, social actions or activities, profession, a user's preferences, or a user's cu rrent geographic location), or to control whether a nd/or how to receive content from the content server that may be more releva nt to the user. Also, certain data may be treated in one or more ways before it is stored or used, so that persona l identifiable i nformation is removed. For exa mple, a user's identity may be treated so that no personal identifia ble information can be determined for the user, or a user's geographic location may be generalized where geogra phic location information is obtained (such as to a city, ZI P code, or state level), so that a pa rticu lar geogra phic location of a user ca nnot be determined. Thus, the user may have control over how information is col lected a bout the user a nd/or used.
[00161] I n some implementations, task engine 150 may determine one or more task completion steps to associate with a task. The task engine 150 may determine a task completion step based on information that is associated with a task. For exam ple, task engine 150 may identify a task of "Buy ba nanas" and determine that a task com pletion step of "Go to the grocery store" may be a n appropriate task completion step for the task based on identifying a n association between "Buy ba na nas" and a com pletion step of going to a grocery store. Task engine 150 may determine a task com pletion step for a task based on identifying associations between one or more entities of a task a nd the task com pletion step in one or more data base, such as entity data base 130. Also, for exa mple, task engine 150 may determine one or more task completion steps based on known task completion steps for other tasks that have been previously determined, such as one or more tasks in task data base 125.
[00162] Task engine 150 may provide entity engine 170 with task information a nd entity engine 170 may identify one or more entities to associate with the task based on the task information. I n some im plementations, task engine 150 may provide a task to entity engine 170 that is a l ready associated with one or more entities. For exa m ple, task engine 150 may determine a task action a nd task object for a task based on information that was provided by task application 110 a nd provide identifiers of entities to entity engi ne 170. Also, for exa m ple, task engine 150 may identify a task in task data base 125 that has been previously associated with one or more entities and provide the task to entity engine 170 with the associated entities.
[00163] Referring to FIG. 10, a diagram of example entities and associations between the entities is provided. The provided diagram is an example of associations between the entities and the task and task completion steps of FIG. 9. Entity 1000 corresponds to the task action 905 ("Plant") and entity 1005 corresponds to the task object 910 ("Garden") of FIG. 9. The entity 1010 corresponds to completion action 920 ("Purchase") and entity 1015 corresponds to completion object 925 ("Garden Supplies"). Task engine 150 may provide entity engine 170 with the task, including task information identifying the entities 1000, 1005, 1010, and 1015. Entity engine 170 may utilize the entities to determine one or more additional entities that may be associated with dynamic attributes that may be utilized to determine when to notify the associated user that the task may be com pleted. In the illustrated diagram, entity 1020 ("Weather") may be identified by task engine 150 based on identifying an association between entity 1020 and entities associated with the action of planting (i.e., entity 1000) and the object "garden" (i.e., entity 1005). In some
implementations, entity engine 170 may utilize information that is associated with a task completion step of a task to determine additional entities. For example, a n entity associated with "Garden Store" (i.e., entity 1025) may be identified by entity engine 170 based on identifying the associations between entity 1025 and a "Purchase" entity 1010 and "Garden Supplies" entity 1015.
[00164] One or more of the entities that are identified by entity engine 170 may each be associated with one or more dynamic attributes. A dynamic attribute is an attribute that is associated with an entity and that may vary in value based on one or more factors. In some implementations, the variance of a dynamic attribute may reflect an aspect of an entity that is difficult to predict. For example, a "weather" entity may have a dynamic attribute of "current temperature" that may vary based on multiple uncontrollable weather
phenomena, such as wind speed, air pressure, and current precipitation. Also, for example, a "traffic" entity may include a dynamic attribute of the "current average speed" on a street, and the average speed may vary based on weather conditions, current road construction, and/or road accidents that cannot be predicted with certainty. [00165] In some implementations, entity engine 170 may identify one or more entities based on user attributes that have been provided. Task application 110 may identify one or more user attributes of a user based on information that is associated with the user and provide entity engine 170 with the user attributes. For example, an entity associated with "weather at the user's location" may be identified based on task information and additionally on a user location that is associated with a user. The user location may be identified by the task application based on, for example, emails of the user, a GPS component of computing device 105, and/or explicit input from the user.
[00166] Referring again to FIG. 10, the entities identified by entity engine 170 are further determined based on a "user location" user attribute 1055. The dynamic attributes for the "weather" entity 1020 include "temperature" attribute 1030, "rainfall" attribute 1035, and "cloud conditions" attribute 1040. The dynamic attributes of the "garden store" entity 1025 include an "inventory" attribute 1045 and a "store hours" attribute 1050. Based on the identified location of the user, entity engine 170 may determine a "weather at user location" entity 1020 that includes dynamic attributes of the weather in the proximity of the "user location" user attribute 1055. Also, for example, entity engine 170 may determine the "garden store near user location" entity 1025 that is a store that is proximate to the "user location" user attribute 1055. Additionally or alternatively, entity engine 170 may identify a "preferred store" user attribute for a user and determine a "preferred garden store" entity based on the identified user preference.
[00167] In some implementations, entity engine 170 may utilize one or more data bases that include mapped information between one or more types of tasks and/or task completion step, and relevant dynamic attributes of entities that are associated with each type of task and/or task completion step. For example, an entity of "garden store" may be determined for a task with a task completion step of "purchase seeds." The "garden store" entity may have dynamic attributes of "inventory" and "number of employees" and entity engine 170 may identify in one or more databases that a dynamic attribute of "number of employees" for a task with a task completion step related to "Purchase" is not relevant but a dynamic attribute of "inventory" is relevant for tasks with a task completion step with an action entity of "purchase." [00168] Condition identification engine 160 may determine one or more conditions that must be satisfied for an indication related to completion of a task to be provided to a user. One or more of the conditions may be satisfied when a value of a dynamic attribute of an entity that was identified by entity engine 170 is one or more states. Condition
identification engine 160 may determine one or more states of values of the identified dynamic attributes will satisfy a condition to provide an indication related to completion of the task to the user. For example, for a task of "plant my garden," entity engine 170 may determine an entity associated with the weather near the location of the user and condition identification engine 160 may determine that an indication related to planting a garden will be provided to the user based on the dynamic attributes of a weather entity. Referring again to FIG. 10, condition identification engine 160 may determine that the "temperature" attribute 1030 must have a value above freezing for two weeks before a completion indication is provided to the user. Also, for example, condition identification engine 160 may determine that the "rainfall" attribute 1035 must have a value that is less than 1 inch the last seven days before a completion indication is provided to the user.
[00169] In some implementations, condition identification engine 160 may determine one or more states for values of a dynamic attribute of an entity that will satisfy a condition to provide a completion indication to a user based on information that is identified from one or more additional sources. For example, condition identification engine 160 may identify information from a database that indicates what temperatures are appropriate for planting a garden and identify those values as states for a temperature attribute of an entity as conditions to provide an indication related to planting a garden to the user. Also, for example, condition identification engine 160 may identify information about appropriate values for a dynamic attribute based on information that is associated with a user. For example, condition identification engine 160 may be provided with information from one or more webpages that a user has visited and identify conditions for planting a garden based on the information from the webpages.
[00170] In some implementations, determining an entity that is associated with a task may include identifying a person that is not the user. For example, task application 110 may identify a person that is associated with a task of a user based on a user attribute of the user, such as a user attribute that is determined based from a contacts application and/or an email of the user. In some implementations, the task object and/or the completion object of a task may be a person, such as in the task of "Call Bob." In some
implementations, the dynamic attribute for a person entity may be based on the location of that person, which is not within the control of the user. Also, for example, the dynamic attribute for a person entity may be based on a distance between the user and the person, which is based on the user attribute of the location of the user. A task may include performing an action when the distance between the user and the person entity is a threshold distance. For example, a task may be "Call Bob when he gets to town" and a condition to provide an indication to the user that the task may be completed may be based on a dynamic attribute of "distance from Bob" being one or more states. For example, the user may be provided with an indication related to "Call Bob" when the value of the "distance from Bob" dynamic attribute is a state that is a threshold distance that is indicative of "Bob" being in the same general locale as the user, such as a 5 mile radius. Also, for example, a task may be "Have coffee with Bob tomorrow morning" and an indication related to completing the task may be provided to the user when a dynamic attribute of "distance from Bob" is a walking distance at the specified time (i.e., the morning).
[00171] Referring to FIG. 11, a flow chart is provided illustrating an example method of providing an indication to a user that a task may be completed based on one or more dynamic attributes of an entity. Other implementations may perform the steps in a different order, omit certain steps, and/or perform different and/or additional steps than those illustrated in FIG. 11. The steps of the method illustrated in FIG. 11 may be performed by one or more components illustrated in FIG. 8.
[00172] At step 1100, a task of a user is identified. In some implementations, the task is identified by a component that shares one or more characteristics with task engine 150. In some implementations, a task may be identified from a database that shares one or more characteristics with task database 125. I n some implementations, one or more tasks may be determined by task engine 150 based on information that is provided to task engine 150 by a component that shares one or more characteristics with task application 110 via computing device 105. In some implementations, a task that is identified may be associated with one or more task completion steps. In some implementations, a task that is identified may not be associated with a task completion step.
[00173] At step 1105, task information that is related to the task is identified. The task information may be identified by a component that shares one or more characteristics with task engine 150. In some implementations, task information may be identified based on one or more entities that are associated with the task. For example, a task may include a task object of "garden," and task engine 150 may identify the task object "garden" as task information. In some implementations, task engine 150 may identify one or more entities in an entity database, such as an entity database 130, that are associated with an entity of a task. For example, task engine 150 may identify a "garden store" entity in entity database 130 that is associated with a task object "garden" entity of a task. In some
implementations, task information may be provided by one or more applications based on additional information that is associated with the task. For example, task application 110 may identify one or more documents that are associated with the user and that may include task information, such as emails, entries in a calendar application, and/or browser history of the user.
[00174] At step 1110, one or more user attributes are identified. In some
implementations, user attributes may be identified by a component that shares one or more characteristics with task engine 150. In some implementations, user attributes may be identified based on information that is provided by task application 110. For example, task application 110 may provide task engine 150 with information that was identified from one or more sources that are associated with a user, such as emails, browser history, and/or calendar entries. Also, for example, task application 110 may identify one or more latent attributes of the user, such as user preferences; one or more locations that are associated with the user; and/or one or more contacts of the user based on one or more sources that are associated with the user.
[00175] At step 1115, an entity that is associated with the task is identified based on the identified task information and the identified user attribute. An entity may be identified by a component that shares one or more characteristics with entity engine 170 and the entity may be identified via a database that shares one or more characteristics with entity database 130. I n some implementations, the entity may be a component of the task, such as a task action or a task object. In some implementations, the entity may be a component of a task completion step that is associated with the task, such as a completion action or a completion object. In some implementations, the identified entity may be identified based on an entity that is associated with one or more entities that are components of a task. For example, a task may have a task action "plant" entity and an associated task completion step may have a task completion step of "Purchase seeds," and entity engine 170 may identify a "garden store" entity that is associated with a task object "garden" entity, a completion action "purchase" entity, and/or a completion object "seeds" entity in an entity database 130.
[00176] At step 1120, a dynamic attribute of the entity is identified. A dynamic attribute may be identified by a component that shares one or more characteristics with entity engine 170. A dynamic attribute is an attribute of the identified entity that has a varying value that may change independent of input from the user. For example, a "temperature" dynamic attribute may be associated with a "weather" entity and the "temperature" dynamic attribute may vary based on the current temperature at a location. Also, for example, a "location" dynamic attribute may be associated with a second user and the "location" dynamic attribute may vary based on the current location of the second user and/or the distance between the user and the second user. In some implementations, entity engine 170 may identify a value for a dynamic attribute via one or more databases that are updated with values for the dynamic attribute. For example, a "temperature" dynamic attribute may be identified via a database that includes temperature readings and that is updated as temperature varies. I n some implementations, entity engine 170 may identify a value for a dynamic attribute via one or more additional sources. For example, entity engine 170 may identify a temperature value via a webpage that provides an updated reading for the temperature at a location.
[00177] At step 1125, a condition for providing an indication to the user related to completing the task is determined. The condition may be based on a state of one or more values of the dynamic attribute that are indicative of a likelihood that the user has interest in completing the task. A condition for a task may be determined by a component that shares one or more characteristics with condition identification engine 160. I n some implementations, one or more condition states may be identified via associations in entity database 130 and/or one or more additional databases. For example, a "garden" entity may have an "ideal pla nting temperature" attribute that has a value of "75 degrees." The condition state may be based on a "temperature" dynamic attribute associated with a "garden" entity to having a value that is greater than 75 degrees. In some implementations, a condition state may be identified from one or more additional sources. For example, condition identification engine 160 may identify a webpage that includes information regarding ideal temperature values for planting a garden and condition identification engine 160 determine the condition state that is associated with a task of "plant garden" based on the identified value. I n some implementations, the condition state for a task may be identified based on additional information that is associated with the task. For example, a task of "Plant garden" may be associated with the additional information "When it is not raining" based on additional information that was identified by task application 110.
Condition identification engine 160 may determine a condition state for a "Current
Weather" dynamic attribute of a "Weather" entity that is any value for the "Current Weather" dynamic attribute except for a value of "Raining."
[00178] At step 1130, satisfaction of the condition is determined based on the value of the dynamic attribute. A component that shares one or more characteristics with condition identification engine 160 may determine satisfaction of a condition by monitoring the dynamic attribute of the entity that was identified by entity engine 170. For example, entity engine 170 may identify an entity of "Weather" with a dynamic attribute of "Current temperature" and condition identification engine 160 may determine a source for identifying the current temperature, such as via one or more webpages that provide temperature information. In some im plementations, a source for values of a dynamic attribute may provide a value to condition identification engine 160 on a periodic and/or asynchronous basis. For example, one or more sources and/or components may provide condition identification engine 160 with a value of a dynamic attribute every 10 minutes and/or each time the value of the dynamic attribute changes. In some implementations, a condition may be satisfied based on a dynamic attribute value that is indicative of low likelihood that the user has interest in completing the task.
[00179] At step 1135, an indication that is related to completion of the task is provided to the user. In some implementations, an indication may be provided to the user via a computing device, such as computing device 105. In some implementations, one or more computing devices of a user may be provided with an indication. For example, a user may be provided with an indication that a task may be completed via a desktop computer and/or a mobile device. In some implementations, providing an indication that a task may be completed may include providing a user with a suggested completion step. For example, a dialing application of a mobile phone of a user may be populated with a phone number of "555-5555" for a suggested task completion step for a task of "Call Bob when his flight arrives" that is associated with a task completion step of "Call 555-5555" when a value that is associated with a dynamic attribute of "Flight Status" that is associated with a "Bob" entity indicates that a flight has arrived. In some im plementations, a task completion step may be provided that includes one or more steps that may be performed by the user to cancel and/or reschedule the task based on a low likelihood that the user has interest in completing the task at an indicated time.
[00180] Referring to FIG. 12, an example of an indication that a task may be completed is provided. As described herein, task indication 1200 may be provided in response to a value of a dynamic attribute of a determined entity that is related to a task. Task indication 1200 may be provided to the user when the value of the dynamic attribute is a state that is indicative of interest in being provided task indication 1200. Task indication 1200 includes a display of the dynamic attributes that were utilized to determine the condition and current values for the dynamic attributes. For example, task indication 1200 provides the user with an indication of the dynamic attribute "Current Temperature" and provides the user with the current value of the dynamic attribute, "65 degrees." In some implementations, task indication 1200 may suggest one or more completion steps to the user. For example, task indication 1200 may include an indication of a suggested completion step of "Travel to Store 1" and/or provide the user with directions to Store 1 as a suggested completion step.
[00181] FIG. 13 is a block diagram of an example computer system 1310. Computer system 1310 typically includes at least one processor 1314 which communicates with a number of peripheral devices via bus subsystem 1312. These peripheral devices may include a storage subsystem 1324, including, for example, a memory subsystem 1326 and a file storage subsystem 1328, user interface input devices 1322, user interface output devices 1320, and a network interface subsystem 1316. The input and output devices allow user interaction with computer system 1310. Network interface subsystem 1316 provides an interface to outside networks and is coupled to corresponding interface devices in other computer systems.
[00182] User interface input devices 1322 may include a keyboard, pointing devices such as a mouse, trackball, touchpad, or graphics tablet, a scanner, a touchscreen incorporated into the display, audio input devices such as voice recognition systems, microphones, and/or other types of input devices. In general, use of the term "input device" is intended to include all possible types of devices and ways to input information into computer system 1310 or onto a communication network.
[00183] User interface output devices 1320 may include a display subsystem, a printer, a fax machine, or non-visual displays such as audio output devices. The display subsystem may include a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), a projection device, or some other mechanism for creating a visible image. The display subsystem may also provide non-visual display such as via audio output devices. In general, use of the term "output device" is intended to include all possible types of devices and ways to output information from computer system 1310 to the user or to a nother machine or computer system.
[00184] Storage subsystem 1324 stores programming and data constructs that provide the functionality of some or all of the modules described herein. For example, the storage subsystem 1324 may include the logic to perform one or more of the methods described herein such as, for example, the methods of FIGS. 2, 4, and 11.
[00185] These software modules are generally executed by processor 1314 alone or in combination with other processors. Memory 1326 used in the storage subsystem can include a number of memories including a main random access memory (RAM) 1330 for storage of instructions and data during program execution and a read only memory (ROM) 1332 in which fixed instructions are stored. A file storage subsystem 1328 can provide persistent storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a CD-ROM drive, an optical drive, or removable media cartridges. The modules implementing the functionality of certain implementations may be stored by file storage subsystem 1328 in the storage subsystem 1324, or in other machines accessible by the processor(s) 1314. [00186] Bus subsystem 1312 provides a mechanism for letting the various components and subsystems of computer system 1310 communicate with each other as intended. Although bus subsystem 1312 is shown schematically as a single bus, alternative implementations of the bus subsystem may use multiple busses.
[00187] Computer system 1310 can be of varying types including a workstation, server, computing cluster, blade server, server farm, or any other data processing system or computing device. Due to the ever-changing nature of computers and networks, the description of computer system 1310 depicted in FIG. 13 is intended only as a specific example for purposes of illustrating some implementations. Many other configurations of computer system 1310 are possible having more or fewer components than the computer system depicted in FIG. 13.
[00188] While several implementations have been described and illustrated herein, a variety of other means and/or structures for performing the function and/or obtaining the results a nd/or one or more of the advantages described herein may be utilized, and each of such variations and/or modifications is deemed to be within the scope of the
implementations described herein. More generally, all parameters, dimensions, materials, and configurations described herein are meant to be exemplary and that the actual parameters, dimensions, materials, and/or configurations will depend upon the specific application or applications for which the teachings is/are used. Those skilled in the art will recognize, or be able to ascertain using no more than routine experimentation, many equivalents to the specific implementations described herein. It is, therefore, to be understood that the foregoing implementations are presented by way of example only and that, within the scope of the appended claims and equivalents thereto, implementations may be practiced otherwise than as specifically described and claimed. Implementations of the present disclosure are directed to each individual feature, system, article, material, kit, and/or method described herein. In addition, any combination of two or more such features, systems, articles, materials, kits, and/or methods, if such features, systems, articles, materials, kits, and/or methods are not mutually inconsistent, is included within the scope of the present disclosure. What is claimed is:

Claims

1. A computer implemented method, comprising:
identifying electronically a plurality of tasks, wherein one or more of the tasks are identified from one or more electronic databases;
determining a task group of the tasks based on similarity between tasks of the task group;
determining an associated task of the tasks of the task group, wherein the associated task has a task completion step assigned to the associated task in the one or more electronic databases;
identifying an unassociated task of the task group based on the unassociated task being non-associated with the task completion step of the associated task;
associating the task completion step of the associated task with the unassociated task;
assigning the task completion step to the unassociated task;
receiving an electronic indication that the unassociated task is assigned to a user; and
providing electronically the task completion step to a user via a computing device of the user based on the task completion step being assigned to the unassociated task.
2. The method of claim 1, further comprising determining the similarity between the tasks of the task group based on a template similarity measurement for each of the tasks of the task group satisfying a threshold, wherein the template similarity measurement for a given task is based on conformity between the given task and a task template.
3. The method of claim 1, wherein each of the tasks includes a task objective.
4. The method of claim 3, wherein a given task objective includes a task action and a task object.
5. The method of claim 4, further comprising determining the similarity between the tasks of the task group based on a similarity measurement for each of the tasks of the task group satisfying a threshold, and wherein the similarity measurement for a given task of the tasks is based on an action similarity measurement between the task action of the given task and the task action of one or more other tasks of the task group.
6. The method of claim 5, wherein the similarity measurement for a given task of the tasks is based on an object similarity measurement between the task object of the given task and the task object of one or more other tasks of the task group.
7. The method of claim 5, wherein each of the task objectives of the tasks includes a textual representation of the task objective, and wherein the similarity
measurement for a given task of the tasks is based on similarity between the textual representation of the given task and the textual representation of one or more of the other tasks of the task group.
8. The method of claim 1, further comprising:
identifying a second associated task of the tasks of the task group, wherein the second associated task is associated with a second task completion step, wherein the second associated task is unique from the associated task; and
determining a task completion step similarity measurement, wherein the task completion step similarity measurement is indicative of similarity between the associated task completion step and the second associated task completion step, and wherein the similarity of the second associated task with the tasks of the task group is based on the task completion step similarity measurement.
9. The method of claim 8, wherein the task completion step includes a first completion action and a first completion object, wherein the second task completion step includes a second completion action and a second completion object.
10. The method of claim 9, wherein determining the task completion step similarity measurement includes determining a similarity between the first completion action and the second completion action.
11. The method of claim 9, wherein determining the task completion step similarity measurement includes determining a similarity between the first completion object and the second completion object.
12. The method of claim 1, wherein the unassociated task is received from the
computing device of the user.
13. A computer implemented method, comprising: identifying an entity category, wherein the entity category identifies a grouping of entities that share one or more aspects in common;
determining a task template, wherein the task template includes a task action identifier and a task object identifier, and wherein one of the task action identifier and the task object identifier is an indication of the entity category;
identifying electronically a plurality of tasks from one or more electronic databases, wherein each of the plurality of tasks is associated with a task entity, and wherein at least one of the plurality of tasks is associated with a task completion step;
determining a task group of one or more of the plurality of tasks that conform to the task template, wherein a given task of the task group is determined to conform to the task template based on the task entity of the task being a member of the entity category;
determining a group task completion step, wherein determining the group task completion step is based on a task completion step assigned to one or more of the tasks of the task group in the one or more electronic databases;
assigning the group task completion step to the task template;
receiving electronically an additional task;
determining a similarity measurement indicative of conformity of the additional task to the task template;
assigning the group task completion step to the additional task if the similarity measurement satisfies a threshold; and
providing the group task completion step to a computing device of a user based on the additional task being assigned to the user.
14. The method of claim 13, wherein a given task of the task group that conforms to the task template includes a task action and a task object.
15. The method of claim 14, wherein the task action of the given task is the task entity, wherein the task object identifier of the task template is an indication of a task object template entity, and wherein determining the given task conforms to the task template is based on similarity between the task object template entity and the task object.
16. The method of claim 15, wherein the task object the given task is the task entity, wherein the task action identifier of the task template is an indication of a task action template entity, and wherein determining the given task conforms to the task template is based on similarity between the task object template entity and the task action.
17. The method of claim 14, wherein at least one of the task action and the task object of the given task is associated with a task textual representation.
18. The method of claim 17, wherein at least one of the task action identifier and the task object identifier is associated with a template textual representation, wherein determining the given task conforms to the task template is based on textual similarity between the task textual representation and the template textual representation.
19. The method of claim 17, wherein determining the given task conforms to the task template is based on determining the task textual representation is an alias of an entity that is a member of the entity category.
20. The method of claim 13, further comprising:
identifying an additional task completion step for an additional task of the task group;
assigning the additional task completion step to the task template; and ranking the group task completion step and the additional task completion step for the task template.
21. The method of claim 20, wherein the ranking of the group task completion step and the additional task completion step for the task template is based on counts of occurrences of associations of the group task completion step and the additional task completion step to the tasks of the task group.
22. The method of claim 21, wherein the ranking of the group task completion step is higher than the ranking of the additional task completion step when the count of occurrences of associations of the group task completion step to the tasks of the task group is greater than the count of occurrences of associations of the additional task completion step to the tasks of the task group.
23. The method of claim 20, wherein associating the group task completion step with the task template occurs only when the ranking of the group task completion step satisfies a threshold.
24. The method of claim 13, wherein the additional task is received based on electronic input from the user.
25. The method of claim 13, further comprising:
identifying an uncategorized task of the plurality of tasks, wherein the uncategorized task is associated with an uncategorized task completion step, and wherein the uncategorized task is not a task of the task group;
determining that the uncategorized task conforms to the task template; and assigning the uncategorized task completion step to the task template based on determining that the uncategorized task conforms to the task template.
26. The method of claim 13, wherein the group task completion step includes an
indication of a completion entity category.
27. The method of claim 26, wherein the completion entity category is the entity category.
28. The method of claim 26, wherein the group task completion step includes a
completion action and a completion object, and wherein one of the completion action and the completion object is associated with the completion entity category.
29. A computer implemented method, comprising:
identifying a task electronically assigned to a user, wherein the task includes a task action and a task object;
identifying task information related to the task;
identifying one or more user attributes of the user;
determining an entity associated with the task, wherein the entity is unique from the user, and wherein determining the entity is based on the task information and at least one of the user attributes;
identifying a dynamic attribute of the entity, wherein a value of the dynamic attribute changes independent of input of the user and wherein the value is automatically electronically monitored; determining a condition for the task, wherein the condition is based on at least one state of the value of the dynamic attribute, the at least one state indicating a likelihood that the user has interest in completing the task;
determining a satisfaction of the condition, the satisfaction of the condition based on comparison of the state to the value of the dynamic attribute; and
providing, in response to determining the satisfaction of the condition, an indication to a computing device of the user, the indication related to completion of the task.
30. The method of claim 29, wherein the entity is a person, wherein one of the user attributes is a user location, and wherein the value of the dynamic attribute is indicative of a distance between the user location and a location of the person.
31. The method of claim 30, wherein the state is indicative of a threshold distance
between the user location and the location of the person, and wherein determining the satisfaction of the condition includes determining that the distance satisfies the threshold distance.
32. The method of claim 29, further comprising determining a task completion step based on the task information, wherein the task completion step is one or more actions that may be performed by the user, and wherein the indication to the user is the task completion step.
33. The method of claim 32, wherein the likelihood is a low likelihood that the user has interest in completing the task, and wherein the task completion step includes at least one of cancelling the task and rescheduling the task.
34. The method of claim 32, wherein determining the entity is based on the task
completion step.
35. The method of claim 32, wherein one of the user attributes is one or more locations associated with the user, and wherein determining the task completion step is based on the one or more locations.
36. The method of claim 35, wherein determining the entity is based on the one or more locations.
37. The method of claim 32, wherein determining the task completion step includes: identifying a task template based on conformity of the task to the task template; and wherein determining the task completion step is based on one or more task completion steps associated with the task template.
38. The method of claim 37, wherein determining the entity is based on the task
completion step.
39. The method of claim 29, wherein one of the user attributes is identified from latent electronic information that is associated with the user.
40. The method of claim 39, wherein the latent electronic information is based on at least one of browser history of the user, an electronically indicated location of the user, electronically stored phone contacts of the user, an electronically stored calendar of the user, and email of the user.
41. The method of claim 29, wherein the condition is based on an event time when the user has interest in completing the task.
42. The method of claim 41, wherein satisfaction of the condition is based on the value of the dynamic attribute at the event time.
43. The method of claim 29, wherein the entity is determined based on at least one of the task action and the task object.
44. The method of claim 29, wherein the dynamic attribute is identified based on the task information.
45. A system including memory and one or more processors operable to execute
instructions in memory, comprising instructions to:
identify a plurality of tasks, wherein one or more of the tasks are identified from one or more databases;
determine a task group of the tasks based on similarity between tasks of the task group;
determine an associated task of the tasks of the task group, wherein the associated task is associated with a task completion step;
identify an unassociated task of the task group based on the unassociated task being non-associated with the task completion step of the associated task;
associate the task completion step of the associated task with the unassociated task; and store the association between the unassociated task and the task completion step.
46. The system of claim 45, wherein similarity between the tasks of the task group is determined based on a task similarity measurement between the associated task and the other tasks of the task group.
47. The system of claim 45, wherein similarity between the tasks of the task group is determined based on determining a template similarity measurement for each of the tasks of the task group, wherein the template similarity measurement for a given task is based on conformity between the given task and a task template.
48. The system of claim 45, wherein each of the tasks includes a task objective.
49. The system of claim 48, wherein a given task objective includes a task action and a task object.
50. The system of claim 49, wherein the task similarity measurement for a given task of the tasks is based on an action similarity measurement between the task action of the given task and the task action of one or more other tasks of the task group.
51. The system of claim 49, wherein the task similarity measurement for a given task of the tasks is based on an object similarity measurement between the task object of the given task and the task object of one or more other tasks of the task group.
52. The system of claim 46, wherein the instructions further include instructions to:
identify a second associated task of the tasks of the task group, wherein the second associated task is associated with a second task completion step, and wherein the second associated task is unique from the associated task; and
determine a task completion step similarity measurement, wherein the task completion step similarity measurement is indicative of similarity between the associated task completion step and the second associated task completion step, and wherein the similarity of the second associated task with the tasks of the task group is based on the task completion step similarity measurement.
53. The system of claim 52, wherein the task completion step includes a first completion action and a first completion object, wherein the second task completion step includes a second completion action and a second completion object.
54. A system including memory and one or more processors operable to execute
instructions in memory, comprising instructions to: identify an entity category, wherein the entity category is a grouping of entities that share one or more aspects in common;
determine a task template, wherein the task template includes a task action identifier and a task object identifier, and wherein one of the task action identifier and the task object identifier is an indication of the entity category;
identify a plurality of tasks, wherein each of the plurality of tasks is associated with a task entity, and wherein at least one of the plurality of tasks is associated with a task completion step;
determine a task group of one or more of the plurality of tasks that conform to the task template, wherein a given task of the task group conforms to the task template if the task entity of the task is a member of the entity category;
determine a group task completion step, wherein the group task completion step is based on a task completion step associated with one or more of tasks of the task group; and
associate the group task completion step with the task template.
55. The system of claim 54, wherein the instructions further include instructions to: identify an additional task completion step for an additional task of the task group;
associate the additional task completion step with the task template; and rank the group task completion step and the additional task completion step for the task template.
56. The system of claim 54, wherein the instructions further include instructions to: receive an additional task of a user;
determine a similarity measurement, wherein the similarity measurement is indicative of conformity of the additional task to the task template; and
associate the group task completion step with the additional task if the similarity measurement satisfies a threshold value.
57. The system of claim 54, wherein the instructions further include instructions to: identify an uncategorized task of the plurality of tasks, wherein the
uncategorized task is associated with an uncategorized task completion step, and wherein the uncategorized task is not a task of the task group;
determine that the uncategorized task conforms to the task template; and associate the uncategorized task with the task group.
58. The system of claim 57, wherein the instructions further include instructions to: associate the uncategorized task completion step with the task template.
59. A system including memory and one or more processors operable to execute
instructions in memory, comprising instructions to:
identify a task of a user, wherein the task includes a task action and a task object;
identify task information related to the task;
identify at least one user attribute of the user;
determine an entity associated with the task, wherein the entity is unique from the user, and wherein determining the entity is based on the task information and at least one of the user attributes;
identify a dynamic attribute of the entity, wherein a value of the dynamic attribute changes independent of input of the user;
determine a condition for the task, wherein the condition is based on at least one state of the value of the dynamic attribute that indicates a likelihood that the user has interest in completing the task;
determine a satisfaction of the condition, the satisfaction of the condition based on comparison of the state to the value of the dynamic attribute; and
provide, in response to determining the satisfaction of the condition, an indication to the user related to completion of the task.
60. The system of claim 59, wherein the entity is a person, wherein one of the user attributes is a user location, and wherein the value of the dynamic attribute is indicative of a distance between the user location and a location of the person.
61. The system of claim 60, wherein the state is indicative of a threshold distance
between the user location and the location of the person, and wherein the instruction to determine the satisfaction of the condition includes the step of determining that the distance satisfies the threshold distance.
62. The system of claim 59, wherein the instructions further include instructions to: determine a task completion step based on the task information, wherein the task completion step is one or more actions that may be performed by the user, and wherein the indication to the user is the task completion step.
63. The system of claim 62, wherein the likelihood is a low likelihood that the user has interest in completing the task, and wherein the task completion step includes at least one of cancelling the task and rescheduling the task.
64. The system of claim 62, wherein one of the user attributes is one or more locations associated with the user, and wherein the task completion step is determined based on the one or more locations.
65. The system of claim 59, wherein one of the user attributes is identified from latent information that is associated with the user.
66. The system of claim 59, wherein the condition is based on an event time when the user has interest in completing the task.
67. The system of claim 66, wherein satisfaction of the condition is based on the value of the dynamic attribute at the event time.
68. A non-transitory computer readable storage medium storing at least one program configured for execution by at least one processor of a computer system, the at least one program comprising instructions to:
identify a task of a user, wherein the task includes a task action and a task object;
identify task information related to the task;
identify at least one user attribute of the user;
determine an entity associated with the task, wherein the entity is unique from the user, and wherein determining the entity is based on the task information and at least one of the user attributes;
identify a dynamic attribute of the entity, wherein a value of the dynamic attribute changes independent of input of the user;
determine a condition for the task, wherein the condition is based on at least one state of the value of the dynamic attribute that indicates a likelihood that the user has interest in completing the task;
determine a satisfaction of the condition, the satisfaction of the condition based on comparison of the state to the value of the dynamic attribute; and
provide, in response to determining the satisfaction of the condition, an indication to the user related to completion of the task.
69. A non-transitory computer readable storage medium storing at least one program configured for execution by at least one processor of a computer system, the at least one program comprising instructions to:
identify a plurality of tasks, wherein one or more of the tasks are identified from one or more databases;
determine a task group of the tasks based on similarity between tasks of the task group;
determine an associated task of the tasks of the task group, wherein the associated task is associated with a task completion step;
identify an unassociated task of the task group based on the unassociated task being non-associated with the task completion step of the associated task;
associate the task completion step of the associated task with the unassociated task; and
store the association between the unassociated task and the task completion step.
70. A non-transitory computer readable storage medium storing at least one program configured for execution by at least one processor of a computer system, the at least one program comprising instructions to:
identify an entity category, wherein the entity category is a grouping of entities that share one or more aspects in common;
determine a task template, wherein the task template includes a task action identifier and a task object identifier, and wherein one of the task action identifier and the task object identifier is an indication of the entity category;
identify a plurality of tasks, wherein each of the plurality of tasks is associated with a task entity, and wherein at least one of the plurality of tasks is associated with a task completion step;
determine a task group of one or more of the plurality of tasks that conform to the task template, wherein a given task of the task group conforms to the task template if the task entity of the task is a member of the entity category;
determine a group task completion step, wherein the group task completion step is based on a task completion step associated with one or more of tasks of the task group; and associate the group task completion step with the task template.
PCT/US2014/067733 2013-11-26 2014-11-26 Methods and apparatus related to determining task completion steps for tasks and/or electronically providing an indication related to completion of a task WO2015081272A2 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US14/090,482 US20150149227A1 (en) 2013-11-26 2013-11-26 Providing a Task Notification Based on a Dynamic Attribute of an Entity
US14/090,716 US9183039B2 (en) 2013-11-26 2013-11-26 Associating a task completion step of a task with a related task of the same group of similar tasks
US14/090,716 2013-11-26
US14/090,265 2013-11-26
US14/090,482 2013-11-26
US14/090,265 US9195734B2 (en) 2013-11-26 2013-11-26 Associating a task completion step of a task with a task template of a group of similar tasks

Publications (2)

Publication Number Publication Date
WO2015081272A2 true WO2015081272A2 (en) 2015-06-04
WO2015081272A3 WO2015081272A3 (en) 2015-10-22

Family

ID=52023699

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/067733 WO2015081272A2 (en) 2013-11-26 2014-11-26 Methods and apparatus related to determining task completion steps for tasks and/or electronically providing an indication related to completion of a task

Country Status (1)

Country Link
WO (1) WO2015081272A2 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030083936A1 (en) * 2000-11-14 2003-05-01 Mueller Raymond J. Method and apparatus for dynamic rule and/or offer generation
US20070245261A1 (en) * 2006-03-15 2007-10-18 Microsoft Corporation Task oriented navigation
US8615504B2 (en) * 2011-12-14 2013-12-24 Artist Growth, Llc Action alignment for event planning, project management and process structuring

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
None

Also Published As

Publication number Publication date
WO2015081272A3 (en) 2015-10-22

Similar Documents

Publication Publication Date Title
US9282425B2 (en) Triggering completion step suggestion for a task
US10127305B2 (en) Presenting a user profile
US20150186841A1 (en) Providing steps for a product return
US20110035329A1 (en) Search Methods and Systems Utilizing Social Graphs as Filters
US11681604B1 (en) Determining a user habit
JP6373462B1 (en) Prediction device, prediction method, and prediction program
US9262446B1 (en) Dynamically ranking entries in a personal data book
US9378196B1 (en) Associating information with a task based on a category of the task
AU2014215949A1 (en) Contextualized travel offers
US9183039B2 (en) Associating a task completion step of a task with a related task of the same group of similar tasks
US10467600B2 (en) Determining additional task features for a task of a user
US20140289140A1 (en) Systems and methods of opportunistically identifying networking prospects
US10423907B2 (en) Geolocation based work data on a mobile device using a database system
US11556231B1 (en) Selecting an action member in response to input that indicates an action class
US9460348B1 (en) Associating location history with photos
US11734311B1 (en) Determining additional features for a task entry based on a user habit
US11030538B1 (en) Providing an inquiry based on deficient plan information
US20150149227A1 (en) Providing a Task Notification Based on a Dynamic Attribute of an Entity
US9195734B2 (en) Associating a task completion step of a task with a task template of a group of similar tasks
US20230034571A1 (en) Customized Merchant Price Ratings
US20080010257A1 (en) Integrated vertical search engine and contact management system
WO2015081272A2 (en) Methods and apparatus related to determining task completion steps for tasks and/or electronically providing an indication related to completion of a task
JP6679667B2 (en) Generation device, generation method, and generation program
US20190102393A1 (en) Ranking contact entries
CA2859643A1 (en) Contextualized travel offers

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14812110

Country of ref document: EP

Kind code of ref document: A2

122 Ep: pct application non-entry in european phase

Ref document number: 14812110

Country of ref document: EP

Kind code of ref document: A2