Patent Publication Number: US-9836543-B2

Title: Automatically selecting addressees for receiving a content item

Description:
RELATED APPLICATION 
     This application is a continuation of and claims priority under 35 U.S.C. §120 to pending U.S. patent application Ser. No. 14/229,578, filed Mar. 28, 2014. 
    
    
     BACKGROUND 
     This disclosure relates to the field of computer systems. More particularly, a system, apparatus, and methods are provided for automatically populating an addressee field of a message when the sender of the message transmits or forwards a content item. 
     A recipient of a content item such as a video clip, an audio file, or a document, is often more receptive to or more interested in the content when he or she knows or has some personal or professional connection to the sender. For example, when a user of an online service receives content forwarded from a friend who also uses the service, he or she generally is more likely to consume it (e.g., watch it, listen to it, read it) than if it was blindly sent by the service or by some other entity with which he or she has no personal or professional connection. 
     However, content originators and other entities that wish to distribute content to users matching some target criteria (and/or particular users) generally do not have close connections to all of the target users. They may therefore be limited to traditional solutions such as paying a publisher (e.g., a web site operator) to place their content before those users. The target users, however, may be likely to ignore the content because it is deemed to be an advertisement or other blindly delivered message. 
    
    
     
       DESCRIPTION OF THE FIGURES 
         FIG. 1  is a block diagram depicting a computing environment for auto-populating an addressee field of a message, in accordance with some embodiments. 
         FIG. 2  is a flow chart demonstrating a value-function scheme for selecting addressees with which to automatically populate a message that will forward or otherwise convey a particular content item, in accordance with some embodiments. 
         FIG. 3  is a flow chart demonstrating a community propagation scheme for selecting addressees with which to automatically populate a message that will forward or otherwise convey a particular content item, in accordance with some embodiments. 
         FIG. 4  is a flow chart demonstrating an inverted Steiner tree scheme for selecting addressees with which to automatically populate a message that will forward or otherwise convey a particular content item, in accordance with some embodiments. 
         FIG. 5  depicts a benchmark graph for use in determining whether a given campaign to distribute a selected content item via messages having auto-populated addressee fields should be continued, in accordance with some embodiments. 
         FIG. 6  is a block diagram of an apparatus for automatically populating an addressee field of a message initiated to transmit a selected content item, in accordance with some embodiments 
     
    
    
     DETAILED DESCRIPTION 
     The following description is presented to enable any person skilled in the art to make and use the disclosed embodiments, and is provided in the context of one or more particular applications and their requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the scope of those that are disclosed. Thus, the invention or inventions associated with this disclosure are not intended to be limited to the embodiments shown, but rather are to be accorded the widest scope consistent with the disclosure. 
     In some embodiments, a system, apparatus, and methods are provided for automatically populating the addressee field of a message (e.g., an electronic mail message, an instant message) for transmitting or forwarding an item of content, with one or more strategically selected addressees, based on the content and the sender of the message. In different contexts, this action may be described as automatically addressing the message, auto-populating the message with addressees, or something similar. 
     Stated differently, the system, apparatus, and methods facilitate delivery of a selected content item to target recipients solely via messages initiated by first degree connections (i.e., people the recipients know). 
     In these embodiments, even if the automatically selected addressees are first degree connections, measures may be taken to avoid distributing the content in a “spam-like” manner. For example, each time the content item is sent, a limited number of auto-populated addressees may be included. This number may be a predefined limit (e.g., 5, 10, 20) or may be based on a dynamic calculation that considers who is sending the message, the type of content, the value of delivering the content to or through a particular recipient, and/or other factors. Another measure that may be taken is to ensure that once the content item is sent to or delivered to a particular recipient, that recipient is never again automatically selected as a recipient. 
       FIG. 1  is a block diagram of a system in which a message that will transmit a content item is automatically populated with one or more addressees, according to some embodiments. System  110  may be implemented as or within a data center or other computing system. 
     In some particular implementations, system  110  is operated within a professional or social networking service or system that helps members create, develop, and maintain professional (and/or personal) relationships, as provided by LinkedIn® Corporation, for example. 
     Members or users of a service offered by system  110  connect to the system via client devices, which may be stationary (e.g., desktop computer, workstation) or mobile (e.g., smart phone, table computer, laptop computer). The client devices operate suitable client applications, such as a browser program, an electronic mail program, or an application designed specifically to access the service(s) offered by system  110 . Users of system  110  may be termed members because they may be required to register with the system in order to fully access the system&#39;s services. 
     As part of the services it offers, system  110  serves content for presentation to users via their client devices. The content that is served may include media files, advertisements, offers, announcements, job listings, status updates, news, messages, and so on, and may be or may include any type of media (e.g., text, images, video, audio). System  110  may serve content generated by or among users of the system&#39;s services, and/or content supplied by third parties for delivery to users of those services. 
     User/member connections are generally made through portal(s)  112 , which may comprise an application server, a web server, and/or some other gateway or entry point. System  110  also includes content server  114 , tracking server  116 , profile server  118 , message server  120 , data server  122 , content store  124 , and event database  126 . 
     Members of the service have corresponding pages (e.g., web pages, content pages) on system  110 , which they may use to facilitate their activities with the system and with each other. These pages (or information provided to members via these pages) are available to some or all other members to visit in order to browse messages, announcements, and/or other information provided by or associated with the corresponding member. 
     Tracking server  116  monitors and records activity of system  110  and/or members (e.g., in event database  126 ). For example, whenever content is served from portal  112  or content server  114  (e.g., to a client device), the tracking server may record what is served, to whom (e.g., which member), when it was served, and/or other information. Other information may include how it was delivered (e.g., via a web page, via electronic mail, via instant message). Similarly, the tracking server also records member actions regarding advertisements and/or other content presented to the members, to include identities of the member and the content acted upon, the action that was taken (e.g., click, conversion, follow-on request, visiting a page associated with a subject or provider of the content, forwarding the content), when the action was taken, etc. 
     Content server  114  maintains one or more repositories of content items for serving to members (e.g., content store  124 ), an index of the content items, and/or other information useful in serving content to members. Illustratively, content server  114  may serve on the order of hundreds of millions of content items every day, for each of which tracking server  116  stores an event record (in addition to data reflecting other user activity, as described above). 
     As indicated above, content store  124  may include various types of content and content items, including advertisements (e.g., both revenue and non-revenue ads), information released by members and possibly non-members (e.g., announcements, messages), status updates, job listings/descriptions, media content (e.g., images, video, audio), documents, and so on, for serving to members and/or for use by various components of system  110 . Content server  114  (or some other component of system  110 ) may include a recommendation module for recommending content to serve to a member, and/or the system may apply recommendations generated by an external entity. 
     Profile server  118  maintains profiles of members of the service(s) hosted by system  110  (e.g., in a profile database not depicted in  FIG. 1 ). An individual member&#39;s profile may reflect any number of attributes or characteristics of the member, including personal (e.g., gender, age or age range, interests, hobbies, member ID), professional (e.g., employment status, job title, functional area or industry, employer, skills, endorsements, professional awards, co-workers), social (e.g., organizations the user is a member of, geographic area of residence, friends, associates), educational (e.g., degree(s), university attended, other training), user/member communities the member belongs to, etc. A member&#39;s profile, or attributes or dimensions of a member&#39;s profile, may be used in various ways by system components (e.g., to identify who sent a message, to select recipients of a message, to identify a recipient of a status update, to record a content-delivery event). 
     With the data it maintains, profile server  118  can identify, for each given member, other members that the given member is connected to (e.g., as friends or associates). Thus, not only can system  110  map or graph the entire network of members and member connections, with nodes representing members and edges representing member connections, for example, it can also identify sub-networks having any desired locus or nexus (e.g., an institution common to a set of members, a field of endeavor shared by multiple members). Thus, if a goal arises of delivering a particular content item to a particular member, but only through member connections (e.g., messages between members), the system can readily identify one or more paths to the member. The terms “sub-network” and a member/user “community” may be used interchangeably in the following discussion. 
     Organizations may also be members of the service (i.e., in addition to individuals), and may have associated descriptions or profiles comprising attributes such as industry (e.g., information technology, manufacturing, finance), size, location(s), goal, products, services, etc. An “organization” may be a company, a corporation, a partnership, a firm, a government agency or entity, a not-for-profit entity, an online community (e.g., a user group), or some other entity formed for virtually any purpose (e.g., professional, social, educational). 
     Message server  120  may host an electronic mail program, a chat or instant message program, or some other type of messaging program. Although depicted as part of system  110  in  FIG. 1 , in some other embodiments the message server may be operated by a third party and therefore may be remote from system  110 . In the latter embodiments, however, one or more components of system  110  (e.g., data server  122 ) are capable of generating and/or formatting messages, or at least auto-populating an addressee field of a message generated by the message server, through an API (Application Programming Interface) or other mechanism. 
     As described in more detail below, data server  122  facilitates auto-population of the addressee fields of messages that are initiated by members for distribution by message server  120 . In particular, when a member chooses to send (or forward) a predetermined content item, the addressee field will be automatically populated with one or more addressees selected by the data server. Depending on various factors, including the sender, the content item, previous distribution of the content item, the sender&#39;s connections (i.e., friends, associates of the sender), and so on, different messages may be auto-populated with different numbers of addressees. 
     System  110  may include other components not illustrated in  FIG. 1 . For example, for each member of the system&#39;s service(s), system  110  may store a record of content items served to the member, or served for presentation to the member, and when they were served. Such a data store may be configured to allow the content server and/or other components of system  110  to quickly determine whether a particular content item was previously presented to a particular member, how many times it was presented, when it was presented, how it was presented (e.g., via electronic mail, via web page, how prominently or where it was presented within a page of content), and/or other information. Although some of this data may duplicate what is stored in event database  126 , contents of this member data store would be rapidly accessible to one or more other servers (e.g., content server  114 , data server  122 ), and may be used, for example, to help select a content item to serve in response to a current request or to help select recipients of a content item. 
     The functionality of system  110  may be distributed among the illustrated components in an alternative manner, such as by merging or further dividing functions of one or more components, or may be distributed among a different collection of components. Yet further, while implemented as separate hardware components (e.g., computer servers) in  FIG. 1 , one or more of portal  112 , content server  114 , tracking server  116 , profile server  118 , message server  120 , and data server  122  may alternatively be implemented as separate software modules executing on one or more computer servers. Although only single instances of each component of system  110  are illustrated in  FIG. 1 , it should be understood that multiple instances of some or all components may be employed. 
     In some embodiments, a method of auto-populating an addressee begins after a content item is selected and after a set of one or more target recipients of the item have been identified. As indicated above, the content item may be of any type or form that is transmittable as part of or as an attachment to a message. 
     Target recipients may be identified in different ways in different scenarios. For example, one member of a service offered by system  110  of  FIG. 1  may submit a content item that the member desires to have delivered to specific other members (e.g., identified by name or other identifier), to other members having one or more specific attributes or characteristics (e.g., graduates of a particular university, employed by a particular company, working in a particular field, living in a particular area), or to other members the system considers as possibly being interested in the item. 
     In different scenarios, therefore, in order to identify target recipients the system may consider different attributes of members or users (e.g., as maintained by profile server  118  of  FIG. 1 ), connections between members—which may include the entire network of member connections or any portion(s) thereof—as well as characteristics of the content item and/or of the member who is sending the content item. Any or all data retained within the system may be considered by a recommendation engine, fit model, or other means for identifying the candidate recipients, and these means may be internal or external to the system. 
     By way of illustration, and not limitation, a network of all members and member connections that may be supported by methods described herein may include hundreds of millions of nodes (e.g., 290 million) and over 10 billion edges (e.g., 13 billion), wherein each node represents one member and each edge represents a connection between two members. The edges may or may not be homogeneous in nature. In other words, some edges may represent explicit member connections (e.g., formal “friend” or “associate” links), while others may represent implied or implicit connections (e.g., a connection between two members who have something in common, or who interacted without having a formal connection). 
     In some implementations, each target recipient is weighted according to the fit or compatibility between the content item and that target recipient, such as with a value between −1 and 1, inclusive (i.e., [−1, 1]), or between 0 and 1, inclusive (i.e., [0, 1]), wherein higher values represent greater correlation or a better fit. Or, target recipients may be weighted with one value (e.g., 1), while all members who are not target recipients are weighted with another value (e.g., 0). 
     Thus, the system may determine, among all members or a subset of all members, not only which members are desired or intended recipients of a given content item, but which members are the most (or least) suitable. With this determination, when a member chooses to transmit that content item the system may auto-populate the sender&#39;s message with addressees that include one or more target recipients and/or other members or users that are in or on paths to or toward at least one target recipient. 
     As the content item is distributed throughout the system&#39;s member/user network, a version of the network tailored to the item may be updated accordingly. For example, once a particular member receives the content item (e.g., via a message with an auto-populated addressee field), the system will bias against delivering it to that member again; in particular, some edges of the tree that would cause it to be delivered again may be pruned. 
     Also, a collection of addressees pre-identified for auto-population for a particular member, before that member actually forwards or sends the content item, may be updated based on other members&#39; activities. For example, if the system determines that another member is not going to send the item, or likely will not send it, the pre-identified addressees may be augmented with addressees that would have been used to populate a message sent by the other user. Alternatively, if the other member does forward the content item, the pre-identified addressees may be pruned to remove addressees or paths used by the message sent by the other member. 
     It may be noted that when auto-population of an addressee field is active for a given content item, applicable parameters may vary from one scenario to another (e.g., based on the sender, the sender&#39;s neighborhood, the content item). For example, the maximum number of auto-populated addressees may vary, the sender may or may not be able add additional addressees, the sender may or may not be able to remove an auto-populated addressee, the sender may or may not be able to cancel the message before sending it, the sender may or may not be able to send it more than once, etc. 
     In different embodiments or scenarios, different schemes for selecting addressees with which to automatically populate a message that conveys a given content item may be applied. The same scheme or different schemes may be applied for different items, at different times, for different target recipients, for different senders. Illustrative schemes described herein include a “value-function” approach, a “community propagation” approach, and an “inverted Steiner tree” approach. It may be noted that while embodiments described below limit auto-populated message addressees to first degree connections of the sender, this restriction is not required in all embodiments. 
       FIG. 2  is a flow chart demonstrating a value-function scheme for selecting addressees with which to automatically populate a message that will forward or otherwise convey a particular content item, according to some embodiments. This method is employed within or in support of a professional network or social network comprising a large number of members and member connections. 
     In operation  202 , a content item is identified for which auto-population of addressee fields is to be applied when the item is transmitted via electronic message. The item may be selected by a member, may be selected by the system (e.g., an operator of the system, a recommendation engine), or by some other entity (e.g., an item sponsor that is not a member of the system). An item may be selected because a member or other user is sponsoring its distribution, because the system is doing so as a public service or to enhance its members&#39; experiences with the service, and/or for some other reason. 
     As illustrative but not limitative examples, a musical group may wish to publicize a new song or music video, an employer may want to distribute notification of a job opportunity to suitable people, a vendor may want to distribute an offer regarding a new product, etc. 
     In operation  204 , multiple target recipients of the content item are identified and weighted. As discussed above, this may be performed in virtually any manner, using any suitable method, and may be performed by the same system that will auto-populate message addressee fields, or by some other entity. The weights correspond to the measured or perceived desirability of delivering the selected content item to the target recipients. Thus, it is more desirable to deliver the content item to a first target recipient having a relatively high weight (e.g., near 1) than to deliver the content item to second target recipient having a relatively low weight (e.g., negative or near 0). 
     Illustratively, the identified target recipients may be some number or percentage of members having the top weights, may be all members having weights above a threshold or cut-off weight, or may be delineated in some other fashion. A goal of the illustrated method may be to deliver the content item to all of the target recipients or to at least some percentage of them (e.g., 80%). 
     In some embodiments, a member&#39;s weight may be computed as a distance, within a defined space, between vectors representing the member and an “ideal” target recipient of the content item (e.g., a hypothetical recipient having attributes deemed most compatible with or most complementary to the item). For example, the content item and the member may be graphed or modeled as vectors within an m-dimensional space (m≧2) in which each dimension corresponds to an attribute of a target audience of the item (e.g., the target recipients). Illustrative attributes include industry, skills, engagement level, location, education, and so on. In some implementations, the cosine difference between the member&#39;s vector and the ideal recipient&#39;s vector is calculated and adopted as the member&#39;s weight. 
     In other embodiments, other methods may be used to compute members&#39; weights. 
     In operation  206 , a current holder or possessor of the selected content item chooses to forward the content item or to send it within a newly generated message. Illustratively, this holder may be the member or other party who selected the item in operation  202  or who created or first received it from its originator. For example, an employment recruiter who creates a new job opening notification or job posting may activate a process for generating a message to share it with some members. 
     In operation  208 , the system begins the process of identifying whether and how to auto-populate the holder&#39;s message that will convey the content item. In particular, the holder&#39;s immediate network N is identified, which includes all first degree member connections or, in other words, all system members who are directly connected to the holder within the overall member network. 
     In some implementations, this network N is restricted to immediate neighbors with whom the current holder of the content item previously interacted. Such interaction may include exchange of at least one message, commenting on or sharing by the immediate neighbor on a post made by the current holder (or vice versa), endorsing a skill of the holder by the immediate neighbor (or vice versa), etc. This restriction eliminates first degree connections with whom the sender really has only a tenuous connection. 
     In optional operation  210 , network N is pruned to remove any members who previously received the selected content item, or at least those members who received the content item via a message that featured an auto-populated addressee field. 
     In operation  212 , for each other member in the holder&#39;s network N, the system calculates a perceived value of sending or delivering the selected content item to that member. In different embodiments, this value may be calculated in different ways, but generally will yield numerical results for each neighbor within N. The higher the value, the higher the perceived benefit of putting the content item in the possession of the corresponding neighbor. 
     In some implementations, the following value function is applied to calculate the value V of each first degree connection i of the current holder; TABLE 1 defines the components of this function:
 
 V ( i )= w ( i )+λ( i )(Σ nε[1,k]   L[n ])  (1)
         wherein L=sort[V(j) f or jεN(i)].       

     
       
         
           
               
               
             
               
                 TABLE 1 
               
               
                   
               
               
                 Component 
                 Definition 
               
               
                   
               
             
            
               
                 i, j 
                 Members 
               
               
                 V(i) 
                 Value of getting the content item to member i 
               
               
                 w(i) 
                 Weight of member i 
               
               
                 λ 
                 Probability that member i will forward/send the 
               
               
                   
                 content item 
               
               
                 k 
                 Maximum number of addressees to auto-populate 
               
               
                 sort 
                 Sort, from highest to lowest 
               
               
                 N(i) 
                 Neighbors of member i who have not yet received the item 
               
               
                   
               
            
           
         
       
     
     Thus, the value of getting the selected content item to a member i is based on the weight of that member, which was calculated by the system as part of identifying the target recipients or was received from another entity that identified the target recipients. To this base value is added the product of the probability λ that the member will forward/send the content item and the summation of the calculated values of getting the content item to each of the top-rated k immediate neighbors of i who have not already received it (or at least have not received it via a message having an auto-populated addressee field). 
     As indicated, the variable k identifies the maximum number of neighbors (i.e., first degree connections) of member i with which to auto-populate the message when member i sends the content item. The value of k may vary from one member to another and for one content item to another, and is configured to prevent inadvertent spamming of a member&#39;s network. In some implementations, k is set as the maximum of two values—a predetermined constant (e.g., 10, 20, 30) and a percentage or a portion of the number of users in the sending member&#39;s network N (e.g., 15%, 20%, 25%). 
     A result of equation (1) is a sorted list of up to k neighbors—in particular, the k neighbors that are estimated to yield the greatest value (according to the value function) upon delivery of the selected content item. 
     In operation  214 , the list is sorted if it was not already sorted during computation of the neighbors&#39; values. Equation (1) includes a sort operation, but other value functions may not, and the results of these functions would therefore be ordered according to value. 
     In operation  216 , the message initiated by the current holder of the content item is automatically populated with up to k neighbors identified by the value function. The method of  FIG. 2  then ends or, after the content item is received by an auto-populated addressee, the method may be repeated if and when that recipient chooses to forward the received message or to send the content item in a new message. 
     In some embodiments, full or partial values can be pre-computed for some or all members in the member network, instead of computing the values on-the-fly at the time a possessor of the item chooses to send it. For example, each member&#39;s weight can be computed (e.g., as part of the process of identifying target recipients), and then the network (or some portion of the network) may be traversed to compute each member&#39;s value. Even in a very large network, this may be a relatively lightweight computation requiring no more than a few traversals of the entire network. 
     A second method of selecting addressees with which to automatically populate a message that conveys a selected content item is termed a “community propagation” method. A focus of this approach is delivering the content item to selected “communities” of members and propagating it throughout those communities. 
       FIG. 3  is a flow chart demonstrating a community propagation scheme for selecting addressees with which to automatically populate a message that will forward or otherwise convey a particular content item, according to some embodiments. This method is employed within or in support of a professional network or social network comprising a large number of members and member connections. 
     In operation  302 , a content item is identified for delivery via messages exchanged by first degree connections. The item may be selected by a member, may be selected by the system (e.g., an operator of the system, a recommendation engine), or by some other entity. An item may be selected because a member or other user is sponsoring its distribution, because the system is doing so as a public service or to enhance its members&#39; experiences with the service, and/or for some other reason. 
     In operation  304 , one or more target recipients of the content item are identified. As discussed above, this may be performed in virtually any manner, using any suitable method, and may be performed by the same system that will auto-populate message addressee fields, or by some other entity. 
     In some implementations, weights are computed for possible target recipients and the identified target recipients may be some number or percentage of possible target recipients having the highest weights. 
     Alternatively, criteria specified for identifying target recipients may be applied, and the identified target recipients may include all members who match (or sufficiently match) the criteria. Thus, in this alternative implementation, identifying target recipients among all members may be a binary process of determining whether a given member does or does not (sufficiently) match the criteria. 
     Such criteria may consider any portion of members&#39; profiles which, as described above, may include myriad attributes. For example, the criteria may indicate that the content item should be targeted at members matching all of a specified set of criteria, such as, for example: a specific age (or age range), graduation from a particular university, employment in a particular industry and/or functional area. 
     As a result of operation  304 , a set of target recipients is identified, to whom the system will attempt to deliver the content item via messages from first degree connections that are automatically populated with addressees that will increase the likelihood that the item reaches the target recipients. 
     In operation  306 , communities of members that encompass each target recipient are identified or defined. A given target recipient may be encompassed by multiple communities, but each target recipient will be a member of at least one. 
     Each community is defined by some attribute or attributes that is or are common to all members of the community, and/or as a collection of members who interact relatively frequently. The attributes that define the communities may match or be a subset or a superset of the attributes that were used to identify the target recipients. In some scenarios, there may be close correlation between target recipients and communities, so close even that a given community (or all communities) may include only target recipients and few or no members who are not target recipients. On the other hand, target recipients may match a relatively narrow set of attributes, while their corresponding communities are defined more broadly. 
     In different embodiments, different techniques or methods may be applied to identify target recipients&#39; communities, such as (but not limited to) clique-based methods, hierarchical clustering, minimum-cut methods, modularity maximization, seed node expansion algorithms, etc. 
     One goal of identifying target recipients&#39; communities is to identify portions or sub-networks of the overall member network that the content item should be delivered to. Once a message that conveys the content item enters a community, a complementary goal is to disseminate the content item throughout the community, but to limit or prevent distribution outside of the community by anyone within the community (unless doing so is the best or only way to reach another target recipient). 
     In operation  308 , applicable constraints or restraints are identified, if any. For example, it may be determined that the sender of a message that conveys the selected content item may not (or may) be able to select as a manually populated addressee anyone who is not within an identified community. 
     As another example, it may be specified that the method terminates when some number or percentage of all target recipients have received the content item; after this termination point is reached, new messages that convey the content item will not be automatically populated as described herein. 
     As yet another example constraint, a maximum hop count may be identified for reaching a community. Illustratively, when a given member generates a message to forward or send the content item, if no community (i.e., a member of an identified community) can be reached via first degree connections from the given member without exceeding the maximum hop count, then the message&#39;s addressee field may not be auto-populated at all. 
     Yet other constraints or restrictions may be applied in other implementations, to limit the total number of messages that will be auto-populated with addressees, to set a maximum number (e.g., k) of auto-populated addressees, to identify a maximum number of members to which the content item may be delivered via auto-population of their addresses, to set a date/time limit regarding auto-population, to allow or not allow repeat delivery of the content item to a member, etc. 
     In operation  310 , a member who currently possesses the content item initiates a message to send or forward it. 
     In operation  312 , the system determines whether the sending member is within an identified community. If so, the method advances to operation  320 ; otherwise, the method continues with operation  314 . 
     In operation  314 , the system identifies one or more addressees with which to auto-populate the message&#39;s addressee field. If the sending member is directly connected to members of one or more identified communities, some or all of them will be selected as auto-fill addressees (perhaps subject to a maximum number k of auto-fill addressees). 
     If, however, the sender is not directly connected to members of any community, or is not connected to members of at least a threshold number or percentage of identified communities, the addressee field may be auto-populated with one or more addressees that are determined to be able and/or likely to forward the content items such that they will enter one or more communities. For example, all of the sending member&#39;s immediate neighbors (in his/her neighborhood N) may be analyzed to determine which are most closely connected to members of the communities, which are most likely to forward a message (e.g., based on past message histories), which are most closely related to target recipients and/or community members (i.e., based on similarities with the criteria used to select target recipients/communities), etc. 
     After operation  314 , the method may end or may return to operation  310  if and when a recipient of this message chooses to forward the content item. 
     In operation  320 , the content item is being sent by a member of an identified community, and the system will act to further the distribution of the item within that community and especially to target recipients within the community. In particular, if the item has not yet been delivered to all members of the community, the system will identify one or more fellow community members with which to auto-populate the addressee field. Community members who have already received the content item may be eliminated from consideration, and the maximum number of auto-populated addressees (e.g., k) may be different from other situations (e.g., when a non-community member is sending the content item as in operation  314 ). 
     In some implementations, for the purpose of selecting addressees community members may be ranked in terms of their connectedness, based on their number of (first degree) connections that are also within the community, the percentage of all of their (first degree) connections that are with other members of the community (and/or members of other identified communities), their centrality measures, and/or other factors. The message&#39;s addressee field is then auto-populated with some number of community members (e.g., the k members with the top rankings), assuming not all of them have already received it. 
     In some situations, operation  320  (and/or operation  314  above) may terminate without auto-population of a message. For example, by the time this erstwhile sender initiates a message, there may be no suitable paths toward a target recipient that do not involve sending the message to someone who has already received the content item. 
     After the message is sent, the method may end or may return to operation  310  if and when a recipient of the message chooses to forward the content item. 
     In some embodiments, if the first member to send the selected content item is within one of the identified communities, in order to allow the item to reach other communities a special allowance may be made to auto-populate the member&#39;s message with addressees outside of that community (if more than one community has been identified). Similarly, if the first sender is not within any of the communities, his or her message may be auto-populated with any number of addressees (i.e., no limit) and/or may not be restrained by any maximum hop count restriction for reaching a community. 
     In some other embodiments, if a given sender of the selected content item is not a member of an identified community and is not directly connected to (or within a maximum number of hops of) a community member, some other method or methods may be applied to identify addressees for auto-populating the message with suitable addressees (e.g., the value-function approach discussed above, the inverted Steiner tree approach discussed below). 
     A third method of selecting addressees with which to automatically populate a message that conveys a selected content item is termed an “inverted Steiner tree” method. A focus of this approach is getting a content item to target recipients via few hops (e.g., using the fewest possible number of messages having auto-populated addressee fields). 
       FIG. 4  is a flow chart demonstrating an inverted Steiner tree scheme for selecting addressees with which to automatically populate a message that will forward or otherwise convey a particular content item, according to some embodiments. This method is employed within or in support of a professional network or social network comprising a large number of members and member connections. 
     In operation  402 , a content item is identified for which auto-population of message addressee fields is to be applied. The item may be selected by a member, may be selected by the system (e.g., an operator of the system, a recommendation engine), or by some other entity. An item may be selected because a member or other user is sponsoring its distribution, because the system is doing so as a public service or to enhance its members&#39; experiences with the service, and/or for some other reason. 
     In operation  404 , one or more target recipients are identified. As discussed above, this may be performed in virtually any manner, using any suitable method, and may be performed by the same system that will auto-populate message addressee fields, or by some other entity. 
     For example, weights may computed for possible target recipients and the identified target recipients may be some number or percentage of possible target recipients having the highest weights. Alternatively, criteria may be specified for identifying target recipients, and the identified target recipients may include all members who match (or sufficiently match) the criteria. 
     In the illustrated embodiment, identifying target recipients yields binary results—each member is or is not a target recipient, and may be weighted accordingly (e.g., 0 or 1, respectively). 
     In operation  406 , a current possessor of the content initiates a message to send or forward the selected content item. 
     In operation  408 , the system begins a process of identifying suitable addressees with which to automatically populate the message. This method is termed an inverted Steiner tree because the system searches for a minimum number of nodes that connects the message sender to the target recipients, so that a minimum number of auto-populated messages will be required to reach all target recipients. 
     More particularly, in operation  408  the system identifies the smallest set of all members that connects the current sender to all target recipients that have not yet received the selected content item. Illustratively, all member subsets that connect the current sender to the remaining target recipients may be examined, and the smallest one is selected (or one of the smallest if there is a tie). An illustrative process for identifying a minimal set of members necessary to forward the content item from the current sender to all target recipients is described below; other processes may be applied in other embodiments. 
     In operation  410 , the intersection of the current sender&#39;s immediate neighbors N and the set of members identified in operation  408  is determined, if any. 
     In operation  412 , if the intersection is null, the system may proceed to operation  420  and refrain from auto-populating the message with any addressees. Alternatively, a different scheme may be applied for this sender (e.g., value function, community propagation). 
     Otherwise, in operation  414 , up to k members in the intersection determined in operation  410  are selected. If the intersection includes more than k members, members may be selected randomly, by member weights, by applying a value function, or in some other manner. After operation  414  the method ends. 
     In some embodiments, an inverted Steiner tree process for identifying a minimal set of members through which a content item can be delivered to all target recipients from a current sender S proceeds as follows. As indicated above, N(S) represents neighbors of sender S within the member network. 
     First, a set M of members to reach is initialized to an empty set, and a reward function R(i) (wherein i is a member of the member network) is initialized to the value 1 for target recipients of the content item and the value 0 for all other members. Then, as long as R(S)&lt;the number of target recipients, the following action is taken. 
     First, the most valuable member in the member network is added to M. In some implementations, the most valuable member is the member j who yields the maximum value V: 
     
       
         
           
             
               V 
               ⁡ 
               
                 ( 
                 j 
                 ) 
               
             
             = 
             
               ( 
               
                 
                   
                     ∑ 
                     
                       n 
                       ∈ 
                       
                         N 
                         ⁡ 
                         
                           ( 
                           j 
                           ) 
                         
                       
                     
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     R 
                     ⁡ 
                     
                       ( 
                       n 
                       ) 
                     
                   
                 
                 - 
                 
                   distance 
                   ⁡ 
                   
                     ( 
                     
                       
                         S 
                         ⋃ 
                         M 
                       
                       , 
                       j 
                     
                     ) 
                   
                 
               
               ) 
             
           
         
       
     
     The indicated distance function yields the shortest path between a member j and either S or a member of M. 
     Second, the reward function for member j is updated as follows: 
     
       
         
           
             
               R 
               ⁡ 
               
                 ( 
                 j 
                 ) 
               
             
             = 
             
               
                 ∑ 
                 
                   n 
                   ∈ 
                   
                     N 
                     ⁡ 
                     
                       ( 
                       j 
                       ) 
                     
                   
                 
               
               ⁢ 
               
                   
               
               ⁢ 
               
                 R 
                 ⁡ 
                 
                   ( 
                   n 
                   ) 
                 
               
             
           
         
       
     
     Third, reward functions for each neighbor i of member j are reset. In particular, for each neighbor i, R(i)=0. 
     Finally, when S chooses to send or forward the content item, all neighbors of S who are in the set M are automatically inserted as addressees. It may be noted that neighbors of S (i.e., members of N(S)) who are target recipients may not be added to the set M, but they will be automatically added as addressees. 
     In methods of automatically populating messages for conveying selected content items as described herein, different techniques may be applied to determine when to stop the auto-population. In some embodiments, the success of a campaign to distribute a content item to or among target recipients may be measured or estimated based on the observed tendency of recipients of the item to initiate messages to forward or re-convey it. That is, a relatively successful campaign will involve more transmissions and re-transmissions of a selected content item than a relatively unsuccessful campaign. The more successful a campaign involving a given content item is at any given time (e.g., when a member initiates a message to transmit the item), the more likely the system may be to continue auto-populating senders&#39; messages with strategically selected addressees. 
       FIG. 5  depicts a benchmark graph for use in determining whether a given campaign to distribute a selected content item via messages having auto-populated addressee fields should be continued, according to some embodiments. 
     Benchmark graph  510  demonstrates probabilities of transmission/re-transmission of a generic content item over time. In particular, the x-axis of the graph is indexed by time  502 , while the y-axis represents probabilities  504  that a member who possesses the content item will initiate a message to further distribute it. For example, point  506  indicates that 30% of all members who had possessed the content item for the period of time corresponding to time t 2  had forwarded or re-conveyed it. 
     Benchmark graph  510  may represent some or all previous campaigns to distribute selected content items via messages whose addressee fields were auto-populated, and the actual frequencies or rates with which the items were conveyed. For example, in some implementations, selected content items may be categorized by type, media, target audience criteria, sponsor, and/or any other applicable characteristic. Separate benchmark graphs may be assembled for each category of content item to indicate the actual performance of recipients regarding re-transmission of the item. 
     Then, when a campaign for a given selected content item is underway, its actual performance can be compared to a benchmark that relates to or encompasses the content item. For example, graphs  520 ,  530  illustrate performances of campaigns for relatively successful and relatively unsuccessful campaigns, respectively, in relation to benchmark graph  510 , for content items within the same category or categories represented by graph  510 . As the graphs indicate, the content item associated with graph  520  enjoyed higher popularity than the content item associated with graph  530 , in that more members who possessed it actually forwarded it. 
     Thus, at an illustrative current time t n , the fact that the campaign corresponding to graph  520  outperforms benchmark graph  510  may support continued execution of the campaign, while the lagging performance of the campaign corresponding to graph  530  may justify its termination. 
     The performance of a campaign might be evaluated periodically, such as every day, and a determination made whether to continue. For example, as long as the actual performance exceeds some percentage of the benchmark (e.g., 60%, 100%), it may continue. Some campaigns, however, may have express minimum or maximum periods of time that they will run, and/or have other applicable criteria for determining whether to continue, such as a minimum number or percentage of target recipients that must be reached, a maximum number of automatically populated messages, a maximum number of hops from an originating member, etc. 
     Some specific schemes discussed above may have unique methods or mechanisms for determining when to terminate a campaign. For example, a “total value” may be specified for a campaign that employs a value function approach. In particular, a target total value may be identified that represents the accumulated values of all recipients of auto-populated messages. Thus, a sum is continually updated as auto-populated messages are delivered to new recipients, with each of those recipients having a calculated value as discussed above. When that sum matches or exceeds the target total value, the campaign may terminate (e.g., if that is the only termination criterion specified for the campaign). 
     In a community propagation approach, termination may be automatic within a given community once all members of the community have received the selected content item. Therefore, the content item&#39;s campaign may run for different periods of time within different communities. 
       FIG. 6  is a block diagram of an apparatus for automatically populating an addressee field of a message initiated to transmit a selected content item, according to some embodiments. 
     Apparatus  600  of  FIG. 6  comprises processor(s)  602 , memory  604 , and storage  606 , which may comprise one or more optical, solid-state, and/or magnetic storage components. Storage  606  may be local or remote to the apparatus. Apparatus  600  may be coupled (permanently or temporarily) to keyboard  612 , pointing device  614 , and display  616 . Multiple apparatuses  600  may operate in parallel to cooperate in campaigns to distribute selected content items, and storage  606  may be shared among them, or may represent their combined secondary storage resources. 
     Storage  606  stores logic that may be loaded into memory  604  for execution by processor(s)  602 . Such logic includes message interface logic  622  and addressee selection logic  624 . In other embodiments, these logic modules and/or other content may be combined or divided to aggregate or separate their functionality as desired. 
     Message interface logic  622  comprises processor-executable instructions for adding one or more selected addressees to a member-generated or member-initiated message. Logic  622  may therefore include appropriate APIs for interacting with message application logic (e.g., an electronic mail program, an instant message program, a chat program) to deliver the addressee information, receiving notification that a member has initiated a message (with a selected content item attached or included), etc. In some embodiments, apparatus  600  may host or comprise the message application logic. 
     Addressee selection logic  624  comprises processor-executable instructions for selecting one or more addressees with which to automatically populate a member-generated message to convey a selected content item. As discussed above, logic  624  may implement just one scheme for selecting addressees, or may implement multiple different schemes (e.g., value function, community propagation, inverted Steiner tree). 
     Storage  606  may also contain data ancillary to implementation of one or more methods of selecting and automatically populating addressee fields with suitable addressees. Such data may include criteria  626  for identifying target recipients, for identifying communities that encompass target recipients, and/or for other purposes. These criteria may include member attributes, characteristics of selected content items, and/or other data. 
     Storage  606  may also contain operating parameters  628  that are not maintained by logic  622 ,  624 , which may include data for determining whether and when to terminate a campaign for distributing a selected content item, weights/values of members, identities of communities that members belong to, operating constraints/restrictions, and so on. 
     In some embodiments of the invention, data apparatus  600  performs most or all of the functions described in relation to data server  122 , and possibly message server  120 , of  FIG. 1 . In some particular implementations, apparatus  600  may host multiple virtual computer servers performing the functions of servers  120 ,  122  (and/or others) of  FIG. 1 . 
     An environment in which some embodiments described above are executed may incorporate a general-purpose computer or a special-purpose device such as a hand-held computer or communication device. Some details of such devices (e.g., processor, memory, data storage, display) may be omitted for the sake of clarity. A component such as a processor or memory to which one or more tasks or functions are attributed may be a general component temporarily configured to perform the specified task or function, or may be a specific component manufactured to perform the task or function. The term “processor” as used herein refers to one or more electronic circuits, devices, chips, processing cores and/or other components configured to process data and/or computer program code. 
     Data structures and program code described in this detailed description are typically stored on a non-transitory computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. Non-transitory computer-readable storage media include, but are not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs) and DVDs (digital versatile discs or digital video discs), solid-state drives and/or other non-transitory computer-readable media now known or later developed. 
     Methods and processes described in the detailed description can be embodied as code and/or data, which may be stored in a non-transitory computer-readable storage medium as described above. When a processor or computer system reads and executes the code and manipulates the data stored on the medium, the processor or computer system performs the methods and processes embodied as code and data structures and stored within the medium. 
     Furthermore, the methods and processes may be programmed into hardware modules such as, but not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or hereafter developed. When such a hardware module is activated, it performs the methods and processed included within the module. 
     The foregoing embodiments have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit this disclosure to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. The scope is defined by the appended claims, not the preceding disclosure.