Sign In to Follow Application
View All Documents & Correspondence

"Window Grouping"

Abstract: A framework is provided for obtaining window information. The window information can be applied to different assignment models to assign windows to different groups. A group may correspond to a task being performed by a user. The window information can be semantic or temporal information captured as window events and properties of windows whose events are captured. Temporal information can be information about switches between windows. Semantic information can be window titles. Temporal information, semantic information, or both, can be used to assign windows to groups.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
30 June 2006
Publication Number
01/2008
Publication Type
INA
Invention Field
COMPUTER SCIENCE
Status
Email
Parent Application

Applicants

MICROSOFT CORPORATION
ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052, UNITED STATES OF AMERICA.

Inventors

1. NURIA M. OLIVER,
C/O-MICROSOFT CORPORATION, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052, UNITED STATES OF AMERICA.
2. CHINTAN S. THAKKAR
C/O-MICROSOFT CORPORATION, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052, UNITED STATES OF AMERICA.
3. ARUNGUNRAM C. SURENDRAN
C/O-MICROSOFT CORPORATION, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052, UNITED STATES OF AMERICA.
4. GREGORY R. SMITH
C/O-MICROSOFT CORPORATION, ONE MICROSOFT WAY, REDMOND, WASHINGTON 98052, UNITED STATES OF AMERICA.

Specification

UNITED STATES PATENT APPLICATION WINDOW GROUPING
BACKGROUND
[0001] People using computers often work on multiple tasks and activities,
sometimes in parallel or in rapid succession. For example, a user might need to perform one task of making travel arrangements while intermittently performing another task of coding and testing a programming project. To accomplish these unrelated tasks, the user might need to use one set of windows (e.g., web browser window, email client window, spreadsheet window) for the first task and use another set of windows for the second task (e.g., editor window, debugger window, design document window). Switching back and forth between the two tasks can be burdensome; different windows may need to be activated, minimized/maximized, rearranged, etc. In sum, a user may have to frequently manage different sets of system objects {e.g., windows, user interface elements, etc.) that are needed to perform different corresponding tasks.
[0002] Efforts have been made to reduce or eliminate this task of managing
tasks. Task management systems have been developed to help reduce the effort needed by a user to manage multiple computing tasks. Specifically, task management systems have been developed to facilitate fast switching between tasks, fast resumption of tasks, automatic identification of tasks, and so on. To these ends, various solutions have been considered, such as virtual desktop managers, extensions of the user's desktop witlh peripheral low-resolution screen space, three dimensional desktop managers, zoomabie interfaces, tiled window managers, bumping away irrelevant windows, using a central focus region and a peripheral region for unused windows,
enhanced taskbars, and so on. Similar application-specific systems have also been used
to help users manage their tasks within a particular application, such as email.
[0003] To facilitate task management and in particular task switching, previous
task management systems have generally required knowledge of how a user's overall workspace is conceptually partitioned into individual tasks. That is, a basic problem with task management is how to determine which objects (windows, documents, applications, t»tc.) are associated with each task or working context. This is sometimes referred to as the task assignment problem. Most task management systems rely on explicit user input for such knowledge, despite the extra effort this imposes on a user. There has been little effort toward automatic detection and recognition of a user's tasks, perhaps because of the difficulty of this approach. For example, it can be difficult for a task management system to know whether a newly opened window is part of the current working context, the start of a new working context, or a signal to shift to some other existing working context. There is a need for mechanisms that improve the ability to manage computing tasks.
SUMMARY
[0004] The following summary is included only to introduce some concepts
discussed In the Detailed Description below. This summary is not comprehensive and is not intended to delineate the scope of protectable subject matter, which is set forth by the claims presented at the end.
A framework is provided for obtaining window information. The window information can be applied to different assignment models to assign windows to different groups, A group may correspond to a task being performed by a user. The window information can be semantic or temporal information captured as window
Express Mail No. EV 671530192 US
events and properties of windows whose events are captured. Temporal information can be information about switches between windows. Semantic information can be window titles. Temporal information, semantic information, or both, can be used to assign windows to groups.
[0005] Many of the attendant features will be more readily appreciated by
referring to the following detailed description considered in connection with the accompanying drawings.
DESCRIPTION OF THE DRAWINGS
[0006] Like reference numerals are used to designate like parts in the
accompanying Drawings.
[0007] Figure I shows a general process for assigning windows to groups or
tasks.
[0008] Figure 2 shows a framework for monitoring and logging user activity and
relating windows.
[0009] Figure 3 shows a context within which the window event logger may
operate and also shows an example of a window event log.
[0010] Figure 4 shows example window events.
[0011] Figure 5 shows an example of a semantic clustering model.
[0012] Figure 6 shows some example titles.
[0013] Figure 7 shows a table of clean title clusters formed according to
keywords.
[0014] Figure 8 shows a process for analyzing window switches.
[001 5] Figures 9 and 10 show how window states can be temporally modeled to
identify tasks and subtasks.
Express Mail No. EV 671 530192 US DETAILED DESCRIPTION
[0016] Although embodiments discussed below can benefit task management,
the concept of a task per se is not overly significant. A task can be thought of as a human objective, which is difficult to identify. However, the existence of a task can be approximately discerned by identifying objects or windows interrelated in a way that indicates they belong to a common task. That is, it may not be possible to automatically determine the subjective purpose of a task, but it is possible to automatically determine which objects or windows are commonly related to a task by analyzing their properties and/or how they are used over time. The following description relates to automatically grouping objects or windows (assigning objects or windows to groups or "tasks"). The description will cover: a framework for capturing window information and analyzing that information to group windows; techniques to group windows by semantically analyzing window metadata; and techniques to group windows by analyzing temporal use or display of windows.
CAPTURE AND ANALYSIS FRAMEWORK
[001 7] Figure 1 shows a general process for assigning windows to groups or
tasks. First information about objects or windows is obtained 100. This information can include semantic information or metadata about windows, and/or temporal information such as which windows are used and when, which windows are displayed and when, how they are displayed, and so on. Semantic metadata about windows is information about a window object itself rather than information obtained from the content of a window. For example, if a window is used to display a document, the semantic metadata is not the content of the document itself, but rather can be a name
Express Mail No. EV 671 5301 92 US
or title of the window (the title displayed in the window's title bar), or a screen hint (text displayed to describe a window when a mouse hovers over the window's icon), a title of a window's icon, the executable that the window belongs to, or similar information. Temporal information about windows can include information such as which windows are displayed on a screen at which times, how much of a window is visible at different times, which window is the active or focus window at different times, or the like. In whatever form, the obtained 100 window information, is used as a basis to cluster or group 102 the relevant windows (i.e., assign the windows to groups or tasks). The windows may be clustered or grouped 102 by applying the obtained window information to different assignment models that may reflect different assumptions about how windows interrelate.
[001 8] Figure 2 shows a framework for monitoring and logging user activity and
relating windows. The framework may run on any operating system (e.g., Windows,
Unix, Linux, Mac OS, Palm, etc.) using any windowing system (e.g. Win32, the X Window
System, etc,) to manage the windows that are to be related. The output of the
framework is information about clusters of windows, for example, information about
which two or more windows have been determined to be related, how strongly windows
are related, or possibly delta information indicating changes in which windows belong to
which groups or clusters. To get this output, a log feeder 1 50 module or program
acquires and logs a user's activity in the form of window events. A cluster finder 1 52
program or module uses interprocess window event data supplied by the log feeder 1 50
to build a window model 160 that represents a state of the windowing system at the
time when the corresponding window event data was generated.
[0019] The log feeder 150 collects computer activity from an event source 151.
Some operating systems expose a collection of events that are keyed to windows by handles or unique identifiers. Events are usually exchanged between applications and
the windowing system or window manager. Examples of events include "activated", "deactivated", "closed", "minimized", "gained focus", "lost focus", "opened", "resized", or other similar events. An event is usually represented by a data structure or object which may have any number of properties or fields, including a handle of the window on which the event occurred. To obtain additional information about an event's window, the event's window handle can be used to access the object or data structure (managed by a window system) that represents the event's window.
[0020] To capture and log window events, the log feeder 1 50 has a window
event logger 1 54. The event logger 1 54 programmatically hooks into the events (e.g., using Windows' SetWinEventHook API) to receive events of interest and collect associated interesting properties of the relevant windows (see Figure 3). These captured events are surfaced for every window on the system, regardless of the application that owns the window. The event logger 1 54 may write time-stamped event output sequentially to a log file in a form that can then be imported into database 1 58 for offline analysis. For this purpose, the log feeder 150 may also have a database interface 1 56. Further details of the event logger 1 54 will be described later with reference to Figure 3. The log feeder 1 50 outputs a stream of logged event output, either directly from a rolling live event log file or from a previously recorded activity session that has been stored in the database (replaying it in real time as a speed-adjustable "live" interprocess event stream).
[0021] Returning to Figure 2, the cluster finder 1 52 listens for the interprocess
event stream provided by the log feeder 1 50 and uses the event stream to build and maintain a live window model 160 that represents the window state of the system which generated the event output. The window mode! 160 has a list or collection of objects that respectively represent the open windows on the system at any given moment (as indicated by the event data) and possibly has interrelationships such as their z~order

(i.e., their "depth" within the overlapping window system), parent-child relations, etc. The window model 160 tracks the history of the collection or list and state changes to the windows therein. The window model 160 will at some level be designed to understand the events of a particular windowing system. However, windows events are well understood and interpreting events to reconstruct the state of the windows is straightforward.
[0022] In one embodiment, each event may have a particular handler that
appropriately changes the state of the window model 160, A "close event" handler might handle "close" events by deleting a window's representation in the model. An "obtain focus" event handler might handle an "obtain focus" event by updating the window model 160 to set a property of the model 160 (and/or a property of a window representation within the model 160) to indicate which window is the current focus window. Y$t another event handler might handle events that relate to the display and/or arrangement of windows on a display device (e.g., "minimize" events, "maximize" events, "move" events, "resize" events, and so on). In sum, the window model 1 60 is able to use window event data (whether "played back" from database 1 58 or read from a real time log file) to provide an abstracted reconstruction of the window system when the handled events were generated.
[0023] It should be noted that window model 160 is not a requirement but
rather is a convenient mechanism for abstracting and accessing Information about the states of windows over time. A clustering analysis module or some other component could as readily be constructed to interpret the windows events directly into window state information. However, a formal window model 160 allows window states to be flexibly queried. For example, because the window model 160 can reproduce the window system's state at any given time depending on the events that it receives, the model 160 can quickly reproduce a snapshot of the window system at any given time by
reading in the events spanning up to that time. In other words, the log feeder 1 50 can be configured to "playback" events (e.g., from the database 1 58) over or up to a specified timeframe, and the window model 160 will parse those events and reproduce the window state at the end of that timeframe. In another embodiment, the window model 160 can be constructed to maintain its own history of window state changes, thus allowing it to answer requests about the state of the window system at any requested time. As will be discussed later, this can facilitate different assignment models (models of how windows are assigned to clusters).
[0024] The window model 160 supports various clustering models. A clustering
model is a model for assigning windows to various groups or categories based on
observations of the windows. A clustering model sends to the window model 160 a
request for information about the windows, and then uses that information to assign
windows to different clusters in accordance with the properties or features of the
windows. Each clustering model may have a different algorithm that reflects different
assumptions about how observed window events or metadata indicate that windows are
interrelated by a common purpose or task or use. Therefore, different clustering
models using the same window information might find different clusters of windows.
For example, one clustering model might assign windows to groups that have common
patterns of long temporal visibility or activity (e.g., several days) and another clustering
model might use short term temporal clustering where changing display states of
windows are modeled over a shorter period of time (e.g. several hours). A clustering
model might also take the output of other clustering models and combine them, using
Bayesian analysis or algorithms that give one model greater weight than another.
[0025] The general idea of providing a framework for allowing different
clustering models to be swapped in or out, or modified can be beneficial regardless of the type of models used to cluster windows. For example, models can be tested and
compared using the same window model and same observational data. Different models can be applied to a same set of observational data and the resulting different window clusters can be presented to a user so the user can select the clustering model that produces clusters that the user prefers.
[0026] The cluster finder 1 52 shown in Figure 2 has several examples of
clustering models. A semantic clustering model 162 clusters semantic features (e.g., window titles) of the windows as requested from the window model 160. A temporal clustering model 164 clusters windows based on temporal state changes of windows (e.g., switching focus between windows) obtained from the window model 160. Details of different clustering techniques will be discussed later.
[0027] Figure 3 shows a context within which the window event logger 1 54 may
operate and also shows an example of a window event log 180. Regarding the context, a user 1 76 is using a computer 1 78. In response to user interactions with windows managed by the window system 1 82, window events are exchanged between the window system 182 (e.g., an X Window server, a Win32 process, a Java runtime environment, etc.) and a set of applications 1 84 that have instantiated the windows. The window event logger 1 54 performs a process 186 of listening to or intercepting 1 88 the window events and logging 1 90 them to the event log 1 80. If a Microsoft Windows system is the windowing system 182, then the event logger 1 54 can use a publicly exposed collection of events. Each event has a window handle that keys the event to the window on which the event occurred. The event logger 1 54 programmatically hooks this collection of events with the SetWinEventHook API, thus allowing it to receive events of interest and collect associated properties of the relevant windows. These events are surfaced and logged for every window managed by the window system 1 82, regardless of the application 1 84 that owns a window. The event logger 1 54 timestamps the
events, which are sequentially written to the log 1 80 in a form that can then be imported into database 1 58 for offline or "playback" analysis.
[0028] Table 192 shows an abbreviated summary of the structure of the event
log 1 80 and an example log entry 194. As can be seen in table 192, an event entry will usually have information about the time and identity of the event, the type of the event and the identity of the event's window. Information about an event's window that might not be in the intercepted ! 88 event (e.g., process name) can be obtained from the window system 1 84 by using the event's window handle. Table 192 describes only one example of an event log. An event log might also track window display information such as position and the z-order of an event's window, which can be used by the window model 160 to determine the display states of the various windows when an event occurred, including how much area of a window was visibly displayed, where a window (or its visible portion) was displayed, and so on. As will be explained later, this type of information can be used by a clustering model to cluster windows based on temporal display features.
[0029] Figure 4 shows example window events. At stage A, the window system
is displaying a taskbar 210 and several windows on a display 212. Window2 (win2) is the active window. At stage B a user clicks or activates windowl (winl), which causes an exchange of events between windowl's application and the window system. These events are written to event log 1 80. At stage C the user clicks or activates window 3 (win3) which causes the exchange of another set of window events which are also written to the event log 1 80. It should be noted that many windowing systems generate events differently, and the exact nature of the events and the order of the particular types of events related to a user action may vary.
[0030] As will be discussed in detail iater with reference to Figure 8, the window
model 160 can use the events to derive and maintain current temporal information
about the windows. For example, the window model 160 can use a matrix 214 to count switches between windows.
SEMANTIC WINDOW CLUSTERING
[0031] Windows can be clustered based on semantic information obtained from
the windows. Often, a programmer will design an application program to set certain
properties of a window, which are maintained by the window system. When an
application program sets these window properties, the window properties are available
to other applications (such as the event logger 1 54). As described below, windows can
be clustered by semantically analyzing one or more window properties.
[0032] Titles, short screen-hint descriptions, or other textual snippets can be
tracked and collected from events and windows (e.g., see "title" in table 192 of Figure 3). This type of information should be distinguished from the content of a document or other user data displayed in the body of a window. Textual window metadata is metadata associated with a window as a system object, usually in the form of a property of a window object or a field of a window data structure. Textual window metadata, for example the window title, is usually programmatically set by the window's application. Textual window metadata may be displayed in association with or as part of its window, regardless of the content or document displayed in the body of the window. For example, a window's title is displayed in the window's title bar, a window's screen-hint is displayed when a pointer is hovered over the window or its icon, a window's icon title is displayed as part of the window's icon, etc. A semantic or text clustering model can perform a general process of obtaining the above-mentioned textual window metadata of respective windows and clustering the windows by semanticatly analyzing the textual window metadata.
[0033] It should be noted that a title, snippet, or small portion of text is a
special case of what is sometimes referred to in information retrieval literature as a document. Hereafter, the terms "document", "snippet", and "portion of text" will hereafter be used interchangeably, as appropriate.
[0034] Most algorithms for semantically analyzing documents have a convenient
representation of the corpus to be processed. Vector space models have a term-cross -document matrix representation of the corpus in which each document is represented as a vector and the document's terms are the dimensions of the vector. In a simple representation, entry i,j of the matrix represents how many times the \th term appeared in the \th document. The entry might be further processed to be some function of this value, as discussed below.
[0035] Clustering can be based on the assumption that underlying the corpus of
documents there is a small set of concepts that the documents are about. Clustering
algorithms usually map documents from the high dimensional term space to the low
dimensional concept space. In the reduced term space, semantically similar documents
should be close to each other while dissimilar documents should to be distant.
Following is a description of how to use a statistical generative model - the Probabilistic
Latent Semantic Indexing (PLSI) algorithm - to cluster window titles (or other textual
metadata of windows). Windows can then be clustered accordingly.
[0036] Figure 5 shows an example of a semantic clustering model. The example
will be discussed as applied to window titles, although the model can be applied to any portions of textual window metadata that are available and associated with respective windows. The model has the basic components: a preprocessing unit 230, a feature extraction unit 232, and a PLSI clustering unit 234. The preprocessing unit 230 receives window titles (and. or other textual window metadata). A stop-word deletion unit 236 deletes stop words listed in a stop-word database 237. Some stop words are words that
have little or no relationship to a window's subject matter or content, for example, articles, conjunctions, prepositions, etc. Furthermore, most window titles contain application-dependent words that have no relationship to the content of the window. For example, Microsoft Internet Explorer" appears in all internet Explorer windows, regardless of content. During processing, these application-dependent keywords are removed by the stop-word deletion unit 236.
[0037] After deleting stop words from the titles, the titles are passed to a long-
word processing unit 238. It is not unusual for window titles to have arbitrary words that are the result of composing multiple words into one long word. For example, a document could be named "Hawaii_vacation_summer_200S.doc", and this document name might be put verbatim into the window title by the application. Such a long word may be spiit into smaller, meaningful units, e.g., "hawaii", "vacation", "summer", and "2005". The long-word processing unit 238 passes its output to a stemming unit 240 that derives stem words in the titles. The clean preprocessed versions of the titles are then passed to the feature extraction unit 232.
[0038] The feature extraction unit 232 extracts features from the clean titles.
The text is represented as raw frequencies of occurrence of terms in titles, which will be referred to as "tf". This representation can cause commonly occurring terms to unnecessarily make all titles look similar even when they are not characteristic of a particular title. To compensate, the feature extraction unit 232 uses an inverse frequency measure ("tfidf") to add weight to the raw frequencies of terms, corresponding to the inverse frequency of pieces of text idf; tfidf = tf * idf. The idf measure for a term i is given by idfi = log lDl/ (iDil + 1), where iD| is the total number of titles and ;Dl- is the number of titles containing term i. The idf measure scales down commonly occurring terms and scales up words which rarely occur in titles and therefore are probably distinctive for any given title. The tfidf measure can be viewed as
the mutual information between terms and titles. Suitable results may be obtained by using the tfidf measure.
[0039] The results of the tfidf computation are passed from the feature
extraction unit 232 to the PLSI clustering unit 234. Probabilistic Latent Semantic
Indexing defines a generative model for the document-term pair (di, tj), with i - 1 N
and j = 1, ...,M. The PLSI approach assumes that every document-term pair is independent given a hidden topic z, z = 1, ...,K. The probability of (dt, tj), P(di, tj) is given by P(di, tj) = P(di)PzZ P(tj Izk)P(zk'di), where P(tj Izk) and P(zkjdi) form the model parameters that need to be estimated from data. The parameters can be efficiently estimated using the EM algorithm such that the likelihood of the corpus is maximized. The M-step equations are given by:
where M is the number of terms or words, N the number of documents and Z the
number of concepts.
[0040] The E-step equation is given by:
[0041] To get a clustering from the model parameters, P(zkjdi) is examined for
in
ail k, and document (title, snippet, etc.) i is assigned to the cluster that maximizes that probability. Note that it is assumed that the number of hidden topics, 2, is known ir advance.
[0042] As with most locai optimization algorithms, the EM algorithm used to
estimate the parameters of the PLSI model is sensitive to its initialization point. In order to help assure that the algorithm starts at a reasonable initial point, the PLSI clustering unit 234 uses a K-means initialization algorithm 242 to obtain the initial values of the parameters. For details on the EM algorithm, see A.P. Dempster, N.M. Laird, and D.B Rubin, Maximum likelihood from incomplete data via de em algorithm, Journal of the Royal Statistical Society, 39-B, pp. 1-38, 1977.
[0043] Figure 6 shows some example titles 260. The titles 260 may be obtained
from an assortment of windows. For relating to Figure 7, the titles 260 are shown as they might be grouped by the clustering model shown in Figure 5; group 262 corresponds to the top row in Figure 7, and group 264 corresponds to the bottom row in Figure 7 (titles corresponding to the middle row of Figure 7 have been omitted). Figure 7 shows a table 280 of clean title clusters 282 formed according to keywords 284. Cluster 286 corresponds to title group 262, and cluster 288 corresponds to title group 264.
[0044] Although a PLSI based clustering model has been discussed, other
clustering models can be used to cluster titles. EM), agglomerative clustering, and others. It should also be noted that clustering based on window titles is open-ended; as will be seen below, window-titles can be used alone or as one of multiple factors or bases used to group or cluster windows.
TEMPORAL WINDOW CLUSTERING
[0045] Temporal modeling is another way to cluster windows. A variety of
temporal models may be used to cluster windows. Window switches can indicate relations between windows. Display proximity can also indicate relations between windows. Patterns of co-visibility over time can indicate relations between windows. Other temporal features of windows can be modeled and applied in order to cluster windows.
[0046] As mentioned earlier, switching between windows can be modeled.
Window switching events that have taken place during a time interval of length T are tracked and used to and automatically build a window switching matrix, WS, where each element wsij is proportional to the number of times that the user switched from window wi to window wj during the time period T. Referring back to Figure 4, a switching matrix 214 is updated each time there is a switch between users. When the user activates window 1 (switches to window 1 from window2), element (1,2) of the matrix 214 is increased from 4 to 5, indicating that over some interval T there have been 5 switches from window2 to windowl. When the user switches from windowl to windows, element (3,1) is updated from 0 to 1, indicating that there has been one switch from windowl to windows.
[0047] Figure 8 shows a process for analyzing window switches. The window
switching matrix WS (matrix 214 being an example of such) is used to build 300 a directed graph 302 (top, left graph in Figure 8), where each node represents a window. The edges in the graph 302 correspond to transitions between windows, and weights of the edges are proportional to the number of switches from the window where the edge originates (parent) to the window where it ends (child). This graph 302 is then moralized and pruned 304, which discards the directionality of the switches and eliminates edges with a weight less than a certain threshold, those edges likely
corresponding to spurious transitions between unrelated windows. For one technique of moralizing, see C. Bron and J. Kerbosch, Algorithm 457 - finding all the cliques of an undirected graph, Communications of the ACM, 16(9), pp. 575-577, 1973. Finally, the moralized graph's 306 maximal cliques are automatically identified 308 via the Bron-Kerbosch algorithm. Each of the cliques (the groups in graph 310) contains the windows that are related to each other by switching, and therefore are assumed to belong to the same task or group. That is, the maximal cliques are used 31 2 to identify clusters 314 of windows.
[0048] Figure 9 shows how window states can be temporally modeled to identify
tasks and subtasks. In Figure 9, window display history graphic 320 depicts which windows have been visible at different times (with darkness indicating degree of visibility). This type of information can be provided by the window model 160. A temporal display model groups windows 322 based on which windows were displayed contemporaneously. Repeated co-display may be taken into account, as well as the degree of visibility of two contemporaneously displayed windows. Figure 10 shows another example 340 of how windows can be clustered based on their display states. In either Figure 9 or Figure 10, clustering can be accomplished by modifying weights in the clustering technique discussed above with reference to Figure 8.
OTHER EMBODIMENTS
[0049] As discussed earlier, it is possible to combine the outputs of two or more
window clustering models. For example, windows can be clustered based on their titles. Switching or display state history can then be used to cluster a window when the title processing module is not sufficiently confident (i.e., is not above a threshold) about the cluster to which cluster a window's title belongs. This may occur when there is a net
title with words unseen by the system, or when the title does not fit well in any of the clusters.
[0050] Additional algorithms for ensemble classification may be used. Spectral
clustering techniques from the field of information retrieval may be used to cluster window titles. The window switching history can be incorporated directly into the graph that the spectral clustering techniques build. This approach would permit the same representation and mathematical framework to be used for both semantic and temporal analysis.
CONCLUSION
[0051] In conclusion, those skilled in the art will realize that storage devices
used to store program instructions can be distributed across a network. For example a remote computer may store an example of a process described as software. A local or terminal computer may access the remote computer and download a part or all of the software to run the program. Alternatively the local computer may download pieces of the software as needed, or distributively process by executing some software instructions at the local terminal and some at the remote computer (or computer network). Those skilled in the art will also realize that by utilizing conventional techniques known to those skilled in the art, all or a portion of the software instructions may be carried out by a dedicated circuit, such as a DSP, programmable logic array, or the like.
[0052] All of the embodiments and features discussed above can be realized in
the form of information stored in volatile or non-volatile computer or device readable medium. This is deemed to include at least media such as CD-ROM, magnetic media, flash ROM, etc., storing machine executable instructions (either prior to execution,
during execution, or both), or source code, or any other information that can be used to enable or configure computing devices to perform the various embodiments discussed above. This is also deemed to include at least volatile memory such as RAM storing information such as CPU instructions during execution of a program carrying out an embodiment.

CLAIMS
1. One or more computer readable volatile or nonvolatile computer readable media
storing a window analysis framework for receiving information about a group of
windows and assigning the windows to groups, the task analysis framework comprising:
a collecting unit for collecting window events associated with the windows;
a wimdow-event model representing the windows and using the window events to model states of the windows, where the window-event model represents different states of the windows according to different sets of the window events; and
an assignment unit requesting states of the windows from the window model and assigning various of the windows to various different groups by applying the states to a first association model that models how windows in general are associated.
2. One or more computer readable media according to claim 1, wherein the
collecting unit can collect window events for arbitrary application programs without
requiring the application programs to be modified to facilitate the collecting.
3. One or more computer readable media according to claim 1, wherein the
assignment unit further comprises a second association model that models, differently
than the first association model, how windows in general are associated.
4. One or more computer readable media according to claim 1, wherein the first
association model models associations between windows based on switches of focus
between windows.
5. One or more computer readable media according to claim 1, wherein the first
association model models how windows in general are associated based on titles of
windows.
6. One or more computer readable media according to claim 3, wherein the first
and second association models model different time spans of window states.
7. One or more computer readable media according to claim 6, where windows are
assigned to groups based on both the first and second association models.
8. A method of automatically determining groups of windows, where the windows
are managed by a window managing system, where the window managing system
maintains representations of respective windows, and where each representation
includes a title of its window for displaying in a title bar of the window, the method
comprising:
analyzing the titles of the windows to determine semantic associations between the titles; and
associating the windows based on the associations between their titles.
9. A method according to claim 8, wherein the analyzing the titles comprises
determining clusters of keywords in the titles and associating the windows based on the
clusters.
10. A method according to claim 8, wherein the analyzing the titles comprises
preprocessing the titles, extracting features from the preprocessed titles, and clustering
the features in accordance with a probabilistic latent semantic indexing (PLSI) model,
and determining the associations between the titles bases on the clustered features of the titles.
11. A melthod according to claim 10, wherein the preprocessing comprises filtering
application-specific words from the titles.
12. A method according to claim 8, further comprising determining temporal
relations beiiween windows associating the windows based further on the temporal
relations between the windows.
13. A method according to claim 12, wherein the temporal relations comprise
switches of focus between windows.
14. A mtjthod according to claim 12, wherein the temporal relations comprise
display relations between windows.
1 5. A method according to claim 14, wherein the display relations comprise co-visibility of windows.
16. One or more devices configured to perform a process, the process comprising;
receiving window events associated with different windows, the window events indicating changes in how the windows are displayed on a display;
using the window events to construct a model of changing display states of windows over a period of time; and
clustering the windows based on the modeled display states.
1 7. One or more devices according to claim 16, wherein the changes in how the windows are displayed comprise switches between windows, and the received events indicate the switches between the windows.
18. One or more devices configured according to claim 16, wherein the window
events comprise window events passed between application programs and a window
management system that manages windows for arbitrary application programs,
19. One or more devices configured according to claim 16, wherein the display
states comprise active window states, whereby the model reflects switches between
windows over time, and where the windows are grouped based on frequencies of
switches between windows.
20. One or more devices configured according to claim 16, wherein the process
further comprises obtaining titles of the windows and the clustering is based further on
the titles of the windows.
21. One :or more devices configured according to claim 16, wherein the modeled
changing display states indicate changes in displayed sizes and/or locations of windows
and co-presence on the display.

Documents

Orders

Section Controller Decision Date

Application Documents

# Name Date
1 1542-DEL-2006-CERTIFIED COPIES-CERTIFICATE U-S 72 147 & UR 133-2 [07-08-2020(online)]-1.pdf 2020-08-07
1 1542-DEL-2006-GPA-(02-06-2010).pdf 2010-06-02
2 1542-DEL-2006-CERTIFIED COPIES-CERTIFICATE U-S 72 147 & UR 133-2 [07-08-2020(online)].pdf 2020-08-07
2 1542-DEL-2006-Correspondence-Others-(02-06-2010).pdf 2010-06-02
3 1542-DEL-2006-Written submissions and relevant documents [14-02-2020(online)].pdf 2020-02-14
3 1542-DEL-2006-Correspondence-Others-(30-06-2010).pdf 2010-06-30
4 1542-DEL-2006-PETITION UNDER RULE 137 [06-02-2020(online)].pdf 2020-02-06
4 1542-DEL-2006-Form-1-(22-12-2010).pdf 2010-12-22
5 1542-DEL-2006-Correspondence-Others-(22-12-2010).pdf 2010-12-22
5 1542-DEL-2006-Correspondence to notify the Controller (Mandatory) [21-01-2020(online)].pdf 2020-01-21
6 1542-DEL-2006-HearingNoticeLetter-(DateOfHearing-30-01-2020).pdf 2020-01-15
6 1542-del-2006-gpa.pdf 2011-08-21
7 Abstract [28-04-2017(online)].pdf 2017-04-28
7 1542-del-2006-form-5.pdf 2011-08-21
8 Claims [28-04-2017(online)].pdf 2017-04-28
8 1542-del-2006-form-3.pdf 2011-08-21
9 1542-del-2006-form-2.pdf 2011-08-21
9 Correspondence [28-04-2017(online)].pdf 2017-04-28
10 1542-del-2006-form-1.pdf 2011-08-21
10 Description(Complete) [28-04-2017(online)].pdf 2017-04-28
11 1542-del-2006-drawings.pdf 2011-08-21
11 Description(Complete) [28-04-2017(online)].pdf_426.pdf 2017-04-28
12 1542-del-2006-description (complete).pdf 2011-08-21
12 Examination Report Reply Recieved [28-04-2017(online)].pdf 2017-04-28
13 1542-del-2006-correspondence-others.pdf 2011-08-21
13 Other Document [28-04-2017(online)].pdf 2017-04-28
14 1542-del-2006-claims.pdf 2011-08-21
14 Other Document [25-04-2017(online)].pdf 2017-04-25
15 1542-del-2006-abstract.pdf 2011-08-21
15 Petition Under Rule 137 [25-04-2017(online)].pdf 2017-04-25
16 1542-DEL-2006-FER.pdf 2017-03-31
16 MTL-GPOA - PRS.pdf 2015-03-13
17 MS to MTL Assignment.pdf 2015-03-13
17 Form 3 [20-06-2016(online)].pdf 2016-06-20
18 FORM-6-501-600(PRS).12.pdf 2015-03-13
19 Form 3 [20-06-2016(online)].pdf 2016-06-20
19 MS to MTL Assignment.pdf 2015-03-13
20 1542-DEL-2006-FER.pdf 2017-03-31
20 MTL-GPOA - PRS.pdf 2015-03-13
21 1542-del-2006-abstract.pdf 2011-08-21
21 Petition Under Rule 137 [25-04-2017(online)].pdf 2017-04-25
22 1542-del-2006-claims.pdf 2011-08-21
22 Other Document [25-04-2017(online)].pdf 2017-04-25
23 1542-del-2006-correspondence-others.pdf 2011-08-21
23 Other Document [28-04-2017(online)].pdf 2017-04-28
24 Examination Report Reply Recieved [28-04-2017(online)].pdf 2017-04-28
24 1542-del-2006-description (complete).pdf 2011-08-21
25 1542-del-2006-drawings.pdf 2011-08-21
25 Description(Complete) [28-04-2017(online)].pdf_426.pdf 2017-04-28
26 1542-del-2006-form-1.pdf 2011-08-21
26 Description(Complete) [28-04-2017(online)].pdf 2017-04-28
27 1542-del-2006-form-2.pdf 2011-08-21
27 Correspondence [28-04-2017(online)].pdf 2017-04-28
28 1542-del-2006-form-3.pdf 2011-08-21
28 Claims [28-04-2017(online)].pdf 2017-04-28
29 1542-del-2006-form-5.pdf 2011-08-21
29 Abstract [28-04-2017(online)].pdf 2017-04-28
30 1542-del-2006-gpa.pdf 2011-08-21
30 1542-DEL-2006-HearingNoticeLetter-(DateOfHearing-30-01-2020).pdf 2020-01-15
31 1542-DEL-2006-Correspondence-Others-(22-12-2010).pdf 2010-12-22
31 1542-DEL-2006-Correspondence to notify the Controller (Mandatory) [21-01-2020(online)].pdf 2020-01-21
32 1542-DEL-2006-PETITION UNDER RULE 137 [06-02-2020(online)].pdf 2020-02-06
32 1542-DEL-2006-Form-1-(22-12-2010).pdf 2010-12-22
33 1542-DEL-2006-Written submissions and relevant documents [14-02-2020(online)].pdf 2020-02-14
33 1542-DEL-2006-Correspondence-Others-(30-06-2010).pdf 2010-06-30
34 1542-DEL-2006-Correspondence-Others-(02-06-2010).pdf 2010-06-02
34 1542-DEL-2006-CERTIFIED COPIES-CERTIFICATE U-S 72 147 & UR 133-2 [07-08-2020(online)].pdf 2020-08-07
35 1542-DEL-2006-GPA-(02-06-2010).pdf 2010-06-02
35 1542-DEL-2006-CERTIFIED COPIES-CERTIFICATE U-S 72 147 & UR 133-2 [07-08-2020(online)]-1.pdf 2020-08-07

Search Strategy

1 searchstrategy_08-03-2017.pdf