A processing device of an information processing system is configured to detect bursts of activity associated with a particular user, to map the bursts to tasks performed by the user, to generate a user model based on the mapping of bursts to tasks, and to provide personalized query processing to the user based on the user model. The user model may comprise a hidden markov model. In one embodiment, a query is received from the user in a current time window, and a model parameter is obtained. Based on the model parameter, a most likely task for the user in the current time window is identified, and based on the query, the most likely task, and user classification, search results are ranked for presentation to the user. The processing device may be configured to communicate the user model to a cloud service provider, and to receive from the cloud service provider the ranked search results determined based on the user model.
|
1. A method comprising:
detecting bursts of activity associated with a particular user, wherein a given one of the bursts of activity is indicated by an increased level of activity of the particular user above a threshold level of activity of that particular user and wherein the given one of the bursts of activity comprises one or more of opening, modifying and closing a local resource of a computing device associated with the particular user;
mapping the bursts to tasks performed by the particular user;
generating a user model specific to the particular user based on the mapping of bursts to tasks, wherein the user model comprises a hidden markov model and generating the user model comprises generating a first version of the user model and generating a second version of the user model, the first version of the user model being associated with a first set of services and the second version of the user model being associated with a second set of services, the first set of services being different than the second set of services; and
providing personalized query processing to the particular user based on the user model;
wherein providing personalized query processing comprises:
receiving one or more queries from the particular user;
sending the one or more queries and at least one of the first and second versions of the user model to one or more cloud service providers selected from a plurality of cloud service providers, wherein the one or more cloud service providers are selected based at least in part on one or more user classifications associated with the particular user, the one or more user classifications comprising at least one of a classification based on a role of the particular user in a given entity and a classification based on a location of the particular user; and
providing ranked search results from the one or more cloud service providers to the particular user responsive to the one or more queries and the at least one of the first and second versions of the user model.
16. An apparatus comprising:
a processing device having a processor coupled to a memory;
wherein the processing device is configured detect bursts of activity associated with a particular user, to map the bursts to tasks performed by the particular user, to generate a user model specific to the particular user based on the mapping of bursts to tasks, and to provide personalized query processing to the particular user based on the user model;
wherein a given one of the bursts of activity is indicated by an increased level of activity of the particular user above a threshold level of activity of that particular user;
wherein the given one of the bursts of activity comprises one or more of opening, modifying and closing a local resource of a computing device associated with the particular user;
wherein the user model comprises a hidden markov model;
wherein the processing device is further configured to generate the user model by generating a first version of the user model and generating a second version of the user model, the first version of the user model being associated with a first set of services and the second version of the user model being associated with a second set of services, the first set of services being different than the second set of services; and
wherein the processing device is further configured to provide personalized query processing by:
receiving one or more queries from the particular user;
sending the one or more queries and at least one of the first and second versions of the user model to one or more cloud service providers selected from a plurality of cloud service providers, wherein the one or more cloud service providers are selected based at least in part on one or more user classifications associated with the particular user, the one or more user classifications comprising at least one of a classification based on a role of the particular user in a given entity and a classification based on a location of the particular user; and
providing ranked search results from the one or more cloud service providers to the particular user responsive to the one or more queries and the at least one of the first and second versions of the user model.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
merging two different candidate tasks of one level of the burst tree into a single candidate task; and
merging a first candidate task of one level of the burst tree with another candidate task of another level of the burst tree.
9. The method of
10. The method of
11. The method of
receiving a given query from the user in a current time window;
obtaining a model parameter;
based on the model parameter, identifying a most likely task for the user in the current time window; and
based on the given query and the most likely task, ranking the search results for presentation to the user.
12. The method of
13. The method of
14. The method of
15. A computer program product comprising a non-transitory processor-readable storage medium having encoded therein executable code of one or more software programs, wherein the one or more software programs when executed by a processor of a processing device implement the method of
17. The apparatus of
18. The apparatus of
19. The apparatus of
20. The apparatus of
23. The method of
|
The present application claims the priority of U.S. Provisional Patent Application Ser. No. 61/311,653, filed Mar. 8, 2010 and entitled “Task Driven Context-Aware Search,” which is incorporated by reference herein.
The present invention relates generally to the field of information processing, and more particularly to techniques for processing user search queries in conjunction with computer-based searches for information.
Two important categories of computer-based searching are desktop search and web search. In desktop search, users search their personal desktop resources primarily for files they know exist but for which they have forgotten the exact storage locations and keywords. The search queries in this case are often referred to as “known item” search queries. Conventional desktop search systems such as Google Desktop, Microsoft Windows Desktop Search, and Apple Spotlight typically only support keyword searches that rank results by their relevance to the query. These desktop search systems generally do not consider user preferences, and personalized results are typically not provided. Most conventional web search systems also do not distinguish between different users, and instead rank search results according to the preferences of most users.
The “known item” search queries of desktop search can benefit from the use of a highly personalized search engine. See, for example, J. Chen et al., “Search your memory—an associative memory based desktop search system,” Proceedings of the 35th SIGMOD International Conference on Management of Data, Providence, R.I., USA, Jun. 29-Jul. 2, 2009, which is incorporated by reference herein. Techniques disclosed in this reference exploit semantic associations among resources by analyzing user activities to simulate human associative memory, and provide a personalized ranking scheme that utilizes these links, together with user personal preferences, to rank results by both relevance and importance.
Recently, web search systems have begun to model query contexts by mining searches or browsing logs (e.g. clickthrough data) in an attempt to personalize the search results. However, because such systems typically only consider query strings and simple clickthrough data, they fail to provide adequate personalization of the search.
Illustrative embodiments of the present invention provide improved search systems in which task driven user models are generated in a particularly accurate and efficient manner, thereby ensuring better personalization of search results in desktop search, web search and other categories of computer-based search.
In one aspect of the invention, a processing device of an information processing system is configured to detect bursts of activity associated with a particular user, to map the bursts to tasks performed by the user, to generate a user model based on the mapping of bursts to tasks, and to provide personalized query processing to the user based on the user model. The personalized query processing may involve determining how to process a query, or ranking search results for presentation to the user. By way of example, a query may be received from the user in a current time window, and a model parameter is obtained. Based on the model parameter, a most likely task for the user in the current time window is identified, and based the query, the most likely task, and user classification, search results are ranked for presentation to the user. The model parameter may be determined as a model parameter that best fits an observed activity log from a previous time window.
In another aspect of the invention, the processing device may be configured to communicate the user model to a cloud service provider, and to receive from the cloud service provider the ranked search results determined based on the user model.
In a further aspect of the invention, the processing device may be configured to generate one or more user classifications based on resources accessed by the user and the tasks performed by the user, and to provide personalized query processing to the user based on the user model and the one or more user classifications. For example, the processing device may be configured to route the query to a particular cloud service provider based on the one or more user classifications. Thus, there may be multiple classification schemes associated with particular users. A given classification may comprise an assignment of a single class name with respect to a corresponding classification scheme.
In a given one of the illustrative embodiments, the user model comprises a Hidden Markov Model. More specifically, the HMM may be of the form λ=(T, R, π, A, B), in which T and R are sets of tasks and resources respectively, π is an initial probability vector of tasks, A is a transformation matrix of tasks and B is an association matrix between tasks and resources.
The illustrative embodiments advantageously overcome the above-noted drawbacks of conventional approaches.
These and other features and advantages of the present invention will become more readily apparent from the accompanying drawings and the following detailed description.
The present invention will be described herein with reference to exemplary information processing systems and associated processing devices. It is to be appreciated, however, that the invention is not restricted to use with the particular illustrative system and device configurations shown. Moreover, the term “information processing system” as used herein is intended to be broadly construed, so as to encompass, for example, desktop systems or other personal computer systems, cloud systems, network systems, as well as other types of computer-based systems implementing personalized search functionality of the type disclosed herein.
In constructing the user model, the model generator 102 analyzes user activity logs stored in element 104 to discover the corresponding tasks. This is done in the present embodiment by separating the user activity logs into two parts, namely, a timestamp sequence and a resource sequence, which are stored in respective elements 106 and 108. The model is initialized by analyzing the pattern of access frequency for the user from the timestamp sequence. Then the model is optimized using the resource sequence. More specifically, there are four distinct operations applied in the model construction process: burst detection, burst refinement, burst-task mapping and task refinement. These operations are implemented in respective modules 110, 112, 114 and 116 of the model generator 102. The HMM generated by the model generator 102 in the present embodiment is applied to an access prediction module 120, which interacts with a cosine similarity ranking module 122. Both of the modules 120 and 122 interact with a context-aware searching interface 124.
An example of an HMM that may be generated by the model generator 102 is shown in
An HMM of the type shown in
One way to represent the user activity logs is as a sequence of accessed resources and corresponding timestamps. User activity logs represented in this manner are referred to herein as Simple Logs (SLs). By way of example, an SL with length l can be denoted as SL1=((r1, t1), . . . , (rl, tl)), riεR.
Another possible representation of the user activity logs would record not only the resource and timestamp of an activity, but also the type of activity, e.g., opening and closing event. User activity logs represented in this manner are referred to herein as Classified Logs (CLs). As an example, if resource r is opened at time t1 and closed at time t2, the two activities may be denoted as (r, t1) and (r, t2)′ respectively. In this example, it is assumed that all CLs are “complete.” In other words, the resource must be closed in the logs as long as it has been opened at some earlier time. Clearly, a CL contains more information than an SL. When constructing the user activity model, the extra information in the CL can be used to optimize the model. However, some activity logging mechanisms may fail to detect the opening and closing events of a resource access. Therefore, the user activity log type is assumed to be SL unless otherwise specified.
The manner in which the system 100 processes user queries will now be described in greater detail. Assume a user submits a query q at time k of window W′, and the user activity log in the previous window W is denoted as SLW=((r1t1)W, . . . , (r|W|, t|W|)W). The log in W′ before time k is SLW′k=((r1, t1)W′, . . . , (rk, tk)W′). The goal of the context-aware search may be to rank all rεR by their relevance to the query q and the task TW′k+1. This process may include the following operations:
1. Find the model parameter λW that best fits the observed log in W. In other words, find λW that maximizes p(λ|SLW).
2. Given λW and SLW′k, compute the task that the user is most likely in at time k+1, i.e., TW′k+1.
3. Given TW′k+1 and the query q, rank all rεR by their relevance to the query and the task TW′k+1.
Additional details associated with the performance of each of these query processing operations will be provided elsewhere herein. However, the manner in which the HMM is constructed in model generator 102 will first be described in greater detail.
As indicated previously, model construction in the
Burst Detection
The term “burst” in this embodiment refers to a time period which exhibits an increased level of user activities. It starts with a sharp increase in user activities and ends when the user activities return to a normal level. We have found that a burst of user activities usually indicates the start of a new task, and may also indicate a change in user classification such as location. Other types of bursts of user activity may be detected in other embodiments.
At 1 pm Mike started to do some investigation on Human-Computer Interaction by reading some papers and web pages. That was the first burst of his activities. At around 1:30 he felt tired so he took a nap. There were no user activities when he was asleep. Half an hour later he woke up and began to work on his demo program. He started his editor program and opened several documents for reference. At 2:30 he began to write code. He focused on programming so he opened fewer documents at that time. At 3 he found a problem with his system API. Therefore he searched his PC and read some documents. Finally the problem was solved at 3:30. At 4 Mike received an important email from his co-author, who found a problem in their paper. Mike had to pause in his current task. He read the paper which was mentioned in his co-author's email and understood the problem. He remembered that the solution was in a web page. So he accessed the Internet and found that web page. Then he replied to his co-author at 4:10. After that Mike made himself a cup of coffee and had some relaxation time, so his activity level was reduced. Then Mike continued to write code. He started his editor program again and opened his source code. There were quite a few activities from 4:30 to 4:45. Finally he finished his coding job at 5.
In the above example, Mike conducted three primary tasks in that afternoon. The first one was the investigation on Human-Computer Interaction, which started at 1 and ended at 1:30. The second task was programming. This task started at 2 and was paused at 4. At 4:30 the programming task was resumed and finally finished at 5. The last task was replying to the email, which lasted from 4:00 to 4:10. Every time a new task is started or resumed, there is a burst of activities. A burst can be part of a task, or a complete task. The burst detection module 110 is configured to discover tasks from the stream of user activities.
The intensiveness threshold of a burst may greatly affect its length. The more intensive the activities are, the shorter the burst is. In the above example, assume that when Mike started to work on his program from 2 to 2:30, he opened 3 resources per minute. Further assume that as he was writing code from 2:30 to 3, he opened 1 resource per minute. If the threshold is 3 resources per minute, the burst is just half an hour (2-2:30). If the threshold of a burst is 1 resource per minute, the burst lasts much longer. Bursts may therefore be viewed as having different levels of intensiveness of user activity. Bursts of higher level are generated with lower threshold.
High-level bursts are covered by low level bursts in
Since any high-level burst should be covered by one low-level burst, the bursts of different levels can be modeled with a tree structure, which is referred to herein as a “burst tree.”
Burst detection is only the first step of building the user model. The next step is to analyze the bursts of different levels to find tasks.
Burst Refinement
The goal of the burst refinement is to cluster bursts by their related tasks. A cluster of bursts is referred to herein as a Candidate Task (CT). A CT in the present embodiment is a continuous period of time that covers one or multiple bursts of the same level. The user is supposed to work on just one task in a CT. Specifically, given a burst tree T, and where nl denotes a tree node n of level l in T, a CT of level l is defined as a set of nl that are continuous in time and are related to the same task.
Different CTs may be composed by bursts of different levels. Every leaf node in a burst tree can be treated as a CT according to the definition above. Then these CTs are clustered by their related tasks. After clustering, the set of CTs are refined. In the case of Mike, burst B3a and B3b form a CT of level 3. Burst B2a forms a CT of level 2.
With reference again to the burst tree of
1. Different CTs do not overlap in the timeline. In the burst tree of
2. The CTs and their descendants must cover all leaf nodes of the burst tree. This means that the user must be working on one or several tasks in a burst. The user cannot be just idling while performing many activities intensively.
3. A tree node is recognized as a CT if all of its descendants relate to the same task. In
The basic idea of burst refinement is to traverse the burst tree and identify the bursts of the same task. In the present embodiment we utilize an aggregation clustering technique which clusters objects in a bottom up way. Every leaf node is initially treated as a CT. Then if two CTs of the same level relate to the same task, they are merged. A simple algorithm may be used to detect the task of a CT. In most cases a task is bound with specific resources. Therefore, if most (e.g., 50%) of the resources in a CT are covered by another CT, they are assumed to belong to the same task.
A concern is that this merging strategy may be biased to larger CTs, i.e., CTs that cover more resources. Smaller CTs may be “devoured” by larger ones as a result of burst refinement. Accordingly, the larger CTs may grow bigger and bigger and “devour” more CTs. To prevent CTs from growing too fast, the merging threshold may be increased with the size of the larger one of the two CTs. Therefore, the threshold increases as well. An exemplary merging algorithm is as follows.
TABLE 1
An Example of a Burst Merging Algorithm
Name: MERGE
Input: CT c1 and c2 ; Average Size M ; Threshold δ
Output: YES or NO // Merge them or not
1
IF Size_of(c2) > Size_of(c1)
2
SWITCH(c1, c2) // Make sure that c1 is larger in size
3
R1 = Resource_set_of(c1)
4
R2 = Resource_set_of(c2)
5
IF (Size_of(c1)≦ A) // the size of c1 is average
6
δ = 50%
7
ELSE
8
δ = 50% * Size_of(c1)/A
//The threshold increases while the level decreases
9
IF (l ≧ 100%)
10
l = 100% // l is bounded with 0-1
11
IF COVERS(cl, c2)≧ l // c1 covers most of resources of c2
12
OUTPUT YES
13
ELSE
14
OUTPUT NO
An exemplary burst refinement algorithm that incorporates the burst merging algorithm of Table 1 is shown in Table 2 below. This burst refinement algorithm uses the following basic tree operations that are applied to a given node n of a burst tree T: Children(n) returns all the children of tree node n, Left_most(n) returns the left-most child of tree node n, and Right_sibling(n) returns the right sibling of tree node n if it exists and otherwise it returns the empty set φ.
TABLE 2
An Example of a Burst Refinement Algorithm
Name: Refine
Input: Node n of Burst Tree T
Output: Set of CTs CT
1
n1=Left_most(n)
2
IF (n1 = φ)
3
RETURN n // n is a leaf node
4
n2=Right_sibling(n1)
5
OUT = φ // The output
6
WHILE (n2 ≠ 0) DO
7
WHILE (Refine(n1) = {n1} && Refine(n2) = {n2})
8
// The CTs of n1 and n2 respectively
9
OUT = OUT ∪ {{n1},{n2}}
10
IF MERGE(n1,n2) = YES
11
OUT = OUT ∪ {n1,n2} − {{n1},{n2}}
12
n1 = n2
13
n2=Right_sibling(n1)
14
OUT = OUT ∪ {Refine(n1), Refine(n2)}
15
n1 = n2
16
n2=Right_sibling(n1)
17
IF (OUT = Children(n))
18
OUT = {n}
19
OUTPUT OUT
As shown in Table 2, the burst refinement algorithm iteratively calculates the CTs of a burst tree T. In the first step, the CTs of all the subtrees of T are output. Then some set of CTs are merged if the conditions are satisfied. Consider as an example the CTs in the burst tree of
Burst-Task Mapping
In the burst refinement step, the final output is the set of CTs. As mentioned above, a CT represents a consecutive length of time that the user works on a single task. However, two non-consecutive CTs may relate to the same task. Sometimes the user does switch back and forth between different tasks. The goal of the burst-task mapping is to merge two non-consecutive CTs which may relate to the same task.
The basic idea of the mapping step is similar to the burst refinement step. If two CTs share most of their resources, they may belong to the same task. The difference is that in the burst refinement step, only bursts of the same level are merged. The threshold decreases while the level of the bursts increases. In the mapping step, the CTs are of different levels.
Task Refinement
After the burst-task mapping step, tasks are refined in the task refinement step. This latter step represents tasks as sets of resources. The probability that resource r is related to task t, i.e., p(r|t) can be approximately calculated as
p(r|t)=n(r,t)/n(t)
where n(r, t) represents the number of occurrences of resource r in task t and n(t) is the total number of occurrences of all resources in task t.
With these probabilities, one can initialize the association matrix B of the HMM. By way of example, random or uniform initial estimates may be used for the transfer matrix A and the initial distribution π. More specifically, the transfer matrix A may be set to a random or uniform diagonal matrix, and the initial distribution π may be set to a random or uniform distribution. By running the Baum-Welch algorithm with the initial model λ=(T, R, π, A, B) and the observed resource sequence derived from the user activity log, a locally optimized HMM=λ′=(T, R, π, A′, B′) is obtained. Then, the optimized HMM can be used to provide the context-aware ranking for individual users as will now be described.
Context-Aware Ranking
In an exemplary context-aware ranking based on the above-described HMM, the top ranked items denote desktop resources that are most likely to be accessed by the given user at the very moment when the user submits the query. The “context” refers to activities the user performed in the time sliding window W. The size of W varies with different users. It can be a couple of days or just several hours. It is typically very rare that the user's current behavior is affected by his activities months ago.
The activities of the user in time window W are recorded as the inputs of the process comprising the above-described burst detection, burst refinement, burst-task mapping and task refinement steps. In this embodiment, it is assumed that the user model is not changed in the next sliding window W′. Therefore it is possible to predict the behavior of the user given the user log in W′. By way of example, further assume the model trained in W is denoted as λW and Lw′k stands for an observed user activity sequence of length k in W′. By using the Viterbi algorithm, it is possible to get the corresponding task sequence TW′k that maximizes p(TW′k|λW, LW′k), i.e., the probability of the task sequence of length k given the model and the user log. As a result, the current task of the user, i.e., the k-th task in TW′k, can be estimated. When the user reaches the end of W′, the model will be re-calculated by running the four-step process again with the log of W′.
The context-aware ranking may be implemented as follows. When the user submits query q after performing k activities in window W′, the user model estimates his current task tW′k as mentioned above. Then the next task tW′k+1 can be predicted with the transfer matrix A of λW. The next step is to get the probability that resource r is related to the (k+1)-th task, i.e., p(r|tW′k+1), from the matrix B of λW. This probability is used to rank the result sets with the conventional similarity score. To balance the impact of the access probability and similarity score, a balancing parameter α is used. The final rank score F(r, q) of resource r to the query q is computed as follows:
F(r,q)=α*p(r|tW′k+1)+(1−α)*s(r,q)
Here s(r, q) represents the cosine similarity score, and α is between 0 and 1. If α is set to 1, the results are only ranked by their probability scores. If α is set to 0, they are only ranked by the similarity scores. In other cases, both scores are used. As a default setting, a value of α=0.5 may be used. We have generally found that in certain embodiments, as α is increased above the default setting, the precision is significantly improved and the recall is also slightly improved as well. This indicates that the context-aware ranking is more effective in “guessing” the real needs of the user.
When the user submits a query, the system first retrieves desktop resources containing at least some of the query terms from the local full-text index. The result set is then ranked by the number of words the resource contains, denoted as R=(r1, r2, . . . , rp). Assume the user is working on task tW′k. One possible implementation of the context-aware ranking algorithm may operate as follows:
TABLE 3
An Example of a Context-Aware Ranking Algorithm
Name: Context-aware Ranking
Input: HMM λW, user log LW′k, balancing parameter ε , result set
R = (r1,r2, . . . , rp)
Output: Ranked list R′
1
Compute tW′k + 1 // The next task after the user submits the query
2
FOR i=1 TO p
3
Compute p(ri | tW′k + 1)
4
pmin = Min(p(ri | tW′k +1))
5
FOR i=1 TO p
6
IF p(ri | tW′k + 1) == 0 //Some resources are not related
7
p(ri | tW′k + 1)) = pmin // Smoothing
8
F(ri,q) = p(ri | tW′t + 1) * s(ri,q)ε
9
Normalize( F(ri,q))//Make sure that ΣiF(ri,q) = 1
10
Rank R′ by F(ri,q)
11
OUTPUT R′
The algorithm in Table 3 runs during the query. It might slightly increase the response time. But the delay can be minimized by controlling p. For example, p may be set to 10. In other words, only the top 10 results will be re-ranked when the user submits the query. They are shown in the first page of the result set. The next 10 results may be re-ranked when the user clicks a “next page” button.
A number of implementation issues arising in certain of the embodiments described above will now be addressed in greater detail.
Window Size
As mentioned above, the user model may be built on activities in a time sliding window. The behavior of the user in window W is estimated by the model trained from the previous window W′. This is based on the observation that a user's behavior is mainly subject to recent activities. Early activities typically have limited direct effect on his recent behavior. The length of the window may affect the ranking result. Generally speaking, the more complex the user's task is, the longer the window should be. For example, when the user is writing a doctoral thesis, the user might frequently read documents written weeks ago. In this case the size of the window should be larger. Usually desktop users tend to read documents that are read or written in the past few days.
The window size can have other impacts. For example, the model is typically updated when the window is coming to an end. If the window size is too small, the model will be updated frequently, which may affect the user experience. In a typical embodiment, it may only take a couple of minutes to update the model given a log of one day. The cost increases with the window size and the number of resources being opened. The model can be updated when the desktop is not heavily loaded, e.g., at lunch time or at midnight.
The window size may also be affected by the user's habits. Some users do not like to do one task continuously. They prefer to switch between different tasks. The window size should be larger for these users.
Classified Logs
The examples described above are based on SLs, which do not contain the “opening” and “closing” events of resources. The extra information in CLs can be used to improve the performance of the context-aware search in two ways.
First, the extra information in CLs can be used to refine bursts. Sometimes a burst may comprise multiple tasks. In the burst refinement step, bursts of different levels are transformed into CTs. However, if a burst of the highest level contains multiple tasks, it is impossible to separate the burst into several CTs. CLs may solve this problem. We have observed that when all opened resources are closed, or when a significant change to the user classification occurs, such as the user moving to a new location, the current task is probably completed and a new task is probably about to begin. Following this observation, it is possible to find the end of a CT inside a burst.
Second, the extra information in CLs can improve the effectiveness of the merging algorithm in Table 1, which is used to merge similar CTs. In the case of SLs, two CTs are merged if they cover similar resources. Sometimes this condition is too strong. For instance, when a researcher is writing a paper, the researcher may refer to different resources. The researcher's activities relating to the task of writing the paper are distributed in two bursts: the beginning and the end of the writing. The two bursts are unlikely to be merged because most of their resources are different. The problem of the merging strategy is that not all resources should be taken into consideration. We have observed that the longer a resource is opened, the more important it might be. It is reasonable because the opened resource attracts more attention from the user than other ones. In the above case, the paper is the most important resource for both bursts. Based on this observation, the merging strategy can be changed to the following: if the most important resources of two bursts are the same, these two bursts should be merged.
Transfer Matrix A and Initial Probability Vector π
As mentioned previously, it is reasonable to use either random or uniform initial estimates of the transfer matrix A and the initial probability vector π. However, the user model is updated when the sliding window is finished. It is possible to use the optimized model parameters in the first window as the initial estimates of the next window. Suppose W and W′ are two consecutive windows. Before the task refinement step, the initial estimates of model parameters in W are denoted as λW(T, R, πW, AW, BW). After the task refinement step, the model parameters are λ′W(T, R, π′W, A′W, B′W). BW is the output of the burst-task mapping step. AW is a diagonal matrix and πW is a uniform vector. The optimized values of A and π in window W can be used as initial estimates in window W′, i.e.
AW′=A′W
πW′=π′W
Other exemplary systems implementing aspects of the invention will now be described in greater detail.
The backend portion 604 includes a full text index module 612 and a user activity monitor 614. Content associated with desktop resources such as applications 615, browser web cache 616 and email messages 617 is indexed by the full text index module 612, which may comprise a conventional module such as Lucene. The full text index module is also responsible for generating search results with ranking scores for each query. The user activity monitor 614 collects all user activities from the indexed content. These activities are used synchronously by a context estimator 620 and asynchronously by a model builder 622 which generates a user model 624. The latest activities are cached in memory for current task context and are flushed to activity logs 625 periodically or when the system is closed. The user activity monitor 614 can track both system-level and application-level activities. System-level activities include all file system operations such as creating or deleting a file. There may be different types of application-level activities (e.g., click a web page) and these may be collected using application plug-ins.
The model builder 622 analyzes the user activity logs 622 and produces the user model 624 in the manner previously described. The context estimator 620 computes the possible user context of each query according to the user model, any available user classifications, and the user's recent activities at the query time. By combining the context score from the context estimator and the query score from the full text index module, the system 600 is able to generate the user context-aware ranking results, which are most relevant to the current status of the user.
Another aspect of the invention relates to implementing context-aware search techniques, such as those described above, in a network cloud. An embodiment of this type will now be described with reference to
Referring now to
In the system 700, a model 710 of the user 703 is computed by the model builder 705 at regular intervals, referred to as update cycles, based on user information gathered by the user information collector 704. A number of different versions 712 of the model 710 may be generated, such as one version for each of the update cycles. The user information on which the model 710 and its various versions 712 are based may include, for example, information associated with local applications 714 running on a personal computer (PC) 715 as well as information associated with local applications 716 running on one or more other devices 717 of the user 703. The current user model 710 generated by model builder 705 and any other versions 712 of that model are stored in the user model store 706.
The client 702 or elements thereof such as PC 715 or other devices 717 may be viewed as examples of what are more generally referred to herein as “processing devices.” A given such device generally comprises at least one processor and an associated memory, and implements functional modules for controlling some aspects of the context-aware search functionality of the system 700.
Also included in the system 700 are cloud service providers of respective cloud services denoted as Service A, Service B and Service C. Services A and B are part of a network 720, and Service C is part of a network 722. The networks 720 and 720 may each comprise a wide area network (WAN), a local area network (LAN), a satellite network, a telephone or cable network, or various portions or combinations of these and other types of networks, in any combination. The model synchronizer 707 can provide an appropriate version of the user model 710 to each of the Services A, B and C as indicated generally at 710A, 710B and 710C, respectively. Thus, the same general user model 710 constructed by client 702 can be shared by all of the cloud services, thereby allowing the user to have the same personalized context-aware search experience with each such service. System performance and efficiency are improved because each cloud service is not burdened with the costs of constructing and updating a distinct model for each of their users.
Additional details regarding the user information collector 704, model builder 705, user model store 706 and model synchronizer 707 will now be described.
The user information collector 704 generally gathers all pertinent information regarding the user 703 and his activities within the system. This user information may include, for example, topics of interest selected by the user from predefined templates, explicit user feedback such as tags assigned to documents by the user, implicit feedback including logs associated with file access, email and messaging, any documents written or read by the user and the associated content of such documents.
As indicated above, the model builder 705 computes a user model 710 in every update cycle. Each such user model may have an associated timestamp indicating when it was created, and these timestamps may serve as an index of the various versions 712 of the models stored in the user model store 706. The user models may comprise respective HMMs generated in the manner described elsewhere herein. Different types of user models may be provided to each of the different cloud service providers, as illustrated by elements 710A, 710B and 710C in the figure, depending on the particular service to be provided. Indices other than timestamps could be used to identify particular ones of the model versions 712 in the user model store 706. Examples of alternative indices suitable for identifying different model versions may include documents accessed, important keywords, special events, etc.
The model synchronizer 707 sends user models 707A, 707B and 707C to the respective cloud services A, B and C implemented in networks 720 and 722. It can provide functionality such as privacy control, allowing the user to designate which user models if any may be made accessible to the respective cloud services. The model synchronizer 707 can use standard query language to retrieve models from the user model store 712. For example, if the store is a relational database system, it may use SQL. The model synchronizer also handles all of the connections with remote servers of the networks 720 and 722. It may be configured to support multiple protocols such as TCP/IP, sockets, web services, etc. The model synchronizer allows the model generation and storage processes of the client 702 to be independent of the various types of cloud services.
The personalized rank list may be based on a combination of a similarity score for the resource and a relevance score. For example, a score S of a document in the result list may be given by
S=α*Relevance_Score+(1−α)*Similarity_Score.
The similarity score indicates how this resource is related to the query, and the relevance score indicates how this resource is related to the current task of the user. In this way the user can determine the resource which is most relevant to his current status.
The memory 1002 may be viewed as an example of what is more generally referred to herein as a “computer program product” having executable computer program code embodied therein. Such memories may comprise electronic memories such as random access memory (RAM), read-only memory (ROM) or other types of memory, in any combination. The computer program code when executed in a processing device implementing context-aware search causes the device to perform corresponding operations associated with functions such as user activity monitoring and user model generation. One skilled in the art would be readily able to implement such software given the teachings provided herein. Other examples of computer program products embodying aspects of the invention may include, for example, optical or magnetic disks.
The network interface circuitry 1004 may comprise a transceiver for communicating with other processing devices over a network.
It is to be appreciated that the particular arrangements of system and device components shown in FIGS. 1 and 6-10 are presented by way of illustrative example only, and numerous alternative arrangements of clients, servers, networks, processors, memories, interface circuitry or other components may be used to implement an information processing system in accordance with the invention.
It should be noted that alternative embodiments of the invention may use multiple user activity logs of different types. For example, the above-described CLs may be supplemented with another type of user activity log that incorporates information regarding the location and movements of the user. Such an arrangement would allow other types of context to be considered in the context-aware search process, possibly by allowing burst detection to depend not just on an increase of user activities, but also on a change of location. More generally, a user activity log may be configured to indicate a user entering and/or leaving any particular state that may be of interest in characterizing the user.
Other embodiments may derive one or more “user classifications” and “user interest classifications” based on the resources accessed and the tasks carried out. These classifications could then be considered in setting window size, ranking search results, or performing other steps in a context-aware search process. As one example, the above-noted score S of a document in the result list may be modified as follows:
where the values αi and Relevance_Score_i are associated with an i-th one of the different classifications. As another example, the “user classifications” or “user interest classifications” may be used to route queries to specific network clouds based on similar classifications of cloud contents.
In these and other embodiments which utilize one or more classifications, there may be multiple classification schemes associated with the system users. For example, a given classification may comprise an assignment of a single class name with respect to a corresponding classification scheme. A classification scheme may comprise a set of mutually-exclusive class names and will also typically include a definition of when they are applicable, or how they are to be calculated. Examples of different classification schemes for users include user location, user role in the company, etc.
It should again be emphasized that the above-described embodiments of the invention are presented for purposes of illustration only. Many variations and other alternative embodiments may be used. For example, although described in the context of particular system and device configurations, the techniques are applicable to a wide variety of other types of information processing systems and processing devices. In addition, any simplifying assumptions made above in the course of describing the illustrative embodiments should also be viewed as exemplary rather than as requirements or limitations of the invention. Numerous other alternative embodiments within the scope of the appended claims will be readily apparent to those skilled in the art.
Chen, Jidong, Guo, Hang, Reiner, David Stephen
Patent | Priority | Assignee | Title |
10013433, | Feb 24 2015 | Canon Kabushiki Kaisha | Virtual file system |
10169467, | Mar 18 2015 | Microsoft Technology Licensing, LLC | Query formulation via task continuum |
10579507, | Aug 14 2006 | AKAMAI TECHNOLOGIES, INC | Device cloud provisioning for functional testing of mobile applications |
11086949, | Feb 25 2021 | FMR LLC | Systems and methods for intent guided related searching using sequence semantics |
11488270, | Dec 07 2016 | Tata Consultancy Services Limited | System and method for context and sequence aware recommendation |
11663201, | Apr 29 2017 | GOOGLE LLC | Generating query variants using a trained generative model |
9141908, | Jun 29 2012 | EMC IP HOLDING COMPANY LLC | Dynamic information assembly for designated purpose based on suitability reasoning over metadata |
Patent | Priority | Assignee | Title |
20020169764, | |||
20070112730, | |||
20080005068, | |||
20080005313, | |||
20080195586, | |||
20090049010, | |||
20090164395, | |||
20100131443, | |||
20100205541, | |||
20110022476, | |||
20110208730, | |||
EP1050830, | |||
GB2434230, | |||
WO2007064639, | |||
WO2007130716, | |||
WO2009138755, |
Date | Maintenance Fee Events |
Nov 20 2017 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Nov 17 2021 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Jun 24 2017 | 4 years fee payment window open |
Dec 24 2017 | 6 months grace period start (w surcharge) |
Jun 24 2018 | patent expiry (for year 4) |
Jun 24 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 24 2021 | 8 years fee payment window open |
Dec 24 2021 | 6 months grace period start (w surcharge) |
Jun 24 2022 | patent expiry (for year 8) |
Jun 24 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 24 2025 | 12 years fee payment window open |
Dec 24 2025 | 6 months grace period start (w surcharge) |
Jun 24 2026 | patent expiry (for year 12) |
Jun 24 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |