# Patent

## Title
Task identification based on semantics and temporal relationships

## Abstract

The present description refers to a computer implemented method, computer program product, and computer system to receive a list of computer events, each of the events including a user interacting with a computer, determine one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation, determine one or more knowledge actions, where each knowledge action includes a group of one or more desktop operations performed using a same application on a same information object, determine one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related, and combine two or more tasks that are temporally related.

## Background
TECHNICAL FIELD
This description is directed generally to work support and increased productivity of knowledge workers or workers that use a computer, and in particular, to a computer-implemented method, apparatus, and computer program product related to task identification based on semantics and temporal relationships.
BACKGROUND
In some cases, knowledge work may be fragmented, as individuals have to work with information artifacts (e.g. documents, Business Objects and other information) that are viewed and modified with very different applications or application transactions. In some cases, individuals may work in different tasks in parallel or rapid succession. Each task may include, for example, a set of information objects that is consumed, created and/or transformed to reach a task goal. In some cases, it may be difficult to associate the information objects to the different tasks they belonged to, especially if the user faced several interruptions or worked in rapid succession on the tasks.
In some cases, individuals may attempt to address the fragmentation by simple and manual methods, such as by using post-its to help to remember transactions or things to do, paper to-do lists that log or record the open work items to assist in organizing large amounts of information, and other techniques. More automated or electronic techniques have also been used to keep track of information.
SUMMARY
In one general aspect, a computer program product is provided. The computer program product is tangibly embodied on a computer-readable storage medium and includes executable code that, when executed, is configured to cause at least one data processing apparatus to: receive a list of computer events, each of the events including a user interacting with a computer, determine one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation, determine one or more knowledge actions, where each knowledge action includes a group of one or more desktop operations performed using a same application on a same information object, determine one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related, and combine two or more tasks that are temporally related.
In another general aspect, a computer implemented method is provided that includes receiving a list of computer events, each of the events including a user interacting with a computer, determine one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation, determining one or more knowledge actions, where each knowledge action includes a group of one or more desktop operations performed using a same application on a same information object, determining one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related, and combining two or more tasks that are temporally related.
In another general aspect, an apparatus includes event receiving logic configured to receive a list of computer events, each of the events including a user interacting with a computer, desktop operation determining logic configured to determine one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation, knowledge action determining logic configured to determine one or more knowledge actions, where each knowledge action includes a group of one or more desktop operations performed using a same application on a same information object, task determining logic configured to determine one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related, and combining logic configured to combine two or more tasks that are temporally related.
The subject matter described in this specification can be implemented as a method or as a system or using computer program products, tangibly embodied in information carriers, such as a CD-ROM, a DVD-ROM, a semiconductor memory, and a hard disk. Such computer program products may cause a data processing apparatus to conduct one or more operations described herein.
In addition, the subject matter described herein may also be implemented as a system including a processor and a memory coupled to the processor. The memory may encode one or more programs that cause the processor to perform one or more of the method acts described in this specification.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram illustrating a computer system 110 according to an example implementation.
FIG. 2 is a diagram illustrating a hierarchical relationship of events, desktop operations, knowledge actions, and tasks according to an example implementation.
FIG. 3 is a diagram illustrating how desktop operations operating on a same resource may be combined as a single knowledge action according to example implementations.
FIG. 4 is a block diagram illustrating task analysis system 120 according to an example implementation.
FIG. 5 is a flow chart illustrating operation of task analysis system 120 according to an example implementation.
FIG. 6 is a block diagram illustrating a task analysis system 120 according to another example implementation.



DETAILED DESCRIPTION
In the following, a detailed description of examples will be given with reference to the drawings. It should be understood that various modifications to the examples may be made. In particular, elements of one example may be combined and used in other examples to form new examples.
According to one example implementation, FIG. 1 is a block diagram illustrating a computer system 110 according to an example implementation. Computer system 110 may include a processor 112 for processing information and executing instructions, memory 114 restoring information, one or more input/output (I/O) devices 116, and the display 118 for displaying information to a user. I/O devices 116 may include a mouse, a trackball, a touchpad, or other pointing device a keyboard, or any other input or output device. Computer system 110 also includes a task analysis system 120 for identifying or mining tasks and/or providing a task-related recommendation to a user. One or more user inputs and/or computer events may be, for example, input by a user and received or detected by task analysis system 120 of computer system 110. Computer events received via line 122 may include any type of computer event such as a user interacting with computer system 110 such as, for example, a user typing text, characters or other information, a user selecting one or more items or objects via a point and click with a mouse or other input device, one or more gestures made by a user on an input device or touchpad such as swiping across a touchpad, tapping on a touchpad, rotating or shaking an input device, etc., or other gestures made by a user. Computer events received via line 122 may also include screens, displays, files or pages, such as webpages or files, and other information shown or displayed to a user, e.g., via display 118. Thus, the computer events received via line 122 may include a variety of user interactions with computer system 110, including user input events that are input by a user, and output events that are output or displayed to a user.
According to an example implementation, task analysis system 120 may receive a list of computer events, and determine one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation. Task analysis system 120 may determine one or more knowledge actions, where each knowledge action includes one or more desktop operations performed using a same application on a same information object. Task analysis system 120 may then determine one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related. Task analysis system 120 may then combine two or more tasks that are temporally related. In an example implementation, task analysis system 120 may also analyze one or more of events of one or more stored tasks, and may display or provide a proposal or recommendation to a user to open an additional information object that is not currently open based on the events of a current or active task for the user.
A desktop operation may be a user-system interaction, and may include one or more computer events. For example, a computer events may include a user performing an action associated with the computer system 110, such as selecting an item within a user interface, selecting a file or folder, typing in a letter, word, or inputting other information, a user inputting a gesture (e.g., swiping or tapping or twisting a touchpad or other user input device), typing in a URL or uniform resource locator or other resource locator, etc. Also, computer events may include the display of screens, UIs (user interfaces), text and other information to the user, e.g., via display 118.
In example implementations, desktop operations may be performed on one or more objects. An object may include, for example, an application (e.g., open an application), a file (e.g., create, save, delete or open a file), a folder (e.g., open or close or create a folder), an information object (e.g., portion of text or information), and a window.
An application is a piece of software that can be run in the computer environment or on computer system 110 and may be used to transform information. An operating system process is an example of a running instance of an application. Other applications may be used such as a web browser, a text editor or word processor application, a spreadsheet application, etc. A file may be, or may include, a single resource of information. Files may be accessed using applications and are stored on a drive, for example. A folder may be used to organize files. A folder may store or encapsulate a number of files. Information objects may include pieces of information presented to the user. This includes, for example, textual information represented by a string of characters, or non-textual information (e.g., graphical information). Information objects can be stored within a file, and may include an entire file, or merely a portion of a file, as examples.
Table 1 below illustrates some example desktop operations and objects upon which the desktop operation is performed.







TABLE 1







Example desktop operations and objects









Obj
















Information



Opr
Application
File
Folder
Object
Window





Open
x
x
x




Close
x
x
x


Save

x


Rename

x
x


Delete

x
x
x


Cut

x
x
x


Paste

x
x
x


Print

x


Create

x
x
x


Execute
x


Focus


x

x









As shown in Table 1, example desktop operations may be performed on one or more objects. Objects may include an application, a file, a folder, an information object and a window. Example desktop operations may include open, close, save, rename, delete, cut, paste, print, create, execute and focus. For example, as shown in Table 1, a user may open, close or execute an application. A user may open, close, save, rename, delete, cut, paste, print or create a file. A user may open, close rename, delete, cut, paste, create or focus on a folder. A user may delete, cut, paste, or create an information object. And, a user may focus a window (where focus may include selecting and/or raising the item or window to the top level of objects on a desktop, for example).
A desktop operation (DO) may include one or more computer events. In some example embodiments, the events for a desktop operation are performed by a same application on a same object. Thus, a user may perform several computer events to accomplish or perform a desktop operation. For example, to perform the desktop operation of creating a file, a user may select an application, select a “new” button or icon in the application menu to create a new file, and type in the name of the new file to be created. The user may select the “save” button on the application menu to perform the desktop operation of saving a file. These are merely two examples, and others may be provided or performed.
Knowledge actions (KAs) are techniques applied to execute working tasks. A knowledge action may include a group of one or more desktop operations performed using a same application on a same information object. These techniques are tangible subgoals that support execution of a task. Some example KAs (or KA types) include: consuming, authoring, communicating, organizing and browsing. Consuming: A user or knowledge worker may focus a resource on the computer desktop and focuses his attention to the visual representation of an information object, and may read or review the information, for example. Authoring: A user or knowledge worker may create a representation of information in an existing or new resource through a knowledge transformation process, or may create a document or information object, as examples. Communicating: A user or knowledge worker may share information with others, e.g., by preparing and sending an email, a chat message, or other communication, as examples. Organizing: A user or knowledge worker organizes existing information resources, such as a user creating and organizing folders, moving files between folders, etc. Browsing: A user or knowledge worker may search for and review sources of information, e.g., files, web pages, and other information. These are merely some example KAs (or KA types), and other KAs may be used.
A task may be a goal of a user (e.g., to create a specific kind of document), and a task may include one or more knowledge actions.
FIG. 2 is a diagram illustrating a hierarchical relationship of events, desktop operations, knowledge actions, and tasks according to an example implementation. According to an example implementation, a list of computer events may be received and stored in memory. The stored events may include for example, events 212A and 212B. Desktop operation 214A may include computer events 212A and 212B, which may be performed using a same application on a same information object. Knowledge action 216A may include a group of desktop operations including desktop operation 214A and desktop operation 214B that may be performed using a same application on a same information object. A task 218 may include one or more knowledge actions, such as knowledge actions 216A and 216B.
FIG. 3 is a diagram illustrating how desktop operations operating on a same resource may be combined as a single knowledge action according to example implementations. As shown in FIG. 3, two resources (e.g., information objects) are shown including R1 and R2. Several desktop operation sequences (DOSs) are shown including desktop operation sequences DOS1, DOS2, DOS3 and, and DOS4. DOS1 includes a sequence of desktop operations (DOs), including DO1, DO2 and DO3, which are performed on resource (or information object) R1. DOS2 is a sequence that includes DO4 and DO5 that are performed on resource R2. DOS3 includes DO6 and DO7 that are performed on resource R1. And, DOS4 includes DO8 that is performed on resource R2. Therefore, desktop operations DO1, DO2, DO3, DO6 and DO7 are performed on resource R1 and are included within knowledge action 1 (KA1). Desktop operations DO4, DO5 and DO8 are performed on resource R2 and are included within KA2, for example.
According to an example implementation, one or more desktop operation sequences (DOSs) may be determined, with each DOS including one or more desktop operations performed by a common or same application on a common or same resource or information object. Next, unclassified knowledge actions may be created or determined. For example, sets of desktop operation sequences (DOSs) may be determined or created that are provided or performed to accomplish the same knowledge action, where the desktop operations of a knowledge action (KA) are performed using a same or common application on a same or common information object. For example, knowledge actions of a duration less than a threshold time period (e.g., KA time period less than 6 seconds) may be filtered or deleted. Next, each KA is classified as one of a plurality of KA types. Some example KA types include: consuming, authoring, communicating, organizing and browsing. The knowledge action (KA) may be classified based on the desktop operations that it contains. For example, the desktop operation “Creating”—“Information Object”, indicates a knowledge action of the type “Authoring.” As another example, the desktop operation of “Renaming”—“Folder” indicates or is associated with the knowledge action of “Organizing.” In this manner, each different type of desktop operation may be mapped to a knowledge action (KA) type.
According to an example implementation, two or more KAs may be analyzed to determine if the information objects of KAs are semantically related, e.g., whether semantics and/or content of an information object of a first KA is semantically related to an information object of a second KA. A task is then created or determined that includes two or more semantically related KAs, for example. Also, even though KAs of different tasks may not be semantically related, these KAs or tasks may be combined into a single task if the two tasks are temporally related (or KAs occur near each other in time, or other temporal relationship that indicates these KAs should be classified as part of the same task). Finally, according to another example implementation, task analysis system 120 may display or provide to a user a recommendation to open an additional information object that is not currently open based on a comparison of a current or active task to one or more stored tasks. Further example details are provided herein.
FIG. 4 is a block diagram illustrating task analysis system 120 according to an example implementation. An event receiving logic 410 is configured to receive a list of computer events, each of the events including a user interacting with a computer. A desktop operation determining logic 420 is configured to determine one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation. A knowledge action determining logic 414 is configured to determine one or more knowledge actions, where each knowledge action includes a group of one or more desktop operations performed using a same application on a same information object. A task determining logic 416 is configured to determine one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related. And, a combining logic 418 is configured to combine two or more tasks that are temporally related.
FIG. 5 is a flow chart illustrating operation of task analysis system 120 according to an example implementation. Operation 510 may include receiving a list of computer events, each of the events including a user interacting with a computer. Operation 520 may include determining one or more desktop operations, with each desktop operation including one or more computer events that are performed to accomplish the desktop operation. For example, computer events are reported to task analysis system 120 via input or line 122. Events performed by a same application on a same information object may be grouped into a desktop operation, for example.
Operation 530 may include determining one or more knowledge actions, where each knowledge action includes a group of one or more desktop operations performed using a same application on a same information object. Operation 540 may include determining one or more tasks, with each task including a group of knowledge actions that include information objects that are semantically related. Operation 550 may include combining two or more tasks that are temporally related.
For example, a user may perform a number of desktop operations within an example work day. First a user may perform several desktop operations related to editing a Word document, such as opening a Word document and performing edits, and then saving the Word document. Later, the user may also perform one or more desktop operations related to reserving travel reservations for an upcoming trip to europe. For example, the user may browse and/or consume different websites related to europe. While searching for information on various european destinatinons and cities, the user may open and consume a new browser window to view a currency conversion website to determine, for example, a current dollar to euro conversion rate. After reviewing the currency conversion website, the user may resume his search and review of european destinations and cities. As part of this process, the user may then make air travel and hotel reservations for his trip from the U.S. to europe using one or more hotel, airline or travel websites. For example, over a 30 minute period a use may switch multiple times between the travel reservation website(s) and currency conversion website(s).
For example, the desktop operations for a user may include the following example desktop operations, where desktop operations performed by a common (or same) application on a common or same information object are grouped into one knowledge action (KA). The assignment to different KAs (KA1, KA2, . . . ) are shown below for each of the desktop operations listed below.
1) Open: Word_file—1—9:15 AM (KA1)
2) Perform Edits to Word_file—1—9:15 AM—10:44 AM (KA1)
3) Save Word_file—1—10:44 AM (KA1)
4) Focus: travel-website—1—10:48 AM (KA2)
5) Focus: travel-website—2—10:50 AM (KA3)
6) Focus: travel-website—1—10:51 AM (KA2)
7) Focus: currency-conversion-website—1—10:51 AM (KA4)
8) Focus: travel-website—1—10:53 AM (KA2)
9) Focus: currency-conversion-website—1—10:54 AM (KA4)
10) Focus: travel-website—2—10:59 AM (KA3)
11) Focus: currency-conversion-website—1—11:03 AM (KA4)
Therefore, in the example desktop operations shown above, the user performed desktop operations of KA1 (knowledge action 1) from 9:15 AM until 10:44 AM. Then, between 10:48 and 11:03 AM, the user switched between KAs in the order: KA2, KA3, KA2, KA4, KA2, KA4, KA3, KA4. This is merely an example. Where KA2 involves travel-website—1 (as a resource or information object), KA3 involves travel-website—2, and KA4 involves currency-conversion-website—1. This is merely one example and others may be used.
As shown by operation 540, one or more tasks may be mined or determined, with each task including a group of knowledge actions that include information objects that are semantically related. For example, task analysis system 120 may perform semantic analysis on pairs of the information objects for KA1, KA2, KA3 and KA4, for example, to determine if any of these KAs are semantically related.
For example, Word_file—1 may be a Word file that is a 5-page essay on an endangered species. On the other hand, travel-website—1 and travel-website—2 may be travel websites that allow a user to make hotel, airline and rental car reservations, for example. Therefore, in performing semantic analysis of these three information objects, task analysis system 120 may determine that travel-website—1 and travel-website—2 are semantically related, and that Word_file—1 is not semantically related to travel-website—1 or travel-website—2. The computer events may include the full text of the Word file that is edited or displayed, or the text/information displayed on the web page of the travel-website—1 or travel-website—2, for example.
A variety of different techniques may be used to determine if two or more KAs (and/or information objects, events and/or desktop operations associated therewith) are semantically related, including: vector space method, topic extraction method, term matching method, vector space model method, latent dirichlet allocation method, and/or hierarchical clustering method. These are just a few example techniques that may be used to determine, for example, if information objects of two or more KAs are semantically related. In this manner, two or more KAs may be grouped or combined to form or create a task.
Therefore, semantics may provide one basis for grouping KAs together to create a task. For example, two or more KAs may be combined to form a task if the KAs (or information objects of each of the KAs) are semantically related. In addition, according to an example implementation, two or more tasks may be combined to form one task if there is a temporal relationship between the tasks, even though the two tasks (or their information objects) are not semantically related. Therefore, time or temporal relationship(s) between tasks may provide another basis for grouping or combining or merging tasks into a single task. For example, in the travel example described above, KA2 and KA3 relate to search and review of travel websites, e.g., to book airfare and/or hotel reservations (according to this example). Thus, task 1 may be created or determined to include KA2 and KA3 since the information objects (e.g., the travel websites) of KA2 and KA3 may be determined to be semantically related. However, KA4 relates to currency conversion and calculation for all currencies, e.g., currency calculation using currency-conversion-website—1. Therefore, according to an example, task analysis system 120 may determine that KA4 is not semantically related to KA2 or KA3, and therefore, KA4 would not be initially assigned to task 1 on the basis of semantics. Rather, KA4 may be initially assigned to a different task, e.g., task 2. However, as noted above, time or temporal relationships between tasks may provide another basis for combining or merging two tasks into a single task. For example, if the desktop operations or events of each task indicate that the user was switching between the two tasks, or back and forth between the tasks, e.g., a minimum number of switches between tasks within a period of time, then the task analysis system 120 may combine or merge these two tasks into a single task based on their temporal relationship.
For example, a group of KAs may be assigned to different tasks based on semantics. For example, two may be assigned to one task if the KAs (or information objects of such KAs) are semantically related. Temporal relationships may then be used to combine different tasks that are not semantically related. For example, task 1, task 2 and task 3 may be considered temporally related if one or more desktop operations for each task occurred in the following example order (e.g., within a certain time period, such as 20 minutes): task 1, task 2, task 3, task 1, task 2, task 3. Therefore, in this example, the tasks: task 1, task 2 and task 3 may be considered to be temporally related or interwoven (e.g., based on the switching between different events of these tasks over a relatively short period of time), based on the received computer events for each task.
As another example, as noted above, the user switches between KAs in the following order: KA2, KA3, KA2, KA4, KA2, KA4, KA3, KA4, between 10:51 and 11:03 AM. Therefore, the desktop operations for KA2, KA3 and KA4 are temporally related or interwoven. Thus, the rapid or frequent switching between KA4 (related to currency conversion) and both KA2 and KA3 (travel websites) suggests or indicates that the currency conversion KA (KA4) should be assigned to the same task as KA2 and KA3 (review of travel websites), since the user was performing this KA (KA4) during the same short time interval as the other KAs (KA2, KA3). This temporal relationship, or interwoven nature of task 2 (including KA4) and task 1 (including KA2 and KA3) (e.g., within a limited period of time) indicates that task 2 (including KA4) may or should be considered as part of the same task (from a user perspective) as task 1 (KA2 and KA3), for example. Thus, for example, there are a minimum of 3 task switches (switches by a user between events or desktop operations of different tasks) within a 20 minute time period between task 2 (including KA4) and task 1 (KA2 or 3) that indicates that task 1 and task 2 are temporally (or time) related. This example is merely one example, and the teachings and description of this disclosure are not limited thereto. Other examples may be used.
Thus, to summarize this example, KA2 and KA3 may be assigned to task 1 based on the semantic relationship between the information object of KA2 to the information object (or resource) of KA3. KA4 may be assigned to a different task, task 2, since KA4 is not semantically related to KA2 or KA3, according to this example. However, as noted above, task 1 (including KA2 and KA3) is temporally related to task 2 (including KA4). Therefore, task 1 and task 2 may be combined to form a single task based on the temporal relationship between task 1 and task 2. For example, to combine task 1 with task 2, the KAs of task 2 may be added to task 1, and task 2 may then be deleted or removed. This is merely one example in which two tasks are combined to provide one task based on a temporal relationship between the two tasks.
With reference to the flow chart of FIG. 5, the computer events may include one or more of the following: a user entering text into an application; a user entering non-textual information into an application; a user selecting an object displayed on a user interface; a user inputting a gesture into a computer; and display of a display object, a screen or a user interface.
With reference to the flow chart of FIG. 5, each of the desktop operations may be one type of a plurality of desktop operation types that includes: open, close, save, rename, delete, cut, paste, print, create and execute.
With reference to the flow chart of FIG. 5, each of the desktop operations may be performed on or with respect to an application, a file, a folder, an information object or a window.
With reference to the flow chart of FIG. 5, each of the desktop operations may include one or more events that are performed by a same application on a same information object.
With reference to the flow chart of FIG. 5, the determining one or more tasks may include determining one or more tasks, with each task including a group of semantically related knowledge actions, wherein one or more of the following techniques are used to determine if two or more tasks are semantically related: vector space method; topic extraction method; term matching method; vector space model method; latent dirichlet allocation method; and/or hierarchical clustering method.
With reference to the flow chart of FIG. 5, the combining two or more tasks may include combining two tasks into a single task if a number of task switches between the two tasks over a time period is greater than a threshold, wherein a task switch includes a switch by a user between computer events or desktop operations of the two tasks.
With reference to the flow chart of FIG. 5, the combining two or more tasks may include determining a number of task switches for different pairs of tasks of a plurality of tasks, identifying two tasks out of the plurality of tasks that have the most task switches between them over a period of time as compared to other task pairs of the plurality of tasks, and combining the two identified tasks into a single task.
In addition, task identification system 120 (FIG. 1) may include a recommender service to recommend or propose to a user to open one or more information objects based on a comparison of an active task to one or more stored tasks, according to an example implementation. According to an example implementation, one or more tasks may be stored in a memory or storage device, including the events, desktop operations and KAs associated with or assigned to each task. For example, each of the tasks (including events, desktop operations and tasks assigned to each of the tasks) are received and stored in a memory or storage device. Task analysis system 120 may then compare a current or active task for a user to one or more stored tasks, and may determine a degree of similarity between the current or active task for a user to one or more stored tasks for the user. For example, task analysis system 120 may determine which of the stored tasks most closely resembles a current or active task.
There are many different ways in which task analysis system 120 may compare a current or active task to one or more stored (or previous) tasks, or to determine which stored task most closely resembles a current or active task for a user. A series of events or desktop operations received by task analysis system 120 over a recent time period (e.g., events or desktop operations received over last 30 minutes, over last 2 hours, over last 4 hours, or other time period), and these recent events or desktop operations may be considered part of a current or active task. According to one example implementation, task analysis system 120 may identify one or more (or all) of the information objects that are currently open, or which were open during a recent time period, or which were open for the current task. The task analysis system 120 may then determine which stored task had the most (or highest percentage of) open information objects that match the one or more open information objects for the current or active task (or were open over a specific time period or window for the current task).
Or, according to another example technique to determine which stored or previous task most closely resembles a current or active task, the task analysis system 120 may identify the number of KA switches (which may include switches between information objects of different KAs) over a time period, or an average KA switching rate for the current or active task. The task analysis system may perform a similar calculation for each stored or previous task, e.g., calculate the KA switching rate or number of KA switches (switches between information objects of different KAs) over a time period for each stored task. Task analysis system 120 may then identify the stored task that most closely resembles the current or active task as the stored task that has the number or KA switches or KA switching rate that most closely resembles or most closely matches the KA switching rate or number of KA switches for the current or active task for the user.
Alternatively, a combination or plurality of criteria may be used to determine the stored task that most closely resembles a current or active task. For example, task analysis system may be determine a stored or previous task that most closely resembles a current or active task based on: 1) which stored or previous task had open applications that most closely match the opened applications for the current or active task; 2) which previous or stored task had (e.g., the most or the highest percentage of) information objects that were open for the previous task that match or are the same as open information objects for the current task, and 3) based on the KA switching rate for the previous tasks as compared to the KA switching rate for the current or active task. Other criteria may be used as well, as these are merely a few examples.
Once a stored or previous task has been identified that may most closely matches or resembles a current or active task for a user, the recommender service of task analysis system 120 may determine if there are any information objects that were opened for the matching or identified task that are not currently open or are not open in the current or active task. The recommender service of task identification system 120 may then provide or display a recommendation to open one or more of these currently unopened information objects (or files) that were opened for the identified (or most closely matching) previous or stored task. For example, if a current task is the same or very similar to a previous or stored task, the recommender service may provide a recommendation or proposal to open any unopened information objects that were previously opened as part of that matching previous task, for example. This may assist the user in opening all of the information objects related to a current or active task, for example.
With reference to the flow chart of FIG. 5, the method of FIG. 5 may further include identifying one or more information objects that are open within a time window, determining a task that includes the identified information objects associated with the determined task, determining an additional information object that is associated with the determined task but is not currently open, and displaying a proposal or recommendation to open the additional information object.
With reference to the flow chart of FIG. 5, the method of FIG. 5 may further include storing one or more tasks, determining an amount of switches between knowledge actions for an active task within a time window, determining one or more open information objects for the active task within the time window, identifying one of a plurality of the stored tasks that most closely matches or resembles the active task based on the open information objects and a number or frequency of knowledge action switches for one or more of the plurality of stored tasks as compared to the active task, determining an additional information object that is associated with the identified stored task but is not currently open, and providing a proposal or recommendation to a user to open the additional information object.
FIG. 6 is a block diagram illustrating a task analysis system 120 according to another example implementation. Task analysis system 120 may include an event monitor 610 that may receive one or more computer events. These received computer events are stored in an event storage 612, which may include memory or a storage device, for example.
A task miner 618 receives the stored computer events, and identifies desktop operations as a group of one or more events, and determines one or more knowledge actions (KAs), e.g., where each KA includes a group of one or more desktop operations performed on or by a same application on a same information object. Task miner 618 also determines one or more tasks, with each task including a group of KAs that are semantically related (e.g., where knowledge actions of the task include information objects that are semantically related). The task miner 618 may also then analyze the temporal or time relationships of different tasks, and may combine tasks together into a single task if the tasks are temporally related, for example. For example, KAs of two different tasks may be combined into a single task if the two tasks are temporally related. After identifying tasks based on semantic relationships and temporal relationships, task miner 618 stores the tasks, or information regarding the tasks, in task storage 616.
A recommendation generator 613 may provide a recommendation or proposal to a user to open an information object based on a current or active task for a user received via event monitor 610 as compared to one or more (previous) tasks stored in task storage 616. Recommendation generator 613 may include an interaction classifier 614 and a recommender service 620. According to an example implementation, interaction classifier 614 may compare events, desktop operations and knowledge actions of a current or active task to the events, desktop operations and knowledge actions of one or more stored tasks to identify a stored (or previous) task that most closely matches or most closely resembles the current or active task. As noted above, interaction classifier 614 may use different criteria for identifying a stored task that most closely resembles or matches a current or active user task. For example, interaction classifier may compare KA switching rate or KA switching frequency (or the number of switches between knowledge actions) for the current task compared to one or more stored tasks, or may compare the applications and information objects that are open or used for the current task as compared to one or more stored or previous tasks. Based on one or more criteria, the interaction classifier 614 may identify a previous or stored task that most closely matches or most closely resembles a current or active task for a user.
Recommender service 620 may then identify a list of the information objects that were used by the matching stored task, and may identify one or more of these information objects that are not currently open, or which are not open over a recent time period or window for the current or active task. Recommender service 620 may then provide or display to the user a recommendation to open one or more of these unopened information objects (e.g., information objects used by the matching task which were not opened for the current or active task).
Implementations of the various techniques described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Implementations may implemented as a computer program product, i.e., a computer program tangibly embodied in a non-transitory machine-readable storage device (e.g., a semiconductor or magnetic material-based storage device), for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program, such as the computer program(s) described above, can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program that might implement the techniques mentioned above might be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
Methods may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Methods also may be performed by, and an apparatus may be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Elements of a computer may include at least one processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer also may include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in special purpose logic circuitry.
Implementations may be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation, or any combination of such back-end, middleware, or front-end components. Components may be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
Thus, while certain features of the described implementations have been illustrated as described herein, many modifications, substitutions, changes and equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes.

## Claims

1. A computer program product, the computer program product being tangibly embodied on a non-transitory computer-readable storage medium and including executable code that, when executed, is configured to cause at least one data processing apparatus to:
receive a list of computer events, each of the events including a user interacting with a computer;
determine one or more desktop operations, with each desktop operation including one or more of the computer events in the list of events that are performed to accomplish the desktop operation;
determine one or more knowledge actions, where each knowledge action is associated with a corresponding information object and includes a group of the one or more desktop operations, each of the one or more desktop operations in the group being performed, using a same application, on the same corresponding information object associated with the knowledge action;
determine which of the corresponding information objects associated with the one or more knowledge actions are semantically related;
determine one or more tasks, with each task including a group of knowledge actions, the corresponding information objects associated with the knowledge actions in the group being a set of information objects that are semantically related;
determine that a first task and a second task, which are semantically-unrelated tasks, are temporally related; and
merge the first task and the second task into a single task by adding a knowledge action of the second task to the group of knowledge actions of the first task.

2. The computer program product of claim 1
wherein the executable code is configured to cause the at least one data processing apparatus to remove the second task after adding the knowledge action of the second task to the group of knowledge actions of the first task.

3. The computer program product of claim 1 and wherein each of the desktop operations is one type of a plurality of desktop operation types that includes: open, close, save, rename, delete, cut, paste, print, create and execute.

4. The computer program product of claim 1 and wherein each of the desktop operations is performed on or with respect to an application, a file, a folder, an information object or a window.

5. The computer program product of claim 1 and wherein each of the knowledge actions is one of a plurality of knowledge action types including one of:
consuming: a user focuses a resource on the computer;
authoring: a user authors or creates a representation of information in an existing or new resource or information object;
communicating: a user shares information or communicates with another person;
organizing: a user organizes information or information objects; and
browsing: a user browses for one or more resources.

6. The computer program product of claim 1 and wherein each of the desktop operations includes one or more events that are performed by a same application on a same information object.

7. The computer program product of claim 1 wherein the code being configured to cause the at least one data processing apparatus to determine one or more tasks comprises code that is configured to cause at least one data processing apparatus to determine one or more tasks, with each task including a group of semantically related knowledge actions, wherein one or more of the following techniques are used to determine if two or more tasks are semantically related:
vector space method;
topic extraction method;
term matching method;
vector space model method;
latent dirichlet allocation method; and/or
hierarchical clustering method.

8. The computer program product of claim 1 wherein the code being configured to cause the at least one data processing apparatus to merge the first task and the second task into a single task comprises code that is configured to cause at least one data processing apparatus to merge the first task and the second task into the single task if a number of task switches between the first task and the second task over a time period is greater than a threshold, wherein a task switch includes a switch by a user between computer events or desktop operations of the first task and the second task.

9. The computer program product of claim 1 wherein the code being configured to cause the at least one data processing apparatus to merge the first task and the second task into the single task comprises code that is configured to cause at least one data processing apparatus to:
determine a number of task switches for the first task and the second task of a plurality of tasks;
identify the first task and the second task out of the plurality of tasks that have the most task switches between them over a period of time as compared to other task pairs of the plurality of tasks; and
merge the identified first task and the identified second task into the single task.

10. The computer program product of claim 1 wherein the code is further configured to cause the at least one data processing apparatus to:
identify one or more information objects that are open within a time window;
determine a task that includes the identified information objects associated with the determined task;
determine an additional information object that is associated with the determined task but is not currently open; and
display a proposal or recommendation to open the additional information object.

11. The computer program product of claim 1 wherein the code is further configured to cause the at least one data processing apparatus to:
store one or more tasks;
determine an amount of switches between knowledge actions for an active task within a time window;
determine one or more open information objects for the active task within the time window;
identify one of a plurality of the stored tasks that most closely matches or resembles the active task based on the open information objects and a number or frequency of knowledge action switches for one or more of the plurality of stored tasks as compared to the active task;
determine an additional information object that is associated with the identified stored task but is not currently open; and
provide a proposal or recommendation to a user to open the additional information object.

12. A computer implemented method performed by a processor, the method comprising:
receiving a list of computer events, each of the events including a user interacting with a computer;
determining one or more desktop operations, with each desktop operation including one or more of the computer events in the list of events that are performed to accomplish the desktop operation;
determining one or more knowledge actions, where each knowledge action is associated with a corresponding information object and includes a group of the one or more desktop operations, each of the one or more desktop operations in the group being performed, using a same application, on the same corresponding information object associated with the knowledge action;
determining which of the corresponding information objects associated with the one or more knowledge actions are semantically related;
determining one or more tasks, with each task including a group of knowledge actions, the corresponding information objects associated with the knowledge actions in the group being a set of information objects that are semantically related;
determining that a first task and a second task, which are semantically-unrelated tasks, are temporally related; and
merging the first task and the second task into a single task by adding a knowledge action of the second task to the group of knowledge actions of the first task.

13. The computer implemented method of claim 12
further comprising removing the second task after adding the knowledge action of the second task to the group of knowledge actions of the first task.

14. The computer implemented method of claim 12 wherein each of the desktop operations is one type of a plurality of desktop operation types that includes: open, close, save, rename, delete, cut, paste, print, create and execute.

15. The computer implemented method of claim 12 wherein each of the desktop operations includes one or more events that are performed by a same application on a same information object.

16. The computer implemented method of claim 12 wherein the combining two or more tasks comprises:
determining a number of task switches for different pairs of tasks of a plurality of tasks;
identifying two tasks out of the plurality of tasks that have the most task switches between them over a period of time as compared to other task pairs of the plurality of tasks; and
combining the two identified tasks into a single task.

17. The computer implemented method of claim 12 and further comprising:
identifying one or more information objects that are open within a time window;
determining a task that includes the identified information objects associated with the determined task;
determining an additional information object that is associated with the determined task but is not currently open; and
displaying a proposal or recommendation to open the additional information object.

18. The computer implemented method of claim 12 and further comprising:
determining a number of switches between knowledge actions for an active task within a time window;
determining one or more open information objects for the active task within the time window;
identifying one of a plurality of the stored tasks that most closely matches or resembles the active task based on the open information objects and a number or frequency of knowledge action switches for one or more of the plurality of stored tasks as compared to the active task;
determining an additional information object that is associated with the identified stored task but is not currently open; and
providing a proposal or recommendation to a user to open the additional information object.

19. An apparatus comprising:
a processor coupled to a memory, the processor and memory forming logic circuitry including
event receiving logic configured to receive a list of computer events, each of the events including a user interacting with a computer;
desktop operation determining logic configured to determine one or more desktop operations, with each desktop operation including one or more of the computer events in the list of events that are performed to accomplish the desktop operation;
knowledge action determining logic configured to determine one or more knowledge actions, where each knowledge action is associated with a corresponding information object and includes a group of the one or more desktop operations, each of the one or more desktop operations in the group being performed, using a same application, on the corresponding subject information object associated with the knowledge action,
the knowledge action determining logic further configured to determine which of the corresponding information objects associated with the one or more knowledge actions are semantically related;
task determining logic configured to determine one or more tasks, with each task including a group of knowledge actions, the corresponding information objects associated with the knowledge actions in the group being a set of information objects that are semantically related, the task determining logic further configured to determine that a first task and a second task, which are semantically-unrelated tasks, are temporally related; and
combining logic configured to merge the first task and the second task into a single task by adding a knowledge action of the second task to the group of knowledge actions of the first task.

20. The apparatus of claim 19, wherein the processor and memory are further configured to form logic circuitry to:
identify one or more information objects that are open within a time window;
determine a task that includes the identified information objects associated with the determined task;
determine an additional information object that is associated with the determined task but is not currently open; and
display a proposal or recommendation to open the additional information object.