Device for and method of measuring similarity between sets

The present invention is a device for and method of measuring similarity between sets using a union block, three function blocks, an adder, a subtractor, and a divider. The first set is fed into the first function block and the first input of the union block. The second set is fed into the second function block and the second input of the union block. The output of the union block is fed into the input of the third function block. The outputs of the first and second function block feed into the adder. The output of the adder and the output of the third function block feed into the subtractor. The output of the subtractor feeds into the input of the divider.

FIELD OF INVENTION

The present invention relates, in general, to data processing: database and file management or data structures, and in particular to sorting.

BACKGROUND OF THE INVENTION

Computing similarity between sets is critical for managing and sorting through massive amounts of data. This data can come from multiple sources, some of which overlap. The current methods and devices for sorting rely on the Jaccard index as a base for determining similarity, but computing the Jaccard index requires knowledge of the intersections of two sets, a quantity not automatically known. There exists a need to be able to measure similarity between sets without knowing the intersection of data sets. The present invention does just that.

U.S. Pat. No. 6,240,409, entitled “METHOD AND APPARATUS FOR DETECTING AND SUMMARIZING DOCUMENT SIMILARITY WITHIN LARGE DOCUMENT SETS,” discloses a method for comparing an input file to a set of files. The comparison is achieved by splitting up the document into substrings and compares it to substrings from the set. U.S. Pat. No. 6,240,409 is hereby incorporated by reference into the present specification.

U.S. Pat. No. 5,953,006, entitled “METHODS AND APPARATUS FOR DETECTING AND DISPLAYING SIMILARITIES IN LARGE DATA SETS,” discloses a method for determining similarities between sets using dotplots. These dotplots graphically display how similar the different items in the sets are. U.S. Pat. No. 5,953,006 is hereby incorporated by reference into the present specification.

U.S. Pat. No. 7,260,773, entitled “DEVICE SYSTEM AND METHOD FOR DETERMINING DOCUMENT SIMILARITIES AND DIFFERENCES,” discloses a method to determine the similarity between sets of documents by dividing each document into subsections. The subsections are then compared to determine similarity. U.S. Pat. No. 7,260,773 is hereby incorporated by reference into the present specification.

SUMMARY OF THE INVENTION

It is an object of the present invention to measure similarity between sets.

It is another object of the present invention to measure similarity between sets without knowing the intersection of the sets.

The present invention is a device for and method of measuring the similarity between sets.

The device of the present invention includes a union block, having a first input, a second input, and an output.

The device further includes a first function block, having a first input connected to the first input of the union block, having a second input, and having an output.

The device further includes a second function block, having a first input connected to the second input of the union block, having a second input connected to the second input of the first function block, and having an output.

The device further includes a third function block, having a first input connected to the output of the union block, having a second input connected to the second in put of the first function block, and having an output.

The device further includes an adder, having a first input connected to the output of the first function block, having a second input connected to the output of the second function block, and having an output.

The device further includes a subtractor, having a first input connected to the output of the adder, having a second input connected to the output of the third function block, and having an output.

The device further includes a divider, having a first input connected to the output of the subtractor, having a second input connected to the output of the third function block, and having an output.

The first step of the method of measuring similarity between sets is receiving a first set of items, a second set of items, and a dictionary of terms.

The second step of the method is calculating a union or concatenation of the first set and the second set.

The third step of the method is performing a user-definable, non-linear mathematical operation, based upon the dictionary of terms, on the union or concatenation of the first set and the second set.

The fourth step of the method is performing a user-definable, non-linear mathematical operation, based upon the dictionary of terms, on the first set.

The fifth step of the method is performing a user-definable, non-linear mathematical operation, based upon the dictionary of terms, on the second set.

The sixth step of the method is adding the results of the fourth and fifth steps.

The seventh step of the method is subtracting the results of the third step from the results of the sixth step.

The eighth step of the method is dividing the results of the seventh step by the results of the third step.

The ninth step of the method is dividing the results of the seventh step by the results of the fifth step.

The tenth step of the method is returning the result of the eighth or ninth step as the similarity between the first and second sets.

DETAILED DESCRIPTION

The present invention is a device for and method of measuring similarity between sets of items. The items may be but are not limited to documents attributed to a same author; queries, made to a database or computer search tools, attributed to the same user; genes in genome-wide association studies; reports which cite a same source; reports which pertain to a same topic; communications metadata possessing a same metadata subfield; data elements for friends of a same individual; data elements for individuals within a same social group; data elements for individuals who purchase a same commodity; data elements for commodities purchased by a same individual; data elements for genes from an individual; data elements for people from a same family; and data elements for genes from individuals with a same disease.

FIG. 1is a schematic of the device1of the preferred embodiment of the present invention.

The device1represents the preferred embodiment of the present invention. It contains a union block2. The union block2has a first input3, a second input4, and an output5. In the preferred embodiment, the union block2computes the mathematical union of the first input3and the second input4and outputs the result on the output5. The union of two sets is mathematical operation in set theory. For example, {1,2,3} union {3,4,5} is {1,2,3,4,5}. In an alternate embodiment, the union block2computes the concatenation, such that duplicate items are allowed, of the first input3and the second input4and outputs the result on the output5.

The device1includes a first function block6. The first function block6has a first input connected to the first input3of the union block2, a second input7, and an output8. The first function block6computes a user-definable, non-linear mathematical operation between the two inputs and outputs the results on the output8. The user-definable, non-linear mathematical operation computes the information measure contained in first input connected to the first input3of the union block2with respect to the second input7.

The device1includes a second function block9. The second function block9has a first input connected to the second input4of the union block2, a second input connected to the second input7of the first function block6, and an output10. The second function block9computes a user-definable, non-linear mathematical operation between the two inputs and outputs the results on the output10. The user-definable, non-linear mathematical operation computes the information measure contained in first input connected to the second input4of the union block2with respect to the second input connected to the second input7of the first function block6.

The device1includes a third function block11. The third function block11has a first input connected to the output5of the union block2, a second input connected to the second input7of the first function block6, and an output12. The third function block11computes a user-definable, non-linear mathematical operation between the two inputs and outputs the results on the output12. The user-definable, non-linear mathematical operation computes the information measure contained in first input connected to the output5of the union block2with respect to the second input connected to the second input7of the first function block6.

The device1includes an adder13. The adder13has a first input connected to the output8of the first function block6, a second input connected to the output10of the second function block6, and an output14. The adder13adds the two inputs and outputs the result on the output14.

The device1includes a subtractor15. The subtractor15has a first input connected to the output12of the third function block11, a second input connected to the output14of the adder13, and an output16. The subtractor15subtracts the first input connected to the output12of the third function block11from the second input connected to the output14of the adder13and outputs the result on the output16.

The device1includes a divider17. The divider17has a first input connected to the output12of the third function block11, a second input connected to the output16of the subtractor15, and an output18. The divider17divides the second input connected to the output16of the subtractor15by the first input connected to the output12of the third function block11and outputs the result on the output18.

FIG. 2is a schematic of the device21of an alternate embodiment of the present invention.

The device21represents an alternate embodiment of the present invention. It contains a union block22. The union block22has a first input23, a second input24, and an output25. In the preferred embodiment, the union block22computes the mathematical union of the first input23and the second input24and outputs the result on the output25. In an alternate embodiment, the union block22computes a concatenation of the first input23and the second input24and outputs the result on the output25.

The device21includes a first function block26. The first function block26has a first input connected to the first input23of the union block, a second input27, and an output28. The first function block26computes a user-definable, non-linear mathematical operation between the two inputs and outputs the results on the output28. The user-definable, non-linear mathematical operation computes the information measure contained in first input connected to the first input23of the union block22with respect to the second input27.

The device21includes a second function block29. The second function block29has a first input24, a second input27, and an output30. The second function block29computes a user-definable, non-linear mathematical operation between the two inputs and outputs the results on the output30. The user-definable, non-linear mathematical operation computes the information measure contained in first input connected to the second input34of the union block22with respect to the second input connected to the second input27of the first function block26.

The device21includes a third function block31. The third function block31has a first input25, a second input27, and an output32. The third function block31computes a user-definable, non-linear mathematical operation between the two inputs and outputs the results on the output32. The user-definable, non-linear mathematical operation computes the information measure contained in first input connected to the output25of the union block22with respect to the second input connected to the second input27of the first function block26.

The device21includes an adder33. The adder33has a first input connected to the output28of the first function block26, a second input connected to the output30of the second function block29, and an output34. The adder33adds the two inputs and outputs the result on the output34.

The device21includes a subtractor35. The subtractor35has a first input connected to the output32of the third function block31, a second input connected to the output34of the adder33, and an output36. The subtractor35subtracts the first input connected to the output32of the third function block31from the second input connected to the output34of the adder33and outputs the result on the output36.

The device21includes a divider37. The divider37has a first input connected to the output30of the second function block29, a second input connected to the output36of the subtractor35, and an output38. The divider37divides the second input connected to the output36of the subtractor35by the first input first input connected to the output30of the second function block29and outputs the result on the output38.

FIG. 3is a schematic of the function block6,9,11,26,29, and31of a preferred embodiment of the present invention.

The function block6,9,11,26,29, and31includes a single term counter41. The single term counter41has a first input bus3,4,5,23,24, and25, a second input bus7and27, and an output bus42. The first input bus3,4,5,23,24, and25accepts a set of items. The second input bus7and27accepts a dictionary of terms. The single term counter41counts the frequency of each term in each item and outputs the result on the output bus42.

The function block6,9,11,26,29, and31includes a total term counter43. The total term counter43has a first input bus connected to the first input bus3,4,5,23,24, and25of the single term counter41, a second input bus connected to the second input bus7and27of the single term counter41, and an output bus44. The first input bus connected to the first input bus3,4,5,23,24, and25of the single term counter41accepts a set of items. The second input bus connected to the second input bus7and27of the single term counter41accepts a dictionary of terms. The total term counter43counts the total number of all terms in each item and outputs the result on the output bus44.

The function block6,9,11,26,29, and31includes a bus counter45. The bus counter45has an input bus connected to the first input bus3,4,5,23,24, and25of the single term counter41and an output46. The input bus connected to the first input bus3,4,5,23,24, and25of the single term counter41accepts a set of items and the bus counter45outputs the total number of items on the output46.

The function block6,9,11,26,29, and31includes a non-zero counter47. The non-zero counter47has an input bus connected to the output bus42of the single term counter and an output bus48. The non-zero counter47counts the number of non-zero term frequencies in each item of the set and outputs the result on the output bus48.

The function block6,9,11,26,29, and31includes a first divider49. The first divider49has a first input bus connected to the output bus42of the single term counter41, a second input bus connected to the output bus44of the total term counter, and an output bus50. The first divider49divides the frequency of each term in each item by the total number of terms in each item and outputs the result on the output bus50.

The function block6,9,11,26,29, and31includes a second divider51. The second divider51has a first input connected to the output bus46of the bus counter45, a second input bus connected to the output bus48of the non-zero counter47, and an output bus52. The second divider51divides the number of non-zero term frequencies in each item by the corresponding number of items in each set and outputs the result on the output bus52.

The function block6,9,11,26,29, and31includes a natural log block53. The natural log block53has an input bus connected to the output bus52of the second divider51and an output bus54. The natural log block53computes the natural log of each input and outputs the result on the output bus54.

The function block6,9,11,26,29, and31includes a first squaring block55. The first squaring block55has an input bus connected to the output bus50of the first divider49and an output bus56. The first squaring block55computes the square of each input and outputs the result on the output bus56.

The function block6,9,11,26,29, and31includes a second squaring block57. The second squaring block57has an input bus connected to the output bus54of the natural log block53and an output bus58. The second squaring block57computes the square of each input and outputs the result on the output bus58.

The function block6,9,11,26,29, and31includes a first multiplier59. The first multiplier59has an input bus connected to the output bus50of the first divider49and an output bus60. The input to the first multiplier59consists of numbers corresponding to each term/item pair and outputs the product of each unique item pair for the same term.

The function block6,9,11,26,29, and31includes a second multiplier61. The second multiplier61has a first input bus connected to the output bus56of the first squaring block55, a second input bus connected to the output bus58of the second squaring block57, and an output bus62. The first input bus connected to the output bus56of the first squaring block55contains numbers corresponding to each term/item and the second input bus connected to the output bus58of the second squaring block57consists of numbers corresponding to each term. The output of the second multiplier61consists of product pairs where each term/item input is multiplied by the corresponding term input.

The function block6,9,11,26,29, and31includes a first summing block63. The first summing block63has an input bus connected to the output bus62of the second multiplier61and an output bus64. The input to the first summing block63consists of numbers corresponding to each item/term pair and the first summing block63sums each item set over the whole dictionary of terms.

The function block6,9,11,26,29, and31includes a square root block65. The square root block65has an input bus connected to the output bus64of the first summing block63and an output bus66. The square root block65computes the square root of each input on the input bus connected to the output bus64of the first summing block63and, outputs the result on the output bus66.

The function block6,9,11,26,29, and31includes a third multiplier67. The third multiplier67has an input bus connected to the output bus66of the square root block65and an output bus68. The input to the third multiplier67contains numbers corresponding to each item and outputs products which each contain different item pairs.

The function block6,9,11,26,29, and31includes a fourth multiplier69. The fourth multiplier69has a first input bus connected to the output bus58of the second squaring block57, a second input bus connected to the output bus60of the first multiplier59, and an output bus70. The first input connected to the output bus58of the second squaring block57consists of numbers each containing different combinations of two items and one term. The second input bus connected to the output bus60of the first multiplier59, and an output bus70consists of numbers which each correspond to a term. The fourth multiplier69computes products which match up the inputs based upon the common term.

The function block6,9,11,26,29, and31includes a second summing block71. The second summing block has an input bus connected to the output bus70of the fourth multiplier69and an output bus72. The input bus connected to the output bus70of the fourth multiplier69and an output bus72to the second summing block71consists of numbers each with different combinations of two items and one term. The second summing block71sums the group of numbers which correspond to the same two items over the dictionary of terms.

The function block6,9,11,26,29, and31includes a third divider73. The third divider73has a first input bus connected to the output bus68of the third multiplier67, a second input bus connected to the output bus72of the second summing block71, and an output bus74. Each input bus to the third divider73contains a different item pair. The third divider73divides an item pair from the second input bus connected to the output bus72of the second summing block71by the same item pair from the first input bus connected to the output bus68of the third multiplier67.

The function block6,9,11,26,29, and31includes an ordering block75. The ordering block75has a first input bus connected to the output bus74of the second divider73, a second input76, and an output bus77. The ordering block75proposes and ordering of items and has as its output that subset of the inputs from the first input bus connected to the output bus74of the second divider73corresponding to the similarities of the adjacent pairs of items in the proposed order.

The function block6,9,11,26,29, and31includes a third summing block78. The third summing block78has an input bus connected to the output bus77of the ordering block75and an output79. The third summing block sums all the inputs.

The function block6,9,11,26,29, and31includes a maximizing block80. The maximizing block80has an input connected to the output79of the third summing block78, a first output connected to the second input76of the ordering block75and a second output81. The maximizing block80compares the numbers received on the input connected to the output79of the third summing block78and outputs the largest one on the output81.

The function block6,9,11,26,29, and31includes a subtractor82. The subtractor82has a first input connected to the output46of the bus counter45, a second input connected to the output81of the maximizing block80, and an output8,10,12,28,30, and32. The subtractor82subtracts the second input connected to the output81of the maximizing block80from the first input connected to the output46of the bus counter45.

FIG. 4is a schematic of the function block6,9,11,26,29, and31of an alternate embodiment of the present invention.

The function block6,9,11,26,29, and31includes a single term counter91. The single term counter91has a first input bus3,4,5,23,24, and25, a second input bus7and27, and an output bus92. The first input bus3,4,5,23,24, and25accepts a set of items. The second input bus7and27accepts a dictionary of terms. The single term counter91counts the frequency of each term in each item and outputs the result on the output bus92.

The function block6,9,11,26,29, and31includes a total term counter93. The total term counter93has a first input bus connected to the first input bus3,4,5,23,24, and25of the single term counter91, a second input bus connected to the second in put bus7and27of the single term counter91, and an output bus94. The first input bus connected to the first input bus3,4,5,23,24, and25of the single term counter91accepts a set of items. The second input bus connected to the second in put bus7and27of the single term counter91accepts a dictionary of terms. The total term counter93counts the total number of all terms in each item and outputs the result on the output bus94.

The function block6,9,11,26,29, and31includes a first divider95. The first divider95has a first input bus connected to the output bus92of the single term counter91, a second input bus connected to the output bus94of the total term counter93, and an output bus96. The first divider95divides the frequency of each term in each item by the total number of terms in each item and outputs the result on the output bus96.

The function block6,9,11,26,29, and31includes a first summing block97. The first summing block97has an input bus connected to the output bus96of the first divider95and an output bus98. The input bus connected to the output bus96of the first divider95to the first summing block97consists of numbers corresponding to different term/item pairs. The first summing block97sums the groups with similar terms over the set of items.

The function block6,9,11,26,29, and31includes a bus counter99. The bus counter99has an input bus connected to the first input bus3,4,5,23,24, and25of the single term counter91and an output100. The input bus connected to the first input bus3,4,5,23,24, and25of the single term counter91accepts a set of items and the bus counter99outputs the total number of items on the output100.

The function block6,9,11,26,29, and31includes a second divider101. The second divider101has a first input bus connected to the output bus98of the first summing block97, a second input connected to the output100of the bus counter99, and an output bus102. The second divider101divides each number on the first input bus connected to the output bus98of the first summing block97by the second input connected to the output100of the bus counter99.

The function block6,9,11,26,29, and31includes a first subtractor103. The first subtractor103has a first input bus connected to the output bus96of the first divider95, a second input bus connected to the output bus102of the second divider101, and an output bus104. The first input bus connected to the output bus96of the first divider95consists of numbers which each correspond to a different term/item pair, and the second input bus connected to the output bus102of the second divider101consists of numbers which correspond to different terms. The first subtractor103takes each number on the first input bus connected to the output bus96of the first divider95and subtracts the number on the second input bus connected to the output bus102of the second divider101which has the same term.

The function block6,9,11,26,29, and31includes a squaring block105. The squaring block105has an input bus connected to the output bus104of the first subtractor103and an output bus106. The squaring block105squares each input.

The function block6,9,11,26,29, and31includes a first multiplier107. The first multiplier107has an input bus connected to the output bus104of the first subtractor103and an output bus108. The input bus connected to the output bus104of the first subtractor103consists of numbers corresponding to unique item/term pairs. The first multiplier107computes products which each contain numbers with identical terms and different items.

The function block6,9,11,26,29, and31includes a second summing block109. The second summing block109has an input bus connected to the output bus106of the squaring block105and an output bus110. The second summing block109sums inputs consisting of item/term pairs over the dictionary of terms.

The function block6,9,11,26,29, and31includes a third summing block111. The third summing block111has an input bus connected to the output bus108of the first multiplier107and an output bus112. The input bus connected to the output bus108of the first multiplier107contains numbers corresponding to an item pair and a term. The third summing block111sums the numbers with the same item pair over the dictionary of terms.

The function block6,9,11,26,29, and31includes a square root block113. The square root block113has an input bus connected to the output bus110of the second summing block109and an output bus114. The square root block113computes the square root of each input.

The function block6,9,11,26,29, and31includes a second multiplier115. The second multiplier115has an input bus connected to output bus114of the square root block113and an output bus116. The input bus connected to output bus114of the square root block113consists of numbers each corresponding to a different item. The second multiplier115computes products which each contain a different item pair.

The function block6,9,11,26,29, and31includes a third divider117. The third divider117has a first input bus connected to the output bus112of the third summing block111, a second input bus connected to the output bus116of the second multiplier115, and an output bus118. The first input bus connected to the output bus112of the third summing block111and the second input bus connected to the output bus116of the second multiplier115each contain numbers corresponding to different pairs of items. The third divider117divides numbers from the first input bus connected to the output bus112of the third summing block111by the numbers from the second input bus connected to the output bus116of the second multiplier115which correspond to the same pair of items.

The function block6,9,11,26,29, and31includes an ordering block119. The ordering block119has a first input bus connected to the output bus118of the third divider117, a second input120, and an output bus121. The ordering block119proposes and ordering of items and has as its output that subset of the inputs from the first input bus connected to the output bus118of the second divider117corresponding to the similarities of the adjacent pairs of items in the proposed order.

The function block6,9,11,26,29, and31includes a fourth summing block122. The fourth summing block122has an input bus connected to the output bus121of the ordering block119and an output123. The fourth summing block122sums all the inputs.

The function block6,9,11,26,29, and31includes a maximizing block124. The maximizing block124has an input connected to the output123of the fourth summing block122, a first output connected to the second input120of the ordering block119and a second output125. The maximizing block124compares the numbers received on input connected to the output123of the fourth summing block122and outputs the largest one on the second output125.

The function block6,9,11,26,29, and31includes a subtractor126. The subtractor126has a first input connected to the output100of the bus counter99, a second input connected to the output125of the maximizing block124, and an output8,10,12,28,30, and32. The subtractor126subtracts the second input connected to the output125of the maximizing block124from the first input connected to the output100of the bus counter99.

FIG. 5is a flowchart of the method of the present invention.

The first step201of the method is receiving a first set, a second set, and a dictionary of terms. The items in each of the sets can consist of documents attributed to a same author; queries, made to a database or computer search tools, attributed to the same user; genes in genome-wide association studies; reports which cite a same source; reports which pertain to a same topic; communications metadata possessing a same metadata subfield; data elements for friends of a same individual; data elements for individuals within a same social group; data elements for individuals who purchase a same commodity; data elements for commodities purchased by a same individual; data elements for genes from an individual; data elements for people from a same family; and data elements for genes from individuals with a same disease. The dictionary of terms can contain different words, numbers, or any other term which can be counted in a set of items; a set of coordinate weights when the data elements are feature vectors and the measure is cosine similarity; or a confusion matrix which specifies the similarity between the data-elements indexed by the rows and the data-elements indexing the columns such as are used when the data-elements are phonemes.

The second step202of the method is calculating the union of a first set and a second set. In the preferred embodiment, the union is a mathematical union based upon set theory. In an alternate embodiment, the union is a concatenation of the first set and the second set.

The third step203of the method is performing a user-definable, non-linear mathematical operation, based upon the dictionary of terms, on the union of the first set and the second set. This operation computes the information measure contained in the union of the first set and the second set.

The fourth step204of the method is performing a user-definable, non-linear mathematical operation, based upon the dictionary of terms, on the first set. This operation computes the information measure contained in the first set.

The fifth step205of the method is performing a user-definable, non-linear mathematical operation, based upon the dictionary of terms, on the second set. This operation computes the information measure contained in the second set.

The sixth step206of the method is adding the results from step204and step205.

The seventh step207of the method is subtracting the results from step203from the results from step206.

The eighth step208of the method is dividing the results from step207by the results from step203.

The ninth step209of the method is dividing the results from step207by the results from step205.

The tenth step210of the method is returning the result of step208or the result of step209as the similarity between the first and second sets.

FIG. 6is a flowchart of the steps203,204, and205of a first embodiment of the present invention.

The first step221of the method is determining the frequencies of occurrence of each term in each item of the set.

The second step222of the method is determining the total number of terms in each item of the set.

The third step223of the method is counting the number of items in the set.

The fourth step224of the method is counting the number, of non-zero results from step221.

The fifth step225of the method is dividing the results from step221by the results from step222. The results from step221correspond to the frequency of each term in each item and the results from step222correspond to the total number of terms in each item. The fifth step225divides the results from step221by the results from step222which correspond to the same item.

The sixth step226of the method is dividing the result from step223by each result from step224.

The seventh step227of the method is computing the natural log of each result from step226.

The eighth step228of the method is multiplying the results from step225. The eighth step228multiplies the results from step225such that each product contains a different combination of an item pair and a term.

The ninth step229of the method is squaring each result from step226.

The tenth step230of the method is squaring each result from step227.

The eleventh step231of the method is multiplying the results from step229and the results from step230. The results from step230each correspond to a term and the results from step229each correspond to a unique term, item pair. The eleventh step231multiplies each result from step229by the corresponding number from step230.

The twelfth step232of the method is summing the results from step231. The twelfth step232sums over the dictionary of terms.

The thirteenth step233of the method is computing the square root of the results from step232.

The fourteenth step234of the method is multiplying the results from step233. The results from step233each correspond to an item. The fourteenth step234computes product pairs which each contain a unique item pair.

The fifteenth step235of the method is multiplying the results from step228and the results from step230. The results from step230each correspond to a term and the results from step228each correspond to a unique item pair and term trio. The fifteenth step235computes products which each contain the step228result and the corresponding step230result.

The sixteenth step236of the method is summing the results from step235. The sixteenth step236sums over the dictionary of terms and the results contain unique item pairs.

The seventeenth step237of the method is dividing the results from step234by the results from step236. The results from step234and the results from step236both contain unique item pairs. The seventeenth step237computes quotients which contain those same unique item pairs.

The eighteenth step238of the method is determining an ordering of the results from step237such that the sum of a particular subset of the results from step237is maximized. The eighteenth step238is a traveling salesman problem and can be solved by the Greedy Algorithm solution, the “2-opt” solution, the Simulated Annealing solution, the “K-opt” solution, the Lin-Kernighan solution, Lin-Kernighan-Johnson solution or any other solution know to those skilled in the art.

The nineteenth step239of the method is subtracting the result of step238from the result from step223.

FIG. 7is a flowchart of the steps203,204, and205of a second embodiment of the present invention.

The first step251of the method is determining the frequencies of occurrence of each term in each item of the set.

The second step252of the method is determining the total number of terms in each item of the set.

The third step253of the method is counting the number of items in the set.

The fourth step254of the method is dividing the results from step251by the results from step252. The results from step251correspond to the frequency of each term in each item and the results from step252correspond to the total number of terms in each item. The fourth step254divides the results from step251by the results from step252which correspond to the same item.

The fifth step255of the method is summing the results from step254. The fifth step255sums over the set of items.

The sixth step256of the method is dividing the results from step256by the result from step254.

The seventh step257of the method is subtracting the results from step256from the result from step254. The results from step254each correspond to a unique item/term pair and the results from step256each correspond to a term. The seventh step257computes results each contain unique item/term pairs.

The eighth step258of the method is squaring the results from step257.

The ninth step259of the method is summing the results from step258over the dictionary of terms.

The tenth step260of the method is computing the square root of the results from step259.

The eleventh step261of the method is multiplying the results from step260. The eleventh step261computes results which contain unique item pairs.

The twelfth step262of the method is multiplying the results from step257. The twelfth step262computes results which contain unique item pair, term trios.

The thirteenth step263of the method is summing the results from step262over the dictionary of terms.

The fourteenth step264of the method is dividing the results from step263by the results from step261. The fourteenth step264computes quotients using numbers which contain the same item pair.

The fifteenth step265of the method is determining an ordering of the results from step264such that the sum a particular subset of the results from step264is minimized. The fifteenth step265is a traveling salesman problem and can be solved by the Greedy Algorithm solution, the “2-opt” solution, the Simulated Annealing solution, the “K-opt” solution, the Lin-Kernighan solution, Lin-Kernighan-Johnson solution or any other solution know to those skilled in the art.

The sixteenth step266of the method is subtracting the result of step265from the result from step253.