# Patent

## Title
Detection of junk in search result ranking

## Abstract

Embodiments are directed to ranking search results using a junk profile. For a given corpus of documents, one or more junk profiles may be created and maintained. The junk profile provides reference metrics to represent known junk documents. For example, a junk profile may comprise a dictionary of document data that is automatically inserted into documents created using a particular system or template. A junk profile may also comprise one or more representations (e.g., histograms) of a distribution of a particular junk variable for known junk documents. The junk profile provides a usable representation of known junk documents, and the present systems and methods employ the junk profile to predict the likelihood that documents in the corpus are junk. In embodiments, junk scores are calculated and used to rank such documents higher or lower in response to a search query.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is related to co-pending U.S. patent application Ser. No. 11/874,579, filed Oct. 18, 2007, entitled “Ranking and Providing Search Results Based in Part on a Number of Click Through Parameters,” and U.S. patent application Ser. No. 11/874,844, “now U.S. Pat. No. 7,840,569,” filed Oct. 18, 2007, entitled “Enterprise Relevancy Ranking Using a Neural Network,” both of which applications are incorporated by reference herein in their entirety.
BACKGROUND
Computers users have different ways to locate information that may be locally or remotely stored. For example, search engines may be used to locate documents using a search query. A search engine attempts to return relevant results based on the particular search query.
SUMMARY
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.
Embodiments are configured to rank search results using a junk profile. In embodiments, ranking features, such as junk scores, may be calculated and used by a ranking algorithm to rank candidate documents in response to a search query. In an embodiment, an index is created to facilitate the identification of candidate documents in response to a search query. The index, in embodiments, is optimized by eliminating or separately indexing document data that may have been automatically inserted when the document was created. In embodiments, junk scores for documents may be further calculated by determining the similarity between a document and known junk documents. In embodiments, the junk scores are based on a comparison of histograms for the document to histograms for known junk documents. Histograms may be based upon different junk variables, such as term frequency and chunk size. In embodiments, search results may be identified as possible junk documents based on a calculated junk score, whether or not the search results are ranked based on the junk score. Such identification as possible junk may be displayed to the user and may be maintained as a searchable parameter.
These and other features and advantages will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are explanatory only and are not restrictive of the invention as claimed.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an embodiment of a system for ranking search results in accordance with the present disclosure.
FIG. 2 illustrates a method for ranking search results in accordance with the present disclosure.
FIG. 3 illustrates a method for creating an index in accordance with the present disclosure.
FIG. 4 illustrates a method for calculating junk scores in accordance with the present disclosure.
FIG. 5 illustrates an exemplary operating environment in accordance with the present disclosure.



DETAILED DESCRIPTION
Junk documents that are returned in response to a search query can frustrate users and waste valuable time and energy. In embodiments, “junk” documents may include documents that do not contain much human readable document data or that contain little document data other than data that was added automatically by the system or template used to create the document. For example, in enterprise environments, junk documents may be documents that were generated, but no significant content was ever added. Often, such documents may have a title that is a close match to particular search query terms, a popular type of uniform resource locator (“URL”) and matching anchor text. Accordingly, a default search-result ranker may have no way to distinguish such junk documents from documents that have useful information and may rank such junk documents highly.
As briefly described above, embodiments disclosed herein are directed to ranking search results using a junk profile. For a given corpus of documents, one or more junk profiles may be created and maintained. In general, the junk profile provides reference metrics or models to represent known junk documents. For example, a junk profile may comprise a dictionary of document data that is automatically inserted into documents created using a particular system or template. A junk profile may also comprise one or more representations (e.g., histograms) of a distribution of a particular junk variable for known junk documents. The junk profile effectively provides a usable representation of known junk documents, and the present systems and methods employ the junk profile to predict the likelihood that documents in the corpus are junk. In embodiments, junk scores are calculated and used to rank such documents higher or lower in response to a search query.
The present systems and methods, although not so limited, may be particularly useful in an enterprise environment in which a corpus of documents is created by one or more known systems and/or templates. In embodiments, a search component of the present disclosure can use the functionality of an integrated server platform, such as MICROSOFT OFFICE SHAREPOINT SERVER® system, to calculate, collect, store, and update junk scores and other ranking features that can be used as part of a ranking determination. Because the MICROSOFT OFFICE SHAREPOINT SERVER® system includes standard and customizable “templates” by which documents may be created, the creation of a junk profile may be simplified.
In one embodiment, a system includes a search component which comprises a searching application that can be included as part of a computer-readable storage medium. The searching application can be used to provide search results based in part on a user query. For example, a user can input keywords or other search parameters to the search application and the search application can use the search parameters to identify candidate documents. The candidate documents may be ranked and presented to the user according, in part, using junk profile(s).
FIG. 1 is a block diagram of a system 100 which includes indexing, searching, and other functionality. For example, the system 100 can include indexing, searching, and other applications that can be used to index information as part of an indexed data structure and search for relevant data using the indexed data structure. As described below, components of the system 100 can be used to rank and return search results based at least in part on one or more junk scores for the documents. A user can submit queries to the search component 102 using a user interface 103, such as a browser or search window for example.
As shown in FIG. 1, the system 100 includes a search component 102, such as a search engine for example, that can be configured to return results based in part on a query input. For example, the search component 102 can operate to use a word, words, phrases, and other data to locate candidate documents. The search component 102 can operate to locate information and can be used by an operating system (OS), file system, web-based system, or other system. The search component 102 can also be included as an add-in component, wherein the searching functionality can be used by a host system or application. As described further herein, the search component 102 may also use junk scores as ranking features to rank candidate documents.
The search component 102 can be configured to provide search results (uniform resource locaters (URLs) for example) that may be associated with documents. For example, the search component 102 may use text, property information, formatting, and/or metadata when returning search results associated with local files, remotely networked files, combinations of local and remote files, etc. In one embodiment, the search component 102 can interact with a file system, virtual web, network, or other information source when providing search results.
The search component 102 includes a ranking component 104 that can be configured to rank search results (such as candidate documents) based at least in part on a ranking algorithm 106 and one or more ranking features 108. In one embodiment, the ranking algorithm 106 can be configured to provide a number or other variable that can be used for sorting purposes by the search component 102. The ranking features 108 can be described as basic inputs or raw numbers that can be used when identifying relevance of a search result. The ranking features 108 can be collected, stored, and maintained in a database component 110.
Alternatively, ranking features 108, such as junk scores, can be stored and maintained in a dedicated store, including local, remote, and other storage mediums. One or more of the ranking features 108 can be input to the ranking algorithm 106, and the ranking algorithm 106 can operate to rank search results as part of a ranking determination. As described below, in one embodiment, the ranking component 104 can use one or more ranking features 108 as part of the ranking determination.
Correspondingly, the search component 102 can use the ranking component 104 and associated ranking algorithm 106 when using one or more of the ranking features 108 as part of a ranking determination to provide search results. Search results can be provided based on a relevance ranking or some other ranking. For example, the search component 102 can render the search results from most relevant to least relevant based at least in part on the relevance determination provided by the ranking component 104 using one or more of the ranking features 108, including junk scores.
With continuing reference to FIG. 1, the system 100 also includes an index component 112 that can be used to index information. The index component 112 can be used to index and catalog information to be stored in the database component 110. Moreover, the index component 102 can use the metadata, content, and/or other document data when indexing against a number of disparate information sources. For example, the index component 112 can be used to build an inverted index data structure that maps keywords and other document data to documents, including URLs associated with documents.
The search component 102 can use the indexed information when returning relevant search results, such as candidate documents, according to the ranking provided by the ranking component 104. In an embodiment, as part of a search, the search component 102 can be configured to identify a set of candidate documents that contain a portion or all of a user's query information, such as keywords and phrases for example. For example, query information may be located in a document's body or metadata, or additional metadata associated with a document that can be stored in other documents or data stores (such as anchor text for example). As described below, rather than returning an entire set of search results if the set is large, the search component 102 can use the ranking component 104 to rank the candidates with respect to relevance or some other criteria, and return a subset of the entire set based at least in part on the ranking determination. However, if the set of candidates is not too large, the search component 102 can operate to return the entire set.
In an embodiment, the ranking component 104 can use the ranking algorithm 106 to order candidate documents associated with a particular query according to relevance. For example, the ranking algorithm 106 can calculate a rank value associated with a candidate search result, wherein a higher rank value corresponds with a more relevant candidate. Multiple features, including one or more ranking features 108 (such as junk scores), can be input into the ranking algorithm 106 which can then compute an output that enables the search component 102 to sort candidates by a rank or some other criteria. The search component 102 can use the ranking algorithm 106 to prevent the user from having to inspect an entire set of candidates, such as enterprise URL collections for example, by limiting a set of candidates according to rank.
In embodiments, the search component 102 calculates and selects one or more junk scores for candidate documents as part of a relevance determination when returning candidate documents. Candidate documents may have zero or more junk scores associated with them and ranking of candidate documents using junk scores may include averaging, ignoring, or finding the maximum or minimum among a set of junk scores for a candidate document.
In one embodiment, the search component 102 can use the functionality of an integrated server platform, such as MICROSOFT OFFICE SHAREPOINT SERVER® system, to calculate, collect, store, and update junk scores and other ranking features 108 that can be used as part of a ranking determination. The functionality of the server platform can include web content management, enterprise content services, enterprise search, shared business processes, business intelligence services, and other services. For example, as will be described herein, templates created using the MICROSOFT OFFICE SHAREPOINT SERVER® system, can be used to collect reference information for known junk documents.
As described below, a two layer neural network can be used as part of a relevance determination. In one embodiment, the implementation of the two layer neural network includes a training phase and a ranking phase as part of a forward propagation process using the two layer neural network. LambdaRank can be used as a training algorithm during the training phase, and a neural net forward propagation model can be used as part of the ranking determination (see C. Burges, R. Ragno, Q. V. Le, “Learning To Rank With Nonsmooth Cost Functions” in Schölkopf, Platt and Hofmann (Ed.) Advances in Neural Information Processing Systems 19, Proceedings of the 2006 Conference, (MIT Press, 2006), incorporated by reference in its entirety herein). For example, a standard neural net forward propagation model can be used as part of the ranking phase. One or more junk scores can be used as ranking features 108 in conjunction with the two layer neural network as part of ranking candidate documents based on a user query.
In an embodiment, the ranking component 104 utilizes a ranking algorithm 106 which comprises a two layer neural network scoring function (also referred to herein as a “scoring function”) which includes:




  
    
      
        
          
            Score
            ⁡
            
              (
              
                
                  x
                  1
                
                ,
                ...
                ⁢
                
                  
                
                ,
                
                  x
                  n
                
              
              )
            
          
          =
          
            (
            
              
                ∑
                
                  j
                  =
                  1
                
                m
              
              ⁢
              
                
                  
                    h
                    j
                  
                  ·
                  w
                
                ⁢
                
                  
                
                ⁢
                
                  2
                  j
                
              
            
            )
          
        
        ⁢
        
          

        
        ⁢
        
          wherein
          ,
        
      
    
    
      
        (
        1
        )
      
    
  
  
    
      
        
          h
          j
        
        =
        
          tan
          ⁢
          
            
          
          ⁢
          
            h
            ⁡
            
              (
              
                
                  (
                  
                    
                      ∑
                      
                        i
                        =
                        1
                      
                      n
                    
                    ⁢
                    
                      
                        x
                        i
                      
                      ·
                      
                        w
                        ij
                      
                    
                  
                  )
                
                +
                
                  t
                  j
                
              
              )
            
          
        
      
    
    
      
        (
        
          1
          ⁢
          a
        
        )
      
    
  




wherein,
hj is an output of hidden node j,
xi is an input value from input node i, such as one or more ranking feature inputs,
w2j is a weight to be applied to a hidden node output,
wij is a weight to be applied to input value x, by hidden node j,
tj is the threshold value for hidden node j,
and, tan h is the hyperbolic tangent function:




  
    
      
        
          h
          j
        
        =
        
          tan
          ⁢
          
            
          
          ⁢
          
            h
            ⁡
            
              (
              
                
                  (
                  
                    
                      ∑
                      
                        i
                        -
                        1
                      
                      n
                    
                    ⁢
                    
                      
                        x
                        i
                      
                      ·
                      
                        w
                        ij
                      
                    
                  
                  )
                
                +
                
                  t
                  j
                
              
              )
            
          
        
      
    
    
      
        (
        
          1
          ⁢
          c
        
        )
      
    
  




In an embodiments, other functions having similar properties and characteristics as the tan h function can be used above. In embodiments, the variable x, can represent one or more junk scores or other ranking features. A X-rank training algorithm can be used to train the two-layer neural network scoring function before ranking as part of a relevance determination. Moreover, new features and parameters can be added to the scoring function without significantly affecting a training accuracy or training speed.
One or more ranking features 108 can be input and used by the ranking algorithm 106, the two layer neural network scoring function for this embodiment, when making a relevance determination when returning search results based on a user query. In embodiments, one or more junk scores can be input and used as ranking features 108 by the ranking algorithm 106 when making a relevance determination as part of returning search results based on a user query.
Other features can also be used when ranking and providing search results. In an embodiment, click distance (CD), URL depth (UD), file type or type prior (T), language or language prior (L), metadata, BM25F, and/or other ranking features can be used to rank and provide search results. Additional details regarding use of a two-layer neural network to rank search results based upon ranking features (including transformation and normalization of ranking features), are provided in U.S. patent application Ser. No. 11/874,579, filed Oct. 18, 2007, entitled “Ranking and Providing Search Results Based in Part on a Number of Click Through Parameters,” and U.S. patent application Ser. No. 11/874,844, filed Oct. 18, 2007, entitled “Enterprise Relevancy Ranking Using a Neural Network,” now U.S. Pat. No. 7,840,569, both of which applications are incorporated by reference herein in their entirety. In embodiments, other types of ranking algorithms 106 can be employed. For example, one or more of these (or additional) ranking features 108, including junk scores, can also be used as part of a linear ranking determination or other ranking algorithm 106 employed by ranking component 104.
FIG. 2 illustrates an embodiment of a method 200 for determining and using junk scores as ranking features in ranking candidate documents in response to a search query. In embodiments, the steps of the method 200 illustrated in FIG. 2 and other figures herein may be performed in a different order, and steps may be added, eliminated, or combined. The method of FIG. 2 may be performed by a system, such as system 100. At step 201, an index of documents in a corpus is created. In embodiments, the index is an inverted index that maps document data to documents within a corpus. As used herein, document data may include words, numbers, phrases, text, formatting, metadata, and other human-readable and non-human-readable data within a document. In addition, a corpus may be any collection of documents that is crawled to create the index. As used herein, documents include word processing documents, spreadsheets, web sites, lists, document libraries, webs, presentations or other files. The corpus may be defined by a collection of files within a specific network (Internet, extranet, or otherwise), site, or other grouping. In embodiments, the present system and methods may be used advantageously to identify probable junk documents within a corpus that employs particular templates for creation of documents. For example, the MICROSOFT OFFICE SHAREPOINT SERVER® system includes standard document templates and permits users to define document templates specific to their MICROSOFT OFFICE SHAREPOINT SERVER® environment.
FIG. 3 illustrates an embodiment of a method 300 for creating the index in step 201, which may be performed, in embodiments, by an indexing component of a system, such as index component 112. In this embodiment, the index is created with reference to a dictionary of automatically generated data. At step 301, the corpus of documents is crawled. At step 302, a dictionary of automatically generated data is selected.
The dictionary of automatically generated data may be created, in embodiments, by creating a blank document using a system associated with the corpus. As used herein, “blank” means substantially lacking document data other than document data automatically created and inserted in the document by a system associated with the corpus when the document is created. For example, the MICROSOFT OFFICE SHAREPOINT SERVER® system permits users to define templates for particular document libraries, and a document library may comprise a corpus of documents that can be indexed, queried and ranked as set forth herein. A blank document created with such a template will include certain document data (such as text, formatting, metadata, etc.) that is automatically generated by the MICROSOFT OFFICE SHAREPOINT SERVER® system. The dictionary of automatically generated data, then, can be created by extracting and compiling the document data in the blank document. The dictionary may also be created or augmented by examining some or all of the existing documents in the corpus and identifying document data that is common to a significant percentage of documents in the corpus. The dictionary may include both content and position information for document data extracted from the blank document.
In embodiments, different dictionaries of automatically generated data may be created for different corpuses, for different templates, and for different systems used to generate the blank documents. In addition, a user (such as an administrator) may be provided the ability to create a new dictionary to be used with respect to a particular type of document by permitting the user to specify a particular blank document to be used. For example, a computer readable storage media may be provided that includes predefined templates generated by a particular system, such as the MICROSOFT OFFICE SHAREPOINT SERVER® system. For example, one such predefined template may comprise a contact management template, while a second such predefined template may be a sales lead pipeline template. Dictionaries of automatically generated data for each of these templates may be compiled and preloaded as part of the system. An administrator, however, may customize an existing template or create a new custom template using the system. In embodiments, the administrator may be prompted to (or the system may automatically) generate a blank document using such custom template and compile a dictionary of automatically generated data from such custom template. In this manner, a dictionary of automatically generated data that is specific to a particular document being indexed may be utilized in embodiments as set forth below.
At step 302, at least one dictionary of automatically generated data is selected. As described, more than one dictionary may be available for selection depending on the type of documents in the corpus. In embodiments, if all of the documents in the corpus were created using the same system and employing the same template, then a single dictionary may be selected and used for all of the documents in the corpus. Alternatively, in embodiments, the corpus may include documents created by disparate systems or using different templates, and different dictionaries may be selected for different documents. In addition, in embodiments, a single dictionary may be defined that combines the content and position information of documents that were created using disparate systems or templates across the corpus. In embodiments, the selected dictionary or dictionaries may be considered part of the junk profile.
At step 304, document data for the crawled documents is compared against the selected one or more dictionaries of automatically generated data. In embodiments, the document data for each crawled document is compared against the dictionary (or dictionaries) selected for that document to determine what document information was likely generated automatically by the system (and/or template) that was used to create that crawled document. For example, a system-defined template used to create a document may include the word “Task” automatically in the title of every document created using that template. The word “Task” and its position within the template are included in the dictionary of automatically generated data selected for that document. Upon comparison of the document to the dictionary, the word “Task” in the title of the document may be determined to “match” a corresponding entry in the selected dictionary. As used herein, “match” may comprise exact or substantial correlation of content, position, or both. In addition, in embodiments, matching the document data to the dictionary (or dictionaries) of automatically generated data may be considered calculating a junk score as described herein.
At step 306, document data that matches the selected dictionary of automatically generated data is delineated. In embodiments, such matching document data may be delineated by marking the document or the matching document data in the index, indexing matching document data separately from non-matching document data, ignoring the matching document data and indexing only non-matching document data, or by other methods.
Consider the following simple example. Although this example is provided using textual document data, any document data can be used (e.g., metadata, formatting, non-human readable data, etc.). Given the texts T0=“you know what it is”; T1=“what is it”; and T2=“it is a bird,” the following full inverted file index would typically be created (where the pairs of numbers refer to the document number (Tx) and the word position). E.g., the word “bird” is in the third document (T2) and it is the fourth word in that document (position 3):
“a”: [(2, 2)]
“bird”: [(2, 3)]
“is”: [(0, 4), (1, 1), (2, 1)]
“it”: [(0, 3), (1, 2), (2, 0)]
“know”: [(0, 1)]
“what”: [(0, 2), (1, 0)]
“you”: [(0, 0)]
Now assume that the same dictionary is selected for all three documents, and the selected dictionary includes the word “is” in position 1 (e.g., because a blank document created using the same system and template used to create documents 0, 1, and 2 contained the word “is” in position 1). In embodiments, the word “is” in position 1 matches document data in each of documents 1 and 2. That matching document data may be delineated in several manners. For example, the matching document data from documents 1 and 2 could be ignored in indexing. In this embodiment, the index for the example above would become:
“a”: [(2, 2)]
“bird”: [(2, 3)]
“is”: [(0, 4)]
“it”: [(0, 3), (1, 2), (2, 0)]
“know”: [(0, 1)]
“what”: [(0, 2), (1, 0)]
“you”: [(0, 0)]
In this way, the index that will be searched in response to a search query is minimized (for faster searching) and more focused on user-added content (rather than document data added automatically by a system or template used to create the document). In other embodiments, the matching document data could be indexed separately so that subsequent search queries could be run against both the main index (derived from non-matching document data) and a secondary index (derived from matching document data). Accordingly, in embodiments, a ranking algorithm, such as ranking algorithm 106, may weight the appearance of search query terms in the primary index as more important than the appearance of such terms in the secondary index.
At step 308, documents in the corpus are indexed. In embodiments, steps 306 and 308 are combined, and document data that matches the selected dictionary may be delineated as matching by the manner in which such document data (and documents) are indexed (or not indexed) as discussed above.
At step 310, a junk score is calculated for some or all of the crawled documents in the corpus. In embodiments, a junk score is calculated at step 310 that is a function of a similarity metric (such as Kullback-Leibler divergence) between the crawled document and the blank document(s) used to create the selected dictionary of automatically generated data. For example, the similarity metric may comprise a ratio of document data that matches a corresponding entry in the selected dictionary to document data that does not match a corresponding entry in the selected dictionary. A relatively high similarity metric, in embodiments, indicates a document that does not include much document data other than what is in the blank document(s) used to create the selected dictionary. This may be considered an indication that the document is likely “junk” and a corresponding junk score may be assigned to the document and stored as a ranking feature, such as ranking features 108 in database component 110. The junk score may comprise the similarity metric itself or may comprise a function of the similarity metric in order to normalize and use the junk score as a ranking feature.
In embodiments, if the document is compared 304 to more than one selected dictionary, the junk score may be calculated 310 as a function of the average, maximum, minimum or other calculation of similarity metrics for the document against the selected dictionaries. The junk score calculated at step 310 may be used as a ranking feature as provided herein.
Referring back to FIG. 2, at step 202, one or more junk score(s) are calculated using junk profile(s). In embodiments, the calculation of junk score(s) may be done in combination with creating 201 an index of documents in the corpus. For example, as discussed, the similarity metric(s) between a crawled document and the blank document(s) used to create the selected dictionary(ies) of automatically generated data may be used to determine a junk score. In other embodiments, the junk score calculated at step 310 may not be calculated or may be combined with, or used as an additional ranking feature in conjunction with, calculating 202 a junk score using junk variable(s) from the junk profile.
As used in embodiments herein, junk variable may mean a variable that can be used to determine the similarity between a document and a known junk document. For example, as discussed below, in embodiments a junk variable may comprise term frequency. In other embodiments, a junk variable may comprise chunk size. Junk variables may be used individually or may be combined.
At step 202, in embodiments, the junk score for a document is calculated as a function of a similarity metric between one or more histograms created for the document and a junk profile, wherein the junk profile comprises one or more histograms for known junk document(s). FIG. 4 illustrates one embodiment of a method 400 for calculating 202 a junk score for a document using one or more junk profile(s).
In embodiments, method 400 is performed for all documents in the corpus while the documents are being indexed at step 201 or otherwise before a search query is received. In other embodiments, method 400 may be performed after a search query is received and candidate documents have been identified. Method 400 is described with respect to one document, however, method 400 may be repeated, for example, for any or all documents in a corpus or for candidate documents identified in response to a search query.
At step 401, in embodiments, at least one histogram is generated for the document based on a junk variable. As used herein, a histogram may be a representation of a variable within defined categories (or bins). In other embodiments, alternative representations of the distribution of a junk variable may be used instead of or in addition to, histograms. For example, a continuous function can be calculated or estimated to represent such distribution without converting it to a histogram. A histogram for a document being analyzed is described herein as a “candidate histogram.”
In the example embodiment shown in method 400, at step 401, a candidate histogram is generated for the document. In the following example, the candidate histogram is based on term frequency for the document (e.g., the percentage of the unique terms in the document that have a corresponding frequency of occurrence in the corpus). For example, assume in a simple example that a document includes four terms: T1, T2, T3, and T4. Example total corpus frequencies (i.e., total number of documents in the corpus that contain this term) is shown for each term as follows:
T1: 10
T2: 300
T3: 100,000
T4: 50
A term frequency candidate histogram for this document may be defined in relation to categories, or “bins.” In this example, four bins are defined for total corpus frequencies: [1 . . . 20], [21 . . . 400], [401 . . . 12000], [12001 . . . max]. Accordingly, the term frequency candidate histogram for this document may be represented as: [0.25, 0.5, 0.0, 0.25]. This reflects that one out of the four terms falls into the first bin, two of the four terms fall into the second bin, none of the four terms falls into the third bin, and one of the four terms falls into the fourth bin.
At step 402 the candidate histogram is compared to at least one junk profile. In addition to the junk profile(s) described in relation to FIGS. 2 and 3 above, the junk profile may further comprise one or more histograms of known junk document(s). It may also comprise one or more rules that approximate a representation of known junk document(s). “Junk documents” may be defined differently in different embodiments. For example, in some embodiments, junk documents comprise documents that include a large percentage of non-human readable document data versus the document as a whole. In other embodiments, junk documents may comprise documents that are nearly empty. In embodiments, administrators are permitted (e.g., through user interface 103) to define particular existing documents as “known junk” for the purposes of creating reference histogram(s).
For example, with reference to the simple example discussed above with respect to step 401, assume that a known junk document includes the following terms (with total corpus frequencies for each):
T1: 10
T3: 100,000
T5: 500
T6: 1,000
T7: 12
A term frequency reference histogram for this known junk document may be defined in relation to the same categories, or “bins” as the candidate histogram: [1 . . . 20], [21 . . . 400], [401 . . . 12000], [12001 . . . max]. Accordingly, the term frequency reference histogram for this known junk document may be represented as: [0.4, 0.0, 0.4, 0.2]. This reflects that two out of the five terms fall into the first bin, none of the five terms falls into the second bin, two of the five terms fall into the third bin, and one of the five terms falls into the fourth bin.
Comparison 402 of the candidate histogram to the junk profile (in this example, the junk profile comprises a reference histogram), may take many forms. For example, the histograms could be compared by calculating a similarity metric as the distance between the candidate and reference histograms:




  
    Similarity
    ⁢
    
      
    
    ⁢
    Metric
  
  =
  
    
      
        ∑
        0
        n
      
      ⁢
      
        
          (
          
            
              B
              ⁢
              
                
              
              ⁢
              1
              ⁢
              
                (
                i
                )
              
            
            -
            
              B
              ⁢
              
                
              
              ⁢
              2
              ⁢
              
                (
                i
                )
              
            
          
          )
        
        2
      
    
  




In this example comparison function, B1 is the candidate histogram, B2 is the reference histogram, B1(i) is the value for the candidate histogram for the i'th bin, and B2(i) is the value for the reference histogram for the i'th bin. This calculation yields a similarity metric between 0 and 1.
Referring again to the above example, the comparison step 402 calculates a similarity metric between the candidate and reference histograms as follows:




  
    Similarity
    ⁢
    
      
    
    ⁢
    Metric
    ⁢
    
      
    
    ⁢
    
      (
      
        
          B
          ⁢
          
            
          
          ⁢
          1
        
        ,
        
          B
          ⁢
          
            
          
          ⁢
          2
        
      
      )
    
  
  =
  
    
      
        
          
            (
            
              .4
              -
              .25
            
            )
          
          2
        
        +
        
          
            (
            
              0.0
              -
              .5
            
            )
          
          2
        
        +
        
          
            (
            
              .4
              -
              0.0
            
            )
          
          2
        
        +
        
          
            (
            
              .2
              -
              .25
            
            )
          
          2
        
      
    
    ≈
    .66
  




In this example calculation, the more similar the candidate and reference histograms are, the closer the similarity metric is to zero (thus indicating a higher likelihood that the document is junk).
In step 404 at least one junk score is calculated for the document. In embodiments the junk score may comprise the similarity metric itself. In other embodiments, the similarity metric may be converted to a different scale. In addition, the junk profile used in step 402 may include more than one reference histogram. For example, more than one known junk document may be used to create the junk profile. In embodiments, the junk score(s) may comprise a function of an average, weighted average, maximum, minimum or some other function of multiple similarity metrics calculated during the comparison step 402. In addition, more than one junk score for the document may be calculated based on a junk variable, such as term frequency, and all such junk scores may be used by a ranking algorithm, as described further herein. Junk scores may be stored as metadata with the document itself, separate from the document, or otherwise.
At step 406, a determination is made whether alerts have been requested. For example, in embodiments, administrators may request alerts when a junk score is calculated that exceeds a certain threshold. It should be understood that “exceeding a threshold” as used herein may refer to a measurement (such as a junk score) falling above or below a particular threshold, depending on how a particular scale is defined. If alerts have not been requested, method 400 may end (and, in embodiments, control returns to step 204 in FIG. 2). If alerts have been requested, a determination is made 408 whether the calculated junk score(s) exceed a threshold. In embodiments, the threshold is tunable by an administrator. If the threshold has not been exceeded, method 400 may end. If it has been exceeded, then an alert is sent 410. The alert can take different forms, including email, voice message, text, etc. and may be sent to a user, an administrator, etc. In this manner, administrators and others may be alerted to junk documents that may need to be deleted. In addition, junk scores may be employed as a searchable property. For example, a user may wish to search on documents having high junk scores because they may be good candidates for archiving. Another user may wish to use junk scores as search criteria, automatically causing documents with junk scores over a particular threshold to be filtered out from the returned search results. In other embodiments, junk scores may be queried by an administrator or user in order to find documents that are candidates for deletion.
Method 400 is described in relation to using histogram(s) for the document based on one junk variable, however, method 400 may be repeated for histograms using other junk variables. For example, another junk variable that can be used to predict whether a document is junk is “chunk size.” Chunk size is the length of continuous text. Some document types, such as spreadsheets, have large amounts of non-human readable data. Other documents, such as word processing documents, may be expected to have longer chunks of continuous text. A histogram based on chunk size for the document may illustrate the distribution of chunk sizes (runs of continuous text) within the document. Depending on the document type, chunks may be measured differently by scanning the text of the document and measuring the distance between logical breaks (such as cells, paragraphs, sentences, page breaks, etc.). In embodiments, similarity between the chunk size distribution within a document to the chunk size distribution in a known junk document is an indicator of whether the document should be characterized as junk.
Similarity metrics between the document and a junk profile based on different histograms and/or junk variables may be combined into a single junk score or used as individual junk scores that are employed as ranking features by ranking algorithm, such as ranking algorithm 106.
Referring again to FIG. 2, the method 200 continues at step 204, where a search query is received. In embodiments, a user may enter a search query using a user interface, such as user interface 103. The search query may include key words, phrases or other search parameters, including non-text search parameters (such as formatting, etc.). At step 206, candidate documents are identified. For example, as described in relation to FIG. 1, a search component, such as search component 102, may return candidate documents that match the search query.
At step 208, the candidate documents are ranked. As described in relation to FIG. 1, the candidate documents may be ranked using a ranking component 104, employing one or more ranking algorithms 106 and one or more ranking features 108. Junk scores, calculated as set forth herein, may be used as ranking features 108. Other ranking features 108 may also be used. In embodiments, the rank of an individual document may thus be affected by the document's junk score(s). As such, a document that would otherwise be highly ranked because it matches search query terms closely may be ranked lower because of a high junk score. In other embodiments, the actual ranking of the documents is unaffected by the junk score. Rather, junk scores are used to provide an indication of possible junk to the user without affecting the order in which the documents are listed. At step 210, the ranked candidate documents are presented. For example, a subset (e.g., the first ten) documents may be displayed to a user in order of their ranking. In embodiments, documents that have a junk score that exceeds a threshold may not be presented at all (e.g., may be eliminated as a candidate document). In other embodiments, a document's junk score is presented along with the candidate document (e.g., in a ranked list of candidate documents) so that a user can make an independent determination whether to click on a document having a particular junk score. In other embodiments, a junk threshold may be used. If a document's junk score exceeds the junk threshold, the document may be displayed with an indication that the document is likely junk. For example, if the junk score exceeds the junk threshold, a junk symbol or the actual junk score may be displayed for the document in the ranked list of candidate documents. As used herein, a displayed junk score or junk symbol shall be considered a “junk status.”
In embodiments, the present systems and methods are useful in detecting “accidental junk documents” (as opposed to documents that contain malicious or unwanted information, i.e., “adversarial junk”). For example, a user may have started creating a presentation, inserted a title, saved the presentation without adding any additional content, and then forgotten about it. Ordinarily, in response to a search query containing terms that are used in the title of that presentation, a search component would likely return that presentation and rank it highly. Detecting, however, that the presentation is similar (e.g., has a similar term frequency distribution) to a known junk document, allows a search component to rank the presentation more appropriately.
FIG. 5 illustrates one example of a suitable operating environment 500 in which a software embodiment may be implemented. This is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality. Other well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
In its most basic configuration, operating environment 500 typically includes at least one processing unit 502 and memory 504. Depending on the exact configuration and type of computing device, memory 504 (storing, among other things, junk scores calculated as described herein) may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.), or some combination of the two. This most basic configuration is illustrated in FIG. 5 by dashed line 506. Further, environment 500 may also include storage devices (removable, 508, and/or non-removable, 510) including, but not limited to, magnetic or optical disks or tape. Similarly, environment 500 may also have input device(s) 514 such as keyboard, mouse, pen, voice input, etc. and/or output device(s) 516 such as a display, speakers, printer, etc. Also included in the environment may be one or more communication connections, 512, such as LAN, WAN, point to point, etc.
Operating environment 500 typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by processing unit 502 or other devices comprising the operating environment. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The operating environment 500 may be a single computer operating in a networked environment using logical connections to one or more remote computers. The remote computer may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above. The logical connections may include any method supported by available communications media. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
It should be appreciated that various embodiments of the present invention can be implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, logical operations including related algorithms can be referred to variously as operations, structural devices, acts or modules. It will be recognized by one skilled in the art that these operations, structural devices, acts and modules may be implemented in software, firmware, special purpose digital logic, and any combination thereof without deviating from the spirit and scope of the present invention as recited within the claims set forth herein.
Although the invention has been described in connection with various exemplary embodiments, those of ordinary skill in the art will understand that many modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of the invention in any way be limited by the above description, but instead be determined entirely by reference to the claims that follow.

## Claims

1. A computer-implemented method for ranking candidate documents in response to a search query, comprising steps of:
creating, by at least a first processor, an index of a plurality of documents in a corpus;
calculating a junk score for at least a first document in the corpus, wherein calculating the junk score comprises:
using a first candidate histogram for the first document in the corpus, wherein the first candidate histogram is specific to the first document; and
using a junk profile, wherein the junk profile comprises:
a first reference histogram for a first known junk document, wherein the first reference histogram is specific to the first known junk document and is based on a first junk variable; and

comparing the first candidate histogram to the first reference histogram;

receiving a search query;
identifying, based on the search query and the index, candidate documents from the plurality of documents in the corpus, wherein the candidate documents include at least the first document;
ranking the candidate documents.

2. The computer-implemented method of claim 1, wherein ranking the candidate documents comprises ranking the candidate documents based at least in part on the junk score for the first document, and wherein the ranking of the first document is decreased where the first document is more similar to the first known junk document.

3. The computer-implemented method of claim 1,
wherein calculating the junk score further comprises determining a first similarity metric.

4. The computer-implemented method of claim 3, wherein the junk profile comprises a second reference histogram for the first junk variable of a second known junk document, and wherein calculating the junk score comprises comparing the candidate histogram to the second reference histogram to determine a second similarity metric.

5. The computer-implemented method of claim 4, wherein calculating the junk score comprises at least one of: calculating a maximum of the first and second similarity metrics and calculating an average of the first and second similarity metrics.

6. The computer-implemented method of claim 1, further comprising the step of displaying the ranked candidate documents and displaying a junk status for at least the first document.

7. The computer-implemented method of claim 1, wherein the first junk variable comprises chunk size.

8. The computer-implemented method of claim 1, wherein: the junk profile comprises a dictionary of automatically generated data, and wherein creating the index comprises ignoring document data that matches the automatically generated data.

9. The computer-implemented method of claim 1, wherein:
the junk profile comprises a dictionary of automatically generated data;
calculating the junk score further comprises comparing document data from the plurality of documents in the corpus to the dictionary of automatically generated data; and
creating the index comprises delineating in the index document data that matches the automatically generated data.

10. The computer-implemented method of claim 9, wherein identifying the candidate documents includes comparing the search query to document data in the index, and wherein ranking the candidate documents includes determining whether document data matching the search query has been delineated as matching the automatically generated data.

11. The computer-implemented method of claim 9, wherein calculating the junk score for the first document comprises determining a similarity metric between document data in the first document and the automatically generated data.

12. The computer-implemented of claim 9, further comprising:
creating the junk profile, comprising creating the dictionary of automatically generated data by:
creating a blank template containing automatically generated data; and
extracting the automatically generated data from the blank template.

13. The computer-implemented method of claim 1, wherein the step of calculating includes calculating a junk score for a second document in the corpus and wherein the step of identifying comprises excluding the second document from the candidate documents when the junk score for the second document exceeds a predetermined threshold.

14. The computer-implemented method of claim 1, wherein the step of calculating occurs after the step of identifying and wherein the step of calculating comprises calculating a junk score for a plurality of the candidate documents.

15. The computer-implemented method of claim 1, wherein the corpus is an intranet, the plurality of documents is created using a particular template, and the junk profile is specific to the particular template.

16. The computer-implemented method of claim 1, wherein the search query comprises a query for documents in the corpus that have a junk score that exceeds a predetermined threshold.

17. The computer-implemented method of claim 1, wherein the junk score for the first document exceeds a predetermined threshold, further comprising:
sending to an administrator a message identifying the first document as junk.

18. A system for ranking candidate documents in response to a search query, comprising:
at least one processor;
a memory, operatively connected to the at least one processor and containing instructions that, when executed by the at least one processor, perform a method comprising:
creating an index of a plurality of documents in a corpus;
calculating a junk score for at least a first document in the corpus, wherein calculating the junk score comprises:
using a first candidate histogram for the first document in the corpus, wherein the first candidate histogram is specific to the first document; and
using a junk profile, wherein the junk profile comprises:
a first reference histogram for a first known junk document, wherein the first reference histogram is specific to the first known junk document and is based on a first junk variable; and

comparing the first candidate histogram to the first reference histogram;

receiving a search query;
identifying, based on the search query and the index, candidate documents from the plurality of documents in the corpus, wherein the candidate documents include at least the first document;
ranking the candidate documents based at least in part on the junk score for the first document;
wherein creating the index comprises separately delineating document data from the plurality of documents if the document data matches the junk profile.

19. The system of claim 18, wherein the method further comprises:
creating, for at least the first document, a candidate histogram for at least a first junk variable;
wherein calculating the junk score comprises comparing the candidate histogram to the first reference histogram to determine a first similarity metric;
wherein the junk profile comprises a dictionary of automatically generated data;
wherein calculating the junk score further comprises comparing document data from the plurality of documents in the corpus to the dictionary of automatically generated data; and
wherein creating the index comprises delineating in the index document data that matches the automatically generated data.

20. A computer storage medium including computer-executable instructions that, when executed by at least one processor, perform a method comprising:
creating an index of a plurality of documents in a corpus;
creating, for at least a first document of the plurality of documents, a candidate histogram specific to the first document for at least a first junk variable;
calculating a junk score for at least the first document using a junk profile, wherein:
the junk profile comprises:
a first reference histogram for a first known junk document, wherein the first reference histogram is specific to at least the first known junk document and is based on the first junk variable, and
a dictionary of automatically generated data; and

calculating a junk score comprises at least (a) comparing the candidate histogram to the first reference histogram to determine a first similarity metric and (b) determining a second similarity metric between document data in the first document and the dictionary of automatically generated data;

receiving a search query;
identifying, based on the search query and the index, candidate documents from the plurality of documents in the corpus, wherein the candidate documents include at least the first document;
ranking the candidate documents based at least in part on the junk score for the first document.