Abstract:
Method for aggregating syndicated Web content, comprising the steps of: Retrieving ( 100 ) updated content from predetermined Web feeds; Comparing ( 120 ) said updated content with stored content previously retrieved; Storing ( 160 ) the updated content if it is considered different from the stored content; Deleting ( 170 ) the updated content if it is considered identical to the stored content.

Description:
FIELD OF THE INVENTION 
       [0001]    The invention relates to the aggregation of Web feed. 
       BACKGROUND OF THE INVENTION 
       [0002]    Since its beginnings in the early 1990s, the World Wide Web has become very popular and it now comprises several billions of Web pages including various contents such as texts, images, videos, and links (also referred to as hyperlinks) to other Web pages. The World Wide Web is used daily by billions of Web surfers. 
         [0003]    Getting online nowadays is quite simple and requires neither particular skills nor particular proceedings before a national or international office, which in fact does not exist. Surprisingly, no attempt was made to classify the Web in order to group Web sites within families (based upon predetermined criteria), although anyone would benefit from such a classification. Therefore, it is becoming more and more difficult for the Web surfers to retrieve substantive and reliable updated information. Web browsers are of help, of course, but with the increasing number of Web pages, numerous semantic search requests result in raw content which is mostly unclassified, often redundant, inexplicit, and, in the end, simply unworkable. 
         [0004]    In the early 2000s, a solution was provided though, called syndication, to help surfers get the right information at the proper moment. In syndication, a section of a Web site is made available for other Web sites to use. More specifically, in Web syndication, content (commonly referred to as Web feed) is put on a Web site in a particular format—often XML-based (XML stands for eXtensible Markp Language), such as RSS (Real Simple Syndication) or Atom—and associated with a feed link which another user (client) can subscribe to in order to retrieve the corresponding content by means of a particular application called a feed aggregator, also referred to as a feed reader or a news reader, running locally on the client&#39;s terminal or server. 
         [0005]    Having subscribed to a feed, a feed aggregator may be configured to check for and retrieve updated content at predetermined intervals (which may be user-defined). Modern Web browsers often include built-in aggregators, such as iGoogle™ and My Yahoo™. U.S. patent applications No. US 2008/0034058 (Assigned to Marchex, Inc.) and US 2008/0046543 (Assigned to RealNetworks) both illustrate methods for obtaining Web feeds. 
         [0006]    Although feed aggregators are a powerful resource for retrieving updated information from the World Wide Web and making it available to an end user via a user-friendly graphical interface (GUI), the volume of articles can sometimes be overwhelming, especially when the user has subscribed to many Web feeds. To address this problem, some feed aggregators include functionalities to allow users to tag the feeds with keywords in order to sort and filter the available articles into easily navigable categories. However this solution is time-consuming, since the user has to do a pre-classification of the feeds from which he wishes to obtain updated content. In addition, tagging Web feeds is simply useless when the content to be retrieved changes subject with each update (such as in newspapers Websites). 
       SUMMARY OF THE INVENTION 
       [0007]    Clearly there is a need for a solution allowing Web surfers to get, in an automated way, information retrieved from Web feeds in a fully workable manner. 
         [0008]    It is an object of the invention to provide such a solution. 
         [0009]    Accordingly, according to one aspect, the invention provides a method for aggregating syndicated Web content, comprising the steps of:
       Retrieving updated content from predetermined Web feeds;   Comparing said updated content with stored content previously retrieved (and stored e.g. as an entry within a feeds historic database);   Storing the updated content if it is considered different from the stored content;   Deleting the updated content if it is considered identical to the stored content.       
 
         [0014]    Further steps may be provided, i.e.:
       a step of adding the updated content to a stored content if it is considered complementary thereto;   a step of computing a similarity index S k   j  to denote a degree of similarity between the updated content and the stored content;   a step of comparing said similarity index S k   j  to one or more thresholds. More specifically, the similarity index S k   j  is compared to two thresholds S min  and S max , whereby
           If the similarity index S k   j  is lower than S min , the updated content is considered different from the stored content;   If the similarity index S k   j  is greater than S max , the updated content is considered identical to the stored content and may therefore be added thereto;   If the similarity index S k   j  is comprised between S min  and S max , the updated content is considered complementary to the stored content.   
               
 
         [0021]    According to another aspect, the invention provides a feed aggregator comprising:
       A feed reader configured for checking for and retrieving updated content from predetermined Web feeds;   A filtering module configured for managing comparison of said updated content to stored content previously retrieved;   A feeds historic database for storing content.       
 
         [0025]    The feed aggregator may also comprise one or more entry analyzers linked to the filtering module, configured for comparing said updated content to stored content. More specifically, the one or more entry analyzer may be configured for:
       computing a similarity index S k   j  denoting a degree of similarity between the updated content and the stored content, and   comparing said similarity index to one or more thresholds to determine whether the updated content is to be removed or added to the feeds historic database.       
 
         [0028]    The above and other objects and advantages of the invention will become apparent from the detailed description of preferred embodiments, considered in conjunction with the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0029]      FIG. 1  is a diagrammatic view showing the structure of a feed aggregator according to the invention. 
           [0030]      FIG. 2  is flow chart of a method for aggregating syndicated Web content according to the invention. 
       
    
    
     DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0031]    Turning now to the drawings, there is shown on  FIG. 1  a feed aggregator  1 , implemented as a computer program on a processing unit of a computer device such as a personal computer (PC), a server, a communicating personal digital assistant (PDA), a Smartphone, etc. 
         [0032]    The feed aggregator  1  comprises a feed reader module  2 , configured to check and retrieve updated syndicated Web content from Web feeds  3  provided on distant Web sites. Although the feed aggregator  1  is preferably configured to deal with RSS feeds, any other format may be used (such as Atom). Three Web feeds  3  are drawn on  FIG. 1 , for illustrative purposes only, for the feed aggregator  1  may be linked to Web feeds as numerous as might be configured by the user. 
         [0033]    The feed aggregator  1  also comprises a filtering module  4 , linked to the feed reader  2  and to which the feed reader  2  transfers the retrieved updated content to be further processed so as to eliminate redundancies, as will be disclosed hereinafter. 
         [0034]    The feed aggregator  1  further comprises a feeds historic database  5 , wherein feed content previously retrieved is stored as entries. 
         [0035]    The feed aggregator  1  further comprises at least one entry analyzer  6 , linked to the filtering module  4 , configured to compare updated content with content previously retrieved and stored as entries within the feeds historic database  5 , in order to determine whether the updated content should be:
       removed from the feed aggregator  1 ,   stored within the database  5  as a new entry,   or added to an existing entry within the database  5 .       
 
         [0039]    The feed aggregator  1  also comprises a historic access module  7 , interposed between the filtering module  4  and the feeds historic database  5 , and configured to access and manage the feeds historic database  5  in order to store the updated content which has been determined by the filtering module  4  as suitable for being stored as a new entry or added to an existing entry. 
         [0040]    Precise operation of the feed aggregator  1  will now be described. 
         [0041]    As often as user-configured, the feed reader  2  checks for and retrieves updated content from predetermined Web feeds  3  subscribed to by the user (100). In the following description, it is assumed that the feed reader  2  is configured with P subscriptions, P being an integer number greater than or equal to 1 (P≦1). F j , where j is an integer number smaller than or equal to P (1≦j≦P), denotes the updated content retrieved from the jth Web feed  3 . F j  may comprise complete Web pages or part therefrom: text, images, videos, hyperlinks, etc. It is further assumed that the feeds historic database  5  comprises a number N of entries, N being an integer number greater than or equal to 1 (N≧1). E k , where k is an integer number smaller than or equal to N (1≦k≦N), denotes the kth entry stored in the feeds historic database  5 . 
         [0042]    Updated content F 1  is transferred by the feed reader  2  to the filtering module  4  where it is temporarily stored. The filtering module  4  retrieves, through the historic access module  7 , the list of stored entries E k  to which the updated content F j  shall be compared. More precisely, the filtering module  4  iterates over the list of stored entries E k , to which the updated content F j  is to be compared in order to be classified among the following categories: to be removed (deleted); to be added to a stored entry E k ; to be stored as a new entry E N+1 . 
         [0043]    More precisely, with k initially set equal to 1 (110), the updated content F j  is compared ( 120 ) with the stored entry E k  by at least one entry analyzer  6 . Comparison may be achieved through various methods:
       Basic string comparison of titles;   Syntax analysis, to determine common keywords between the compared contents;   Semantic-based analysis, to determine common ontological concepts used in the compared contents. In order to limit the field of comparison, the ontology domains may be restricted by predetermined tags associated with the entries E k .       
 
         [0047]    These comparison methods may be used alone, or combined as different steps of a whole comparison process. A combined use of the comparison methods may be hierarchic. In other words, the syntax analysis step may be launched only if the basic string comparison step of the titles has lead to an assertion that the titles are identical, in order to determine whether contents having same titles may although be different. In turn, the semantic-based analysis step may be launched only if the syntax analysis step has determined that the syntax is similar, in order to further increase the degree of precision of the comparison. Each step of the comparison may be run on a different entry analyzer  6 . 
         [0048]    Having achieved comparison between updated content F j  and stored entry E k , the entry analyzer  6  computes ( 130 ) a similarity index S k   j , which denotes a degree of similarity between F j  and E k . The similarity index S k   j  is provided to the filtering module  4 , which, firstly, determines, based upon the value of S k   j , whether F j  and E k  are to be considered identical or different, and, secondly, consequently takes the corresponding decision regarding F j . Basically, S k   j =0% means that F j  and E k  are to be considered different, whereas S k   j =100% means they are to be considered identical. As S k   j  may be different both from 0 and 100, meaning that, although F j  and E k  may not be considered identical, they may not be considered different either. In order to make an appropriate decision regarding the updated content F j , the filtering module  4  may be implemented with at least one threshold S, such that:
       If S k   j &lt;S, F j  is to be considered different from E k ;   If S k   j ≧S, F j  is to be considered identical to E k .       
 
         [0051]    In a preferred embodiment, the filtering module  4  is implemented with two thresholds, S min  and S max , with S min &lt;S max , whereby:
       If S k   j ≦S min , F j  is to be considered different from E k ;   If S k   j ≧S max , F j  is to be considered identical to E k ;   If S min &lt;S k   j &lt;S k   j &lt;, F j  is to be considered complementary to E k .       
 
         [0055]    Thresholds S min  and S max  may be set according to a required degree of precision that may vary from one user to the other. Default values may be set to S min =20% and S max =80%. 
         [0056]    The filtering module compares ( 140 ) the similarity index Si k   j  to the thresholds S min  and S max  and computes a decision regarding F j  among the following options:
       If F j  is considered different from E k  (S k   j ≦S min ), then F j  shall be compared with the next entry. More specifically, k is incremented by 1 ( 150 ) and the comparison process is reiterated with F j  and  E   k+1 . If entry E k  is the last one (k=N), then F j , as it is considered different from all entries E k  (1≦k≦N), is provided by the filtering module  4  to the historic access module  7  to be stored within the feeds historic database  5  as a new entry E N+1  ( 160 ).   If F 1  is considered identical to E k  (S k   j ≧S max ), meaning that F j  is redundant with E k  (and therefore useless), then F j  is removed (i.e. deleted from the feed aggregator  1 ) by the filtering module  4  ( 170 );   If F j  is considered complementary to E k  (S min &lt;S k   j &lt;S max ), then it is added to E k  or combined therewith by the filtering module  4 , which amends the existing entry E k , and provides the historic access module  7  with the amended entry E k  to replace within the feeds historic database  5  the entry E k  previously stored.       
 
         [0060]    This comparison process is repeated with all updated contents F j , 1≦j≦P. 
         [0061]    The method disclosed hereinbefore avoids redundancies, since only content which considered different from stored content is stored as a new entry. The disclosed aggregator  1  achieves true feed aggregation, whereby similar contents are merged instead of being simply juxtaposed.