Abstract:
The present invention comprises a method and apparatus for television program selection that monitors the viewing preferences of a viewer to create a dynamic viewer profile that is used to rate available programs. Based on the viewer profile, available programs are sorted and presented to the viewer in descending order of predicted interest. The invention allows a viewer to quickly find the program of greatest interest to the viewer without having to tediously search through large numbers of available programs. The invention may also be used for selecting from among a plurality of programs other than television programs, such as, for example, radio programs or audio or video programs stored on digital storage media such as CD&#39;s and DVD&#39;s.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to a method and apparatus for selecting from among a plurality of available programs, such as television programs. 
     2. Background Art 
     As new technologies are developed for providing television programming to viewers, the number of television programs available to viewers continues to increase. Broadcast television, cable television, satellite television, and other television program distribution systems such as VCR&#39;s, DVD&#39;s, and laser disks provide a viewer with the choice of hundreds and even thousands of simultaneously presented programs. With all of this programming it is difficult for a viewer to select the most desirable program from those available for viewing. 
     In the past, a viewer&#39;s options were limited. For example, if a viewer could receive only three or four broadcast television channels, the viewer could easily switch between channels and, within a few seconds, find the channel with the most desirable program. As the number of available channels increased, televisions with remote controls became available. Remote controls made switching between channels easier, but did nothing to filter or sort the available channels or reduce the amount of time needed to preview the available channels. 
     Printed television program listings have long been available that provide program schedules and brief descriptions. However, with the increasing number of available programs, it has become difficult and inconvenient to locate listings for a particular time and date and to read through all of the available program descriptions. 
     Chart form printed television listings have been developed that attempt to provide program information in a concise, graphical form. However, the chart form listing leaves little room to provide information about the content of a program other than its name. Further, the chart form printed listing still requires obtaining the listing, physically locating the chart for the date and time of interest, and reading through the program names for each program shown on the chart. 
     On-screen versions of chart form television listings have also been developed to eliminate the need for a viewer to obtain and look through a printed program guide. However, the on-screen versions of the chart form still suffer from the other disadvantages of the printed chart form listings: little information about a program other than its title is available and a viewer must still scroll through the whole chart to identify all programs of potential interest. 
     Certain on-screen charts have been developed that use a limited color coding scheme to indicate general categories of programs. The color coding provides some additional information about program content. However, the information available is still minimal, and a viewer must still scroll through the whole chart to find all the programs of potential interest. 
     More recently, internet program guides have become available. One example of a web page from an internet program guide is shown in FIG. 1. The program guide is presented in the same form as a printed chart, providing time, channel, and program name information. However, the internet program guide allows a user to obtain additional information about a program by clicking on the program&#39;s name, thereby activating a hyperlink to an additional information page. Accordingly, the online guide allows a user to obtain additional information about programs. However, it still requires excessive effort, since the viewer must click every title and go to every linked web page, and read every description, to find every available program the user might be interested in watching. 
     There is a need for a method and apparatus that allows a television viewer to quickly and conveniently identify the available programs in which the viewer has the greatest interest and that allows the viewer to quickly select the program of greatest interest for viewing. 
     SUMMARY OF THE INVENTION 
     The present invention comprises a method and apparatus for television program selection that monitors the viewing preferences of a viewer to create a dynamic viewer profile that is used to rate available programs. Based on the viewer profile, available programs are sorted and presented to the viewer in descending order of predicted interest. The invention allows a viewer to quickly find the program of greatest interest to the viewer without having to tediously search through large numbers of available programs. 
     In one embodiment, the invention monitors a viewer&#39;s television viewing habits and builds an evolving model of the viewer&#39;s viewing preferences using parameters such as the name of a program, the topic area, the date, the day of the week, and the time of day. Using the model, together with data about viewing preferences of other viewers having characteristics similar to the viewer, the invention ranks currently available programs, and presents them to the viewer in order, from the best match to worst. For example, if the viewer habitually watches &#34;Star Trek,&#34; and if data from other viewers indicates that viewers that like &#34;Star Trek&#34; usually like watching science fiction, the invention will conclude that the viewer has a preference for science fiction shows. Similarly, if the viewer habitually watches &#34;Friends,&#34; and if data from other viewers indicates that viewers that like &#34;Friends&#34; usually also like &#34;Seinfeld,&#34; the invention will conclude that the viewer has a preference for &#34;Seinfeld&#34; as well. 
     The present invention obtains data about titles and topics of available television programs from a television program information source. One example is a web site on the Internet that provides TV listings and that codes programs by topics or provides descriptive information about programs. In one embodiment, the invention uses a parser to parse the descriptive program information to sort programs into categories. In one embodiment, the invention sorts the currently available programs according to the degree to which each program matches the current profile for the viewer. In one embodiment, the sort is based on the viewing preferences of the viewer according to criteria such as the date, the time of day, the day of the week, the title and/or the topic(s) of each program. In one embodiment, collaborative information from other viewers having similar viewer profiles is also used. In one embodiment, the invention presents the program choices to the viewer in order, from best match to worst. In one embodiment, the choices are presented to the user in the form of an on-screen menu. In another embodiment, the choices are presented in the form of preview windows. Using the invention, a viewer can conveniently select the most preferable program to watch from among the programs of greatest potential interest without having to search aimlessly among hundreds of channels. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows an example of an on-line internet chart form television program listing of the prior art. 
     FIG. 2 is a block diagram of a process used in one embodiment of the invention. 
     FIG. 3 shows a portion of an example viewer profile for an embodiment of the invention. 
     FIG. 4 shows a portion of an example viewer profile for an embodiment of the invention. 
     FIG. 5 shows a portion of an example viewer profile for an embodiment of the invention. 
     FIG. 6 is a block diagram of a voting process used in an embodiment of the invention to create an initial viewer profile. 
     FIG. 7 is a block diagram of a voting process used in an embodiment of the invention to dynamically update a viewer profile. 
     FIG. 8 is a block diagram of an embodiment of a process that is used for determining viewer&#39;s program interest or &#34;score&#34; for a program in one or more embodiments of the invention. 
     FIG. 9 is a block diagram of a process used to obtain collaborative information in an embodiment of the invention. 
     FIG. 10 is a block diagram of an embodiment of a process used to identify and sort currently available programs that may be used with one or more embodiments of the invention. 
     FIG. 11 is a block diagram of an example of a parsing process used in an embodiment of the invention. 
     FIG. 12 is a block diagram of example hardware components that can be used to implement an embodiment of the invention. 
     FIG. 13 shows an example user interface display that may be provided by one or more embodiments of the invention. 
     FIGS. 14 shows an example user interface display that may be provided by one or more embodiments of the invention. 
     FIG. 15 is a detail view of interest indicators 1320 of FIGS. 13 and 14. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     A method and apparatus for television program selection is described. In the following description, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known features have not been described in detail in order not to obscure the present invention. 
     FIG. 2 is a block diagram of a process used in one embodiment of the invention. As shown in FIG. 2, the process begins by creating an initial viewer profile of a new viewer or user at block 200 (the terms &#34;viewer&#34; and &#34;user&#34; are used interchangeably herein). The initial viewer profile may be created, for example, by presenting to the viewer, in quick succession, a selection of sample program choices and asking the viewer to indicate a &#34;yes&#34; or a &#34;no&#34; for each program choice. 
     At block 210 the viewer profile is compared to collaborative information. Collaborative information is information obtained from viewer profiles for other existing viewers. The viewer profiles may, for example, be stored in a viewer profile database. The collaborative information is used to augment the viewer profile by inferring program choices based on similarities with other users. 
     At block 220, the currently available programs are sorted based on the viewer profile as augmented by the collaborative information. The programs are sorted according to the expected amount of viewer interest in a program based, for example, on the augmented viewer profile and the identity and content of the programs. 
     At block 230, the highest ranking programs, which represent the programs having the best match with the viewer profile, are presented to the viewer in order of ranking. The programs may be presented to the viewer in a number of ways. In one embodiment, for example, upon turning on a television receiver, the current highest ranking program is presented to the viewer in the main viewing area of a television screen, while the next highest ranking program is shown in a smaller &#34;picture-in-a-picture&#34; preview window. By activating an appropriate command via a remote control device the viewer may cause successively lower ranking programs to be displayed in the main and preview windows. 
     At block 240, the viewer&#39;s actual program choices are monitored. These choices are used to update the viewer&#39;s viewer profile at block 250. From block 250, the process returns to block 210. 
     Viewer Profile 
     A component of one or more embodiments of the invention is a viewer profile. A viewer profile may have any of a number of specific forms, but in general contains information relating to a viewer&#39;s interest in various television programs and/or television program categories or topics. In one embodiment, the viewer profile includes a table of key words and key phrases (i.e. program names, program topics, network names, etc.), interest levels, and confidence levels. In another embodiment, the viewer profile includes separate tables for programs (shows) and for program topics (topics), as well as a tabulation of positive and negative factors for each show and topic. In one embodiment, the viewer profile contains viewer interest information for topics, only. A separate table relates programs to program topics. In one or more embodiments, the user profile is stored in electronic form in apparatus implementing the invention. 
     FIG. 3 shows a portion of an example viewer profile for one embodiment of the invention. 
     The viewer profile shown in FIG. 3 consists of a three column look-up table. 
     In the embodiment of FIG. 3, the first column includes key words and key phrases arranged in alphabetical order. The key words and phrases include entries for programs or shows (for example, &#34;Seinfeld&#34;) and entries for topics (for example, &#34;Satire&#34;). In the embodiment of FIG. 3, an entry for a show also may identify one or more topics for the show. For example, in FIG. 3, the &#34;Seinfeld&#34; key word entry lists the topics &#34;Comedy&#34; and &#34;Satire.&#34; Other types of key words may also be included in the viewer profile, such as, for example, television channel or network names or names of actors. 
     The second column of the viewer profile of FIG. 3 includes a number that represents a relative level of interest of the viewer in the item represented by the key word for a particular row. In the example of FIG. 3, the level of interest is a number between 0 and 1. For example, the level of interest listed for the topic &#34;Science Fiction&#34; is 0.678. 
     The third column of the viewer profile of FIG. 3 includes a number that represents a relative level of confidence in the level of interest value in column two. In the embodiment of FIG. 3, the level of confidence value is used with the level of interest value to obtain a value for an expectation that the viewer will choose to watch that particular show. 
     FIG. 4 shows a portion of an example viewer profile for a second embodiment of the invention. In the example of FIG. 4, the viewer profile is divided into separate sections for shows and for topics. As shown in FIG. 4, each section contains three columns. The first column contains a key word or key words for a show and/or topic, respectively. The second column contains numbers that represent a number of positive factors for a show or topic. In one embodiment, these positive factors are referred to as &#34;yes votes.&#34; The third column contains numbers that represent a number of negative factors for a show or topic. In one embodiment, these negative factors are referred to as &#34;no votes.&#34; In one embodiment, the process of obtaining values for the positive factors and the negative factors is referred to as &#34;voting.&#34; This process is described in greater detail below in the discussion on voting. In one or more embodiments, the positive and negative factors are used during the show ranking process of the invention as is performed, for example, at block 220 of FIG. 2. This process is described in greater detail below in the discussion on show ranking. 
     FIG. 5 shows an alternative embodiment of the viewer profile of FIG. 4 in which the entries in the key word column have been replaced with coded, numerical values, which reduces the size of the viewer profile for storage and transmission purposes. 
     In the embodiments of FIGS. 3, 4 and 5 the values shown are derived from the viewer&#39;s viewing choices obtained from the viewer&#39;s input during an initial viewer profile creation process (e.g. block 200 of FIG. 2) and/or from monitoring the viewer&#39;s actual program choices (e.g. block 240 of FIG. 2). It should be noted that for certain rows there are no values. For these rows, no information has yet been obtained from the viewer. Values for these rows may be inferred from collaborative information, as will be described in greater detail below. 
     Voting 
     Voting is a name used to refer to a process for creating and dynamically updating a viewer profile in one or more embodiments of the invention. FIGS. 6 and 7 are block diagrams showing examples of voting processes used in one embodiment of the invention. 
     FIG. 6 shows a voting process used to create an initial viewer profile in one or more embodiments of the invention. The initial viewer profile may be created, for example, at block 200 of the embodiment of FIG. 2. 
     As shown in FIG. 6, a viewer profile template is retrieved at block 600. In one embodiment, the viewer profile template is a viewer profile shell that contains entries for keywords for topics and shows but for which the values indicating degree of viewer preference (e.g. the interest and confidence values of FIG. 3, or the yes and no vote values of FIGS. 4 and 5) are blank. In one embodiment, the template is stored during manufacture in non-volatile local storage of a television receiving apparatus implementing the invention, and retrieved from local storage during the initial viewer profile creation process. In one embodiment, the template is downloaded via telephone or internet link from a central databank. In one or more embodiments, the viewer profile template also includes a list of topics for some or all listed shows. The retrieved viewer profile template forms an initially empty viewer profile to which viewer profile information is added according to the process of FIG. 6. 
     At block 605 a set of sample programs from the programs in the viewer profile template is selected to be used to create the initial viewer profile. In one or more embodiments, the set of sample programs is predetermined. In other embodiments, the set of sample programs is selected at run time according to predetermined criteria. 
     At block 610 the first program is presented to a viewer. In one or more embodiments the program title and program topics are displayed to the viewer as text on a television display, along with a prompt requesting the viewer to indicate &#34;yes&#34; or &#34;no&#34; for the program. In one or more embodiments, the viewer indicates &#34;yes&#34; or &#34;no&#34; by pushing an appropriate button on a remote control device. In one or more embodiments, the viewer may also decline to enter &#34;yes&#34; or &#34;no&#34; by pushing a &#34;skip&#34; button on the remote control device. 
     At block 615, a response from the viewer is awaited. When a response is received, a determination is made at blocks 620, 630, and 632 as to whether the response received from the viewer is a &#34;yes&#34;, &#34;no&#34; or &#34;skip&#34; response, respectively. 
     If the viewer responds &#34;yes&#34; to the current show being presented to the user, the number of yes votes in the yes votes column for the current show is incremented by 1 at block 625 in the viewer profile being created. The number of yes votes in the yes votes column for each topic of the current show is also incremented by one at block 625. From block 625, processing proceeds to block 640. 
     If the viewer responds &#34;no&#34; to the current show being presented to the user, the number of no votes in the no votes column for the current show is incremented by 1 at block 635 in the viewer profile being created. The number of no votes in the no votes column for each topic of the current show is also incremented by one at block 635. From block 635, processing proceeds to block 640. 
     If the viewer responds &#34;skip&#34; to the current show being presented to the viewer, processing proceeds to block 640. If the viewer response is neither &#34;yes,&#34; &#34;no,&#34; or &#34;skip,&#34; processing proceeds back to block 615. 
     At block 640 a determination is made as to whether any show remains in the set of sample shows selected for the user profile creation process. If all shows have been presented to the viewer, the initial viewer profile is complete at block 650. If one or more shows remain in the sample set, the next show in the set is presented to the viewer at block 645. From block 645, processing proceeds back to block 615. 
     FIG. 7 shows an embodiment of a voting process used to dynamically update a viewer profile in one or more embodiments of the invention. This process may be used, for example, at blocks 240 and 250 of the embodiment of FIG. 2. 
     As shown in FIG. 7, at block 700, the currently viewed channel is identified. At block 705, the current show is identified based on the current time and the current channel. In one embodiment, the current show is identified by comparing the time and channel to a schedule of shows for the current day. In one embodiment, the schedule is obtained by downloading from an online database, for example via the internet. 
     At block 710 a timer of predetermined length is started. In one embodiment, the predetermined length of the timer is between 5 and 20 minutes. At block 715, input from a viewer is awaited. 
     In one embodiment, the viewer may indicate interest in the currently displayed show by pressing a &#34;yes&#34; button on a remote control device, or disinterest in the show by pressing a &#34;no&#34; button. The viewer may also change channel, for example by pressing a &#34;next&#34; or &#34;previous&#34; button on the remote control device. 
     At block 720, a determination is made as to whether viewer input has been received. If no input has been received, a determination is made at block 725 as to whether the predetermined length of the timer has been exceeded. 
     If the timer has not expired, processing returns to block 715. 
     If the timer has expired, the number of yes votes in the viewer profile for the current show and/or each topic of the current show are each incremented by 1 at block 730. Processing then returns to block 710. 
     If it is determined at block 720 that viewer input has been received, a determination is made at blocks 735, 740 and 745 as to whether the input received is a &#34;yes,&#34; &#34;no,&#34; or change channel command, respectively. 
     If the input received from the viewer is a &#34;yes&#34; command, the number of yes votes in the viewer profile for the current show and/or the current show topics are each incremented by 1 at block 730. Processing then returns to block 700. 
     If the input received from the viewer is a &#34;no&#34; command, the number of no votes in the viewer profile for the current show and/or the current show topics are each incremented by 1 at block 743. Processing then returns to block 700. 
     If the input received from the viewer is a change channel command, the number of no votes in the viewer profile for the current show and/or the current show topics are each incremented by 1 at block 750. Processing then returns to block 700. 
     If the input received from the viewer is neither a &#34;yes,&#34; &#34;no,&#34; or change channel command, processing returns to block 715. 
     The viewer profile is thus continuously updated as the viewer selects shows to view. 
     In other embodiments, additional factors may be used to update viewer profiles. In one embodiment, for example, votes for topics and/or shows are automatically decremented over time according to some predetermined criteria. In one embodiment, votes for shows and/or topics are decremented by a preset amount per day. In one embodiment, votes for shows and/or topics are reduced by a predetermined percentage every week. 
     Determining of Program Interest/Scoring 
     Information in a viewer profile is used to obtain an estimated measure (&#34;score&#34;) of the viewer&#39;s predicted interest in currently available programs so as to be able to rank the available programs in order of predicted viewer interest. Any of a large variety of well known analytical techniques can be used. 
     FIG. 8 is a block diagram of an embodiment of a process that is used for determining viewer&#39;s program interest or &#34;score&#34; for a program in one or more embodiments of the invention. In the embodiment of FIG. 8, the yes votes and the no votes for all topics in the program being scored are separately summed at block 800. Using these sums, the viewer&#39;s expected &#34;topic interest&#34; for the show is calculated at block 810. In the embodiment of FIG. 8, the expected topic interest is calculated using the expression: ##EQU1## 
     At block 820, a search is made for the name of the program in the viewer profile. If a match for the program is found, the sum of yes votes and the no votes for the program are obtained from the viewer profile. If no match for the program name is found, the sum of yes votes and the sum of no votes for the program are each deemed to be equal to zero. 
     Using these sums, the viewer&#39;s expected &#34;program interest&#34; for the show is calculated at block 830. In the embodiment of FIG. 8, the expected program interest is calculated using the expression: ##EQU2## 
     As shown in FIG. 8, the value obtained for the program interest is used to select the method used to determine the program&#39;s score. If the value of the program interest is greater than 0.5, as shown in block 840, the expression used to calculate the score for the program is: 
     
         Score=1+Program Interest 
    
     If the value of the program interest equals 0.5 (which occurs, for example, when no match for the program name is found in the viewer profile), as shown in block 850, the expression used to calculate the score for the program is: 
     
         Score=Topic Interest 
    
     If the value of the program interest is less than 0.5, as shown in block 860, the expression used to calculate the score for the program is: 
     
         Score=-(Program Interest) 
    
     It will be apparent to those skilled in the art that other methods may be used to calculate program scores. 
     Collaborative Information 
     Collaborative information is information that may be used to augment a viewer&#39;s viewer profile. In one or more embodiments of the invention collaborative information is used to provide information for programs and topics for which viewer preference information is currently absent in the viewer profile. Collaborative information may, for example, be obtained from viewer profiles of other viewers that have viewing profiles similar to the viewer profile of the viewer whose profile is being augmented. 
     Collaborative information may also be obtained from composite or simulated viewer profiles or from templates of topics and programs related to specific interest areas or to general viewing habits. Such templates may be compiled from actual viewer preference data, may be generated using the subjective reasoning of the person generating the template, or may be compiled in some other manner. A template may relate to topics, shows, or both. In one or more embodiments, the use of a particular template to augment a viewer profile is triggered by the existence of preferences for one or more particular topics or shows in the viewer profile being augmented. 
     For example, there may be a &#34;Friends/Seinfeld&#34; template that is used to augment a viewer&#39;s viewer profile when the viewer profile (prior to being augmented) indicates that the viewer has a viewing preference for both &#34;Seinfeld&#34; and &#34;Friends.&#34; The &#34;Friends/Seinfeld&#34; template contains a list of other shows and/or show categories or topics that it is anticipated would be of interest to a viewer who likes &#34;Seinfeld&#34; and &#34;Friends.&#34; For example, the template may indicate that viewers who exhibit a preference for &#34;Seinfeld&#34; and &#34;Friends&#34; are expected to like other shows, such as &#34;Frasier,&#34; &#34;The Simpsons&#34; and &#34;Saturday Night Live,&#34; as well. Accordingly, if a viewer profile indicates a preference for &#34;Seinfeld&#34; and &#34;Friends,&#34; the viewer profile is augmented by adding preferences for &#34;Frasier,&#34; &#34;The Simpsons&#34; and &#34;Saturday Night Live,&#34; and any other show or topic listed in the template but absent from the viewer profile. A template may also indicate a relative degree of correlation between the shows and/or topics in the template shows and/or topics that trigger use of the template by indicating relative strengths of preferences for the items listed in the template. For example, the &#34;Friends/Seinfeld&#34; template may specify that the preference for &#34;Frasier&#34; is greater than the preference for &#34;The Simpsons.&#34; Accordingly, when the viewer profile is augmented, a greater preference value is added for &#34;Frasier&#34; than for &#34;The Simpsons.&#34; 
     In one or more embodiments, the collaborative information comprises data from a collaborative viewer profile obtained from a database of viewer profiles. In one or more embodiments, collaborative information is periodically obtained by selecting a best matching collaborative profile from a database of viewer profiles, based on information contained in the viewer&#39;s viewer profile. In one embodiment, a collaborative information is obtained once a day. 
     FIG. 9 is a block diagram of a process used to obtain collaborative information in an embodiment of the invention. In one embodiment, the process of FIG. 9 is performed at a server computer with which television receiver apparatus at the viewer&#39;s site is in periodic electronic communication. The process of FIG. 9 may be performed, for example, at block 210 of FIG. 2. 
     In the process of FIG. 9, a viewer profile is received from a viewer at block 900. An expectation for each show and each topic for which votes are contained in the viewer profile are calculated at block 905. In one embodiment, an expression used to calculate the expectations is: ##EQU3## 
     At block 910, the expectations for each show and topic in the viewer profile are compared to the expectations for the same shows and topics calculated in the same manner for each viewer profile in the collaborative database. In one embodiment, the comparison between the viewer profile and a collaborative viewer profile is made by determining the difference between the expectation calculated for the viewer profile and the expectation calculated for the collaborative profile for each show and topic in the viewer profile, and then summing the absolute values of each of those differences. 
     At block 920, the best matching (according to predetermined criteria) viewer profile from the database of collaborative viewer profiles is selected as the collaborative viewer profile. In one embodiment, for example, the collaborative viewer profile for which the sum of the absolute value of the differences between expectations for the viewer profile and the collaborative profile is a minimum is selected as the collaborative viewer profile. 
     At blocks 930 and 940 information in the collaborative profile is used to augment the viewer profile. 
     At block 930, the yes and no votes for each show for which there are votes in the collaborative profile but not in the viewer profile are added to the viewer profile. If necessary, the name of any such show is also added to the viewer profile. 
     At block 940, the yes and no votes for each topic for which there are votes in the collaborative profile but not in the viewer profile are added to the viewer profile. If necessary, the name of any such topic is also added to the viewer profile. 
     At block 950, the augmented viewer profile is returned to the viewer. 
     Sorting Programs 
     FIG. 10 is a block diagram of an embodiment of a process used to identify and sort currently available programs that may be used with one or more embodiments of the invention. In one or more embodiments, the sorting of currently available programs is done periodically. In one or more embodiments, the sorting is done continuously. 
     According to the embodiment of FIG. 10, a list of currently playing shows for each available channel is obtained at block 1000. The list may be obtained, for example, from a program schedule obtained from an internet web server, from information broadcast in a vertical blanking interval of a television transmission, from a locally stored schedule, or from other sources. The topics for each currently playing show are obtained, and the score for each currently playing show is calculated, using information from the viewer profile, at block 1010. The topics for each show may be obtained, for example, from a locally stored table listing topics for each show. The score for each show may be calculated, for example, using the process of FIG. 8. 
     At block 1020 the available channels are ranked according to the score for the current program showing on each channel, from highest score to lowest score. As shown in block 1030, ties are resolved by ordering channels whose shows have tie scores in alphabetical order of network name or acronym (i.e. if there is a tie in the score for shows playing on CNN and CBS, CBS would be ordered ahead of CNN). 
     Program Parser 
     In one or more embodiments of the invention, the topics for currently playing programs are extracted from program description information using a parsing process. The program description information is obtained, for example, from an internet server, from information contained in a vertical blanking interval of a television broadcast, or from some other source. 
     An example of a parsing process used in an embodiment of the invention is shown in FIG. 11. In the parsing process of FIG. 11, a program description file is obtained at block 1100. In one embodiment, the program description file contains information about all shows scheduled to be broadcast during a period of time, such as, for example, a day or a week. In one embodiment, the program description file contains, for each program, a program name, a network name, program topic(s), a program description, and a broadcast time and date. 
     At blocks 1110 and 1120, program information for each program is extracted from the program description file by the parsing process. At block 1110 the date and time for each show are extracted and stored in memory. At block 1120 the program name, program network, program topic(s) and program description are extracted and stored in memory. The program length is also calculated, for example by comparing a program&#39;s beginning broadcast time with the broadcast time for the next program on the same network. 
     At block 1130, corresponding topic numbers are substituted for the topic text names extracted at block 1120. At block 1140, corresponding network numbers are substituted for the network text names extracted at block 1120. 
     At block 1150, all of the extracted and processed information is stored for local access by the viewer&#39;s apparatus implementing the invention. 
     Hardware Environment 
     FIG. 12 is a block diagram of example hardware components that can be used to implement an embodiment of the invention. The hardware components shown in FIG. 12 include a controller 1240 that is coupled to an audio/video (&#34;A/V&#34;) mixer 1210, receivers 1220a and 1220b, and modem 1260. Also included are a television monitor 1200 coupled to A/V mixer 1210 and a remote control device 1270. 
     Controller 1240 functions as a controller of the system, performing, in one embodiment, processes such as the processes of FIGS. 2, 6, 7, 8, 10 and 11. In one embodiment, controller 1240 has the processing capabilities of a personal computer, including a CPU motherboard, internal RAM memory, and an internal hard disk drive. The controller performs processes of the invention by means of appropriate software programming. In the embodiment of FIG. 12, controller 1240 has an infra-red port 1250 used to accept viewer input entered by the viewer on remote control device 1270. Controller 1240 may also have provision for attaching additional input/output devices such as, for example, a computer monitor, a keyboard, a mouse, speakers, or other computer peripherals. 
     Receivers 1220a and 1220b are receivers each preferably capable of receiving all channels available to a viewer. For example, receivers 1220a and 1220b may comprise receiver portions of video cassette recorders, satellite receivers, tuner sections of television receivers, etc. Receivers 1220a and 1220b preferably have audio and video outputs and control interfaces that allow controller 1240 to control the channels to which each of receivers 1220a and 1220b are tuned. By having two receivers, two channels may be simultaneously displayed on television monitor 1200. For example, one channel may be displayed full screen, while a second channel, representing, for example, the channel containing the next highest scoring program, is displayed in a smaller preview (e.g. picture-in-a-picture) window. However, in other embodiments, a single receiver, or more than two receivers, can be used. Receivers 1220a and 1220b may receive input signals from television antennas, cable connections, satellite dishes, microwave dishes, etc. 
     The audio and video outputs of receivers 1220a and 1220b are coupled to A/V mixer 1210. A/V mixer 1210 is able to accept multiple video inputs, including video input from receivers 1220a and 1220b and computer generated video input from controller 1240, and generate a composite output of the inputs that can be displayed on television monitor 1200. The composite output can take a number of forms. For example, one output form may be a picture-in-a-picture form with overlaid computer generated text and/or graphics. 
     Modem 1260 allows controller 1240 to electronically communicate with other electronic devices via telephone line and/or other communications networks, such as the internet. Modem 1260 may be used, for example, to obtain program description files from an internet server as at block 1100 of FIG. 11. 
     Although the components are shown as separate blocks in FIG. 12, one or more blocks can be incorporated into other blocks. For example, all blocks (except remote control 1250) may be physically incorporated in a single television receiver unit. Furthermore, other components or arrangements of components can be used to implement the invention, as will be recognized by those skilled in the art. 
     Software Environment 
     In one or more embodiments, two main software modules are used to implement processes of the invention. These software modules are a main control program and a parsing program. The software modules may be executed, for example, by a microprocessor of controller 1240 of FIG. 12. 
     The parsing program performs the function of extracting relevant program information from program description files. In one embodiment, the parsing program implements the process of FIG. 11. Source code for an embodiment of a parsing program of the invention is attached as Appendix A. 
     The main control program performs one or more of the remaining processes of the invention. In one embodiment, for example, the main control program implements one or more of the processes of FIGS. 2, 6, 7, 8, 10 and 11. Source code for an embodiment of a main control program of the invention is attached as Appendix B. 
     User Interface Displays 
     FIGS. 13 and 14 show examples of user interface displays that may be provided by one or more embodiments of the invention. These displays may be displayed, for example, on a viewer&#39;s television monitor. 
     The user interface display of FIG. 13 includes a main display area 1300 in which a first channel is displayed, a first preview window 1310 in which a second channel (normally the channel showing the program having the next highest score after the program being shown in main display area 1300) is displayed, and interest indicators 1320, which are shown in greater detail in FIG. 15. Because two channels are simultaneously displayed in the embodiment of FIG. 13, two receivers, such as receivers 1220a and 1220b of FIG. 12, may be required in a system implementing the display of FIG. 13. 
     The user display of FIG. 14 is similar to the display of FIG. 13, except that it includes four preview windows 1410, 1420, 1430 and 1440 in addition to main display area 1400 and interest indicators 1320. Preview windows 1410, 1420, 1430 and 1440 may be used to display the channels containing the succeeding next highest scoring programs after the program being shown in main display area 1400. Alternatively, some of the preview windows may display the next higher scoring shows, if any, if a viewer has selected a program other than the highest scoring program for viewing. A separate receiver may be required for each preview window. 
     FIG. 15 is a detail view of interest indicators 1320 of FIGS. 13 and 14. In the embodiment of FIG. 15, there are two interest indicators 1500 and 1510. The interest indicators (and or the preview windows of FIGS. 13 and 14) may be displayed to a user intermittently or continuously, or in response to a viewer command. 
     Interest indicator 1500 comprises a vertical bar with a slider 1505 that indicates a degree of current user interest in the program being displayed. The degree of interest is a number between 0 and 1. In the example of FIG. 15, slider 1505 is positioned at a value of approximately 0.6. 
     Interest indicator 1510 comprises a vertical bar with a slider 1515 that indicates an estimated program interest in the show being displayed, as well as a confidence level in that estimate. Unlike slider 1505 of interest indicator 1500, which has a fixed width, slider 1515 has a variable width. The height of the center of slider 1515 indicates the value, from 0 to 1, of an estimated program interest of the viewer in the program being displayed. The width of slider 1515 indicates a degree of confidence in the indicated estimated program interest. The wider the slider, the lower the confidence. For example, for a confidence of zero (indicating no confidence in the estimated interest value, meaning that the actual interest value could be any value), slider 1515 fills the entire height of bar 1510. For a confidence value of 1 (meaning there is 100% confidence that the estimated interest is the same as the actual interest), on the other hand, slider 1515 becomes essentially a straight line. 
     In one embodiment, the initial level of program interest indicated in interest indicator 1500 when a program is first displayed is equal to the value of the estimated viewer interest for that program as calculated from data in the viewer profile. 
     In one embodiment, slider 1505 rises with time (indicating greater viewer interest) as a viewer continues to watch the same channel. 
     In one embodiment, the viewer can change the displayed viewer interest by manipulation of appropriate control buttons on a remote control device. The viewer can thereby manually adjust the program interest recorded in the viewer profile for particular shows. 
     Thus, a method and apparatus for television program selection has been described. Although the invention has been described with respect to certain example embodiments, it will be apparent to those skilled in the art that the present invention is not limited to these specific embodiments. For example, although the invention has been described with respect to television program selection, the invention may be used for other types of program selection, such as, for example, radio programs or music contained on CD&#39;s or DVD&#39;s. Further, although the operation of certain embodiments has been described in detail using certain detailed process steps, some of the steps may be omitted or other similar steps may be substituted without departing from the scope of the invention. Other embodiments incorporating the inventive features of the invention will be apparent to those skilled in the art. ##SPC1##