Patent Publication Number: US-7908253-B2

Title: Polyarchical data indexing and automatically generated hierarchical data indexing paths

Description:
FIELD OF THE INVENTION 
     The present invention relates to an apparatus and method for indexing data using polyarchical indexing codes and automatically generating indexing paths extending across multiple hierarchical levels. 
     BACKGROUND OF THE INVENTION 
     Indexing of documents is useful for categorizing the content for later searching, retrieval and possibly other operations. Indexing can involve applying a code to the document which relates to its subject matter. The codes are then linked with the categories for various types of subject matter. In order to search for all documents containing content in a particular category, a computer system can simply retrieve all documents containing the code linked for that category. 
     The accuracy of traditional indexing of documents relies heavily on the person applying the codes to the documents. Each particular code must be individually and manually entered throughout each document. Therefore, if a document relates to one particular category “A” but was coded under a different category “B,” a search within the category “A” will most likely not result in an identification of the document. 
     Also, the granularity of coding is also manually entered. This manual coding means that a person must enter codes relating to broad categories for a document as well as any codes for more narrow categories. If different persons are coding documents, as is often the case due to high volume, different and potentially inconsistent applications of granular coding can result. As a result, different coders may apply various broad and narrow categories in different manners, resulting in less effective indexing. 
     Accordingly, a need exists for improved methods and taxonomies for indexing data. 
     SUMMARY OF THE INVENTION 
     A method and apparatus consistent with the present invention indexes data using automatically generated indexing codes. An indexing code is received relating to a particular piece of data. Based upon that indexing code, an expansion set of codes is automatically retrieved and applied to the data. An indication of the data is then stored along with the associations resulting from application of the expansion set of codes to the data. 
     Another method and apparatus consistent with the present invention indexes data using multiple polyarchical indexing. An indexing code is received relating to a particular piece of data. Based upon the indexing code, multiple polyarchical codes are automatically retrieved and applied to the data. These polyarchical codes can then be used for cross-categorization of the data. An indication of the data is stored along with the associations resulting from application of the multiple polyarchical codes to the data. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings are incorporated in and constitute a part of this specification and, together with the description, explain the advantages and principles of the invention. In the drawings, 
         FIG. 1  is a diagram conceptually illustrating polyarchical data indexing; 
         FIG. 2  is a diagram conceptually illustrating automatically generated expansion paths for data indexing; 
         FIG. 3  is a diagram of a data indexing structure illustrating both polyarchies and expansion paths; 
         FIG. 4  is a block diagram of a computer system for implementing data indexing methods; 
         FIG. 5  is a flow chart of a method for polyarchical data indexing and automatic generation of data indexing paths; 
         FIG. 6  is a flow chart of a method for editing indexing codes; 
         FIG. 7  is a flow chart of a method for searching data based upon indexing codes; 
         FIG. 8  is a diagram of an exemplary user interface for receiving indexing codes for use in data indexing; 
         FIG. 9  is a diagram of an exemplary user interface for allowing a user to edit indexing codes; and 
         FIG. 10  is a diagram of an exemplary user interface for searching data using indexing codes. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the present invention relate to a taxonomy that helps to automate data indexing and result in a relatively consistent application of indexing codes to the data. The taxonomy includes polyarchical coding, also referred to as polyarchies, which involves using multiple higher level codes applied to the same lower level code. The polyarchical coding means that, for example, a coder need only enter one lower level code for a piece of data and the higher level polyarchical codes are automatically applied, resulting in a consistent application of coding structures. 
     The taxonomy also includes the automatic generation of expansion paths. When a coder enters a lower level code, a series of related codes across higher coding levels are automatically applied. Therefore, upon application of only a lower level code, the corresponding data is automatically coded with the related hierarchical codes. This feature also provides for consistent application of the related codes. 
     Data Indexing Structures 
       FIG. 1  is a diagram of a structure  10  conceptually illustrating polyarchical data indexing. Structure  10  includes multiple coding levels  1 -N, which may represent, for example, multiple hierarchical levels of coding from a narrow category at the lowest level (level N) to increasingly broader or more general categories spanning to potentially the top level (level  1 ). An indexing code  12  relates to a particular categorization or other types of indexing of a piece of data  14 . Additional broader categories in this example are associated with indexing code  12 . For example, indexing code  12  is associated with a category  16  at level  2 ; a category  18  at level  1 ; and categories  20 ,  22 , and  24  at levels  1 ,  2 , and  3 . Each of the related categories, as represented by a link  28 , is also associated with the data  14 . 
     The use of multiple related categories, for example, across the same or various higher levels is referred to as polyarchies  26 . Each level represents in this example different categories with the same general categorical subject matter. With polyarchical coding, the indexing or coding is expanded in multiple directions upwardly across different levels. As an example, if the indexing code  12  specifies a category of on-line brokerages for data  14 , then category  16  may relate to financial services and category  18  may relate to Internet activity. Therefore, data  12  relating to on-line brokerages in this example is also indexed more broadly under those two higher level categories. As illustrated, the higher level categories or coding can exist vertically across one or more higher levels, and the polyarchies can exist horizontally across one or more of the same or different levels. Therefore, polyarchical codes can include, for example, two or more indexing codes associated with data on different paths in an upward indexing direction, as illustrated. 
     The levels and configuration shown in structure  10  are presented for illustrative purposes only. The term “category” includes both categories and sub-categories. The types and ordering of the categories may depend upon, for example, a particular implementation, the type of data to be coded and particular desired or necessary requirements for the indexed data. The term “indexing code” or “code” includes any type of identifier associated with a particular category or element for use in any type of indexing or organizing of data. For example, the indexing code may be implemented with numerical or alphanumerical characters electronically linked with the corresponding category. 
       FIG. 2  is a diagram of a structure  30  conceptually illustrating automatically generated expansion paths, having expansion sets of codes, for data indexing across the multiple levels  1 -N. This example includes an indexing code  32  associated with a piece of data  34  and an indexing code  46  associated with a piece of data  48 . Indexing code  32  is associated with a series of categories  36 ,  38 , and  40  across multiple higher levels of indexing. Indexing code  46  is likewise associated with a series of higher level categories  50  and  52 . In this example and as identified above, the levels represent increasingly broader categories from the lowest level (level N) to the highest level (level  1 ). 
     The series of categories  36 ,  38 , and  40  represent an expansion path  44 , and the series of categories  50  and  52  represent an expansion path  56 . The expansion path means that the indexing represented by a particular indexing code is expanded upward across potentially multiple, higher levels of coding. Each of the codes in the expansion paths, as represented by links  42  and  54  is associated with the corresponding piece of data. 
     The expansion paths can be automatically applied, for example, depending upon a particular implementation. Therefore, when indexing code  32  is entered for data  34 , the codes for the categories in expansion path  44  can be automatically generated and associated with data  34 . Likewise, when indexing code  46  is entered for data  44 , the codes for the categories in expansion path  56  can be automatically generated and associated with data  48 . The expansion paths shown are provided for illustrative purposes only. The expansion paths, and the expansion sets of codes for implementing them, can span any number of levels, possibly originate at any of the levels and span across levels having any type of relationships for indexing or organizing data. The exemplary levels are shown with a hierarchical relationship; however, other types of relationships among the levels may alternatively be used. 
     Table 1 provides an example of an expansion path. In this example, when the code “I25782” is entered for a piece of data relating to analgesics manufacturing, the codes in levels  1 - 4  are automatically generated and associated with the data. As shown, the categories are increasingly broader from level  5  to level  1 . The indexing codes and categories shown in Table 1 are provided for illustrative purposes and are only one such example. 
     
       
         
           
               
               
               
             
               
                 TABLE 1 
               
               
                   
               
               
                 Level 
                 Indexing Code 
                 Category 
               
               
                   
               
             
            
               
                 1 
                 I2 
                 Metals, Minerals and Chemicals 
               
               
                 2 
                 I25 
                 Chemical Manufacturing 
               
               
                 3 
                 I257 
                 Pharmaceuticals 
               
               
                 4 
                 I2578 
                 Over-the-Counter Drug Manufacturing 
               
               
                 5 
                 I25782 
                 Analgesics Manufacturing 
               
               
                   
               
            
           
         
       
     
       FIG. 3  is a diagram of a data indexing structure  60  having both polyarchies and expansion paths. In structure  60 , an indexing code and category  66  is associated with polyarchies that include higher level categories  68 ,  70 , and  72  for one expansion path and higher level categories  80 ,  82 , and  84  for another expansion path. Each category in an expansion path can itself possibly have polyarchies. For example, indexing code and category  68  is associated with another expansion path including higher level categories  76  and  78 , and indexing code and category  70  is associated with another expansion path including a higher level category  74 . 
     Upon application of a particular indexing code to a piece of data, the codes in the polyarchies and expansion paths are also linked with the data, as illustrated above. Therefore, indexing in structure  60  has a cross-indexing dimension  64  representing multiple categorization across the same levels and a hierarchical indexing dimension  62  representing multiple categorization across different levels. The polyarchies can be generated, for example, from any level. Also, the expansion paths can span one or more levels, from one level to any other higher level. 
     Structure  60  can be implemented within any type of electronic data structure that specifies indexing codes, links them with categories and specifies the polyarchies and expansion paths. For example, it can be specified in a relational database, object-oriented database, an Extensible Markup Language (XML) database, or any other type of database. Therefore, upon application of a particular indexing code, the data structure can be accessed to retrieve the corresponding expansion paths in order to automatically apply them to the data. 
     Computer System for Data Indexing 
       FIG. 4  is a block diagram of a computer system  100  for use in executing data indexing methods and storing data indexing structures. Computer system  100  can include a connection with a network  116  such as the Internet. Network  116  represents any type of wireline or wireless network and can be used, for example, to access data for indexing or rules related to data indexing. Computer system  100  typically includes a memory  102 , a processor  104 , an input device  108 , a display device  114 , an output device  112  and a secondary storage device  110 . 
     Memory  102  may include random access memory (RAM) or similar types of memory, and it may store one or more applications  106  for execution by processor  104 . Secondary storage device  110  may include a hard disk drive, floppy disk drive, CD-ROM drive or other types of non-volatile data storage. Processor  104  may execute applications or programs stored in memory  102  or secondary storage  110  or received from the Internet or other network  116 . Input device  108  may include any device for entering information into computer system  100 , such as a keyboard, key pad, cursor-control device, touchscreen (possibly with a stylus) or microphone. 
     Display device  114  may include any type of device for presenting visual information such as a computer monitor, flat-screen display or display panel. Output device  112  may include any device for generating a hard copy of information or may include speakers for presenting information in audio form. Computer system  100  can possibly include multiple input devices, output devices and display devices. 
     Although computer system  100  is depicted with specific components, one skilled in the art will appreciate that this system can contain additional or different components. In addition, although aspects of an implementation consistent with the present invention are described as being stored in memory, one skilled in the art will appreciate that these aspects can also be stored on or read from other types of computer program products or computer-readable media, such as secondary storage devices, including hard disks, floppy disks, or CD-ROM; a carrier wave from the Internet or other network; or other forms of RAM or read-only memory (ROM). The computer-readable media may include instructions for controlling computer system  100  to perform by a particular method. 
     Data Indexing and Related Methods 
       FIG. 5  is a flow chart of a method  120  for data indexing for execution by computer system  100 . Method  120  can be implemented, for example, in software modules stored in memory  102  for execution by processor  104  along with appropriate user interaction, if required, via input device  108 . In method  120 , the system receives and optionally presents data for indexing (step  122 ). If the indexing occurs programmatically, for example, the system need not necessarily display the data. If it occurs through user input, then the system can display a screen for presenting the data and receiving indexing codes for it. 
       FIG. 8  is a diagram of an exemplary user interface  200  to display data and receive indexing codes. Screen  200  can be displayed on display device  114  and may include an indexing codes section  202  to display indexing codes and a categories section  204  to display the categories corresponding to the indexing codes. These can be displayed, for example, in a pull-down menu to accommodate a potentially large number of indexing codes. 
     A data section  206  can present data for indexing. The term “data” refers to any information which can be indexed and examples include, but are not limited to, news, publications, textual information, graphics, pictures or photographic information, images, information in multiple languages or any other information. For example, a user can retrieve news from wire sources over network  116  and view the news in section  206  for indexing. As illustrated, a user can entered indexing codes at particular locations in the data as represented by codes  208 ,  210  and  212 . The indexing codes can be entered through any type of user input via input device  108 ; for example, the user may type in the indexing code or “drag and drop” the indexing code from section  202  to the data using a cursor control device. Screen  200  also includes a save section  214  for the user to select in order to save the entered indexing codes and apply them to the data and a cancel section  216  for the user to select in order to cancel the entered indexing codes. 
     In method  120 , the system receives one or more indexing codes for the data (step  124 ), which can include indexing codes manually entered, such as through screen  200 , and indexing codes programmatically generated. The indexing codes can relate to, or be used for, any type of categorization, which includes, but is not limited to, the following examples: company information, geographic information, subject matter information or industry information. 
     For automatic indexing, the system can search for key terms in the data and retrieve associated indexing codes. Key terms are those words or other data elements, such as images or pictures, having an associated indexing code. The non-word information, such as images, may be associated with indexing codes by using, for example, identifiers for the information; for example, images can have identifiers such as uniform resource locators (URLs) and those identifiers can be linked with indexing codes. Table 2 conceptually illustrates linking of key terms with indexing codes. For non-word information, identifiers can be designated as terms. 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 2 
               
               
                   
                   
               
               
                   
                 Key Term 
                 Indexing Code 
               
               
                   
                   
               
             
            
               
                   
                 term 1 
                 code 1 
               
               
                   
                 term 2 
                 code 2 
               
               
                   
                 . . . 
               
               
                   
                 term N 
                 code N 
               
               
                   
                   
               
            
           
         
       
     
     If the system is configured to search for key terms (step  126 ), it determines whether a key term exists in the data (step  128 ). It can use any searching algorithm, such as sequentially comparing each word in the data with each key term, as illustrated in Table 2, or by re-organizing the data, such as through alphabetizing each word and then identifying key terms. If the system locates a key term in the data (step  130 ), it retrieves the corresponding indexing code by, for example, accessing a data structure associating key terms with indexing codes (step  132 ). If more key terms exist to search (step  134 ), the system returns to step  126  to process the next key term. 
     If no more key terms exist (step  134 ) or if searching for them was not required (step  126 ), the system retrieves expansion set(s) of codes for the indexing codes entered by the user and possibly located through the searching (step  136 ). Those expansion sets can include a plurality of codes spanning indexing levels, polyarchical codes and combinations of both, as described above. Also, the expansion sets can include the corresponding indexing code as a part of the set. Table 3 conceptually illustrates the association of indexing codes with one or more expansion sets of codes. 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 3 
               
               
                   
                   
               
               
                   
                 Indexing Code 
                 Expansion Codes 
               
               
                   
                   
               
             
            
               
                   
                 code 1 
                 codes 1a, 1b, . . . 1n 
               
               
                   
                 code 2 
                 codes 2a, 2b, . . . 2n 
               
               
                   
                 . . . 
               
               
                   
                 code N 
                 codes Na, Nb, . . . Nn 
               
               
                   
                   
               
            
           
         
       
     
     The system associates the expansion set(s) of codes with the data based upon the indexing code(s) (step  138 ). This association means that the system generates the relationships between the codes and the data to be indexed, as illustrated in the structures above and saves the association for further processing or other purposes (step  140 ). For example, the system can store the data in one central location and specify pointers or links from the codes to the data storage location. The association can include the entire data or a particular portion of it depending upon, for example, where the user entered an indexing code or where the system located a key term. 
     If more data is to be indexed (step  142 ), the system returns to step  122  to repeat method  120 . For example, the user may retrieve additional data via network  116  and view it in data section  206  for indexing. 
       FIG. 6  is a flow chart of a method  150  for editing indexing codes. The method  150  can be implemented, for example, in software modules stored in memory  102  for execution by processor  104  along with appropriate user interaction, if required, via input device  108 . In method  150 , the system displays a code editing screen for permitting the user to edit or change indexing codes and expansion sets of codes (step  152 ). 
       FIG. 9  is a diagram of an exemplary user interface  220  for a code editing screen. Screen  220  can be displayed on display device  114 , and it may include indexing codes section  222  (to display indexing codes) and categories section  224  (to display the categories) as described with respect to screen  200 . A code editing section  226  allows a user to make changes to the indexing codes. A user can enter an indexing code  228  by, for example, typing in the code or “dragging and dropping” it from indexing codes section  222 . The system can then display in section  230  the expansion set(s) of codes for indexing code  228  and display in a section  232  the corresponding categories. 
     The user can make various types of changes to the codes. By selecting a delete codes section  234 , the user can delete particular identified indexing codes or a selected expansion set of codes in section  226 . By selecting an add codes section  236 , the user can add a new indexing code and associated expansion codes entered in section  226 . By selecting an edit codes section  238 , the user can change (add and delete) expansion codes corresponding to an indexing code in section  226 . Selection of a save section  240  saves the entered changes within, for example, a coding rules database. 
     In method  150 , the system receives a code change request through, for example, a user&#39;s selection of section  234 ,  236 , or  238  (step  154 ). The system then receives a particular type of change. For a code deletion (step  156 ), the system receives an identification of codes to delete, such as selection of an indexing code or particular expansion codes for it in section  226  (step  162 ). For a code addition (step  158 ), the system receives a new indexing code and associated expansion set(s) of codes in section  226  (step  164 ). For a code edit (step  160 ), the system receives an identification of additions and deletions of expansion codes for an indexing code in section  226  (step  166 ). 
     If the user selects save changes section  240  (step  168 ), the system applies the requested changes to the indexing structure. For example, the system can make the changes in an indexing rules database that specifies the indexing codes, categories, expansion sets of codes, and the relationships between them (step  170 ). If the user requests another code change such as by again selecting one of the sections  234 ,  236 , and  238  (step  172 ), the system returns to step  154  to process the next request. 
       FIG. 7  is a flow chart of a method  180  for searching data based upon indexing codes. Method  180  can be implemented, for example, in software modules stored in memory  102  for execution by processor  104  along with appropriate user interaction, if required, via input device  108 . In method  180 , the system displays a search screen for permitting the user to search data (step  182 ). 
       FIG. 10  is a diagram of an exemplary user interface  250  for a search screen. Screen  250  can be displayed on display device  114 , and it may include indexing codes section  252  (to display indexing codes) and categories section  254  (to display the categories) as described with respect to screen  200 . Sections  256  and  258  allow a user to enter search terms. For example, the user can type indexing codes or corresponding categories in the sections or “drag and drop” indexing codes from indexing codes section  252  using a cursor control device. A section  260  allows the user to enter a Boolean operation, such as AND or OR, for the terms in sections  256  and  258 . Screen  250  can alternatively include sections to enter more than two search terms, or be used to search for only one entered term. Selection of a search section  262  initiates a search using the entered term or terms along with any specified Boolean operator. Selection of a cancel section  264  cancels the requested search. 
     In method  180 , the system receives search terms through such ways as entry of indexing codes in sections  256  and  258  (step  184 ). The system identifies indexing codes corresponding with the entered search terms by, for example, detecting the actual entered codes or linking entered information such as categories with indexing codes (step  186 ). The system searches the indexed data to identify data associated with expansion paths for the indexing codes (step  188 ). By using the expansion paths, the system can search for data associated with codes along the expansion paths having the entered search term, potentially providing for a robust and thorough search of the indexed data. The data identified through the search is retrieved and an indication of the search results is displayed (step  190 ). For example, the system can display the number of occurrences of the search terms and then allow the user to view the data corresponding with each occurrence. 
     While the present invention has been described in connection with an exemplary embodiment, it will be understood that many modifications will be readily apparent to those skilled in the art, and this application is intended to cover any adaptations or variations thereof. For example, different indexing rules, categorization, and sub-categorization may be used without departing from the scope of the invention. This invention should be limited only by the claims and equivalents thereof.