1. A process for finding a similar data records from a set of data records comprising: providing a number of data records from which one or more canonical data records are identified; determining a similarity score for data records based on the contents of the records; grouping together data records whose similarity score with respect to each other is greater than a threshold to form one or more groups of data records that form nodes of a graph wherein edges between nodes represent a similarity score between records of a group; and within each said group, identifying a canonical record based on the similarity of data records to each other within the group.