A number of approaches have been used to try to identify documents that might be of interest or relevant to a user at any given time. One approach has been a task or workflow approach, where documents may be grouped around a central task or workflow, where the user manually defines the task or workflow. However, when different types of applications are used during a task it can be difficult to define a task and discover relations between pieces of information. Structuring of documents, for example using tags and schemas, has also been used to relate documents. However, it can be a burden to structure a document. Some applications may not be capable of understanding the structure, and schemas are often out of date or fail to define structure in a manner suitable for all users.
Another approach has been to relate documents based on common content or keywords. However, this approach often misses document relations or falsely relates documents. This approach may also introduce application dependencies.
Yet another approach for relating documents has been the “property” approach, where properties of documents are manually entered or are discovered by analysis of the documents, and the properties are then used to relate documents. However, manual entry of properties is cumbersome, and automatic property detection may be ineffective and unreliable.
Another approach involves recommending documents to users based on personalized user profiles. If users indicate that a document is of interest, perhaps by selecting it from among a list of search results, or perhaps by repeated accesses to the document, then similar documents with similar or related content may be recommended.
Other approaches have been used. Indexing has also been used to relate documents, for example, by clustering index-related documents. However, indexing does not always reflect the relationships that are most relevant from the perspective of a particular user. Special purpose adapters or agents, which perform document relating tasks for particular documents or applications, have also been used. However, this approach is static and inflexible. For example, if an application is revised, the associated adapter may need to be reprogrammed.
In general, there has been a lack of satisfactory techniques for relating documents.
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.
Actions of a user that correspond to various documents are identified by observing and analyzing low level system events driven by the user's interactions with one or more windows for displaying the documents. The identified user activity is used to characterize the documents. Characterizations include relationships between the documents, and/or importance of the documents, or others.
Many of the attendant features will be more readily appreciated by referring to the following detailed description considered in connection with the accompanying drawings.
Like reference numerals are used to designate like parts in the accompanying Drawings.
As discussed in the Background, various techniques in the prior art use document content as a basis for relating documents. Documents have also been related based on a task or workflow. Some of the techniques and embodiments described below relate to capturing the activity or effort of a user to relate or rank documents. By using user activity to relate or rank documents, reliable and relevant document relations and rankings can be created. In some embodiments, documents can be related or ranked based on user activity without any dependency on the types of documents or on the types of applications through which user activity is directed to the documents.
The accessed 100 low level system activity is used to identify 102 documents and user activity directed to the respective documents. The identified user activity corresponds to activity of the user that caused the accessed 100 low level system activity to occur. In other words, the accessed 100 low level system events are translated or mapped to or characterized as higher level user actions directed to or associated with respective documents. The active or target documents may be identified 102 using the low level system activity itself.
The identified 102 document-specific activity is then used 104 to rank one document or relate one document to one or more other documents. For example, if a first user activity of a first document has been identified 102, and a second user activity of a second document has been identified, the first and second activities may be used 104 to relate the first and second document. Or, if a third user activity has been identified 102, that use activity may be used 104 to increase or decrease a rank or importance rating of a document affected or targeted by the activity.
The ranking or relating based on the identified 102 user activities can be understood as modeling the actual activities of a user and how they may be related or how they may indicate what objects (e.g., documents) are significant to the user. Certain types of activities performed by a user are generally assumed to be related, by some degree, in the mind of the user. For example, activities performed by the user (e.g. opening two documents) might be related to a same task or objective of the user, which may be reflected merely by proximity in time of two different identified 102 actions or some identified 102 operations between two documents (e.g. copying and pasting between documents). Although this description discusses certain types of user activities and different ways of relating them, it should be understood that different assumptions about what is related in the mind of a user may call for identifying 102 different types of user activities and different ways of using 104 them to relate the documents to which they pertain. Furthermore, certain types of activities performed by a user are assumed to reflect the subjective importance of documents affected by those activities. For example, altering a document, repeatedly accessing a document, or keeping a document open for extended periods of time might each indicate that the document is important to the user. The specific types of user activities used 104 to rank the importance of a document are not important for the more general idea of simply observing (at a low or system level) the high level activities of a user to draw conclusions about whether a user has given a document some attention or how much attention the user has given the document.
Referring again to
The user behavior layer 128 has an activity manager 129 that performs a process 130 for handling low level events or calls. This process 130 involves obtaining or accessing 130 low level system activities driven by or reflecting user activity (see the right hand side of
Returning to process 130, the activity manager 129 uses the low level system activity information (e.g. window events, file system events, clipboard operations, etc.) to identify 134 documents and user activity directed to those documents. Several problems may need to be addressed to accomplish this step. First, there may be a need to merge file system events with windowing events. Because there is an interest in user actions on documents, windows are related to documents in order to allow window events to be mapped to documents. Usually it is not difficult to relate a document to a window. Of the current set of windows being managed by the windowing system, many of those windows only provide meta-information (e.g., alerts and dialogs) and their events can be ignored. With other windows, file system events which identify a document can usually be correlated with particular windows (see the discussion of
Having established relations between windows and documents, the activity manager 129 can now relate windowing events (and therefore user activity) to particular documents. The incoming event stream for each window/document is monitored, interpreted, and passed on as well-formed or high level events, for example, “open”, “rename”, “copy”, “save as”, “new”, “move document”, “text input”, “cut/copy to buffer/clipboard”, “paste from buffer/clipboard”, “document presence”, etc., each derived from corresponding low level events. The high level document activity is then provided 136 to a document relation manager 138.
The document relation manager 138 is responsible for taking detected high level document activity of a user and determining relations between documents and/or ranking documents. The document relation manager 138 performs process 140 for relating documents, which involves first receiving 142 an activity directed to or affecting some particular document. The document of the received 142 activity is then ranked or related 144 to one or more other documents. The ranking or relating 144 is generally based on the user activity. That is to say the user activity (and therefore the document) is tied to some other documents based on some aspect of the user activity, such as its type (e.g. cut, open, activate, etc.), its time of occurrence, or some piece of information (e.g., a clipboard snippet).
The document relation manager 138 may also manage more than the existence of relations between documents. For example, the document relation manager 138 may maintain or manage relationship strengths, which indicate how close the relationship is between two documents. Details of will be discussed later with reference to
Another process performed by the document relation manager 128 is a process 146 of providing document relations. When the document relation manager 128 receives 148 a request for documents related to a document (e.g., “documentX”), the identity of one or more documents related by user activity are returned 150. For example, if “documentY” and “documentZ” are related to “documentX”, then those documents are returned 150. Similarly, the document relation manager 128 may perform a process 152 of providing documents based on their activity-based rank or importance to the user. The document relation manager 128 receives 154 a request for documents based on rank or importance. For example, a request might specify return the ten most important documents or the documents with a rank above a specified level. The process 152 returns the identity of one or more documents that satisfy the received 154 request.
The document relation manager 128 may perform other functions. Records of the ranks of documents or the relationships between documents may be maintained. The document relation manager 128 may also maintain records of the various documents that have been related or that have been identified as subjects of user activity. This may involve maintaining (keeping current) filepaths or filenames of documents. If a “rename document” action has been identified, then the document relation manager 128 can change the document's record to reflect the new filepath or filename. If a “delete document” action has been identified, the document relation manager 128 may delete the corresponding document relationships.
A notable aspect of the user behavior layer 128 is that it is transparent to the user. The activity monitoring and document relating may occur without interrupting the user. Furthermore, if document ranking or relation processing is performed as soon as user activity is identified, the activity-based document relations/rankings can be provided in real time to reflect to user's most recent activity. In another embodiment, document relations/rankings (and even how they are determined) may develop gradually as information about user activity accumulates and rankings and/or relations between documents perhaps become increasingly reliable.
In the embodiment shown in
The embodiment shown in
Returning to
There is practically no limit on how identified user activity can be used to relate or rank documents.
A number of refinements can be used to improve the reliability of relationships. If a document-close event occurs immediately after an open event, then a relation effect from the open event might be undone or ignored. A cluster of click events might increase the weight of a relationship. Recurrence of a document-relating event can serve to strengthen a relationship, and newer such events can be given more weight than initial events. Furthermore, documents can be provided with an importance factor, adjusted over time, that affects the relationships of the document.
To avoid an over-accumulation of relationships over time, it may be helpful to include a mechanism for culling or weakening relationships or document importance ratings. For example, if a relationship is not used or strengthened over some given period of time, the relationship can be deleted or repeatedly weakened until deleted. Or, if there is no activity directed to a document over time, then that document's importance and/or relationships can similarly be weakened or removed. It is even possible to use user activity as a direct basis for weakening or removing relationships. For example, closing a first group of one or more documents and then opening a second group of one or more documents may be taken as a sign that the documents in those groups are not related and any relations between the groups can be weakened or removed.
Although
In one embodiment, a history of activity events is stored and used to help compute document relations and/or rank/importance. That is to say, a history of the events that caused changes in a document's rank and/or its relationships is stored and then used when computing a rank or relationship. This allows complex algorithms to be used. For example, cycles of activity might be detected (e.g., a document is accessed every Thursday) and taken into account when computing a rank or relationship strength.
As used herein, the term “document” refers to any unit or container of information usually corresponding to some file, resource associated with a resource locator, or the like. A document can be a unit of information that is often viewed or manipulated in an application window. Some examples of documents are word processor documents, graphics documents, slide presentations, emails, static or dynamic web pages, database views, programming projects or source code files, and others.
Implementations based on the explanations above, insofar as they observe and interpret a computer's low level system activity which is generated for any application or program on a computer, can generate relations between documents without regard for the application that is manipulating the document, without regard for the type of document, and without regard for the content of the document. A well designed implementation can relate documents for applications that only come into existence even after such implementation is complete. Applications do not need to be modified, and special adapters should not be needed. Furthermore, any of the embodiments discussed above can also be used in conjunction with a content-based approach for relating documents. In other words, user activity can serve as a basis to supplement other types of document relating.
It should be appreciated that the very determination of a relationship is itself a useful result. Once document relationships have been ascertained, there are a number of ways they can be used. Relationships can be used to enhance a user interface. For example, if a document window of a word processor might display some indicia of related documents. The indicia might be ordered by the strength of their relationship with the document, and might also be displayed in a manner to indicate whether they are presently open, etc. Document relations can also be used to improve a document searching process, whether server or desktop based. In the case of a search engine, relations passed to the search engine can be used when performing a search. In the case of a desktop search, a desktop search engine can use document relations to help order search results or to display documents related documents found in a search, and so on. Document relations can be used for backup purposes. If a document is backed up, any related documents might also be backed up with it. Other uses abound.
In some of the examples above, the mechanism for using the document relations can also serve as a channel for strengthening document relations. For example, if an interface element displays a list of documents related to the active document and the user uses that list to activate or open one of the related documents, the interface element could provide feedback to the relationship manager that the relationship manager can use to strengthen that particular relationship. Or, if a document is listed in a search result based on a relationship, and that document is the selected by the user, that selection can strengthen the relationship.
Although user activity is useful for determining the importance of documents or relationships between documents, in general documents need not be the only types of things that can be related or characterized based on user activity. Any type of object that a user can discretely view, create, manipulate, etc. can be related or characterized. Furthermore, importance of objects and the relationships between objects are not the only kinds of information that can be determined. An object can in other ways be characterized according to a user's activity that affects or touches upon the object. For example, an object or document can be categorized or typed based on how it is used. Some forms of activity may indicate that an object is a “reference” type of object, i.e., an object that a user refers to often but does not modify often. Other forms of activity may indicate that an object is an “update” type of object.
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.
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, 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.