Abstract:
The present invention provides search engine methods and systems for generating highly personalized and relevant search results based on the context of a user&#39;s search constraint and user characteristics. In an embodiment, upon receipt of a user&#39;s search constraint, the method determines all semantic variations for each word within the user search constraint. Additionally, topics can be determined within the user constraint. For each unique word and topic within the user search constraint, possible contexts are determined. A matrix of feasible context scenarios is established. Each context scenario is ranked to determine the most likely context scenario for which the user search constraint relates based on user characteristics. In one embodiment, the weighting used to rank the contexts is based on previous user searches and/or knowledge of their interests. Search results associated with the highest ranking context are provided to the user, along with topics associated with lower ranked contexts.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]     The present application claims the benefit of priority of U.S. Provisional Patent Application No. 60/740,281, filed Nov. 29, 2005, which is incorporated by reference in its entirety. 
     
    
     BACKGROUND OF THE INVENTION  
       [0002]     1. Field of the Invention  
         [0003]     The present invention relates to search engines, and more particularly, to search engine methods and systems that provide personalized contextual search results.  
         [0004]     2. Background of Invention  
         [0005]     The emergence of the Information Age has created a wealth of information that is available electronically. Unfortunately, much of this information is often inaccessible to individuals because they do not know where to look for it, or if they do know where to look the information can not be found efficiently. For example, an individual is working at his desk and his boss requests that he find an electronic copy of a memo that the individual sent last month. The memo contains information that was obtained from a website, which included a spreadsheet that had data extracted from a division report.  
         [0006]     The boss would like the individual to send a copy of the email and the references back to him as soon as possible. Also, he would like the individual to check for additional references to see if the conclusions in the memo need to be updated. The boss requires that the project be completed within fifteen minutes. The worker is not disorganized, but as is common, does not have total recall of how the information was gathered or where the email is stored. After thirty minutes, the worker finally finds the email. But, the worker still needs to search for additional information as requested by his boss. The end result is that because no efficient search mechanism existed the worker has missed his boss&#39; deadline.  
         [0007]     The above example commonly occurs within the workplace, and involves not just email, but all forms of electronically stored information. Human worker studies show that it is not unusual for some office workers to spend more than 10% of each work day looking for information. The same studies claim that less than half those searches are successful. Databases, data warehouses, document management systems, and file searches are often too difficult or “hit and miss” to be used effectively and efficiently. Corporate enterprises and government organizations have spent billions of dollars to aggregate and integrate information, so it will be more accessible. Of course, an individual can get answers if he is a database or document system expert and if the individual remembers the exact title, the exact phrasing used in the document, or the ever elusive primary key associated with the document of interest. Unfortunately, more common than not, this level of detail is not available to assist in finding the information.  
         [0008]     Internet based searches are often times even more frustrating, and less productive. For example, it is not particularly useful when you know that there are approximately 6,120,000 answers to the search criteria you just entered. Furthermore, because website popularity has nothing to do with what might be relevant in the thousands of search results, search results driven by website popularity can often lead to useless results. Meanwhile, at search engine operations facility there is an army of personnel and massive server farms humming away to potentially deliver hundreds of thousands of results to every search query that an individual enters.  
         [0009]     Web searching, search advertising, and enterprise searching are not consistently providing acceptable search resolution for the user. The missing ingredient in current search technology is “true relevance”. Relevance can only be defined by the user for a specific search. Relevancy has no predictable pattern. No generalized algorithm is going to repeatably produce relevant information, because in the end, any generalization is arbitrary.  
         [0010]     What are needed are search methods and systems that can efficiently generate search results that are relevant to the particular user&#39;s interest within their context of interest.  
       SUMMARY OF THE INVENTION  
       [0011]     The present invention provides search engine methods and systems for generating highly personalized and relevant search results based on the context of a user&#39;s search constraint and user characteristics. In an embodiment, upon receipt of a user&#39;s search constraint, the method determines all semantic variations for each word within the user search constraint. Additionally, topics can be determined within the user constraint. An approach for determining topics is disclosed within commonly owned, co-pending, U.S. patent application Ser. No. 10/086,026 titled “Topic Identification and Use Thereof in Information Retrieval Systems”, which is incorporated herein in its entirety. For each unique word and topic within the user search constraint, possible contexts are determined. A matrix of feasible context scenarios is established. Each context scenario is then ranked to determine the most likely context scenario for which the user search constraint relates based on user characteristics. In one embodiment, the weighting used to rank the contexts is based on previous user searches and knowledge of their interests. Search results associated with the highest ranking context are provided to the user, along with topics associated with lower ranked contexts. The intelligence related to the user interests is updated based on the selection of a particular search result or topic to continually refine the knowledge base used to rank the relevance of a particular context for a particular user or class of users.  
         [0012]     Further embodiments, features, and advantages of the invention, as well as the structure and operation of the various embodiments of the invention are described in detail below with reference to accompanying drawings.  
     
    
     BRIEF DESCRIPTION OF THE FIGURES  
       [0013]     The present invention is described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. The drawing in which an element first appears is indicated by the left-most digit in the corresponding reference number.  
         [0014]      FIG. 1  provides a flowchart of a method for displaying search results according to an embodiment of the invention.  
         [0015]      FIG. 2  provides a diagram of a computer implementation for the present invention. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0016]     While the present invention is described herein with reference to illustrative embodiments for particular applications, it should be understood that the invention is not limited thereto. Those skilled in the art with access to the teachings provided herein will recognize additional modifications, applications, and embodiments within the scope thereof and additional fields in which the invention would be of significant utility.  
         [0000]     Context Principles  
         [0017]     Every word in a set of content has a context. For example, this can be seen in a relational database where every table column that contains words has the context of those words defined by the field associated with that column.  
                                                             Field A   Field B   Field C   Field D                                1.234   Tom Keller   IBM   1034 E. Lansing       15.23   Scott Thomas   Oracle Inc   One Oracle Pl.                  
 
         [0018]     In the above table there are the following words in each context, as follows:  
                                                       Field B Context   Tom, Keller, Scott, Thomas           Field C Context   IBM, Oracle, Inc.           Field D Context   E., Lansing, One, Oracle, Pl.                      
 
         [0019]     Logical names might be attached to each context. For example, in this case,  
                                                   Personal Names ≡ Field B Context           Company Names ≡ Field C Context           Street Address ≡ Field D Context                      
 
         [0020]     In general, content and/or data frequently contain tagged or labeled information that differentiates one part of the content from another. For example, To, From, Subject, Title, Author, References, Personal Names, Company Names, Building Names, etc. are examples of typical content differentiation that occurs through labeling or tagging. This tagged or labeled content represents different contexts.  
         [0021]     Generalization of Context. All content is not tagged. As in the previous example there are certain classes of phrases and keywords that infer context. People&#39;s names, company names, and locations are a few of many examples of keywords or phrases that are capable of being recognized as a specific context independently of having a tag. But these are usually a small percentage of the content. The balance of the words and phrases can be said to have a context that is defined by the subject domain in which they exist within each paragraph/section of the content.  
         [0022]     Concept of “Generic Context” Words or Phrases. Some words like people&#39;s names are recognized specifically as names. For example Bill, Robert, George would be immediately recognized as having the context of “name” and more specifically “a person&#39;s name”. IBM would be recognized as a company name. The White House would be recognized as a government building. Houston, Tex. would be recognized as a location in the United States. Words and phrases that have relatively few possible contexts are said to be “generic context words or phrases”. While there are many millions of these, the list is finite.  
         [0023]     Concept of Subject Domain. For the purposes of our discussion, we will assume that it is the intent of every paragraph or section of content to have a subject. Paragraphs or sections that do not relate to a subject or do not contain some context reference such as a label, tag, or generic context words or phrases will, for our purposes, be deemed to be irrelevant. The subject of a paragraph or section is defined by the keywords (i.e. significant words) and the topics (i.e. statistically significant phrases) contained within the content.  
         [0024]     Stop Words. What are typically called stop words (e.g. the, of, and, etc.) generally appear in many contexts. In fact this is the intrinsic nature of stop words. They do very little to differentiate the content&#39;s subject domain.  
         [0000]     Context Theory  
         [0025]     Under context theory there is a strong relationship between the context in which words are used and the subject matter area being discussed. In structured data this is obvious because each data item is assigned a field. The field is the context in which that data is understood. However, in general content the information is not tagged. Within the present invention, subject matter can be used to define context and, that in doing so, the resulting defined contexts can be treated in the same way as data found within well defined fields. A given keyword or topic can have a subject context and a generic context.  
         [0026]     For example, a paragraph discussing George Bush and the 2005 budget would suggest that the words George and Bush have a context of person&#39;s name and have a context of 2005 budget. The concept of how context can play a role in defining relevancy can be shown by the following simple example. If the search constraint entered was “bush budget”, then the context of person&#39;s name and 2005 budget would be a possible interpretation if there are interests in government or economic. Or for the landscaping business it might be the budget for bushes for a particular customer. The context choices are obvious and the searcher&#39;s work, hobbies, or interest patterns could dictate the context choice. But in this case it is likely to be one or the other.  
         [0027]     The Nature of Subject Matter. The key to developing the relationship between context and subject matter is in defining the correct scope for the subject matter. Conceptually, subject matter can be thought of as being hierarchical. A very broad subject area (e.g. sports) could contain sub areas (e.g. basketball, baseball, etc.) which in turn could contain still further sub areas (e.g. high school, college, professional, etc.) and so on.  
         [0028]     In the examples we could have easily changed the hierarchical order to college→sports→basketball and have still been understood by an independent third party. It is clear from this simple example that in order to understand the data found in the lowest category, you must understand every category in the tree above that category.  
         [0029]     Ontology. The following structure, assumptions, and rules define the nature of the content relationships for the proposed management of context relationships. Subject matter has different granularities which we will call “Subject domains.”
        Super Subject Domain contains     Subject Domains contains     Sub-Domains which contain still more     Sub-Domains and so on        
 
         [0034]     Any subject domain can be defined by unique distribution of topics and keywords. Subject domains defined by the same distributions of topics and keywords are the same subject domain. Note that a distribution of topics and keywords does not need to have a predefined subject domain. The distribution could be statistically derived. Also, note that the concept of subject domain and category though similar are not the same. Categories are predefined and their granularity frequently does not reflect the natural breaks found in the content subject matter.  
         [0035]     Keyword/Topic distributions are related to context based on their granularity. This ontology is the basis for the generalization of the present invention methodology and the foundation of the context theory upon which the present invention builds upon.  
         [0036]     Relationship between Subject Matter and Context. Context is defined by subject matter and/or generic context which are present in the content at a certain level of granularity. In the above example basketball is the most granular subject between sports, college, and basketball. Either sports or college could be the least granular. If I choose to query on “arena” then sports is roughly the same granularity. If the query is “academic scholarship” then college could be the correct level of granularity. Or if the query is “field goal percentage” then basketball is the correct level of granularity. It is proposed that part of the context relevancy of “sports”, “college”, and “basketball” is dynamically defined by the granularity of the search query.  
         [0037]     Subject Matter, Topic, and Keyword Granularity. Subject matter, topics, or keywords can have scopes that range from very general to extremely specific. The determination of the scope granularity can be made by determining the frequency in which entities (keywords, topics) appeared within proximity of the entity of interest.  
         [0038]     A list of associated keywords and/or topics can be constructed for each keyword or topic. The more keywords and/or topics that a given keyword or topic is associated with, the more general the keyword or topic (lower granularity). Note that topic associations would typically be more reliable measures of granularity. Granularity ranges can be generated by any number of methods (e.g. natural statistical breaks in the data, fixed percentages, etc.) and used to associate the appropriate subject domain granularity with that of search constraint. Knowing the granularity of a given subject domain provides enough information to define the subject domain as a specific context relative to the search constraint entered by the user. Thus, a statistical relationship has been formed between subject domains and contexts.  
         [0039]     Given that a subject domain can be represented by a distribution of keywords and topics and that the correct level of granularity can be determined by the above analysis, then each keyword and topic can be related to a finite set of contexts (like structured data fields).  
         [0040]     This procedure has now reduced the potential ambiguity of a given keyword or topic significantly by restricting context matches to the appropriate subject domain granularity.  
         [0041]     Subject Matter to Context Conceptual Equivalence. Any given word or phrase can be determined to be in a finite number of subject matter domains. Words or phrases that are in a large number of subject domains can be considered to be “stop words/phrases”. Topics and keywords have a statistical association with subject matter. There is a distribution of topics and keywords that uniquely represent a particular subject matter domain. The more granular the subject matter domain the more tightly defined the distribution of topics and keywords.  
         [0042]     Context Matrix Methodology with Personalization  
                                         Context Basis.                                Axiom:   In a search there is one and only one set of word/topic           context assignments that will produce a set of results           appropriate and relevant to the intent of the searcher.       Requirement:   A set of appropriate valid results exist for the           user&#39;s query constraint       Requirement:   Every word in the search constraint exists in the           content in some semantically equivalent form       Axiom:   Every word that exists in the content has one or           more contexts in which it is found       Axiom:   Individual users have patterns in their thought process           that produce patterns in the context of the words that they           use in their search constraint.                  
 
         [0043]     Identification of context within content and analysis of the patterns of context usage by the user can lead to much higher search precision and recall. This methodology potentially changes the inverse relationship between precision and recall to a proportional relationship. That means that as recall increases precision will also increase when the context analysis is implemented.  
                                         Personalization Principles                                Axiom:   There is a repetition in a searcher&#39;s thought patterns as expressed           through the contexts of the words used in the search constraint.                  
 
         [0044]     There are at least four characteristics of context usage that can be used to judge the searcher&#39;s intent. These are:  
         [0045]     1. The order in which the context of the search constraint words/topics appear.  
         [0046]     2. The contexts that are used when searching in certain subject areas.  
         [0047]     3. The frequency in which the collective contexts are used.  
         [0048]     4. The frequency of topic contexts and the words that compose them based on item 3 above.  
         [0049]     The use of these principles allows the present invention to understand how the searcher thinks when he constructs a search string. Obviously, these mathematical representations could be applied to the general population as opposed to an individual. Or, these could be applied to groups of individuals such as pre-teen, teenagers, young adults, the human resources group within an enterprise, real estate agents, etc. Anyone of these groups, once developed, could be the starting point for personalization of the individual belonging to that group.  
         [0000]     Local Search Embodiments  
         [0050]     The methodology can be applied to many types of search problems. For ease of illustration the methodology is applied below to a local search problem. In local search, we will assign all data of interest to one of eight contexts. This is a convenient number. In other examples, more or less contexts could be used. These contexts are:  
         [0000]     1. N—Business Name  
         [0000]     2. L—Location (e.g. street name, city, metro area, zip code)  
         [0000]     3. P—Generic Products sold or bought by the business  
         [0000]     4. S—Services provided by the business  
         [0000]     5. B—Specific Brands sold or traded by the business  
         [0000]     6. C—Business Category (i.e. NAICS)  
         [0000]     7. T—Telephone Number  
         [0000]     8. W—Website URL  
         [0051]     Method Setup  
         [0000]     1. Derive a list of all words found in each context  
         [0000]     2. Compile all stems, abbreviations, and synonyms for all the words as available  
         [0000]     3. Determine topics and unique words and categorize them by context  
         [0052]     The tools and/or logic available for the search method are as follows:  
         [0000]     1. Search to determine feasibility for context configurations  
         [0000]     2. Context of the words used in the search constraint  
         [0000]     3. Semantics of the words used in the search constraint  
         [0000]     4. Phrase recognition in the search constraint  
         [0000]     5. Feasibility of a specific search using criteria identified 1 through 4 above (i.e. producing at least one result)  
         [0000]     6. Relative location of the results from a specific search using criteria identified in 1 through 4  
         [0000]     7. Search user tendencies in entering context words into the search constraint  
         [0053]     α—The order in which the user(s) typically enters contexts (i.e. words in a specific context) in the search constraint  
         [0054]     β—Based on Business Category (C) the set of contexts typically used by the user(s) in the entered search constraint  
         [0055]     γ—The relative frequency of usage of each context in search constraints entered by the user(s)  
         [0056]     Δ—Phrases by context by γ 
         [0057]     Any other pattern derived from data mining the user searches and choice of results  
         [0058]     Mathematical Surface. The surface is defined by the number of words in the search constraint and the number of contexts that contain each word. For the purposes of this analysis we will arbitrarily limit the number of words in the search constraint to 1≦n w ≦5 where n w =number of words in the constraint  
         [0059]     Example of search constraint context construct where the user has entered 3 search words into the constraint:  
                                                                             Search               Constraint   Context [X = Word present in the context]            Words   N   L   P   S   B   C   T   W               Word 1     X   X                               Word 2     X           X       Word 3             X           X                 Note:            Single column labels (N, L, P, S, etc.) are defined above in the 8 contexts.             
 
         [0060]     The above context constraint generates 9 possible cases as shown below. Note that in this example all cases are always logically feasible. This will not always be the situation.  
                                                               Logically       Case Number   Word 1     Word 2     Word 3     Feasible                   1   N   N   P   T       2   N   N   C   T       3   N   S   P   T       4   N   S   C   T       5   L   N   P   T       6   L   N   C   T       7   L   S   P   T       9   L   S   C   T                  
 
         [0061]     The methodology dictates that one and only one of these cases will produce the most relevant set of results when a context constrained search is done. The chosen case would be based on feasibility (i.e. logically feasible and the search will produce results), relative location (i.e. the results are close to the user&#39;s current location, for example, when searching for a local business), and the personal tendencies of the user.  
         [0062]     In another example, additional contexts and tools and/or logic available for the search method are as listed below. In this example, the contexts include:  
         [0000]     N—Business Name  
         [0000]     L—Location (e.g. street name, city, metro area, zip code)  
         [0000]     P—Generic Products sold or bought by the business  
         [0000]     S—Services provided by the business  
         [0000]     B—Specific Brands sold or traded by the business  
         [0000]     C—Business Category (i.e. NAICS)  
         [0000]     T—Telephone Number  
         [0000]     W—Website URL  
         [0000]     H—Representative Phrase (e.g. 24, 24/7, Sat, Sun, Mon for time that business is open)  
         [0000]     A—Acceptable Payment Method (e.g. Visa, MC, AMEX, Cash, Check)  
         [0063]     In this example, the tools and/or logic available for the search method are as follows: 
        1. Search to determine feasibility of context configurations based on words entered by the user for the required search (i.e. if search is over constrained)     2. Context of each of the words used in the search constraint     3. Semantics of the words used in the search constraint     4. Linguistics of the search constraint (e.g. open  24 , takes credit, in Clear Lake area, on Main, within 10 miles, provides tours, takes appointments on Saturday, has product X, near ATM, etc.)     5. Context phrase recognition in the search constraint     6. Feasibility of a specific search using criteria identified 1 through 5 above (i.e. producing at least one result)     7. Determine the logical choices, if any, for context out of the feasible set of contexts     8. Within a reasonable distance (closest gets highest rank, but this by itself does not set the final choice of context)     9. Choose the best scope for search result. Generally choose larger scope. 
            a. Business Category vs. Business Name     b. Product/Service vs. Business Name     c. Address(location) vs. Business Name    
            10. Search User Identified by 
            a. generic population,     b. group [e.g. regional, ethnic, by income level, education, professional, etc.]    c. specific individual    
            11. tendencies in entering context words into the search constraint 
            a. α—The order in which the user(s) typically enters contexts (i.e. words in a specific context) in the search constraint     b. β—The set of contexts typically used by the user(s) in the entered search constraint based on the potential business categories(C)     c. γ—The relative frequency of usage of each context in search constraints entered by the user(s)     d. Δ—Phrases by context by γ   
               
 
         [0085]     An example implementation. The following steps would occur after a user has entered a search constraint (i.e. one or more individual words or character symbols) into the system. 
        1. A determination is made as to whether any of the words entered have semantic variations (e.g. stems, abbreviations, synonyms, common misspellings).     2. If there are two or more words in the search determine if there are topics present.     3. Define what contexts contain in each of the search constraint words and/or topics. Topics (two or more words in proximity in the search constraint) initially take precedence over individual keywords. Stop words are ignored if they are not part of a topic.     4. Develop a matrix of feasible context cases as shown above.     5. Rank the context cases by the following procedure, if there is more than one feasible context case: 
            a. If there are options for how to create topics from the user&#39;s constraint, then rank those by using γ.     b. Use a probability tree (path dependent) to determine the probability of the context sequence entered and order all the case entries by this probability.     c. If there is a tie or a near tie in item (b), then use γ to break the tie based on the context sequence that has the highest individual context rankings.     d. Run searches on the candidates within some meaningful distance (e.g. 50 miles) and return the list of business categories found.     e. Rank the business categories by their frequency from highest to lowest.     f. For the business categories (e.g. three categories) use β to rate each of the context cases based on which context cases match the context expected for the business category.     g. The context case(s) with the best match determines which results (from the previous searches) are presented to the user. Also, separately present the topics from all the searches done. If a topic is picked by the searcher, then add that topic to the search result and go to step (b) and repeat the process.     h. If the user rejects those results, then pick the next most likely context case and present the results to the user.     i. Provide the user with the ability to confirm the correct result by clicking on it and then augment the existing α β γ data to reflect the context case that was successful. If the user rejects a set of results by clicking on a reject button, then augment α β γ to reflect the context case failure. The changes to α β γ should be weighted so that the changes are reflected gradually over time and not distorted by errors or temporary displacements caused by other users on the owner&#39;s system.    
               
 
         [0100]      FIG. 1  provides a flowchart of method  100  for displaying search results, according to an embodiment of the invention. Method  100  provides a summary of the above concepts and steps for illustration purposes, and is not intended to limit the scope of the invention. Method  100  begins in step  110 .  
         [0101]     In step  110  a search constraint in received from a user. In optional step  120  semantic variations for the search constraint are determined. In step  130  unique words contained within the search constraint are determined. In an embodiment stop words are eliminated. In another embodiment, topics within the search constraint are also determined. In step  140  possible contexts for each word and topic are determined. In step  150  feasible context scenarios are determined. In step  160  feasible context scenarios are ranked. In step  170  search results for the highest ranked context scenarios are displayed. In step  180  method  100  ends.  
         [0000]     Computer System Implementation  
         [0102]     In an embodiment of the present invention, the methods and systems of the present invention described herein are implemented using well known computers, such as a computer  200  shown in  FIG. 2 . The computer  200  can be any commercially available and well known computer or server capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Cray, etc.  
         [0103]     Computer  200  includes one or more processors (also called central processing units, or CPUs), such as processor  210 . Processor  200  is connected to communication bus  220 . Computer  200  also includes a main or primary memory  230 , preferably random access memory (RAM). Primary memory  230  has stored therein control logic (computer software), and data.  
         [0104]     Computer  200  may also include one or more secondary storage devices  240 . Secondary storage devices  240  include, for example, hard disk drive  250  and/or removable storage device or drive  260 . Removable storage drive  260  represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, ZIP drive, JAZZ drive, etc.  
         [0105]     Removable storage drive  260  interacts with removable storage unit  270 . As will be appreciated, removable storage unit  260  includes a computer usable or readable storage medium having stored therein computer software (control logic) and/or data. Removable storage drive  260  reads from and/or writes to the removable storage unit  270  in a well known manner.  
         [0106]     Removable storage unit  270 , also called a program storage device or a computer program product, represents a floppy disk, magnetic tape, compact disk, optical storage disk, ZIP disk, JAZZ disk/tape, or any other computer data storage device. Program storage devices or computer program products also include any device in which computer programs can be stored, such as hard drives, ROM or memory cards, etc.  
         [0107]     In an embodiment, the present invention is directed to computer program products or program storage devices having software that enables computer  200 , or multiple computer  200   s  to perform any combination of the functions described herein  
         [0108]     Computer programs (also called computer control logic) are stored in main memory  230  and/or the secondary storage devices  240 . Such computer programs, when executed, direct computer  200  to perform the functions of the present invention as discussed herein. In particular, the computer programs, when executed, enable processor  210  to perform the functions of the present invention. Accordingly, such computer programs represent controllers of the computer  200 .  
         [0109]     Computer  200  also includes input/output/display devices  280 , such as monitors, keyboards, pointing devices, etc.  
         [0110]     Computer  200  further includes a communication or network interface  290 . Network interface  290  enables computer  200  to communicate with remote devices. For example, network interface  290  allows computer  200  to communicate over communication networks, such as LANs, WANs, the Internet, etc. Network interface  290  may interface with remote sites or networks via wired or wireless connections. Computer  200  receives data and/or computer programs via network interface  290 . The electrical/magnetic signals having contained therein data and/or computer programs received or transmitted by the computer  200  via interface  290  also represent computer program product(s).  
         [0111]     The invention can work with software, hardware, and operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used.  
       CONCLUSION  
       [0112]     Exemplary embodiments of the present invention have been presented. The invention is not limited to these examples. These examples are presented herein for purposes of illustration, and not limitation. Alternatives (including equivalents, extensions, variations, deviations, etc., of those described herein) will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. Such alternatives fall within the scope and spirit of the invention