# Patent

## Title
System for facilitating discovery and management of feeds

## Abstract

A web feed portal can enable users to discover new web feeds and manage existing subscriptions of feeds. Recommended feeds can be generated for a user that reflect the user's interests or that are popular within a user community. Users can subscribe to feeds by selecting recommended web feeds or by contributing web feeds to the web feed portal. The user's web feed subscriptions can also be ranked to display the feeds in order of update time and/or time viewed by the user.

## Background
BACKGROUND
Description of the Related Technology
Much content on the Internet is updated at a rapid pace. News websites, for instance, often update or add new stories throughout the day. User or organization-generated web logs or blogs can provide frequently-updated content. Additionally, weather data, podcasts, and search results can be updated over time. Users can keep track of these updates by visiting websites frequently. However, web feed technology simplifies the task of keeping track of frequently updated web content.
Example web feeds can include a document having a Really Simple Syndication (RSS), Atom, or other machine-readable format for providing users with updates to web content. In some scenarios of using web feeds, a content provider publishes a feed by providing a Uniform Resource Indicator (URI) on the content provider's website that links to the web feed. Users can subscribe to the feed using an aggregator program, for example, by providing the feed link to the aggregator program. When instructed, the aggregator can ask a corresponding server if the feed has any new content. If new content exists, the aggregator can notify the user of the new content or download all or a portion of the new content to the user's computer.
Users can find web feeds by exploring content providers' websites or by performing searches using general search engines or engines specialized for searching web feeds. Currently available content provider sites and search engines, however, do not necessarily suggest web feeds to users that reflect the users' interests. Consequently, many web feeds that might be interesting to a user can be difficult to find efficiently.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a block diagram of a web feed portal in accordance with certain embodiments;
FIG. 2 illustrates a flow chart diagram of an example process for providing web feed subscriptions and recommendations to a user using the web feed portal of FIG. 1;
FIG. 3 illustrates a flow chart diagram of an example process for subscribing to web feeds using the web feed portal of FIG. 1;
FIG. 4 illustrates a flow chart diagram of an example process for providing item recommendations to a user using the web feed portal of FIG. 1; and
FIG. 5 illustrates an example web feed user interface generated by the web feed portal of FIG. 1.



DETAILED DESCRIPTION OF SOME EMBODIMENTS
Several different computer-implemented processes will now be described for using recommendation algorithms to recommend items such as web feeds to users. These processes can be embodied individually or in any combination in a multi-user computer system (“system”) that implements a recommendation system.
For purposes of illustration, the processes are described primarily in the context of a system that recommends web feeds to users of a website that provides functionality for users to browse and subscribe to feeds. As will be apparent, however, the disclosed processes can also be used in other types of systems and can be used to recommend other types of content items, data streams or periodically updated content to which users can subscribe. In addition, the disclosed processes need not be implemented as part of, or in conjunction with, a website.
As used herein, the term “web feed” is used interchangeably to refer to a document or data format represented by a URI, to a URI itself, to a website upon which the web feed is based, and to any updated content to which the web feed refers. For example, recommending a web feed of a news site to a user can refer to recommending the feed document, the feed URI, the news site, and updated content on the news site. As will be apparent from the context in which it is used, the term is also sometimes used herein to refer only to the web feed document, to a URI, to the website upon which the web feed is based, or only to the updated content to which the web feed refers.
As described above, currently-available methods for finding web feeds of interest to a user suffer serious drawbacks. Search engines, for instance, enable users to search for blogs or other content using web feeds but do not list web feeds that necessarily reflect the user's interests. Some search engines enable a user to browse categories of web feeds. These engines, however, also fail to suggest web feeds to users.
Thus, in certain embodiments, systems and methods are provided for recommending items such as web feeds to users. Recommendations can advantageously be personalized based on the monitored actions of users. For instance, user activity can be analyzed to determine the web feed preferences of users. Additionally, functionality is provided in certain embodiments for users to subscribe to web feeds.
The features of these systems and methods will now be described with reference to the drawings summarized above. Throughout the drawings, reference numbers may be re-used to indicate correspondence between referenced elements. The drawings, associated descriptions, and specific implementation are provided to illustrate embodiments of the inventions described herein and not to limit the scope thereof. In addition, methods and processes described herein are not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate. For example, described blocks or states may be performed in an order other than that specifically disclosed, or multiple blocks or states may be combined in a single block or state. Moreover, the various modules of the systems described herein can be implemented as software applications, modules, or components on one or more computers, such as servers. While various modules are illustrated separately, they may share some or all of the same underlying logic or code. Thus, nothing in the following description is intended to imply that any particular feature, characteristic or component of the disclosed system is essential to the various embodiments disclosed herein.
Turning to FIG. 1, an embodiment of a web feed portal 100 is shown that addresses the foregoing problems, among others. The recommendation system 100 advantageously recommends web feeds to users and enables users to subscribe to the recommended web feeds. The recommendation system 100 also advantageously enables users to contribute web feeds to the web feed portal 100, which can in turn be recommended to other users.
By way of overview, the web feed portal 100 shown in FIG. 1 includes a web server 102 or servers that generate and serve pages of a host website in response to page requests from user computer systems 130. The web server 102 provides user access to items such as web feeds, whose addresses can be stored in one or more web feed databases or repositories 116. Users can access the web feeds in certain embodiments by using a web feed user interface generated by the web server 102, an example of which is shown and described below with respect to FIG. 5. The web feed user interface can include one or more web pages that can be downloaded from the web server 102 by a browser or other program installed on a user computer system 130. Alternatively, the web feed user interface can be implemented as an application stored locally on the user computer systems 130. For example, the web feed user interface can be an aggregator, feed reader, plug-in to a browser, or the like.
Advantageously, the web user interface can display personalized web feed recommendations to a target user. For example, the recommended web feeds can be generated by the web feed portal 100 based on data collected about the target user. Using the web feed user interface, the user can select a recommended web feed to view. The user can also subscribe to a recommended web feed. In addition, the user can contribute a web feed to the web feed database 116 using the web feed user interface. In certain embodiments, when a user contributes a new web feed, the web feed portal 100 automatically subscribes the user to the contributed web feed. The web user interface can also beneficially display web feeds to which a user has subscribed.
In more detail, the web server 102 in certain embodiments includes a page generator 104. The page generator 104 is a module that can generate the web page or pages of the web feed user interface. To generate the web feed user interface for a specific user, the page generator 104 retrieves user activity data (if any exists) regarding the user's web feed subscriptions (if available) from a user database 106. Using this user activity data, the page generator 104 can retrieve the subscribed web feeds' addresses from the web feed database 116. In one embodiment, the user database 106 and web feed database 116 are one database. The page generator 104 can also retrieve a list of recommended web feeds from a recommendations service 114, the operation of which is described in further detail below. Using the list of recommended web feeds, the page generator 104 can retrieve the addresses of the recommended web feeds from the web feed database 116.
Once the page generator 104 has the addresses of the subscribed and recommended web feeds, the page generator 104 can retrieve each subscribed and recommended web feed from the remote servers where they are hosted. The page generator 104 retrieves the feeds in one embodiment by using a feed parser 120 such as Magpie RSSTM or the like. The feed parser 120 is a module that can fetch and parse web feed documents. In one embodiment, the feed parser 120 first determines if a feed is valid. If so, it parses the web feed document to obtain information about the feed. For example, the feed parser 120 can obtain the title of the feed, recent feed headlines, a last update time of the feed, feed text, images, a URI of a website hosting the feed, URI's of articles of the feed, the publication time of each article, descriptions of the feed, names of the feed editor and feed webmaster, the language of the feed, combinations of the same, and the like. Using some or all of the information obtained by the feed parser 120, the page generator 104 can generate the web user interface.
The page generator 104 can also use a feed ranking module 122 to generate a display ranking of the subscribed feeds. In one embodiment, the feed ranking module 122 receives data regarding the last update time for each subscribed feed from the feed parser 120. The feed ranking module 122 can also receive data from the user database 106 regarding the last time the user viewed each subscribed feed, such that the ranking is personalized for this particular user. Using this last update time and/or last viewed time data, the feed ranking module 122 can rank the user's subscriptions. For example, the feed ranking module 122 can list subscriptions with more recent update or viewed times first. More detailed algorithms for ranking web feeds are described below with respect to FIG. 2. In certain embodiments, the feed ranking module 122 can also rank recommended feeds.
The web feed user interface can be used to track users in a variety of ways. In one embodiment, the web feed user interface (or the web server 102) tracks users by assigning an HTTP cookie to the user, which is stored locally on the user's computer 130. The cookie can include, for example, a unique identification of the user or user system 130, with corresponding identification stored in the user database 106. The cookie can also optionally include user preference settings, such as preferred display settings that configure how subscriptions and recommendations are displayed. In alternative embodiments, the web user interface can provide a login prompt instead of, or in addition to, using cookies. Users can log in using indicia such as a user name and/or password to access their web feed subscriptions and recommendations.
Users can subscribe to feeds in at least two ways. First, a user can select a recommended feed by, for example, clicking a control in a user interface encoded for display at the user system 130 by page generator 104. The control could be, among others, a subscribe link, button, or the like. Once the user has selected the recommended feed for subscription, the web feed user interface can send a notification of the subscription to the web server 102. The web server 102 can in turn create a record of the new web feed subscription in the user database 106. In addition, in some embodiments, the web server 102 causes the page generator 104 to regenerate the web feed user interface with the updated subscription information.
Another way for a user to subscribe to a feed is to contribute a feed. As one example, a user can input an address of a web feed into an input area of the web feed user interface, such as a text field or the like. The web feed user interface can then send the address of the contributed feed to the web server 102. The web server 102 in turn can update the subscription data in the user database 106 with the contributed feed. In addition, if the web feed address does not already exist in the web feed database 116, the web server 102 can add the address of the new feed to the web feed database 116. Thus, certain embodiments of the web feed portal 100 beneficially allow users to contribute new feeds to the web feed portal 100.
As described above, web feed recommendations are generated by the recommendations service 114. In certain embodiments, the recommendations service 114 generates some or all of the recommendations at the time a web page of the web feed user interface is generated. The recommendations service 114 can include one or more recommendation engines for generating personalized recommendations, non-personalized recommendations, combinations of the same, and the like. Personalized recommendations can be based at least in part on data about the user and are therefore personalized or targeted to the user's interests. Non-personalized recommendations, on the other hand, may take little or no account of the user data. One example of non-personalized recommendations is the recommendation of web feeds based on their popularity. Another example of non-personalized recommendations includes web feeds that are randomly selected for recommending to a user.
In various implementations, the recommendations service 114 generates personalized recommendations by first retrieving user activity data, including data on user subscriptions and web feed view history, from the user database 106. User subscription data can include a list of web feeds the user is subscribed to. The user subscription data can also include data on web feeds the user has subscribed to in the past but has since unsubscribed from. The user's view history can include a record of web feeds viewed by the user while using the web feed user interface. This view history can also include data on how frequently a user has viewed the web feeds and a last viewed time for each viewed feed. In some instances, the view history can overlap with the subscription history, such that the view history also includes data on subscriptions that the user has viewed, the last viewed time for each subscription, and so forth. In addition, information about the feeds the user has viewed can additionally be obtained from one or more other sources, such as a browser toolbar installed on the user's computer 130.
Once the recommendations service 114 has retrieved the user activity data, the recommendations service 114 can analyze this data to determine the web feed interests of the user. By analyzing the user activity data, which can include actions made by the user during the current browse session, the recommendations service 114 can generate recommendations based on the user's behavior. Thus, the recommendations service 114 can provide recommendations that are targeted or personalized to the user's interests.
One example implementation of this analysis by the recommendations service 114 is as follows. The recommendations service 114 in certain embodiments uses one or more associated items tables or datasets 110, 112 to look up web feeds that are similar to or associated with the web feeds in the user's activity data. The recommendations service 114 can also look up data values in the associated items tables 110, 112 that indicate the strengths of such relationships. These associated items tables 110, 112 can be generated off-line by an association mining module 108 that analyzes the user activity data for a plurality of users. By analyzing this user activity data, the association mining module 108 can detect and quantify or score behavior-based associations between specific web feeds.
More particularly, in certain embodiments the association mining module 108 can analyze the web feed subscriptions of a plurality of users to generate item-to-item mappings between the subscribed web feeds. For instance, web feed A may be mapped to web feed B in a subscription-based associated items table 110 if a relatively large number of users who subscribed to web feed A also subscribed to web feed B. Likewise, view-based associations 112 can be detected and quantified based on the view histories of a plurality of users.
In certain embodiments, the association mining module 108 can use one or more of the association or similarity mining techniques described in U.S. Pat. No. 6,912,505 entitled “Use of Product Viewing Histories of Users to Identify Related Products,” issued Jun. 28, 2005, the disclosure of which is hereby incorporated by reference in its entirety. For example, the association mining module 108 can create item-to-item mappings that include complementary associations and substitution associations. Complementary associations include associations between items that complement each other, for example, an association between a web feed that reports news for a locality and a web feed that reviews restaurants in the same locality. Substitution associations include associations between items that can be substituted for each other, for example, an association between different web feeds that discuss politics.
Personalized recommendations can also be made using information unrelated to the user's other web feed activity. For example, web feed recommendation system 100 may be able to determine an IP address of the user system 130 and make guesses about the user's interests by determining whether the IP address is affiliated with a particular geographic, political, or entity affiliation. As an additional example, the time of day of the access, the type of user system (e.g. hardware, software, client information, etc.) could also be used to provide certain guesses about the user's interests. For example, a user system determined to be an Apple® Macintosh® operating system may be provided with feeds related to Apple Macintosh enthusiasts.
In addition to providing personalized or behavior-based recommendations, the recommendations service 114 can provide non-personalized recommendations. Non-personalized recommendations can be useful for first-time users of the web feed user interface or for users who have little or no view history or subscriptions. In addition, non-personalized recommendations can be used for all users in certain embodiments. Moreover, the number of non-personalized recommendations provided to a user can decrease as the user's activity data grows. A user with little user activity data might, for instance, receive many non-personalized recommendations and few personalized recommendations. Conversely, a user with a significant amount of user activity data might receive mostly or all personalized recommendations.
Non-personalized recommendations can include recommendations generated based on the popularity of web feeds. For example, in one embodiment a most popular set of web feeds are provided to the user as recommendations. The popularity of the web feeds can be determined based on how many users have viewed the web feeds and/or how many users have subscribed to the web feeds. Popularity can also be based at least in part on the number of times a web feed has been contributed by the user community. In certain embodiments, web feed popularity is determined by a feed statistics module 118. Whenever a user views or subscribes to a web feed, data regarding the feed subscribed to or viewed can be passed to the feed statistics module 118, which can increment a popularity count for each web feed viewed or subscribed to. The feed statistics module 118 can pass this popularity data to the web feed database 116.
Non-personalized recommendations can also include web feeds that are randomly selected to recommend to a user. Providing randomly-selected web feeds as recommendations beneficially allows recommendations that have been contributed by the user community to be recommended to users. This is so because in some implementations newly-contributed web feeds have little or no popularity data, and hence may not be recommended according to popularity criteria. Thus, randomly selecting from these contributed feeds enables the contributed feeds to gain exposure and popularity ranking.
All or a subset of the recommendations generated by the recommendations service 114 can be provided to the user. For example, a most highly-scored subset of the recommendations can be provided. This subset can include highly-scored personalized recommendations, scored based on degree of association, and highly-scored non-personalized recommendations, scored based on degree of popularity. Because the scoring scales for degrees of association and degrees of popularity can differ, normalization techniques can be used to compare the scores of the personalized and non-personalized recommendations. In certain embodiments, example normalization techniques can be used that are disclosed in U.S. patent application Ser. No. 11/772,010, entitled “Recommendation System With Multiple Integrated Recommenders,” filed Jun. 29, 2007, the disclosure of which is hereby incorporated by reference in its entirety.
In one implementation, a mix of personalized and non-personalized recommendations are selected for recommendation to the user. One example scenario of selecting recommendations includes selecting ten most popular feeds, selecting five additional randomly-selected feeds shuffled among the ten popular feeds, and selecting behavior-based recommendations to be provided at the top of the list of recommendations, sorted by recommendation strength. Many other mixes of recommendations can be provided.
Other types of recommendation engines, including recommendation engines that do not use item-to-item mappings, may also be used by the recommendations service 114 to generate recommendations, alone or in combination with the techniques described herein. For example, recommendation engines can be provided that generate popularity recommendations based on 1 to 5 star rankings of web feeds, using the techniques described in U.S. Pat. No. 7,310,612, entitled “Personalized Selection and Display of User-Supplied Content to Enhance Browsing of Electronic Catalogs,” issued Dec. 18, 2007, the disclosure of which is hereby incorporated by reference in its entirety. Also, recommendation engines that vary the recommendations provided over time can also be used by the recommendation service 114, examples of which are disclosed in U.S. application Ser. No. 11/752,251, entitled “Probabilistic Recommendation System,” filed May 22, 2007, the disclosure of which is hereby incorporated by reference in its entirety. Other recommendation engines can also be used.
Although the above embodiments describe numerous feed-related tasks as being performed by the web server 102, in certain embodiments some or all of these tasks can be performed by one or more separate services or applications that communicate with the web server over a network or other communications medium. For example, in some embodiments, such tasks may be implemented as a web service that is accessible by the user system 130 or by the web server 102. Moreover, while the above embodiments describe a web server 102 that can be accessed directly by user computer systems 130 (e.g., through an Internet Service Provider), other embodiments contemplate that a remote website can access the web server 102. For example, in certain embodiments a remote website can generate at least a portion of the web feed user interface for end users of the remote website.
This remote website can use Application Programming Interface (API) calls to retrieve recommendations from the web feed portal 100 to provide to the end users. For example, using one or more API calls, the remote website can provide identification information about a target user to the web feed portal 100 and can request recommendations for the target user from the web portal 100. The remote website can alternatively provide widget code embedded in the web feed user interface, such as JavaScript code or the like, that requests recommendations of the web server 102 directly from the user computer systems 130. In addition, the remote server can provide a plug-in for the user system 130 that includes code for requesting recommendations of the web server 102. In certain embodiments, the remote server can be implemented using some or all of the techniques described in U.S. application Ser. No. 11/694,758, entitled “Service for Providing Item Recommendations,” filed Mar. 30, 2007, the disclosure of which is hereby incorporated by reference in its entirety.
FIG. 2 illustrates an embodiment of a process 200 for providing web feed subscriptions and recommendations to a user. In certain embodiments, the process 200 may be implemented by the web feed portal 100 or by components thereof. In particular, the process 200 can be implemented by the web server 102 in certain implementations. The process 200 can be invoked in one embodiment by a user upon requesting a web page from a web server, such as the web server 102. In certain embodiments, the process 200 therefore illustrates actions taken by a web server, a service, combinations of the same, or the like when generating a web feed user interface for a user.
At block 202, data about a user's feed subscriptions is retrieved from a user database. This data can include identification data of feeds that the user is subscribed to. The identification data can include, for instance, numerical identifiers that correspond to feed addresses stored in a web feed repository. In addition, this data can include last viewed times of each feed the user is subscribed to.
Using the identification data, at block 204 the feed subscriptions are retrieved. This block 204 can include retrieving addresses of the web feeds from a web feed repository. Using a feed parser or the like, web feed documents can be retrieved from remote websites that host the feeds. The feeds, once retrieved, can be parsed. This block 204 can also include obtaining last update times of each feed by using the feed parser.
The subscriptions can be ranked (e.g., for display according to the rank) at block 206 based at least in part on their last update and/or last viewed times. For example, the feeds can be ranked such that subscriptions with more recent update or viewed times are ranked higher. More specifically, in certain embodiments the feeds are ranked using an exponential decay algorithm. In this algorithm, the subscriptions are given scores that decay exponentially corresponding to the subscriptions' last update and/or last viewed times. When both last update time and last viewed time are used to decay the scores, the algorithm can be referred to as a dual exponential decay algorithm.
Expressions used in one example implementation of the exponential decay algorithm or algorithms can include:

Vs=e−λ·(seconds since last viewed)  (1)

Us=e−λ·(seconds since last updated)  (2)





  
    
      
        
          λ
          =
          
            
              ln
              ⁡
              
                (
                2
                )
              
            
            α
          
        
        ,
      
    
    
      
        (
        3
        )
      
    
  




where Vs represents a last viewed score for a web feed, Us represents a last updated score for a web feed, λ represents a half-life constant having a value greater than 0, In represents the natural logarithm, α represents a constant, and e represents a mathematical constant. Expression (1) illustrates that in certain embodiments, as the time in seconds since a feed has been viewed increases, its last viewed score Vs decreases exponentially. Similarly, expression (2) illustrates that in certain embodiments, as the time in seconds since a feed was last updated increases, its last updated score Us decreases exponentially.

In certain embodiments, the half-life constant λ represents the half life of the decay functions represented in expressions (1) and (2). The value of λ depends on the value of the constant α. In one embodiment, α has a value equivalent to 24*3600, representing (24 hours)*(3600 seconds), or the number of seconds in one day. With this value of α, the half-life constant λ causes the exponential decay functions in expressions (1) and (2) to have a half-life of one day. As a result, the updating and viewing activity within a 24-hour period is effectively weighted more heavily than the updating and viewing activity after a 24-hour period. The value of λ chosen can be varied in certain embodiments to increase or decrease the half-life of the decay. In addition, each of the expressions (1) and (2) can have different values for α and λ in certain implementations.
An overall score for each web feed subscription can be generated in one embodiment by summing the scores Vs and Us. Alternatively, the scores Vs and Us can be weighted differently, or only one of the two scores Vs and Us might be used.
Continuing, at block 208 the recommendations are retrieved. The recommendations can be retrieved from a recommendations service, using the techniques described above with respect to FIG. 1 and further described below with respect to FIG. 4. Thereafter, the subscriptions and recommendations are output for display at block 210 by, for example, generating a web feed user interface. In some embodiments the recommended feeds need not be displayed for the user. For instance, the feeds could be stored for use by other user applications on the user system 130 and/or transmitted to other remote systems for various purposes. As one example, a user could obtain web feed recommendations from the web feed portal 100 and publish a web feed of the user's recommendations.
FIG. 3 illustrates an embodiment of a process 300 for subscribing to web feeds. In certain embodiments, the process 300 may be implemented by the web feed portal 100 or by components thereof. In particular, the process 300 can be implemented by a web server such as the web server 102, a web service, combinations of the same, or the like. Advantageously, the process 300 of certain embodiments facilitates users contributing feeds to a web feed repository.
At block 302, a request is received to add a feed. This request can originate from a user submitting a feed address to a web server using, for example, a web feed user interface or aggregator application. It is determined at block 304 whether the feed is valid. A feed parser or the like can be used to determine whether a valid feed exists, as described above.
If the feed is not valid, the process 300 ends. However, if the feed is valid, the feed is added to the user's subscriptions at 306. This block 306 can include storing a identifier for the feed in a user database. At block 308, it is further determined whether the feed is a new feed, for example, by determining whether the feed has an address or identifier stored in a web feed data repository. This block 308 can include normalizing the addresses of the feeds to facilitate searching for existing feeds by, for example, stripping http, www, or other prefixes, removing trailing slashes, combinations of the same, and the like. If not, at block 310 an address for the feed and optionally an identifier, corresponding to the identifier stored in the user database, is stored in the web feed data repository.
Feed statistics are updated at block 308. Feed statistics can include a count of the number of times a feed has been subscribed to, viewed, or both. In addition, feed statistics can include the last viewed time of the feed by the user. Advantageously, the feed statistics can be used to determine the popularity of feeds. As described above, the popularity of the feeds can be used to create and/or rank feed recommendations.
FIG. 4 illustrates an embodiment of a process 400 for providing item recommendations. In certain embodiments, the process 400 may be implemented by a recommendation system, such as by the web feed portal 100 or by components thereof. For example, the process 400 can be implemented by a web server such as the web server 102, a web service, combinations of the same, and the like. Advantageously, the process 400 of certain embodiments facilitates providing personalized and/or non-personalized recommendations to users.
A request for item recommendations is received at block 402. This request can be received from a web server by a recommendations service. In addition, in some embodiments this request can be received from a remote website via an API call or the like.
At block 404, it is determined whether user activity data is available. User activity data can include subscription and view history data. If user activity data is available, item recommendations are generated at block 406 based at least in part on the user activity data. These behavior-based recommendations may be generated based at least in part on item-to-item associations, as described above with respect to FIG. 1.
At block 408, it is determined whether to recommend other items. If yes, then at block 410 item recommendations are provided based on criteria other than user activity data. For example, non-personalized recommendations can be provided based on the popularity of the recommended web feeds. Additionally, if user activity data is determined to not be available at block 404, item recommendations are provided based on criteria other than user activity data at block 410. Thereafter, the process 400 ends.
FIG. 5 illustrates an example web feed user interface 500 for displaying web feed subscriptions and recommendations to a user. In the depicted embodiment, the web feed user interface is illustrated as a web page generated for a particular user. This web page is illustrative only, and other types of user interfaces can be used. For example, an aggregator or feed reader interface could be used to display the feed subscriptions and recommendations.
Subscriptions 520 are listed in the depicted embodiment on the left hand side of the web feed user interface 500. Each web feed is identified by its title 522 (e.g., “John's Venture Blog”). Headlines 524 are also listed for each feed. In certain embodiments, a limited number of the most recent headlines 524 for each feed are displayed. Selecting a title 522 or headline 524 enables a user to view the respective title 522 or headline 524. In addition, when a user selects a title 522 or headline 524, the last view time for that feed can be updated for that user.
Recommended feeds 530 are displayed in the depicted embodiment on the right hand side of the web feed user interface 500. Like the subscriptions 520, the recommended feeds 530 each include a title 522 and headlines 524. Additionally, each recommended feed 530 in the depicted embodiment is shown associated with a subscribe control 552, which in the depicted embodiment includes a “subscribe” hyperlink. The subscribe control 552, when selected, subscribes a user to the selected feed. A popularity counter 562 shows how many users have subscribed to each recommended feed 530. Once a user subscribes to a web feed, the subscribe control 552 link can change to an “unsubscribe” link. When clicked, the unsubscribe link can both remove the user's subscription and decrement the popularity counter 562.
A similar feeds control 525 is displayed next to each subscribed 520 and recommended feed 530. This control 525, when selected, can provide recommendations that are similar to the respective feed 520, 530. A message can accompany the recommendations, which says, as one example, “Users who viewed this feed also viewed,” which can be followed by a list of recommendations. These recommendations can include view-based and/or subscription-based recommendations and can be based, for example, on the item-to-item associations described above with respect to FIG. 1.
Contribution controls 510, including a button and input box, are provided for contributing a feed. A user can, for example, enter a feed address in the input box of the contribution controls 510 and subscribe to the feed by pressing the “subscribe” button of the control 510. In other embodiments (not shown), a user can drag a web feed address to an input area to subscribe to the feed or use some other mechanism to contribute a feed.
The display ranking of the subscriptions 520 can be determined, for example, by the process 300 described above. The display ranking of the recommendations 530 is determined in one embodiment by the popularity of the feed, including those feeds that are personalized recommendations 530. The display ranking of the recommendations 530 can also be based on the last update time of the feeds 530. In addition, personalized recommendations 530 can be displayed before non-personalized recommendations 530 in one embodiment.
In another embodiment, the recommended feeds 530 are displayed in order of their fetch time. For example, an Asynchronous JavaScript and XML (AJAX) asynchronous programming technique can be used to populate the recommended feeds 530 in order of which feeds are fetched by a feed parser. Thus, in these embodiments, feeds 530 that load relatively quickly are displayed earlier, while feeds that take longer to load are displayed later. This asynchronous programming technique can also be used for displaying subscriptions in certain embodiments.
In certain embodiments, other enhancements can be provided to the web feed user interface 500. For example, a “not interested” control can be provided for each recommended web feed. Selecting the “not interested control” could prevent the corresponding recommended web feed from being presented to the user again. As another example, reasons can be provided for each recommendation, such as “recommended because you viewed web feeds related to computers.” The relative weight, score, or the like of each recommendation can also be shown. One or more of the recommendations can also display a list of the user's friends who have subscribed to or viewed the particular recommended feed. In one implementation, the user can view feeds contributed by, subscribed to, or viewed by the user's friends or by other users.
Advantageously, in certain embodiments advertisements can be embedded in the web feed user interface to enable a provider of the web feed user interface to be compensated. For example, the advertisements may be pay-per-click or pay-per-impression advertisements that compensate one or more of the website operator or the web feed recommendation system operator. In some instances, the web feed recommendation system could be implemented as a service for use by websites. In such an environment, the website may compensate the web feed recommendation system by compensating using, for example, a pay-per-use scheme (e.g. metering) or a subscription plan. According to some embodiments, the provider of the web feeds themselves may compensate one or more of the website operator or the web feed recommendation system operator based on the number of click-throughs to the web feed web page, for each subscription generated, or other metrics.
Moreover, the advertisements can be targeted to the user's viewing and subscription activity. For example, advertisements can be shown for political books if the user has viewed or subscribed to political web feeds. Advertisements can also be shown along with an explanation such as “customers who viewed (or subscribed to) these web feeds bought these products.” Similarly, advertisements for can be shown along with any of the following explanations: “customers who viewed (or subscribed to) these web feeds (a) bought in this category of products, (b) bought products tagged with keywords found in these web feeds, (c) bought products with item descriptions similar to the text of the web feeds you read,” combinations of the same, and the like.
Each of the processes, components, and algorithms described above may be embodied in, and fully automated by, code modules executed by one or more computers or computer processors. The code modules may be stored on any type of computer-readable medium or computer storage device. The processes and algorithms may also be implemented partially or wholly in application-specific circuitry. The results of the disclosed processes and process steps may be stored, persistently or otherwise, in any type of computer storage. In one embodiment, the code modules may advantageously be configured to execute on one or more processors. In addition, the code modules may comprise, but are not limited to, any of the following: software or hardware components such as software object-oriented software components, class components and task components, processes methods, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, variables, or the like.
The various features and processes described above may be used independently of one another, or may be combined in various ways. All possible combinations and subcombinations are intended to fall within the scope of this disclosure. In addition, certain method or process steps may be omitted in some implementations.
While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.

## Claims

1. A system for recommending web feeds to subscribe to, the system comprising:
a computer system comprising one or more processors, the computer system programmed to implement:
a user database comprising user activity data regarding one or more web feed subscriptions of a target user, each web feed subscription of the target user corresponding to a web feed having a first address stored in a web feed repository;
a feed ranking module configured to generate a ranked set of at least a portion of the target user's web feed subscriptions, wherein rankings in the ranked set are based at least in part on one or both of the duration since the feed was last updated and the duration since the user last viewed the feed;
an associations mining module configured to detect behavioral associations between first web feeds based at least partly on behavior of a plurality of users, wherein the associations mining module is configured to perform said detection by at least identifying pairs of the first web feeds that were both selected for subscription or viewing by a plurality of users, the association mining module additionally configured to create item-to-item mappings between the identified first web feeds, the item-to-item mappings comprising scores reflecting the degree of the associations;
a recommendations service configured to generate personalized web feed recommendations for the target user by at least accessing the behavioral associations to identify one or more of the identified first web feeds that are associated with a subset of the user activity data of the target user, and selecting a most highly-scored subset of the associated web feeds as the web feed recommendations; and
a page generator configured to generate a web feed user interface configured to display the ranked set of at least a portion of the target user's web feed subscriptions and the personalized web feed recommendations, wherein selection of a recommended web feed by the target user subscribes the target user to the recommended web feed,
wherein the web feed user interface comprises a text field providing functionality for the target user to input text corresponding to a second address of a second web feed to thereby subscribe the target user to the second web feed and make the second web feed available for other users to select for subscription, and wherein the second address of the second web feed is added to the web feed repository if the second address is not already stored in the web feed repository;
the associations mining module being further configured to detect one or more additional behavioral associations between at least the second web feed and one or more of the first web feeds; and

the recommendations service being further configured to use the one or more additional behavioral associations to recommend the second web feed to one or more of the other users.

2. The system of claim 1, wherein the associations mining module configured to determine the scores at least partly based on the number of users that selected both of the associated web feeds for subscription or viewing.

3. The system of claim 1, wherein item-to-item mappings between web feeds are stored in an associated items table in computer storage.

4. The system of claim 1, wherein the recommendations service is further configured to generate the personalized web feed recommendations using a web feed represented by the web feed address submitted by the target user.

5. A computer-implemented method of recommending feeds to users, the method comprising:
by a computer system comprising one or more processors:
providing a web feed user interface comprising a text field providing functionality for a target user to input text corresponding to an address of a first web feed, the web feed user interface further providing functionality for the target user to submit a first web feed address to a web feed repository when the first web feed address is not already stored in the web feed repository, wherein inputting text corresponding to the address of the first web feed by the target user makes the web feed address available for other users to select for subscription;
detecting one or more behavioral associations between the first web feed and one or more second web feeds based at least partly on behavior of a first plurality of users, wherein said detecting comprises creating first item-to-item mappings between the first web feed and the one or more second web feeds in response to determining that the first web feed and the one or more second web feeds were both selected for subscription or viewing by the first plurality of users, the first item-to-item mappings comprising first scores reflecting a degree of association between the first web feed and the one or more second web feeds;
recommending the first web feed to one or more other users based at least partly on the one or more behavioral associations;
determining whether behavioral data exists for the target user, the behavioral data selected from at least one of the following: (a) feeds that the target user has subscribed to and (b) feeds that the target user has viewed;
when behavioral data exists for the target user, generating a set of personalized web feed recommendations comprising a set of web feeds for the target user based at least in part on the behavioral data related to the user, wherein generating the personalized web feed recommendations comprises:
identifying pairs of web feeds stored in the web feed repository that were both selected for subscription or viewing by a second plurality of users and creating second item-to-item mappings between the identified web feeds, the item-to-item mappings comprising second scores reflecting a degree of associations between the identified web feeds,
identifying associated web feeds that are associated with a subset of the behavioral data of the target user, and
selecting a most highly-scored subset of the associated web feeds as the web feed recommendations; and

when no behavioral data exists for the target user, generating other feed recommendations for the target user based on criteria other than behavioral data.

6. The method of claim 5, wherein generating other feed recommendations for the target user comprises randomly selecting feeds to recommend to the target user.

7. The method of claim 5, wherein the other feed recommendations are generated based at least in part on feed popularity.

8. The method of claim 5, wherein an act of the user contributing one or more feeds to the feed database subscribes the user to the one or more feeds.

9. The method of claim 5, wherein providing a feed user interface comprises providing a listing of feed recommendations for the user, wherein selecting a selected feed of the feed recommendations in the listing subscribes the user to the selected feed.

10. The system of claim 5, further comprising adding subscribed feeds to a feed repository if the subscribed feeds are not already stored in the feed repository.

11. A computer-implemented method of generating web feed recommendations, the method comprising:
by a computer system comprising one or more processors:
receiving a request for web feed recommendations, the request including an identifier of a user; and
in response to the request,
retrieving behavioral data of the user;
selecting a set of web feeds to recommend to the user, wherein the web feeds are selected by at least:
identifying web feeds that were selected for subscription or viewing by a first plurality of users and creating first item-to-item mappings between the identified web feeds, the first item-to-item mappings comprising first scores reflecting the degree of the associations, wherein the first scores are determined at least partly based on the number of users that selected both of the associated identified web feeds for subscription or viewing, and
selecting a subset of the identified web feeds based at least partly on the behavioral data of the user and the scores of the identified web feeds;

generating a display page for presentation to the user, the display page including a text field providing functionality for the user to input a web feed address corresponding to a second web feed;
providing functionality to submit a web feed address to a web feed repository, wherein inputting a web feed address by the user makes the second web feed available for other users to select for subscription if the web feed address is not already stored in the web feed repository;
returning the personalized web feed recommendations;
detecting one or more behavioral associations between the second web feed and one or more web feeds stored in the web feed repository based at least partly on behavior of a second plurality of users, wherein said detecting comprises creating second item-to-item mappings between the second web feed and the one or more stored web feeds when the second web feed and the one or more stored web feeds were both selected for subscription or viewing by the second plurality of users, the second item-to-item mappings comprising second scores reflecting a degree of association between the second web feed and the one or more stored web feeds;
recommending the second web feed to one or more other users based at least partly on the one or more behavioral associations.

12. The method of claim 11, wherein selecting a set of web feeds to recommend to the user comprises selecting web feeds randomly to recommend to the user.

13. The method of claim 11, wherein receiving the request from the remote website comprises receiving a call to one or more routines in an application programming interface (API).

14. The method of claim 11, wherein receiving the request from the remote website comprises receiving a request from a widget embedded within a web page of the remote website.

15. The method of claim 11, further comprising generating non-personalized web feed recommendations for the user.

16. The method of claim 11, further comprising returning a ranked set of the web feed subscriptions of the user.

17. The method of claim 11, wherein the scores are generated at least partly based on the number of users that selected both of the associated web feeds for subscription or viewing.

18. The method of claim 11, wherein item-to-item mappings between web feeds are stored in an associated items table in computer storage.

19. A computer-implemented method comprising:
by a computer system comprising one or more processors:
maintaining a record of feeds to which a user is subscribed;
maintaining a record of feeds the user has viewed;
detecting behavioral associations between feeds stored in a web feed repository by at least identifying pairs of the stored feeds that were both selected for subscription or viewing by a first plurality of users and creating first item-to-item mappings between the identified stored feeds, the first item-to-item mappings comprising scores reflecting the degree of the associations;
selecting a set of feeds to recommend to the user based, at least in part, on the feeds to which the user has subscribed and the feeds the user has viewed, by at least selecting from the behavioral associations associated stored feeds that are associated with a subset of the feeds to which the user has subscribed and the feeds the user has viewed; and
generating a display page for presentation to the user, the display page including a first area that lists the feeds to which the user is subscribed, a second area that lists the additional feeds selected to recommend, and a third area comprising a text field providing functionality for the user to input a web feed address corresponding to a new web feed, wherein inputting a web feed address by the user makes the new web feed available for other users to select for subscription if the web feed address is not already stored in the web feed repository;
detecting one or more behavioral associations between the new web feed and one or more of the stored feeds based at least partly on behavior of a second plurality of users, wherein said detecting comprises creating second item-to-item mappings between the new web feed and the one or more of the stored web feeds when the new web feed and the one or more of the stored web feeds were both selected for subscription or viewing by the second plurality of users, the second item-to-item mappings comprising second scores reflecting a degree of association between the new web feed and the one or more of the stored web feeds;

recommending the new web feed to one or more other users based at least partly on the one or more behavioral associations.

20. The method of claim 19, wherein generating the display page comprises ranking the feeds to which the user is subscribed based, at least in part, on the following information about each subscribed-to feed: (a) duration since the feed was last updated, and (b) duration since the user last viewed the feed.

21. The method of claim 19, further comprising selecting a set of feeds to recommend to the user based, at least in part, on data regarding web feed popularity.

22. The method of claim 19, further comprising providing a control on the display page, the control configured to permit the user to contribute a feed to the record of feeds.

23. The method of claim 19, wherein selecting a set of feeds to recommend to the user comprises selecting random web feeds to recommend to the user.

24. The method of claim 19, wherein a web feed address submitted by the user is submitted to the web feed repository only after determining that the web feed address is valid and not already contained in the web feed repository.

25. A computer-implemented method comprising:
by a system comprising computer hardware:
subscribing a first user to a first item in response to the first user contributing the first item;
adding the first item to a data repository in response to the first user contributing the first item;
retrieving subscription data relating to a second user from a user database, the subscription data comprising data regarding subscribed items that the second user has subscribed to;
recommending the first item to the second user, wherein the first item is selected to be recommended to the second user based, at least in part, on a determination that both the first item and at least one of the items the second user has subscribed to were selected for subscription or viewing by a first plurality of users;
making the first item available for the second user to subscribe to by selecting a subscribe control in a user interface;
retrieving the first user's subscription data from the user database, the subscription data comprising data regarding subscribed items that the first user has subscribed to;
determining one or more of a last update time of the first user's subscribed items and a last viewed time of the first user's subscribed items by the first user;
ranking the first user's subscribed items based at least in part on the items' last update time and last viewed time;
selecting a set of second items to recommend to the first user based, at least in part, on the first user's subscription data, wherein the second items to recommend are selected by at least identifying pairs of the second items that were both selected for subscription or viewing by a second plurality of other users and creating scored item-to-item mappings between the identified second items and selecting a subset of the associated second items based at least partly on the scores of the associated second items; and
outputting the first user's subscribed items and the second item recommendations for display to the first user.

26. The method of claim 25, wherein ranking the subscribed items comprises using at least one exponential decay function to rank the subscribed items.

27. The method of claim 25, further comprising selecting a set of items to recommend to the user.

28. The method of claim 27, wherein the web page is further configured to facilitate selecting one of the recommended items by the user, wherein selecting one of the recommended items subscribes the user to the selected recommended item.

29. The method of claim 27, wherein selecting a set of items to recommend to the user comprises selecting items randomly.