Method and system for finding similar records in mixed free-text and structured data
First Claim
1. A method for determining whether records are similar in a database, the method comprising:
- (a) selecting two records in the database;
(b) accessing two corresponding fields of the selected records;
(c) determining a type of data in the accessed fields;
(d) applying a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields,wherein,if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function;
(e) repeating steps b through d for one or more additional corresponding fields of the selected records to generate one or more additional match scores; and
(f) generating a similarity score that indicates a degree of similarity between the two records from the match scores, wherein the similarity score is generated as follows;
similarity_score=w1*match(a1i,a1j)+w2*match(a2i,a2j)+ . . . wn*match(ani,anj)wherein,similarity_score is the similarity score,i identifies a first selected record in the database,j identifies a second selected record in the database,n identifies a field position for a given field ani in the first selected record and a corresponding field position for a given field anj in the second selected record, match indicates the match function used to generate the match scores, and wn indicates a predefined weight for each match score.
0 Assignments
0 Petitions
Accused Products
Abstract
A technique for data mining where the available data contains both structured as well as unstructured (free-text) data. The present invention combines together the information available from different types of data to provide a single similarity score indicating the degree of similarity between records. Thus, a data evaluation application selects two records from a database and compares corresponding fields from the two records. The application determines whether to apply a nominal matching process, an ordinal matching process, or a vector-space matching process depending on the type of data in each pair of corresponding fields. The application sums the matching scores for all the fields in the records to compute the similarity score.
29 Citations
11 Claims
-
1. A method for determining whether records are similar in a database, the method comprising:
-
(a) selecting two records in the database; (b) accessing two corresponding fields of the selected records; (c) determining a type of data in the accessed fields; (d) applying a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields, wherein, if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function; (e) repeating steps b through d for one or more additional corresponding fields of the selected records to generate one or more additional match scores; and (f) generating a similarity score that indicates a degree of similarity between the two records from the match scores, wherein the similarity score is generated as follows;
similarity_score=w1*match(a1i,a1j)+w2*match(a2i,a2j)+ . . . wn*match(ani,anj)wherein, similarity_score is the similarity score, i identifies a first selected record in the database, j identifies a second selected record in the database, n identifies a field position for a given field ani in the first selected record and a corresponding field position for a given field anj in the second selected record, match indicates the match function used to generate the match scores, and wn indicates a predefined weight for each match score. - View Dependent Claims (2)
-
-
3. A method for determining whether records are similar in a database, the method comprising:
-
(a) selecting two records in the database; (b) accessing two corresponding fields of the selected records; (c) determining a type of data in the accessed fields; (d) applying a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields, wherein the match score is generated by the ordinal match function as follows;
match_score=1−
((ani−
anj)/|Domain an|)wherein, match_score indicates the match score generated by the ordinal match function, i identifies a first selected record in the database, j identifies a second selected record in the database, n identifies a field position for a given field ani in the first selected record and a given field anj in the second selected record, and |Domain an| is the size of the data domain of the corresponding fields; and wherein, if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function.
-
-
4. A method for determining whether records are similar in a database, the method comprising:
-
(a) selecting two records in the database; (b) accessing two corresponding fields of the selected records; (c) determining a type of data in the accessed fields; (d) applying a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields, wherein the match score is generated by the vector-based match function as follows; wherein, match_score indicates the match score generated by the vector-based match function, V is a size of a vocabulary associated with the data in the corresponding fields, i identifies a first selected record in the database, j identifies a second selected record in the database, n identifies an accessed field in the selected records, x identifies a word within an accessed field, weightnix is a weight of word x in field n of the first record, and weightnjx is a weight of word x in field n of the second record; and wherein, if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function.
-
-
5. A data processing system comprising:
-
a database having a plurality of records; a processor capable of accessing records in the database, the processor configured to; (a) select two records in the database; (b) access two corresponding fields of the selected records; (c) determine a type of data in the accessed fields; (d) apply a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields, wherein, if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function; (e) repeat steps b through d for additional corresponding fields of the selected records to generate one or more additional match scores; and (f) generate a similarity score that indicates a degree of similarity between the two records from the match scores, wherein the similarity score is generated as follows;
similarity_score=w1*match(a1i,a1j)+w2*match(a2i,a2j)+ . . . wn*match(ani,anj)wherein, similarity_score is the similarity score, i identifies a first selected record in the database, j identifies a second selected record in the database, n identifies a field position for a given field ani in the first selected record and a corresponding field position for a given field anj in the second selected record, match indicates the match function used to generate the match scores, and wn indicates a predefined weight for each match score. - View Dependent Claims (6, 9, 10, 11)
-
-
7. A data processing system comprising:
-
a database having a plurality of records; a processor capable of accessing records in the database, the processor configured to; (a) select two records in the database; (b) access two corresponding fields of the selected records; (c) determine a type of data in the accessed fields; (d) apply a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields, wherein the match score is generated by the ordinal match function as follows;
match_score=1−
((ani−
anj)/|Domain an|)wherein, match_score indicates the match score generated by the ordinal match function, i identifies a first selected record in the database, j identifies a second selected record in the database, n identifies a field position for a given field ani in the first selected record and a given field anj in the second selected record, and |Domain an| is the size of the data domain of the corresponding fields; and wherein, if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function.
-
-
8. A data processing system comprising:
-
a database having a plurality of records; a processor capable of accessing records in the database, the processor configured to; (a) select two records in the database; (b) access two corresponding fields of the selected records; (c) determine a type of data in the accessed fields; (d) apply a match function to the accessed corresponding fields to generate a match score based on the type of data in the accessed fields, wherein the match score is generated by the vector-based match function as follows; wherein, match_score indicates the match score generated by the vector-based match function, V is a size of a vocabulary associated with the data in the corresponding fields, i identifies a first selected record in the database, j identifies a second selected record in the database, n identifies an accessed field in the selected records, x identifies a word within an accessed field, weightnix is a weight of word x in field n of the first record, and weightnjx is a weight of word x in field n of the second record; and wherein, if the type of data in the fields is nominal, the match function applied is a Boolean match function, if the type of data in the fields is ordinal, the match function applied is an ordinal match function, and if the type of data in the fields is unstructured data, the match function applied is a vector-based match function.
-
Specification