U.S. patent application number 15/666474 was filed with the patent office on 2017-11-16 for identifying entities based on interactivity models.
The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Srikrishna GALI, Samuel KOPPES, Paul LO, Joseph MASTERSON, Neal MYERSON.
Application Number | 20170329806 15/666474 |
Document ID | / |
Family ID | 52741179 |
Filed Date | 2017-11-16 |
United States Patent
Application |
20170329806 |
Kind Code |
A1 |
KOPPES; Samuel ; et
al. |
November 16, 2017 |
IDENTIFYING ENTITIES BASED ON INTERACTIVITY MODELS
Abstract
An interactivity system is provided that tracks interactivity
between a target entity and participant entities and identifies
entities whose interactions satisfy an interactivity criterion. The
interactivity system maintains for the target entity interactivity
models between the target entity and each participant entity, with
each interactivity model modeling the interactions between the
target entity and that participant entity. The interactivity system
dynamically updates the interactivity models as notification of
interactions are received. Upon receiving a query that specifies an
interactivity criterion, the interactivity system analyzes the
interactivity models to determine whether the interactivity
criterion is satisfied. When an interactivity criterion is
satisfied, the interactivity system sends a response to the query
indicating that the interactivity criterion is satisfied along with
the identity of the entity that satisfies the interactivity
criterion.
Inventors: |
KOPPES; Samuel; (Bothell,
WA) ; MYERSON; Neal; (Seattle, WA) ; GALI;
Srikrishna; (Redmond, WA) ; LO; Paul; (Mill
Creek, WA) ; MASTERSON; Joseph; (Renton, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Family ID: |
52741179 |
Appl. No.: |
15/666474 |
Filed: |
August 1, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14939722 |
Nov 12, 2015 |
9753953 |
|
|
15666474 |
|
|
|
|
14042582 |
Sep 30, 2013 |
9229976 |
|
|
14939722 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/212 20190101;
G06Q 50/01 20130101; G06F 16/245 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30; G06Q 50/00 20120101 G06Q050/00; G06F 17/30 20060101
G06F017/30 |
Claims
1. A method performed by a computing system for analyzing
interactivity between a target entity and participant entities, the
method comprising: receiving indications of interactions between
the target entity and participant entities; for at least some of
the participant entities, maintaining an interactivity model for
the target entity and each participant entity based on the
interactions between the target entity and that participant entity;
receiving a query that specifies an interactivity criterion;
analyzing interactivity models to determine whether the
interactivity criterion is satisfied; and when the interactivity
criterion is satisfied, sending a response to the query indicating
that the interactivity criterion is satisfied.
2. The method of claim 1 wherein the interactivity model for a
participant entity includes totals of interactions between the
target entity and that participant entity covering multiple time
frames.
3. The method of claim 2 wherein the total for the most recent time
frame is updated in real time as indications of interactions are
received.
4. The method of claim 1 wherein the interactivity criterion
specifies a characteristic of one or more interactivity models and
wherein the target entity satisfies the interactivity criterion
when the interactivity models exhibit the characteristic.
5. The method of claim 1 wherein the interactivity criterion
specifies a characteristic of an interactivity model and wherein a
participant entity satisfies the interactivity criterion when the
interactivity model of the participant entity exhibits the
characteristic.
6. The method of claim 5 wherein the response identifies the
participant entities that satisfy the interactivity criterion.
7. The method of claim 1 wherein interactivity models are generated
for multiple target entities and stored in a distributed
manner.
8. The method of claim 1 wherein each interaction has an
interaction type that is selected from a group consisting of an
electronic mail message, a text message, an instant message, a
scheduled meeting, a voice mail, a phone call, and a document
collaboration.
9. A computer-readable storage medium storing computer-executable
instructions for identifying an entity that satisfies an
interactivity criterion, the computer-executable instructions
comprising instructions that: generate a query that specifies the
interactivity criterion; identify entities as target entities for
responding to the query, a target entity having interactivity
models, each interactivity model modeling interactions between the
target entity and a participant entity; send a query for the
identified target entities; receive a response for the target
entities, a response for a target entity indicating whether the
interactivity criterion is satisfied by the target entity or one or
more participant entities based on analysis of the interactivity
models of the target entity; and generate query results based on
the entities that satisfy the interactivity criterion as indicated
by the received response.
10. The computer-readable storage medium of claim 9 wherein the
instructions that identify the entities as target entities include
instructions that compare a target profile to profiles of entities
and select those entities with a profile that matches the target
profile.
11. The computer-readable storage medium of claim 9 wherein the
interactivity models of an entity are stored separately from the
interactivity models of other entities such that the interactivity
models of the entities are stored in a distributed manner.
12. The computer-readable storage medium of claim 9 wherein the
interactivity model for a target entity and a participant entity
includes totals of interactions between the target entity and that
participant entity covering multiple time frames.
13. The computer-readable storage medium of claim 9 wherein the
interactivity criterion specifies a characteristic of one or more
interactivity models and wherein a target entity satisfies the
interactivity criterion when the interactivity models of that
target entity exhibit the characteristic.
14. The computer-readable storage medium of claim 9 wherein the
interactivity criterion specifies a characteristic of an
interactivity model and wherein a participant entity satisfies the
interactivity criterion when the interactivity model of the
participant entity exhibits the characteristic.
15. A computing system for tracking interactivity between entities,
the computing system comprising: one or more computer-readable
storage media storing computer-executable instructions for
accessing interactivity models, each interactivity model modeling
interactions between a target entity and a participant entity, the
interactivity models of the target entity being stored separately
from the interactivity models of other target entities in a
distributed matter; receiving indications of interactions between
the target entity and participant entities; upon receiving an
indication of an interaction between the target entity and a
participant entity, updating in real time the interactivity model
for the target entity and that participant entity; responding to a
query by: receiving the query that specifies an interactivity
criterion that specifies a characteristic of an interactivity
model; analyzing interactivity models to determine whether the
interactivity criterion is satisfied by one or more participant
entities, wherein a participant entity satisfies the interactivity
criterion when the interactivity model of the participant entity
exhibits the characteristic; and sending a response to the query
indicating whether the interactivity criterion is satisfied by one
or more participant entities, and when the interactivity criterion
is satisfied, identifying a participant entity that satisfies the
interactivity criterion; and determining whether another target
entity has participant entities that satisfy an interactivity
criterion by: sending a query for the other target entity, the sent
query specifying an interactivity criterion that specifies a
characteristic of an interactivity model; and receiving a response
to the sent query for the other target entity, the received
response indicating whether the interactivity criterion is
satisfied by one or more participant entities of the other target
entity, and when the interactivity criterion is satisfied,
identifying a participant entity that satisfies the interactivity
criterion; and a processor that executes the computer-executable
instructions stored in one or more computer-readable storage
media.
16. The computing system of claim 15 wherein the interactivity
models for the target entity are stored at a computing device of
the target entity.
17. The computing system of claim 15 wherein the interactivity
model for a target entity and a participant entity includes totals
of interactions between the target entity and that participant
entity covering multiple time frames.
18. The computing system of claim 17 wherein the total for the most
recent time frame is updated in real time as indications of
interactions are received.
19. The computing system of claim 15 wherein the sent query
specifies a target profile of another target entity.
20. The computing system of claim 15 wherein each interaction has
an interaction type that is selected from a group consisting of a
scheduled meeting, a voice mail, a phone call, and a document
collaboration.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 14/939,722, filed on Nov. 12, 2015, which is a
continuation application of U.S. patent application Ser. No.
14/042,582, filed on Sep. 30, 2013, granted as U.S. Pat. No.
9,229,976 on Jan. 5, 2016, which are incorporated herein in their
entirety by reference.
BACKGROUND
[0002] A social network consists of individuals and their
relationships to other individuals. For example, within a company,
the employees and their relationships to other employees, such as
being members of the same development team or the same management
committee, form a social network. Each of the employees may also
have relationships to their family members and other non-family
friends. Each relationship within a social network specifies a
direct relationship between two individuals, such as being members
of the same team. Individuals may also have indirect relationships
with other individuals. For example, Tom and Mary may not know each
other, but both Tom and Mary have a relationship with Jim. In such
a case, Tom and Mary would have an indirect relationship to each
other through Jim. The distance (number of relationships) between
two individuals within a social network is commonly referred to as
their "degree of separation." For example, Tom and Mary would have
two degrees of separation.
[0003] A social network that identifies individuals and their
relationships with other individuals can be automatically derived
from data stored by computer systems. Many individuals use their
computer systems to store indications of relationships to other
individuals. In particular, many software applications allow a user
to explicitly store names of others with whom the user has a
relationship. The names (or other identifiers such as electronic
mail addresses) of the other users are stored in address lists for
electronic mail programs, in contact lists for instant messaging
programs, in invitation lists for event organizing programs, and so
on. In addition, the names of the other users can be derived from
data that is not in an explicit list. For example, the names of
users can be derived from the to, from, and cc fields of electronic
mail messages, from meeting entries within a calendar, from letters
stored as electronic documents, and so on. Each of these other
users has a relationship, referred to as a direct relationship,
with the user regardless of the "closeness" of the relationship.
For example, a user may have a relationship with a co-worker and a
relationship with a worker at another company that was cc'd on the
same electronic mail message. In this example, the relationship
with the co-worker may be closer than the relationship with the
worker at the other company. The users with whom a user has a
relationship are referred to generally as "contacts" of that
user.
[0004] Valuable information can be derived from the mining of
social networks. For example, a salesperson in the sales department
of company may want to make a sales pitch to a target organization,
but that salesperson may not have any contacts within the target
organization. Traditionally, that salesperson would either make a
cold call to someone at the target organization or try to find
someone who can help facilitate such a contact, such as by asking
fellow employees in person or via email if they can help. The
making of a cold call has disadvantages because the person called
may not be the best person in the target organization to field such
a call or may simply not respond to such cold calls. The asking of
fellow employees also has disadvantages because the employee with
the best contact may not respond or may not even be asked. The
automatic mining of the social networks of the company can help
identify who has a relationship with someone at that target
company. Further, the automatic mining might also identify which
contact at the target organization has the most relationships with
employees of the company, which employee of the company has a
relationship with a contact of interest at the target company
(e.g., a purchasing manager), and so on.
[0005] Although valuable information can be mined from a social
network, the relationships automatically derived from data stored
by computer systems may be somewhat misleading. Continuing with the
example, a person in the mail room of the company may store in
their contact list the names and addresses of people to whom mail
is sent. That person's contact list may include the president of
the target organization, the purchasing manager of the target
organization, and so on. The automatic mining may identify that
that person has the strongest relationship with the target
organization, but, of course, that person would likely not be of
much help in facilitating an introduction at the target
organization.
SUMMARY
[0006] In some embodiments, an interactivity system analyzes
interactivity between a target entity and participant entities to
identify entities whose interactions satisfy an interactivity
criterion. The interactivity system receives indications of
interactions between the target entity and participant entities.
The interactivity system maintains for the target entity
interactivity models between the target entity and each participant
entity based on the interactions between the target entity and that
participant entity. An interactivity model provides a model of the
interactions between the target entity and a participant entity. To
identify entities whose interactions satisfy an interactivity
criterion, the interactivity system analyzes the interactivity
models of the target entity to determine whether the interactivity
criterion is satisfied.
[0007] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used to limit the scope of the claimed
subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 is a block diagram illustrating example interactivity
models in one embodiment of the interactivity system.
[0009] FIG. 2 illustrates an interactivity graph represented by the
interactivity models of FIG. 1.
[0010] FIG. 3 is a flow diagram that illustrates the tracking of
interactions between entities in some embodiments.
[0011] FIG. 4 is a block diagram illustrating components of the
interactivity system in some embodiments.
[0012] FIG. 5 is a flow diagram that illustrates the processing of
a receive notification component for an electronic mail message of
a client component in some embodiments.
[0013] FIG. 6 is a flow diagram that illustrates the processing of
a refresh models component of a client component in some
embodiments.
[0014] FIG. 7 is a flow diagram that illustrates the processing of
a refresh models component for electronic mail messages of a client
component in some embodiments.
[0015] FIG. 8 is a flow diagram that illustrates the processing of
a receive query component of a server component in some
embodiments.
[0016] FIG. 9 is a flow diagram that illustrates the processing of
a process target query component of a client component in some
embodiments.
[0017] FIG. 10 is a flow diagram that illustrates the processing of
a process participant query component of a client component in some
embodiments.
DETAILED DESCRIPTION
[0018] A method and system for tracking and analyzing interactivity
between entities is provided. In some embodiments, an interactivity
system maintains interactivity models that model the interactions
between entities. The interactions between entities may include,
for example, electronic mail messages, text messages, instant
messages, scheduled meetings, voice mails, phone calls, document
collaboration efforts, and so on. For each entity, the
interactivity system may maintain an interactivity model for each
participant entity that the entity interacts with. For example, if
an entity exchanges electronic mail messages with three other
entities, then the interactivity system may maintain for that
entity a separate interactivity model for each of the three
participant entities. Each interactivity model may model the types
of interactions, number of interactions, time frames of
interactions, sizes of interactions, quality of interactions (e.g.,
based on number of recipients), and so on. Therefore, one
interactivity model may indicate that the entity and a participant
entity interact several times a day, whereas another interactivity
model may indicate that the entity and another participant entity
interacted frequently a year ago but not recently. The
interactivity system may maintain the interactivity models
dynamically or in real time as indications of interactions are
received. For example, when an entity sends an electronic mail
message to a participant entity, the interactivity system receives
an indication of the electronic mail message and then updates that
entity's interactivity model for that participant entity.
Similarly, when that entity receives an electronic mail message
from that participant entity, the interactivity system receives an
indication of that electronic mail message and then updates the
entity's interactivity model for that participant entity.
[0019] In some embodiments, the interactivity system supports the
identifying of interactivity models that satisfy an interactivity
criterion to identify entities of interest. The interactivity
criterion may specify characteristics of one or more interactivity
models. For example, a salesperson with a company may know that
Kate Smith is the purchasing manager within a target organization
and may want to find someone within the company who has recently
interacted with Kate. The salesperson would submit to the
interactivity system a query that specifies an interactivity
criterion, such as "interacted with Kate Smith of the target
organization at least five times in the last year and at least once
in the last month" or "interacted with Kate Smith of the target
organization using two different types of interactions in the last
month." The query may be expressed in various forms such as in a
declarative form (e.g., SQL like), a procedural form (e.g., a short
program), a natural language form, and so on. The interactivity
system may then search the interactivity models of target entities
to identify those entities who satisfy the interactivity criterion.
Continuing with the example, the target entities may be all the
employees of the company or just those employees who match a target
profile, such as being above a certain managerial level. Upon
identifying the employees that satisfy the interactivity criterion,
the interactivity system provides the names of those employees to
the salesperson, who can then contact those employees seeking an
introduction to Kate. The use of an interactivity criterion allows
a user to define the characteristics of interactions that are of
interest. For example, if the salesperson wants to discuss a
current issue with someone from the target organization, then the
interactivity criterion may indicate that recent frequent
interactions are important. In contrast, if the salesperson wants
to discuss an ongoing issue, then the interactivity criterion may
indicate that sustained, albeit not frequent, interactions are
important.
[0020] In some embodiments, the interactivity system may store the
interactivity models in a distributed manner. For example, the
interactivity models between an entity and each of the participant
entities that the entity interacted with may be stored at a
computing device of that entity. Thus, each entity may have an
interactivity model repository that stores an interactivity model
for each of its participant entities. When the interactivity system
receives a query from a user, it may send the query to the
computing device of the target entities, which may be all or a
subset of the entities. Upon receiving a query, the computing
device of a target entity analyzes its interactivity models to
identify which entities, the target entity or one or more of the
participant entities, satisfy the interactivity criterion. The
computing device of the target entity then sends a response
identifying the entities that satisfy the interactivity criterion.
After receiving the responses, the interactivity system generates
results for the query from the responses and provides the results
to the user. The interactivity system may apply some post-response
processing to generate the results, such as sorting or filtering.
Also, the response may include the interactivity models of
participant entities to support a more detailed post-response
processing, such as which target entity had the most interactions
with a certain participant entity in the last week. Although the
interactivity models may be stored in a distributed manner, they
may also be stored in a central repository or stored in multiple
repositories that each store the interactivity models for multiple
entities.
[0021] In some embodiments, the interactivity system may maintain
separate interactivity models for each interaction type or maintain
combined or aggregate interactivity models. For example, the
interactivity system may maintain separate interactivity models for
interactions via electronic mail and voice mail. Alternatively, the
interactivity system may aggregate interactions of different types
into a combined interactivity model.
[0022] In some embodiments, the interactivity system may be
implemented with a client-server architecture. In such an
architecture, a server component manages receiving queries from
users, sending the queries to client components of the computing
devices of the target entities, receiving the responses from those
computing devices, generating results from the responses, and
providing the results to the user. The interactivity system may
also be implemented with a peer-to-peer architecture. In such an
architecture, the computing devices of the entities would be peers
that send queries to the peers and receive responses from the
peers.
[0023] The interactivity system may use a variety of techniques to
model the interactions between entities. For example, the
interactivity system may model the interactions by the number of
interactions between an entity and a participant entity during
different time frames (e.g., today, this week, this month, and this
year). The interactivity system may also maintain separate counts
based on whether the entity or the participating entity initiated
the interaction. So, in the case of electronic mail messages, the
interactivity model may indicate the number of electronic mail
messages sent by the entity to a participant entity and the number
of electronic mail messages sent by the participant entity to the
entity. If the interactivity system maintains a combined
interactivity model for an entity, the interactivity system may
weight the counts of different interaction types differently. For
example, the interactivity system may give more weight to a text
message than an electronic mail message.
[0024] The interactivity system may also use various scoring
techniques to represent different characteristics of the
interactivity models. For example, an interactivity model may
include a recency score and a longevity score. The recency score
would indicate how recently an entity and a participant entity
interacted, whereas a longevity score would indicate how
consistently the entity and that participant entity interacted over
time. The interactivity model may include a quality score to
indicate the quality of the interactions. For example, an
electronic mail message to 50 recipients may have a lower quality
than an electronic mail message sent to only one recipient.
Although a single score could be used to characterize the
interactivity between entities, a single score would not be
effective to differentiate the different characteristics.
[0025] FIG. 1 is a block diagram illustrating example interactivity
models in one embodiment of the interactivity system. The
interactivity models 100 include interactivity models 110 for Bob,
interactivity models 120 for Eric, interactivity models 130 for
David, and interactivity models 140 for Carol. The interactivity
models 110 for Bob include interactivity model 111 and
interactivity model 112. The interactivity model 111 models the
interactions between Bob and David. The interactivity model 111 for
Bob tracks the interactions sent from David to Bob and the
interactions sent from Bob to David separately. The interactivity
models store the counts of interactions for the current day, the
current week, the current month, and the current year. The
interactivity model 111 indicates that Bob sent to David 0, 1, 2,
and 50 electronic mail messages during each of the time frames, and
that Bob received from David 0, 0, 0, and 3 electronic mail
messages during each of the time frames. The interactivity model
131 for David tracks the same interactions with Bob, but with the
to and from counts interchanged.
[0026] FIG. 2 illustrates an interactivity graph represented by the
interactivity models of FIG. 1. The interactivity graph 200
includes nodes 211-215 for the employees of Enterprise A 210 and
nodes 221-223 for the employees of Enterprise B 220. The lines
between the nodes indicate that an interactivity model exists for
the interactions between the employees represented by the nodes.
For example, since the interactivity model 111 indicates that Bob
and David have interacted, there is a line between node 212 for Bob
and node 214 for David. The solid lines between the nodes indicate
interactions between employees of the same enterprise, and the
dashed lines indicate interactions between the employees of
different enterprises. The absence of a line between nodes indicate
that there has been no interaction between the people represented
by the nodes. For example, since there is no line between node 212
for Bob and node 213 for Carol, they have not interacted. The
interactivity models 142 and 143 indicate that Carol has interacted
with both Larry and Kate of Enterprise B. As a result, there are
dashed lines between node 213 for Carol and node 221 for Larry and
between node 213 for Carol and node 222 for Kate. Although the
lines between the nodes indicate interactions between the people
represented by the nodes, the lines provide no indication of the
quality or quantity of interactions. The interactivity models 100,
however, provide a model of the interactions from which the quality
and quantity can be assessed. For example, interactivity model 133
for David and Kate indicates that they have only recently started
interacting because the counts for the current week are the same as
the counts for the total year. In contrast, interactivity model 143
for Carol and Kate indicates that they interacted many times
throughout the year but not recently. Therefore, if scores were
generated for the interactivity models, interactivity model 133 may
have a high recency score and a low longevity score, whereas
interactivity model 143 may have a low recency score and a high
longevity score.
[0027] The interactivity system may be used, for example, to
identify the person within Enterprise A most likely to make an
introduction to a certain person of Enterprise B. For example,
Aaron, represented by node 211, has had no interactions with anyone
at Enterprise B. So Aaron may formulate a query with an
interactivity criterion that specifies to find an employee of
Enterprise A who has had an interaction with Kate within the last
week. Upon submitting the query, the interactivity system checks
the interactivity models of each of the employees of Enterprise A
to see who has had interactions with Kate. In this case, David, as
indicated by interactivity model 133, and Carol, as indicated by
interactivity model 143, have had interactions with Kate. David's
interactions with Kate satisfy the interactivity criterion because
David and Kate have had seven interactions in the last week. In
contrast, Carol's interactions with Kate do not satisfy the
interactivity criterion because Carol and Kate have had no
interactions within the last week. If Aaron, however, wanted to
identify which employee of Enterprise A had the best long-term
relationship with Kate, then the interactivity criterion may
specify at least 50 interactions within the past year and at least
10 interactions within the last month. In such a case, Carol's
interactions with Kate would satisfy that interactivity criterion,
but David's interactions with Kate would not.
[0028] FIG. 3 is a flow diagram that illustrates the tracking of
interactions between entities in some embodiments. The
interactivity system 300 tracks interactions between entities,
updates their interactivity models, and identifies entities that
satisfy an interactivity criterion. In block 301, the system
receives indications of interactions between a target entity and
participant entities. For example, the indication may include the
sender, the recipients, and the send date of an electronic mail
message; the attendees and time of a meeting; the authors and last
edit date of a document; and so on. The indications may be received
from an electronic mail system, a calendaring system, a
collaboration system, and so on. In block 302, the system maintains
for the target entity the interactivity models for the participant
entities. If the target entity has no interactivity model for a
participant entity, then the system initializes an interactivity
model. If the target entity has an interactivity model for a
participant entity, then the system updates the model. In block
303, the system receives a query specifying an interactivity
criterion. The query may be received from a server component of the
interactivity system or from a peer component. In block 304, the
system analyzes the interactivity models to determine whether the
interactivity criterion is satisfied. In decision block 305, if the
interactivity model is satisfied, then the component continues at
block 306, else component continues at block 307. In block 306, the
component sends a response indicating that the interactivity
criterion has been satisfied and then completes. In block 307, the
system optionally (as indicated by the dashed lines) sends a
response indicating that the interactivity criterion is not
satisfied and then completes.
[0029] FIG. 4 is a block diagram illustrating components of the
interactivity system in some embodiments. The interactivity system
400 may include a client component 410 and a server component 420.
The client component may receive indications of interactions from
interaction systems, such as an electronic mail system 431, an
instant messaging system 432, a text message system 433, a calendar
system 434, a voice mail system 435, and a collaboration system
436. The client component may include a receive notification
component 411, a refresh models component 412, a send query
component 414, a receive response component 415, a process target
query component 416, and a process participant query component 417.
The client component may also include a model repository 418. The
client component may include a separate receive notification
component for each of the interaction systems 431-436 as indicated
by the ellipsis. The receive notification component is invoked when
a notification of an interaction is received and updates in real
time the interactivity models to reflect that interaction. The
refresh models component may be invoked periodically (e.g., daily)
to update the interactivity models such as by recalculating counts
for time frames. The refresh models component may invoke a refresh
models component for each interaction type (not shown) to update
the interactivity models for that interaction type. The send query
component sends a query formulated by a user (e.g., a person or a
computer program) to the server. The receive response component
receives a response to the query from the server and provides the
response to the user. The process target query component processes
a query designed to determine whether a target entity satisfies an
interactivity criterion. The process participant query component
processes a query designed to determine whether a participant
entity satisfies an interactivity criterion. The model repository
stores an interactivity model for each participating entity. The
server component includes a receive query component 421 and an
entity profile repository 422. The receive query component receives
from a client component a query specifying an interactivity
criterion, identifies target entities, sends a query to each target
entity, receives the responses, and provides the results to the
client component. The entity profile repository is a source of
profiles of the entities such as demographic information, position
within an organization, employment history, and so on.
[0030] The computing devices on which the interactivity system may
be implemented may include a central processing unit, input
devices, output devices (e.g., display devices and speakers),
storage devices (e.g., memory and disk drives), network interfaces,
graphics processing units, accelerometers, cellular radio link
interfaces, global positioning system devices, and so on. The input
devices may include keyboards, pointing devices, touch screens,
gesture recognition devices (e.g., for air gestures), head and eye
tracking devices, microphones for voice recognition, and so on. The
computing devices may include desktop computers, laptops, tablets,
e-readers, personal digital assistants, smartphones, gaming
devices, servers, and computer systems such as massively parallel
systems. The computing devices may access computer-readable media
that includes computer-readable storage media and data transmission
media. The computer-readable storage media are tangible storage
means that do not include a propagated signal. Examples of
computer-readable storage media include memory such as primary
memory, cache memory, and secondary memory (e.g., DVD) and include
other storage means. The computer-readable storage media may have
recorded upon or may be encoded with computer-executable
instructions or logic that implements the interactivity system. The
data transmission media is media for transmitting data using
propagated signals or carrier waves (e.g., electromagnetism) via a
wire or wireless connection.
[0031] The interactivity system may be described in the general
context of computer-executable instructions, such as program
modules and components, executed by one or more computers,
processors, or other devices. Generally, program modules or
components include routines, programs, objects, data structures,
and so on that perform particular tasks or implement particular
data types. Typically, the functionality of the program modules may
be combined or distributed as desired in various embodiments.
Aspects of the interactivity system may be implemented in hardware
using, for example, an application-specific integrated circuit
("ASIC").
[0032] FIG. 5 is a flow diagram that illustrates the processing of
a receive notification component for an electronic mail message of
a client component in some embodiments. The component 500 is passed
a notification for a target entity and updates the interactivity
models for the participant entities identified in the notification.
In decision block 501, if the target entity is the sender of the
electronic mail message, then the component continues at block 502,
else the component continues at block 505. In block 502, the
component selects the next recipient of an electronic mail message.
In decision block 503, if all the recipients have already been
selected, then the component completes, else the component
continues at block 504. In block 504, the component updates the
daily total in the interactivity model for the selected recipient
(including creating a new interactivity model if none exists for
the selected recipient) and then loops to block 502 to select the
next recipient. In block 505, since the target entity is not the
sender, the component updates the daily totals in the sender's
interactivity model and then completes.
[0033] FIG. 6 is a flow diagram that illustrates the processing of
a refresh models component of a client component in some
embodiments. The refresh models component 600 may be invoked
periodically to refresh the interactivity models based on recent
interactions. The component loops invoking components that are
specific to an interaction type to refresh the totals or other
statistical measures for that interaction type. In block 601, the
component selects the next interaction type. In decision block 602,
if all the interaction types have already been selected, then the
component completes, else the component continues at block 603. In
block 603, the component invokes the refresh totals component for
the selected interaction type and then loops to block 601 to select
the next interaction type.
[0034] FIG. 7 is a flow diagram that illustrates the processing of
a refresh models component for electronic mail messages of a client
component in some embodiments. The component 700 assumes that the
interactivity models include totals of interactions for various
time frames (e.g., week and month) and updates the totals of the
time frames on a daily basis. The component also assumes that the
daily totals are stored for each day of the longest time frame for
the purpose of subtracting a daily total when a day is no longer
within a time frame. For example, to refresh the totals for a year,
the component adds the current day's total and subtracts the daily
total for the day that is 366 days ago. In blocks 701-706, the
component loops selecting the participant entities that the target
entity interacted with in the current day and refreshes the
interactivity models for those participating entities. In block
701, the component selects the next participant entity for the
current day. In decision block 702, if all the participant entities
have already been selected, then the component returns, else the
component continues at block 703. In blocks 703-706, the component
loops updating the totals for each time frame. In block 703, the
component selects the next time frame. In decision block 704, if
all the time frames have already been selected, then the component
loops to block 701 to select the next participant entity, else the
component continues at block 705. In block 705, the component adds
the current day's total to the total for the selected time frame
for the selected participant entity. In block 706, the component
subtracts the total for the day before the selected time frame from
the total for the selected time frame. The component then loops to
block 703 to select the next time frame.
[0035] FIG. 8 is a flow diagram that illustrates the processing of
a receive query component of a server component in some
embodiments. The receive query component 800 receives a query that
includes a target profile and an interactivity criterion. The
target profile indicates the profile for the target entities. The
query may be received from a client component, a web interface
through which users submit queries, a computer program, or a
variety of other possible sources. In block 801, the component
identifies the entities as target entities that match the target
profile based on the profiles of the entity profile repository. In
block 802, the component selects the next target entity. In block
803, if all the target entities have already been selected, then
the component continues at block 805, else the component continues
at block 804. In block 804, the component sends a query that
specifies the interactivity criterion to the selected target entity
and then loops to block 802 to select the next target entity. In
block 805, the component waits for the responses to the queries. In
block 806, the component sends the results to the querying entity
and then completes. The responses and the results may include
interactivity models so that further processing can be performed by
the submitter of the query. In some embodiments, the query may also
specify a participant profile for participant entities. If so, the
interactivity system would filter the results to include
information for only those participant entities that match the
participant profile as indicated by the profile repository.
[0036] FIG. 9 is a flow diagram that illustrates the processing of
a process target query component of a client component in some
embodiments. The process target query component 900 is invoked when
a client component receives a query from a user to identify a
target entity that satisfies the interactivity criterion. In block
901, the component receives the query that specifies the
interactivity criterion. In block 902, the component determines
whether the target entity satisfies the interactivity criterion by
analyzing the interactivity models of participant entities. In
block 903, the component sends a response indicating whether the
target entity satisfies the interactivity criterion and then
completes. The response may also include the interactivity models
used to determine that the target entity satisfied the
interactivity criterion.
[0037] FIG. 10 is a flow diagram that illustrates the processing of
a process participant query component of a client component in some
embodiments. The process participant query component 1000 is
invoked when a query is received for identifying whether any
participant entities satisfy the interactivity criterion. In block
1001, the component receives a query that includes the
interactivity criterion. In blocks 1002-1006, the component loops
selecting each participant entity. In block 1002, the component
selects the next participant entity. In decision block 1003, if all
the participant entities have already been selected, then the
component continues at block 1007, else component continues at
block 1004. In block 1004, the component applies the interactivity
criterion to the interactivity model of the selected participant
entity. In decision block 1005, if the interactivity criterion is
satisfied by the interactivity model of the selected participant
entity, then the component continues at block 1006, else the
component loops to block 1002 to select the next participant
entity. In block 1006, the component adds the identity of the
selected participant entity to the results and may add other
information to the results, such as the interactivity model of the
selected participant entity, and then loops to block 1002 to select
the next participant entity. In block 1007, the component sends a
response along with the results and then completes.
[0038] Although the subject matter has been described in language
specific to structural features and/or acts, it is to be understood
that the subject matter defined in the appended claims is not
necessarily limited to the specific features or acts described
above. Rather, the specific features and acts described above are
disclosed as example forms of implementing the claims. For example,
an entity may be not only an individual, but also an organization,
a division or a department of an organization, an electronic mail
group, a computer program, a computing system, a device, and so on.
Also, the notifications of interactions between entities can come
from a wide variety of sources, such as a system that analyzes a
video using face or voice recognition to identity entities who are
interacting or analyzes credit card usage records to identify what
stores a user interacts with. Because the interactivity models are
maintained dynamically as notifications of interactions are
received, the interactivity system can respond to queries based on
up-to-date information. The maintaining of the interactivity models
as summaries or models of interactions also allows the
interactivity system to respond to queries quickly without having
to analyze the raw data (e.g., individual electronic mail messages)
to process each query. The interactivity models may model various
characteristics of interactions. For example, in addition to totals
for different time frames, the interactivity model for electronic
mail messages may include average number of recipients per
electronic mail message, average time between a target entity
sending an electronic mail message to a participant entity and
receiving a response from that participant entity, and a variety of
other statistical measures. Accordingly, the invention is not
limited except as by the appended claims.
* * * * *