Apparatus, system, and method for grouping data records

By automatically learning similarity functions and graph clustering techniques through a modular system, the challenge of large-scale data record clustering is solved, achieving efficient and accurate data record clustering, applicable to data record clustering of various entity types.

CN114240372BActive Publication Date: 2026-05-22FACTUAL
View PDF 8 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
FACTUAL
Filing Date
2014-03-14
Publication Date
2026-05-22

AI Technical Summary

Technical Problem

Existing technologies struggle to effectively cluster large numbers of data records distributed across different repositories into clusters related to the same entity, especially with billions of data records, where it is difficult to determine the similarity between data records and appropriate clustering conditions.

Method used

By using a modular system in the computing device, including a candidate simplification module, a similarity operation module, and a cluster computing module, the similarity function is automatically learned. Based on attribute similarity values ​​and graph clustering techniques, computing tasks are distributed to a distributed computing system, reducing redundant comparisons and achieving efficient clustering of data records.

Benefits of technology

It can cluster billions of data records within a reasonable time, improving the efficiency and accuracy of data record clustering, reducing the computational burden, and supporting specific rule and contextual probability analysis for different entity types.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114240372B_ABST
    Figure CN114240372B_ABST
Patent Text Reader

Abstract

The present application relates to apparatuses, systems, and methods for grouping data records based on entities referenced by the data records. The disclosed grouping mechanism can include determining pairwise similarities among a large number of data records, and clustering subsets of data records based on their pairwise similarities.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of Chinese patent application No. 201480014861.3, whose international application number is PCT / US2014 / 029787, filing date is March 14, 2014, priority date is March 15, 2013, entry into the Chinese national phase is September 14, 2015, and the invention is entitled "Apparatus, System and Method for Grouping Data Records".

[0002] Cross-references to related applications

[0003] This application claims the rights of the previously filed date under 35 USC §119(e), as follows:

[0004] • U.S. Provisional Application No. 61 / 799,986, filed on March 15, 2013, entitled “SYSTEM FOR ANALYZING AND USINGLOCATION BASED BEHAVIOR”;

[0005] • U.S. Provisional Application No. 61 / 800,036, filed on March 15, 2013, entitled “GEOGRAPHIC LOCATION DESCRIPTOR ANDLINKER”;

[0006] • U.S. Provisional Application No. 61 / 799,131, filed on March 15, 2013, entitled “SYSTEM AND METHOD FOR CROWD SOURCINGDOMAIN SPECIFIC INTELLIGENCE”;

[0007] • U.S. Provisional Application No. 61 / 799,846, filed on March 15, 2013, entitled “SYSTEM WITH BATCH AND REAL TIME DATAPROCESSING”; and

[0008] • U.S. Provisional Application No. 61 / 799,817, filed on March 15, 2013, entitled “SYSTEM FOR ASSIGNING SCORES TOLOCATION ENTITIES”.

[0009] This application also involves:

[0010] • On the same date, U.S. Patent Application No. 14 / 214,208, entitled “APPARATUS, SYSTEMS, AND METHODS FOR ANALYZING MOVEMENTS OF TARGET ENTITIES”, was filed together with this application.

[0011] • On the same date, U.S. Patent Application No. 14 / 214,296, entitled “APPARATUS, SYSTEMS, AND METHODS FOR PROVIDING LOCATION INFORMATION”, was filed with this application.

[0012] • On the same date, U.S. Patent Application No. 14 / 214,213 entitled “APPARATUS, SYSTEMS, AND METHODS FOR CROWDSOURCING DOMAIN SPECIFIC INTELLIGENCE” was filed together with this application.

[0013] • On the same date, U.S. Patent Application No. 14 / 214,219 entitled “APPARATUS, SYSTEMS, AND METHODS FORBATCH AND REALTIME DATA PROCESSING” was filed together with this application.

[0014] • U.S. Patent Application No. 14 / 214,309, entitled “APPARATUS, SYSTEMS, AND METHODS FOR ANALYZING CHARACTERISTICS OF ENTITIES OF INTEREST,” filed on the same date and together with this application; and

[0015] • On the same date, U.S. Patent Application No. 14 / 214,231, entitled “APPARATUS, SYSTEMS, AND METHODS FORGROUPING DATA RECORDS”, was filed together with this application.

[0016] The entire contents of each of the above-cited applications (including both provisional and non-provisional applications) are incorporated herein by reference. Technical Field

[0017] This disclosure generally relates to apparatus, systems, and methods for grouping data records associated with an entity. Background Technology

[0018] A vast amount of information is created every day. Social networking sites and blogs receive millions of new posts daily, and new web pages are constantly being generated to provide information about individuals, major events, businesses, or any other entities people care about. Furthermore, information is typically not obtained from a single repository, but is generally distributed across millions of repositories, usually located around the world.

[0019] Due to the sheer volume and distribution of information, it is difficult for people to consume information effectively. To address this issue, data analysis systems can (1) use crawlers to collect information and (2) create meaningful summaries of the collected information to make it easy to consume. For example, a data analysis system might aim to collect all available data records associated with a specific entity such as Factual and provide meaningful summaries of these data records so that users can easily consume information about that specific entity.

[0020] Unfortunately, creating meaningful summaries of the collected information is challenging because, often, especially with records on a billion-scale scale, it is unclear whether two or more records are associated with the same entity, related entities, or not at all. Therefore, an effective mechanism is needed to determine whether two or more records provide information about the same entity, related entities, or independent entities. Summary of the Invention

[0021] Typically, in one aspect, embodiments of the disclosed subject matter may include an apparatus. The apparatus includes a processor configured to operate one or more modules stored in a memory. The one or more modules are configured to identify at least one pair of data records for which a similarity value is determined; to determine the similarity value of the at least one pair of data records based at least in part on multiple attributes associated with the at least one pair of data records; and to associate the at least one pair of data records with one or more clusters, each cluster associated with a unique entity, based on the similarity value of the at least one pair of data records.

[0022] Typically, in one aspect, embodiments of the disclosed subject matter may include a method for clustering multiple data records into at least one cluster. The method includes: identifying at least one pair of data records among the multiple data records for which a similarity value is determined at a candidate reduction module located in a computing device; determining the similarity value of the at least one pair of data records at least in part based on multiple attributes associated with the at least one pair of data records at a similarity calculation module located in the computing device and communicating with the candidate reduction module; and associating the at least one pair of data records with one or more clusters based on the similarity value of the at least one pair of data records at a clustering calculation module located in the computing device and communicating with the similarity calculation module, each cluster being associated with a unique entity.

[0023] Typically, in one aspect, embodiments of the disclosed subject matter may include a computer program product tangibly embodied in a non-transitory computer-readable storage medium. The computer program product includes instructions operable to cause a data processing system to identify at least one pair of data records for which a similarity value is determined; to determine the similarity value of the at least one pair of data records based at least in part on a plurality of attributes associated with the at least one pair of data records; and to associate the at least one pair of data records with one or more clusters, each cluster being associated with a unique entity, based on the similarity value of the at least one pair of data records.

[0024] Typically, in one aspect, embodiments of the disclosed subject matter may include a method for clustering multiple data records into at least one cluster. The method includes, at one or more modules, identifying at least one pair of data records among the multiple data records for which a similarity value is determined; at one or more modules, determining the similarity value of the at least one pair of data records based at least in part on multiple attributes associated with the at least one pair of data records; and at one or more modules in communication with a similarity calculation module, associating the at least one pair of data records with one or more clusters based on the similarity value of the at least one pair of data records, each cluster being associated with a unique entity.

[0025] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include modules, steps, or executable instructions for identifying a pair or more pairs of data records that do not require a similarity value to be determined based on a predetermined set of attributes that may be shared by the related data records.

[0026] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include modules, steps, or executable instructions for adjusting a predetermined set of attributes based on the association of data records and clusters from previous iterations.

[0027] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include a module, step, or executable instructions for determining a similarity value based on a similarity function learned from training data records.

[0028] In any of the embodiments disclosed herein, the similarity function is designed to infer the importance of a particular component associated with a particular attribute of a data record, wherein the similarity function is known by: determining the differences between components associated with a particular attribute of a training data record, wherein the training data records are known to belong to the same cluster; and determining the importance of the particular component based on the number of times the particular component appears in the differences.

[0029] In any of the embodiments disclosed herein, the similarity function is designed to infer the probability of a first component and a second component being interchanged in a particular attribute of a data record, wherein the similarity function is known by: determining the differences between components associated with a particular attribute of a training data record, wherein the training data records are known to belong to the same cluster; and determining the probability of interchangeing the first component and the second component based on the number of times the first component and the second component appear simultaneously in the differences.

[0030] In any of the embodiments disclosed herein, the similarity function is designed to determine the conditional probability that a missing attribute of a data record has a specific component, wherein the conditional probability is determined by: determining combinations of known attributes corresponding to a specific entity; determining all variations of the actual attribute among data records of a specific entity having combinations of known attributes; and assuming that the data record has a specific combination of known attributes, determining the conditional probability that the missing attribute has a specific component based on the variations of the missing attribute.

[0031] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include modules, steps, or executable instructions for representing a plurality of data records as a plurality of nodes in a graph; representing the similarity values ​​of at least a pair of data records as at least one edge between nodes in the graph corresponding to the at least pair of data records; and determining one or more clusters based on the graph.

[0032] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include modules, steps, or executable instructions for determining one or more clusters based on graphs using graph clustering techniques.

[0033] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include a module, step, or executable instruction for receiving a clustering instruction requiring one or more modules to associate two data records with the same cluster.

[0034] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include modules, steps, or executable instructions for associating at least one of a plurality of data records to one or more clusters using clustering techniques; and for independently adjusting parameters of the clustering technique for each of the one or more clusters based on data records in the one or more clusters.

[0035] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include a module, step, or executable instructions for determining the similarity value of at least one pair of data records by receiving similarity values ​​of at least one pair of data records from another computing device.

[0036] In any of the embodiments disclosed herein, the apparatus, method, or computer program product may include modules, steps, or executable instructions for receiving from a plurality of computing devices a plurality of sub-clusters independently identified at the plurality of computing devices; and performing a lookup operation on the plurality of sub-clusters to identify one or more clusters. Attached Figure Description

[0037] The various objects, features, and advantages of this disclosure will be more fully understood when considered in conjunction with the accompanying drawings, in which like reference numerals identify like elements. The drawings are for illustrative purposes only and are not intended to limit the invention; the scope of the invention is set forth in the following claims.

[0038] Figure 1 A diagram illustrating a location query system according to some embodiments is shown.

[0039] Figure 2 This illustrates the process of clustering data records according to some embodiments.

[0040] Figure 3 The process of learning a similarity function is illustrated according to some embodiments.

[0041] Figure 4 This illustrates the process of learning a similarity function based on the importance of features according to some embodiments.

[0042] Figure 5 This illustrates a set of data records belonging to the same cluster according to some embodiments.

[0043] Figure 6 This illustrates a mechanism for determining the conditional probability of a missing attribute according to certain embodiments.

[0044] Figures 7A-7B This illustrates the process of applying clustering instructions to a set of clusters according to some embodiments.

[0045] Figure 8 This illustrates a process for adding data records to a cluster according to some embodiments.

[0046] Figure 9 This illustrates a join operation that merges a pair of data records into a cluster, according to some embodiments. Detailed Implementation

[0047] In the following description, numerous specific details are set forth regarding the systems and methods of the disclosed subject matter, and the environment in which such systems and methods operate, etc., in order to provide a thorough understanding of the disclosed subject matter. However, it will be apparent to those skilled in the art that the disclosed subject matter can be practiced without these specific details, and that certain features well-known in the art have not been described in detail to avoid complexity of the disclosed subject matter. Furthermore, it will be understood that the examples provided below are exemplary, and it is anticipated that other systems and methods exist within the scope of the disclosed subject matter.

[0048] Data records can be used to describe any type of entity (e.g., physical objects, virtual objects, active objects, human objects) with associative information. Each data record can be associated with a data record identifier that uniquely identifies the corresponding data record. In some embodiments, a data record may include a set of attributes, each designed to convey information about a specific aspect of the entity. For example, a data record may include the attribute "Entity Type," and the attribute value may be "Restaurant." A data record may also include the attribute "Name," and the attribute value may be "Le Bernardin." A data record may also include the attribute "Number of Years in Operation," and the attribute value may be "42." In some embodiments, the set of attributes associated with a data record may depend on the entity type. For example, when a data record is associated with a company, the data record may include the attribute "Year of Company Registration."

[0049] Typically, a single entity can be referenced by a large number of data records, and these data records can provide different types of information about a particular entity. In order to unify the information from the data records, to summarize facts and opinions about an entity based on the data records, and / or to determine the relationships between data records that reference a particular entity, it is generally desirable to group the data records based on the entities or groups of entities referenced by the data records.

[0050] If each data record explicitly identifies the specific entity it refers to, then such grouping of data records can be a simple task. Unfortunately, data records often fail to include entity-unique attributes, such as restaurant addresses, that would explicitly indicate that a data record references a specific entity. Furthermore, even if data records do include unique attributes, the format of these unique attributes can vary depending on, for example, who generated the data record. Because there is no supporting data source control mechanism, such as a blogger's account, to use complete, formatted, and explicit attributes when indicating entities, data records indicating the same entity may only have partially similar (e.g., overlapping) attributes, which can limit the confidence that data records relate to the same entity.

[0051] For example, some web pages might refer to a restaurant named "The French Laundry." Some might misspell the restaurant's name, such as "The French Luandry," while others might refer to it as "French LaundryRestaurant." Therefore, it's expected that by analyzing similarities in the cited restaurant names and other information on the web pages, it could be inferred that these web pages refer to the same restaurant. On the other hand, when some web pages refer to "a Starbucks on Santa Monica Boulevard in Los Angeles," it's expected that the web pages might refer to different Starbucks locations, since there could be multiple Starbucks locations on Santa Monica Boulevard.

[0052] This application relates to apparatus, systems, and methods for grouping data records based on entities referenced by the data records. The disclosed grouping mechanisms may include determining pairwise similarities among a large number of data records and clustering subsets of the data records based on their pairwise similarities. In some cases, data records belonging to the same cluster may refer to similar entities. In other cases, data records belonging to the same cluster may refer to the same entity.

[0053] Clustering two or more data records can involve determining the similarity between the two or more data records and grouping them into a single cluster when they are sufficiently similar. Clustering data records can be effectively challenging for at least three reasons. First, clustering mechanisms use similarity functions to determine the similarity between two data records. However, the challenge lies in determining a robust similarity function that can appropriately determine the similarity between two data records across a wide variety of data records. For example, when two data records are associated with “The French Laundry” and “The French Luandry” respectively, it is difficult for the similarity function to understand that the two data records refer to the same entity because one of the names contains a typo. While a programmer can manually adjust the similarity function to account for all possible scenarios in which two data records might be similar, this can be an extremely challenging task given the number and ways in which variations can be expressed by the data records.

[0054] Second, clustering also involves determining how similar two data records should be to be clustered together. For example, when two data records are associated with "The French Laundry" and "The French Luandry" respectively, and the similarity value calculated by the similarity function is 0.9, the clustering agency may want to cluster the two data records. However, when two data records are associated with "The French Laundry" and "The Lanudry French" respectively, and the similarity value calculated by the similarity function is 0.5, the clustering agency may not want to cluster the two data records. Therefore, clustering involves the challenging task of determining when to cluster two data records with a given similarity.

[0055] Third, clustering may involve determining the similarity between each pair of data records in a dataset. Unfortunately, datasets can include billions of data records representing different entities, and computationally calculating the similarity between each pair of billions of data records is challenging. For example, calculating the similarity between billions (1x10⁻⁶) of data records is computationally difficult. 9 The similarity between records assumes execution of approximately 10. 18 The similarity operation. If each similarity operation takes approximately 1ms, then on 500 computers with 4 processing cores each, 10 18 The comparison would require approximately 15,000 years.

[0056] The disclosed grouping mechanism addresses these challenges of clustering mechanisms by: (1) automatically learning a similarity function for the clustering mechanism by analyzing data records in the dataset, (2) providing an augmentation mechanism to improve the clustering of data records, and (3) pruning a pair of data records for which similarity is to be calculated.

[0057] The disclosed grouping mechanism supports the use of custom, domain-specific rules for appropriate comparisons between various types of entities, the ability to distribute work to many networked computers and appropriately combine the distributed computation results, and strategies for deriving contextual probabilities for comparisons of entity references with attributes that do not fully or partially overlap. The disclosed grouping mechanism can also implement clustering instructions and prompts to force or encourage certain clustering results.

[0058] In some embodiments, the disclosed grouping authority may infer how attributes relate to a particular entity type, or determine the relative similarity of entities, based on domain-specific rules associated with that entity type. For example, when comparing toothpaste products, it is desirable for the data grouping authority to determine brand names that cross brand synonyms and alternative spellings, to determine the size of the product's generic unit (e.g., milliliters) when data records represent the size of various units of the product, and to determine that flavor is likely to have the greatest impact on determining the similarity between toothpaste products. On the other hand, when comparing doctors, it is desirable for the data grouping authority to determine that specialty, medical school, and years of practice are likely to have the greatest impact on determining the similarity between doctors, rather than flavor.

[0059] In some embodiments, the disclosed grouping mechanism can complete data grouping processing on billions of data records within a reasonable timeframe. For this purpose, the disclosed grouping mechanism can be deployed on a distributed computing system with numerous computing platforms. Furthermore, the disclosed grouping mechanism is designed to avoid unnecessary work, such as computationally expensive operations on data records that are unlikely to be associated with the same entity. For example, when two data records are associated with entities in different countries, the two data records are unlikely to refer to the same entity. Therefore, the disclosed grouping mechanism can decide not to compare these two data records.

[0060] Figure 1 A diagram illustrating a location query system according to some embodiments is shown. System 100 includes a host server 102, a communication network 104, and one or more client devices 106.

[0061] Host server 102 may include processor 108, storage device 110, index generation module 112, and query response module 114. Host server 102 and one or more client devices 106 may communicate via communication network 104. Although Figure 1 Host server 102 may be represented as a single server, but host server 102 may include more than one server. In some embodiments, host server 102 may be part of a cloud computing platform. A management system may be used to manage host server 102 on the cloud computing platform. In some embodiments, host server 102 may be located in a data center. In some embodiments, host server 102 may operate using operating system (OS) software. In some embodiments, the OS software is based on the Linux software kernel and runs specific applications such as monitoring tasks and provides protocol stacks on the server.

[0062] The processor 108 of the host server 102 may be implemented in hardware. The processor 108 may include an application-specific integrated circuit (ASIC), a programmable logic array (PLA), a digital signal processor (DSP), a field-programmable gate array (FPGA), or any other integrated circuit. The processor 108 may also include one or more of any other applicable processors, such as a monolithic system combining one or more CPUs, an application processor, and flash memory, or a reduced instruction set computing (RISC) processor. The storage device 110 coupled to the processor 108 may include a computer-readable medium, flash memory, a disk drive, an optical disk drive, a programmable read-only memory (PROM), a read-only memory (ROM), or any other type of device capable of temporarily holding data including, for example, bit values.

[0063] Candidate Reduction (CR) module 112 is configured to receive a pair of data records and determine whether the pair of data records is likely to belong to the same cluster. If the pair of data records is likely to belong to the same cluster, CR module 112 indicates that the pair of data records is eligible for further processing and provides the pair of data records to similarity calculation module 114, indicating that the pair of data records is a candidate for similarity calculation. If the pair of data records is unlikely to belong to the same cluster, CR module 112 may indicate that the pair of data records is not eligible for further processing and discard the pair of data records from further processing.

[0064] In some embodiments, the CR module 112 may operate in a batch mode. In batch mode, the CR module 112 may receive and process several pairs of data records before providing a subset of the processed data pairs to the similarity calculation module 114. In other embodiments, the CR module 112 may operate in a streaming mode. In streaming mode, the CR module 112 may process a pair of data records and, where applicable, provide that pair of data records to the similarity calculation module 114 before processing a new pair of data records.

[0065] The Similarity Calculation (SC) module 114 is configured to receive a pair of data records from the CR module 112 and determine the similarity between the pair of data records. The SC module 114 can determine the similarity between a pair of data records based on a similarity function. The SC module 114 can learn the similarity function using supervised learning techniques. The SC module 114 can also learn the similarity function using unsupervised learning techniques.

[0066] In some embodiments, the similarity function may at least partially take into account the similarity of attributes in the compared data records. For example, when a similarity function determines the similarity between two data records associated with the entity type "restaurant," the similarity function may at least partially take into account the similarity of attributes associated with data records such as "name," "location," "average price," "popularity," and / or "years of operation." In some cases, the similarity of attributes may also be weighted to determine the similarity value between a pair of data records. In other cases, the similarity of attributes may be weighted differently based on the importance of the attributes in the data records.

[0067] In some embodiments, when calculating the similarity between a pair of data records, the SC module 114 can automatically determine the importance of attributes in the data records. For example, when comparing data records corresponding to the entity type "person", the SC module 114 can associate high importance with the attribute "movement of interest".

[0068] In some cases, when two data records are associated with different entity types, SC module 114 can assign different levels of importance to the same attribute in the two different data records. For example, when comparing data records corresponding to the entity type "doctor," SC module 114 can assign high importance to the attribute "school" from which doctors receive their degrees. On the other hand, when comparing data records corresponding to the entity type "baseball player," SC module 114 can assign lower importance to the attribute "school" from which baseball players receive their degrees.

[0069] In some embodiments, the SC module 114 is configured to normalize values ​​associated with certain attributes. For example, when a data record is associated with the entity type "toothpaste" and the data record includes the attribute "volume" and has a value in units of "ounces," then the SC module 114 can normalize that value to have units of "milliliters." In this way, all data records associated with the entity type "toothpaste" have their volume expressed in milliliters, which facilitates comparison of data records associated with the entity type "toothpaste."

[0070] Cluster Computation (CC) module 116 is configured to receive similarity values ​​for a pair of data records and determine, based on the similarity values, whether to place one or more pairs of data records in the same cluster. In some embodiments, CC module 116 may use graph clustering techniques to cluster data records based on pairwise similarity values. In some cases, CC module 116 may use different clustering parameters for each temporary cluster based on the type of data records temporarily included in the cluster. In some cases, CC module 116 may receive clustering instructions requiring CC module 116 to associate two or more data records with the same cluster.

[0071] In some embodiments, once the CC module 116 provides a list of clusters, the CR module 112 may optionally be configured to revisit the data records and, based on the list of clusters, identify a pair of additional data records that are initially identified as not eligible for further processing. This operation can effectively expand the groups of data records for which cluster operations are performed.

[0072] The operations of CR module 112, SC module 114, and CC module 116 can be coordinated by coordination module 118. More specifically, coordination module 118 is configured to coordinate data transfers between CR module 112, SC module 114, and CC module 116. For example, coordination module 118 can cause CR module 112 to identify a pair of data records for which similarity should be calculated and provide that pair of data records to SC module 114. Coordination module 118 can then cause SC module 114 to calculate the similarity between the pair of data records received by SC module 114. Once SC module 114 has calculated the similarity, coordination module 118 can cause CC module 116 to identify clusters and their constituent data records based on the similarity.

[0073] In some embodiments, the coordination module 118 may be configured to distribute the processing of data records across multiple computing devices. For example, the coordination module 118 may be configured to distribute candidate reduction operations to CR modules in other computing devices, such as multiple data servers; the coordination module 118 may be configured to distribute similarity operation operations to SC modules in other computing devices, such as multiple data servers; and / or the coordination module 118 may be configured to distribute cluster operation operations to CC modules in other computing devices, such as multiple data servers. In some embodiments, the coordination module 118 may use one or more work allocation mechanisms to distribute operations and data across multiple computing devices, including, for example, sharding schemes, hashing schemes, queues, and / or MapReduce. In some embodiments, the functionality of the coordination module 118 itself may be distributed across multiple computing devices. For example, the coordination module 118 may include multiple modules equipped with at least a portion of the functionality associated with the coordination module 118. The multiple modules including the coordination module 118 may operate simultaneously and may take various forms depending on, for example, whether the coordination module 118 operates in batch mode, real-time mode, or any other operating mode.

[0074] In some embodiments, the coordination module 118 can cause the CR module 112, SC module 114, and CC module 116 to operate in a batch mode. In batch mode, the coordination module 118 can cause the CR module 112, SC module 114, and CC module 116 to group data records without considering newly received data records. Conversely, the coordination module 118 can cause the CR module 112, SC module 114, and CC module 116 to operate in a real-time mode. In real-time mode, the coordination module 118 can cause the CR module 112, SC module 114, and CC module 116 to consider newly received data records and group them together with existing data records. For example, the coordination module 118 can operate as a web server and coordinate the CR module 112, SC module 114, and CC module 116 to assign newly received data records to one of the clusters generated in a previous iteration of batch processing based on existing data records.

[0075] In some embodiments, the CR module 112, SC module 114, CC module 116, and coordination module 118 may be implemented in software stored in the storage device 110. The software stored in the storage device 110 may run on a processor 108 capable of executing computer instructions or computer code.

[0076] In some embodiments, the CR module 112, SC module 114, CC module 116, and coordination module 118 may be implemented in hardware using an ASIC, PLA, DSP, FPGA, or any other integrated circuit. In some embodiments, the CR module 112, SC module 114, CC module 116, and coordination module 118 may all be implemented on the same integrated circuit, such as an ASIC, PLA, DSP, or FPGA, thereby forming a chip system.

[0077] Communication network 104 may include the Internet, cellular networks, telephone networks, computer networks, packet-switched networks, line-switched networks, local area networks (LANs), wide area networks (WANs), global area networks, or any number of private networks currently referred to as intranets, and / or any other network or combination of networks capable of accommodating data communications. Such a network may be implemented using any number of hardware and software components, transmission media, and network protocols. Although Figure 1 Network 104 may be represented as a single network, but network 104 may include multiple interconnected networks listed above.

[0078] Client 106 may include any platform capable of computation and communication. Client 106 is configured with processing instructions and runs one or more processors that can be stored in memory. The processor also communicates with memory and interfaces for communication with other devices. The processor may be any suitable processor, such as a chip system combining a CPU, application processor, and flash memory. Client 106 may also provide various user interfaces such as a keyboard, touchscreen, trackball, touchpad, and / or mouse. In some embodiments, client 106 may also include speakers and a display device.

[0079] Client 106 may include a desktop computer, mobile computer, tablet computer, cellular device, netbook, laptop computer, server, and / or any other computing device with computing power or containing a processor and memory. Client 106 may communicate with host server 102 via communication network 104. The communication module on client 106 may be able to seamlessly migrate from one server to another without causing program failure or system crash.

[0080] In some embodiments, client 106 may include a user equipment connected to a cellular network. The user equipment communicates with one or more wireless access networks and with wired communication networks. The user equipment may be a cellular phone with voice communication capabilities. The user equipment may also be a smartphone providing services such as word processing, web browsing, gaming, e-book capabilities, an operating system, and a full keyboard. The user equipment may also be a tablet computer providing network access, with most services provided by smartphones. The user equipment operates using operating systems such as Symbian OS, iPhone OS, RIM's Blackberry, Windows Mobile, Linux, HP WebOS, and Android. The screen may be a touchscreen for inputting data into the mobile device, in which case the screen can be used instead of a full keyboard. The user equipment may also maintain global positioning coordinates, profile information, or other location information.

[0081] Figure 2 The process of clustering data records according to some embodiments is illustrated. Process 200 is exemplary and can be changed, for example, by adding, removing, or rearranging steps.

[0082] In step 202, CR module 112 is configured to receive one or more pairs of data records and determine whether the pair of data records is eligible for clustering. For example, CR module 112 is configured to determine the likelihood that one or more pairs of data records can be clustered into a cluster by analyzing a set of attributes included in one or more data records. When CR module 112 determines that one or more pairs of data records can be clustered, CR module 112 may indicate that one or more pairs of data records are eligible for further processing and provide one or more pairs of data records to SC module 114. When CR module 112 determines that one or more pairs of data records are unlikely to be clustered into a cluster, CR module 112 may indicate that one or more pairs of data records are not eligible for further processing and discard the pair of data records from further processing.

[0083] In some embodiments, CR module 112 can determine the eligibility of a pair of data records by bucketing them. Specifically, CR module 112 can be configured to bucket data records based on a predetermined set of attributes called bucket types, which are likely to be shared by related data records and unlikely to be shared by unrelated data records. For example, when two data records have the entity type "restaurant," they may be clustered together if their name attributes are similar. Therefore, CR module 112 can compare the name attributes of two data records to determine whether the two data records are eligible for a full similarity calculation. In some embodiments, the bucket types can be different for different entity types. For example, for the restaurant entity, CR module 112 can use a combination of name and postal code attributes as one bucket type, and a combination of phone number and approximate location (e.g., latitude / longitude coordinates) as a second bucket type. Despite this bucketing, CR module 112 can quickly identify a pair of data records that may refer to the same entity and are eligible for further processing, as well as a pair of data records that may not refer to the same entity and are not eligible (e.g., excluded) for further processing.

[0084] In some embodiments, CR module 112 can be configured to quickly compare buckets in data records using a hashing technique. For example, CR module 112 is configured to convert bucket values ​​into hash values ​​(e.g., a set of bits) and to determine that data records with more common bits in their hash tables are more likely to qualify for further processing. The hashing technique can include any hashing technique such as simhash or minhash that can estimate the similarity between two attributes.

[0085] In some embodiments, the CR module 112 can be configured to reduce redundant similarity operations. Specifically, the CR module 112 can be configured to delete a pair of redundant symmetric data records, thereby ensuring that the SC module 114 receives only a unique pair of data records. For example, when the CR module 112 receives two pairs of data records (A, B) and (B, A), the CR module 112 can be configured to discard one of the two pairs of data records from further processing. To this end, the CR module 112 can be configured to sort the order of data records within the pair of data records by, for example, a data record identifier, such that (B, A) is always represented as (A, B).

[0086] In step 204, SC module 114 may receive eligible pairs of data records and determine the similarity between the eligible pairs of data records. Similarity can be determined by analyzing the similarity of attributes associated with the data records. For example, when two data records are both associated with the entity type "Restaurant," and the names associated with the two data records are "Massa" and "Masa," the similarity between the two data records can be high. Conversely, when one data record in a pair is associated with the entity type "Restaurant," and the other data record is associated with the entity type "Airplane," the similarity between the two data records can be low.

[0087] SC module 114 can use a similarity function to determine the similarity value between a pair of data records. The similarity function may include multiple subfunctions that generate scores and other features for each attribute, as well as optional composite similarity scores. Subfunctions may include one or more operations for each attribute with custom logic for a specific entity type. In some embodiments, subfunctions may include simple string similarity operations such as the Levenshtein distance operation function. In some embodiments, subfunctions may include abbreviation-aware functions designed to compare the first letter of values ​​associated with an attribute. In some embodiments, subfunctions may include distance functions for calculating differences in longitude and latitude data. These subfunctions may be adjusted based on the attributes to which they are applied.

[0088] SC module 114 may store similarity values ​​for subsequent processing or provide similarity values ​​to CC module 116. Similarity values ​​may include data record identifiers of the two compared data records, at least one similarity score indicating the similarity between the two data records, and optionally additional attributes such as repulsion scores, similarity of each attribute in the data records, matching features, and one or more additional data that can provide context for further clustering decisions.

[0089] In some embodiments, the SC module 114 may use machine learning techniques to learn a similarity function. In particular, the SC module 114 may use supervised learning techniques to learn a similarity function. Figure 3 The process of learning a similarity function using supervised learning techniques according to some embodiments is illustrated. Process 300 is exemplary and can be changed, for example, by adding, removing, or rearranging steps.

[0090] In step 302, SC module 114 may receive a set of ground-truth clusters and data records associated with the ground-truth clusters. A ground-truth cluster may be associated with a single entity or a group of related entities, and may include at least one data record associated with a single entity or a group of related entities. Ground-truth clusters can be created manually. For example, ground-truth clusters can be generated using human annotators. For the purposes of this description, a ground-truth cluster may include the following data records, each with two attributes: [name; address]:

[0091] ·[McDonald's Restaurant; 123 Elm street]

[0092] [McDonalds; 123 Elm st]

[0093] ·[Mcdonalds;123 elm Street]

[0094] ·[Starbucks Coffee; 123 Elm]

[0095] • [Starbucks; 123 Elm St]

[0096] In some embodiments, values ​​in attributes may be converted to lowercase to reduce formatting bias. Therefore, a ground-based data cluster may include the following data records:

[0097] ·[mcdonald's restaurant; 123 elm street]

[0098] ·[mcdonalds;123 elm st]

[0099] ·[mcdonalds;123 elm street]

[0100] ·[starbucks coffee;123 elm]

[0101] • [Starbucks; 123 Elm St]

[0102] In some embodiments, values ​​in the transformation attributes can also be normalized to further reduce formatting bias. Normalization may include removing commas, dashes, hyphens, abbreviations, field-specific conventions, abbreviations, or any other formal or informal symbols associated with the indicator name or characteristic. Therefore, from the examples above, the ground fact cluster could include the following data records:

[0103] ·[mcdonalds restaurant;123 elm street]

[0104] ·[mcdonalds;123 elm street]

[0105] ·[mcdonalds;123 elm street]

[0106] ·[starbucks coffee;123 elm]

[0107] • [Starbucks; 123 Elm St]

[0108] In step 304, SC module 114 may retrieve attributes from data records in each ground-based data cluster and generate features from the retrieved attributes based on pairwise comparisons of the retrieved attributes. Features may indicate components (e.g., values) of attributes shared by a pair of data records in the ground-based data dataset. Therefore, when two previously unseen data records share one of the identified features, SC module 114 may determine that the two data records may have high similarity.

[0109] In some embodiments, a feature can be represented using two fields: [attribute, component]. The attribute field in the feature indicates the attributes from which the feature was generated, and the component field in the feature indicates the associated values ​​of the attributes from which the feature was generated. Continuing with the example provided above, a feature generated from a ground-based live cluster can be as follows:

[0110] Name: McDonald

[0111] • Name: Starbucks

[0112] Address: elm

[0113] Address: 123

[0114] Address: street

[0115] Physical distance in meters: 0 to 25

[0116] Distance features (“physical_distance_meter_range”) can be calculated by referencing a map and using addresses associated with data records to determine the distance between entities associated with a pair of data records.

[0117] In step 306, SC module 114 can be configured to create a similarity function that determines the similarity between data records based on the features identified in step 304. Specifically, SC module 114 can use supervised learning techniques to learn a model that maps the features of step 304 to similarity values. The ground-based data used for supervised learning, including the relationship between the features of step 304 and the similarity values, can be manually labeled. The mapping can be modeled using linear regression, kernel regression, nonparametric regression, random forest, graphical models, or any other statistical model that maps the features of step 304 to similarity values.

[0118] Once SC module 114 determines the similarity function as outlined in process 300, it can use the similarity function to determine similarity values ​​for a pair of inputs to a data record that was not previously seen. For example, SC module 114 can be configured to determine one or more input features based on a pair of inputs to a data record, as discussed in step 304, and use the similarity function to map the one or more input features to similarity values.

[0119] The disclosed clustering framework is designed to compare and cluster data records that reference different types of entities. For example, a data record could reference one or more entities such as restaurants, doctors, consumers packaging goods, smartphone apps, and video games. Furthermore, each entity type can have multilingual references or multiple logical clusters that conform to both different rules and different languages, such as points of interest in the United States and points of interest in China.

[0120] Each entity and each language may be subject to different rules regarding the importance of each attribute or group of attributes, and the importance of certain values ​​or portions of values ​​contained within those attributes. For example, the labels “company,” “enterprise,” “corporation,” and “this” are not very distinctive in business names, so that when comparing “3M” with “3M Enterprise” and “3M Corporation,” they should not be considered significant differences.

[0121] To explain the different importance of words and features, SC module 114 can be configured to determine the importance of features determined in step 304 and to weight features based on their associated importance when determining the similarity function in step 306. Figure 4According to some embodiments, a similarity function determination process is shown based on feature importance. Once features are generated in step 304, in step 402, the SC module 114 may determine the weights of the features based on the importance associated with the features. In step 404, the SC module 114 may optionally discard features that are not considered important. Then, in step 406, the SC module 114 may determine a similarity function based on the features and the importance associated with the features. In step 406, in some embodiments, the SC module 114 may use supervised learning techniques to map the features of step 304 and optionally the importance of the features of step 402 to similarity values. The ground-based data for supervised learning, including the relationships between the features of step 304, (optionally) the feature importance of step 402, and the corresponding similarity values, may be manually labeled. The mapping operation may be modeled using linear regression, kernel regression, nonparametric regression, random forest, graphical models, or any other statistical model that maps the features of step 304 and the feature importance of step 402 to similarity values.

[0122] In step 402, in some embodiments, the SC module 114 can determine the importance of components within a feature by receiving a quantification of the importance of various features (e.g., attribute components) labeled by a person. For example, the SC module 114 can receive a table as a configuration file or as a user instruction that associates features with importance. Referring to the example above, the SC module 114 can receive a configuration file indicating that "Name: Starbucks" is the most important feature for the cluster and "Address: Street" is the least important feature for the cluster.

[0123] In other embodiments, the SC module 114 can automatically determine the importance of features based on, for example, unsupervised learning techniques. The SC module 114 can receive data records that have minor differences among them. This allows the SC module 114 to explicitly group data records into the same cluster, while simultaneously identifying insignificant differences to group them into the same cluster. As the output of unsupervised training, the SC module 114 can provide, as a model, the frequency with which labels appear, how long labels can be excluded without changing the meaning of the entity (e.g., the cluster to which the entity belongs), and the frequency when labels are exchanged without changing their meaning.

[0124] More specifically, SC module 114 can traverse all data records for a specific entity type and identify data records that explicitly belong to the same cluster (e.g., the same entity). Once SC module 114 has determined that data records are associated with the same cluster, SC module 114 is configured to determine the differences in components between two data records belonging to the same cluster. Component differences between two data records may include components that appear only in one of the two data records. If a component appears only in one of the two data records belonging to the same cluster, it indicates that the component is not critical in associating the two data records with the same cluster. Therefore, a lower importance score can be assigned to that component. This process can be repeated across a large number of data records to generate stable importance scores for components. Any features that include low-importance components can also be associated with low importance scores.

[0125] For example, according to some embodiments, consider Figure 5 A set of data records is shown. Based on the high similarity of components in address attribute 506 and telephone number attribute 508, it is determined that two data records 502 and 504 are associated with the same cluster. Once the SC module 114 has determined that data records 502 and 504 are associated with the same cluster, the SC module 114 is configured to determine the differences in components in the attributes associated with a pair of data records 502 and 504 within the same cluster. Figure 5 In this example, the differences between components in the name attribute are "Saint", "St", and "Restaurant". The SC module 114 can maintain the number of times this difference occurs across a large set of data records corresponding to the same cluster. If a component is identified as a difference multiple times, the SC module 114 can determine that the component has low importance, and the features associated with that component also have low importance. In this example, the component "Restaurant" in the name attribute of data record 502 is assigned low importance for the name attribute because other data records 504 in the same cluster do not use the term "Restaurant" in their name attributes. In some embodiments, the SC module 114 can independently calculate a separate importance score for each attribute.

[0126] This unsupervised learning technique enables SC module 114 to automatically generate rules for calculating the importance scores of features, even when data records correspond to different entity types and use a new language. This approach significantly reduces the burden of manual configuration or the requirement for domain expertise. For example, when SC module 114 is configured to determine the importance scores of features associated with points of interest, it can automatically determine that, just as “LLC,” “Inc,” and “restaurant” are relatively unimportant in the US for company names, “SPA,” “SRL,” and “Riotorante” are also relatively unimportant in Italy. This information can be automatically collected without any domain-specific knowledge, such as that “SPA” is the form of a limited liability company in Italy, or linguistic knowledge, including that “Ristorante” means “Restaurant.” As another example, SC module 114 can learn that “Inc” is unimportant because there are examples of “3MInc” and “3M” with the same address and phone number. In this context, "Inc" appears unimportant and is sometimes excluded from the data, or in comparison of entities, or given a relatively lower importance score than components that are not unimportant (i.e., having relatively fewer examples as alternatives).

[0127] The interchangeability of components can also be important in determining the similarity between data records. For example, "ChipotleMexican Grill" should be considered more similar to "ChipotleRestaurant" than "Rubios Fresh Mexican Grill" because "Mexican Grill" is sometimes interchangeable with "Restaurant," while terms like "Chipotle" and "Rubios" are not. As another example, "company" can be interchanged with "corporation," "group," and "enterprise." SC module 114 can incorporate this interchangeability information into the similarity function. For example, when a component in the first data record is interchangeable with a component in the second data record, the first and second data records can be identified as similar even if the actual components in the first data record are different from those in the second data record.

[0128] In some embodiments, SC module 114 can determine the likelihood of interchangeability between two components, and in some cases, SC module 114 can do so using the methods described above for determining the importance of a component or feature. Reference Figure 5In the example shown, once the SC module 114 has determined that data records 502 and 504 are associated with the same cluster, the SC module 114 is configured to determine component differences in the attributes associated with that pair of data records 502 and 504. The SC module 114 can then determine each pair of components in the differences, and similarly count the number of times that pair of components appears in a large number of data records within the same cluster.

[0129] For example, the differences in the name attributes of data records 502 and 504 may include "Saint", "St", and "Restaurant", and each pair of components in the difference may include "Saint"-"St", "Saint"-"Restaurant", and "St"-"Restaurant". When SC module 114 performs this operation on a large number of data records corresponding to the same cluster, the "Saint"-"St" pair may appear many times, while "Saint"-"Restaurant" and "St"-"Restaurant" will not appear many times. As another example, SC module 114 can know that "Company" and "Co-op" and "Group" and "Enterprise" are interchangeable because there may be many data records with the same address and telephone number called "3M Company", "3M Group", and "3M Enterprise", where "Co-op" and "Group" and "Enterprise" are interchangeable without any other data differences. Therefore, SC module 114 can determine how likely it is that a pair of components can be interchanged based on the number of occurrences of pairs in the difference.

[0130] In some embodiments, the probability of interchangeability between a pair of components can be represented as an interchangeability score. The interchangeability score can functionally relate to the number of occurrences of component pairs in the differences (e.g., linear or non-linear correlation). Once the SC module 114 learns of the function or rule that maps a pair of components to interchangeability scores, the SC module 114 can use the function or rule to determine the similarity value of a pair of data records having those components.

[0131] In some embodiments, the SC module 114 can independently learn the interchangeable pairs (or the function used to determine the interchangeability score) for each attribute. More specifically, the SC module 114 can learn and maintain a separate mechanism for calculating the interchangeability score for each attribute. This can be important because the interchangeable pairs may differ depending on the attribute. For example, in address attribute 506, “Street” and “St” are interchangeable, but not “St” and “Saint”.

[0132] In some embodiments, SC module 114 can be configured to use supervised learning techniques to learn the importance of components and the interchangeability of a pair of components. For example, by performing pairwise comparisons using, for example, linear regression, kernel regression, nonparametric regression, random forest, or graphical models, SC module 114 can learn the importance of components and the interchangeability of a pair of components.

[0133] In some embodiments, SC module 114 is designed to allow missing attributes when determining the similarity between a pair of data records. Therefore, missing attribute schemes may include schemes where components of the attribute (e.g., values) are missing from the data record, or the attribute itself is missing from the data record.

[0134] The problem of missing attributes is easily solved when the remaining attributes in a data record can uniquely identify the entity of the data record. For example, there is only one "Eiffel Tower" in the world. Even if the data record does not include an address attribute (i.e., the component associated with the address attribute), the component "Eiffel Tower" of the name attribute can uniquely identify the entity of the data record. Unfortunately, not every attribute can uniquely identify an entity. For example, when two data records include "McDonald's" as their name attribute, SC module 114 cannot determine that the two data records refer to the same McDonald's restaurant unless the data records also provide the address associated with the restaurant being referred to.

[0135] To address this issue, SC module 114 can be configured to maintain a conditional probability table indicating the likelihood of a missing attribute being associated with a specific component. Figure 6 A mechanism for determining the conditional probability of a missing attribute, according to certain embodiments, is illustrated. Two data records 602 and 604 are associated with McDonald's restaurants. The first data record 602 has all attributes, but the second data record 604 lacks the address attribute 606. Since the remaining attributes cannot uniquely identify the McDonald's restaurant for the second data record, the SC module 114 is configured to determine the probability that the two records refer to the same restaurant by inferring possible components of the address attribute 606 for the second data record 604. More specifically, the SC module 114 is configured to determine the probability that the missing attribute is a specific component.

[0136] In order to determine the probability that a missing (e.g., blank) attribute is a particular component, in some embodiments, the SC module 114 may be configured to take a set of attributes that can identify an entity and group them with one or more removed attributes.

[0137] More specifically, SC module 114 can identify different combinations of known attributes corresponding to a specific entity / cluster (e.g., name attribute and telephone number attribute, name attribute and address attribute, name attribute and city attribute, name attribute, city attribute, and street address attribute, name attribute and postal code attribute, address attribute and telephone number attribute). Then, for each combination, SC module 114 can make a list of all variations of the missing attribute from a set of known attributes associated with all records under consideration. For example, if the combination of attributes includes name attribute and telephone number attribute, then SC module 114 can make a list of address variations with name attribute and telephone number attribute.

[0138] Subsequently, assuming that the data records have a specific combination of known attributes, the SC module 114 can calculate the conditional probability that the missing attribute of the data record is a specific component. Assuming the total number of data records with a specific combination of known attributes, the SC module 114 can calculate the conditional probability by, for example, dividing several different data records, having a specific combination of known attributes, and having a missing attribute as a specific component.

[0139] For example, since there are no data records associated with "Eiffel Tower" having different address attributes when given "Eiffel Tower" in "Paris", SC module 114 can infer that the missing street address attribute of a record in the Eiffel Tower records can be determined with a probability of 1 given only the city attribute. As another example, see [reference]. Figure 5 Because there are 560 individual McDonald's entities with the city attribute "Los Angeles," data record 604 has a 1 / 560 chance of being the same "McDonald's" restaurant as data record 602, even without a street address attribute. SC module 114 can then use this probability to create an attribute matching score between the missing address attribute of the second data record 604 and the existing address attribute of the first data record 602. Therefore, missing attributes do not necessarily cause differences between data records unless there is ambiguity due to the missing attribute.

[0140] In step 206, one of the SC modules in SC module 114 calculates the pairwise similarity between a pair of eligible data records. CC module 116 can receive a pair of eligible data records from SC module 114, and / or the similarity between a pair of eligible data records. Subsequently, CC module 116 can cluster the received data records based on the similarity.

[0141] In some embodiments, CC module 116 may use graph clustering techniques to cluster data records. For example, each data record may be a node in a graph. An edge connecting two nodes may indicate that two data records corresponding to the two nodes are eligible for similarity operations, and the value associated with the edge may indicate the affinity (e.g., similarity) between the two data records corresponding to the nodes. CC module 116 may use graph clustering techniques such as graph cutting to segment clusters in the graph. CC module 116 may control several clusters by controlling the clustering coefficients of the graph clustering technique.

[0142] In some embodiments, CC module 116 may load a pair of data records into the graph processing system, among other things, allowing one or more networked computers to store and process groups and edges representing the similarity and other attributes of connected components.

[0143] In some embodiments, CC module 116 can modify the edges in the graph to accelerate the clustering of data records. This technique is particularly useful when CC module 116 uses traversable graphs, which include undirected graphs that can be traversed exactly once by crossing each edge of the graph. CC module 116 can identify one or more weak edges (e.g., low similarity or affinity between the joined nodes) that combine two or more groups of highly self-similar data records. Such weak edges are likely to combine other well-defined clusters. Therefore, in some cases, CC module 116 may choose to remove one or more weak edges from the traversable graph. In other cases, CC module 116 may request SC module 114 to recalculate the affinity (e.g., similarity) of the weak edges to confirm that the edge does indeed form a weak connection of data records in another well-formed cluster. CC module 116 can provide this mechanism in conjunction with generalized graph architectures / databases such as neo4j, jiraph, and titan.

[0144] In some embodiments, the CC module 116 may receive clustering instructions from a user, requesting the CC module 116 to associate two or more data records to the same cluster. The CC module 116 may be configured to store and apply clustering instructions based on explicit instructions to rearrange data records in the cluster. For this purpose, the CC module 116 may provide the user with an interface to group data records into clusters according to user preferences, so that some data records that were not previously considered to belong to the same cluster can be grouped together, and data records that were previously considered to belong to the same cluster can be separated into other clusters or new clusters.

[0145] Figures 7A-7B This illustrates the process of applying clustering instructions to a set of clusters according to some embodiments. Figure 7AThis includes five data records grouped into two clusters 702 and 704, where each cluster is identified using a cluster identifier such as a Universally Unique Identifier (UUID). It should be noted that the CC module 116 incorrectly associates data record C with the first cluster 702, and the CC module 116 incorrectly associates data record E with the second cluster 704. The user can correct these errors by issuing clustering instructions 706, such as in... Figure 7B As shown in the diagram, the cluster command in clustering instruction 706, “cluster: {"uuid1": [["uuid1", "A", "B"], ["uuid2", "E"]], "uuid2": [["uuid1", "C"], ["uuid2", "D"]...]}”, indicates that there should be two clusters, uuid1 and uuid2; uuid1 should include three data records: A, B, and E; and uuid2 should include two data records: C and D. Therefore, when CC module 116 receives clustering instruction 706, CC module 116 can reorganize the clusters and / or the data records in the clusters according to clustering instruction 706.

[0146] In some embodiments, clustering instructions can be used via CR module 112 during the candidate simplification process. For example, when clustering instruction 706 indicates that two or more data records belong to the same cluster, CR module 112 can remove two data records from the similarity calculation candidates, or force SC module 114 to associate two or more data records with high similarity. Similarly, when clustering instruction 706 indicates that two or more data records should belong to separate clusters, CR module 112 can remove two data records from the similarity calculation candidates, or force SC module 114 to associate two or more data records with low similarity.

[0147] In some embodiments, clustering instructions can be maintained by a coordination module 118. The coordination module 118 enables the CR module 112, SC module 114, or CC module 116 to process the data records identified in the clustering instructions according to the commands in the clustering instructions.

[0148] In some embodiments, CC module 116 is configured to improve previously generated clusters. Specifically, when the CC module implements a method where data records in a single cluster can be better represented using two or more clusters, CC module 116 can divide the cluster into sub-clusters. CC module 116 can make this determination by considering various clustering combinations on data records within the same cluster and by determining clustering combinations that reduce the cost function. CC module 116 can also consider the overall similarity of the cluster forms and the relationships between data records in the clusters. Once CC module 116 determines that data records should be divided into multiple clusters, CC module 116 can rearrange the data records according to this determination.

[0149] In some embodiments, CC module 116 can rearrange data records in a cluster by considering clustering instructions. For example, CC module 116 can first consider clustering instructions to aggregate data records identified in the clustering instructions, and CC module 116 can add new data records to clusters where no clustering instructions exist. As another example, CC module 118 can create revised cluster records by first aggregating data records identified in clustering instructions, and then, for example, repeatedly adding the remaining data records in the complete group in a random order, where the complete group refers to all data records considered in the cluster. The complete group may include data records grouped by CR module 112 using, for example, a cascading process. Practically speaking, the complete group includes sufficiently similar data records that should be considered together or in a context. In determining whether to add a data record to the cluster, CC module 118 can decide between adding the data record to an existing cluster and creating a new cluster of data records. After several iterations of this method, CC module 118 can converge to a cluster of locally optimal groups when a cost function is applied, for example, having a desired relationship between decisions that penalize records that should not be grouped but are grouped and decisions that should be grouped but are not grouped.

[0150] In some embodiments, the CC module 116 can cluster data records based on the context within the cluster. For example, in a legal practice or a doctor's office, many different practitioners exist with the same address and phone number. On the other hand, it is unlikely that two similarly named restaurants exist as separate entities with the same address and phone number.

[0151] For this purpose, CC module 116 can be configured to adjust one or more parameters of the clustering technique used to cluster the data records (e.g., the minimum similarity value between two data records in the same cluster) depending on the types of data records in the cluster. For example, CC module 116 can increase the similarity threshold when the data records in the cluster mainly consist of professional offices, and decrease the similarity threshold when the data records in the cluster mainly consist of restaurants. As a further example, CC module 116 can dynamically adjust one or more parameters to increase the repulsion (e.g., reduce the probability of clustering) between different clusters (or data records in the cluster) that are known to share important attributes (or features). For example, CC module 116 is configured to adjust the similarity threshold to increase the repulsion between hotels, bars, and restaurants with the same address and phone number.

[0152] One aspect of the disclosed grouping mechanism is the ability to calculate, even among pairs of additional data records after grouping. Specifically, SC module 114 can be configured to calculate the similarity between pairs of data records that have already been grouped into the same cluster in step 206, but were not compared in step 204 because CR module 112 identified the data pair as ineligible for similarity calculation in step 202. Calculating the similarity between these data record pairs can be useful because the grouping of these data record pairs into the same cluster relies on the coarse transitive properties of similarity, which can be a weak indicator of grouping.

[0153] For example, suppose data record A is considered similar to data record B, and data record B is considered similar to data record C. After the clustering operation in step 206, data records A, B, and C are members of the same cluster, but the similarity between A and C is unknown because AB and BC are compared independently, and there is no need to establish a comparison AC until records A and C have been grouped into the same cluster. Therefore, in step 208, CR module 112 can identify these data record pairs for additional comparison and provide the identified data record pairs to SC module 114 so that SC module 114 can perform additional similarity operations.

[0154] In some embodiments, the CC module 116 can identify pairs of data records for additional similarity calculations by identifying pairs of records that are in the same cluster but do not have a similarity score associated with them. In other embodiments, where the CC module 116 uses a graph to represent data records, the CC module 116 can identify pairs of data records by identifying data records in the same cluster that do not have an edge between nodes representing data records.

[0155] In some embodiments, the CC module 116 can be configured to add new data records to an existing cluster. The CC module 116 can add such new data records to the cluster in real time.

[0156] Figure 8 The diagram illustrates a process for adding data records to a cluster according to some embodiments. Process 800 is exemplary and can be modified, for example, by adding, removing, or rearranging steps. Coordination module 118 can be configured to coordinate this process substantially in real time.

[0157] In step 802, the coordination module 118 may receive a data record of a cluster to be added to an existing cluster. This data record may be referred to as the target record. The coordination module 118 may then determine one or more candidate clusters based on one or more attributes of the target record. In some cases, the coordination module 118 may use one or more attributes of the target record to search an indexing system or database to determine one or more candidate clusters for the target record. For example, when the target record is associated with the street address attribute “123 Yushu Street”, the coordination module 118 may determine that the target record can be associated with, for example, the street address attribute “123 Yushu Street”. Figure 5 It is associated with the same cluster as Saint Amour Restaurant.

[0158] In step 804, the coordination module 118 enables the SC module 114 to calculate a similarity score between the target record and one or more data records from each candidate cluster. The coordination module 118 can select one or more records from each candidate cluster based on a number of edges associated with the one or more data records. For example, when the node corresponding to a data record has many edges coupled to other nodes in the same cluster, it can indicate that the data record can represent a particular cluster. Therefore, in order to compare with the target record, the coordination module 118 can select data records whose nodes have many edges to other nodes in the same cluster.

[0159] In step 806, once the SC module 114 calculates the similarity score between the target record and one or more data records from each candidate cluster, the CC module 116 can use the similarity score to determine the cluster to which the target record can be added. For example, the CC module 116 can select the candidate cluster with which the target record has the highest similarity score. In some cases, because even the highest similarity score is not high enough (e.g., the similarity score is below a predetermined threshold), the CC module 116 can indicate that the target record does not belong to any of the candidate clusters.

[0160] In some embodiments, the disclosed grouping mechanism can be executed in a distributed manner across multiple computing devices, such as multiple servers in a data center. Operations across multiple computing devices can be coordinated using coordination module 118. In some embodiments, once CR module 112 provides candidate pairs of data records on which similarity scores are computed, coordination module 118 can partition the candidate pairs of data records into multiple grouped candidate pairs and provide one set of candidate pairs to one of the multiple computing devices. In some embodiments, coordination module 118 can partition the candidate pairs into groups using MapReduce technology or simply by creating n files of m candidate pairs, where n is the number of computing devices and m is the total number of candidate pairs divided by n.

[0161] In some embodiments, the coordination module 118 may similarly distribute the computation of the candidate data record pair selection step (e.g., step 202) across multiple computing devices. In other embodiments, the coordination module 118 may similarly distribute the clustering step (e.g., step 206) across multiple computing devices.

[0162] As discussed above, a similarity value between two data records may include data record identifiers for both data records, at least one similarity score representing the similarity between the two data records, and optional additional attributes. When some grouping operations, such as similarity operations, are performed on multiple computing devices, the two data records represent disjoint sets, allowing clustered data records to exist on separate network computers. To group data records into clusters that can represent the same entity, it is desirable to collect data records from multiple computing devices and create merged groups of records or clusters.

[0163] In some embodiments, the coordination module 118 may use a join operation to accomplish this grouping. In particular, the join operation may be performed on pairs of data records on one or more computers having shared or synchronized memory. For example, the coordination module 118 may load pairs of data records into the memory of a single computing device, perform a join operation to unite all suitable data records, and provide a cluster represented by the input pairs of data records.

[0164] Figure 9 A lookup operation is illustrated to merge pairs of data records into a cluster, according to some embodiments. Coordination module 118 can receive multiple pairs of data records, as shown in column 902, and perform a lookup operation to find a cluster represented by the multiple pairs of data records, as shown in column 904.

[0165] In some embodiments, a coordination module 118 in each of a plurality of computing devices can perform a join-and-query operation on pairs of data records maintained by the associated computing device. This allows each coordination module 118 to identify clusters generated by the associated computing device. The coordination module 118 can then provide the identified clusters to a central coordination module (e.g., a coordination module that distributes grouping operations across the plurality of computing devices), and the central coordination module can perform a join-and-query operation on the received clusters to determine a set of clusters jointly generated by the plurality of computing devices.

[0166] In some embodiments, the disclosed grouping mechanism may use previously generated clusters to improve subsequent grouping operations. As an example, CR module 112 may maintain a table indicating how many data records in a particular cluster have specific attributes or attribute markers, as determined by previous grouping operations. CR module 112 may use this table to improve bucketing operations by identifying data record pairs eligible for use in SC module 114. More specifically, CR module 112 may use this table to determine the ratio of good comparisons (records in the same cluster) to poor comparisons (records not in the same cluster) based on certain bucketing criteria. For example, CR module 112 may determine how many record data from the same bucket (e.g., data records with specific attributes or a common set of attributes) end up in the same cluster. If (1) the ratio of the number of data records ending up in the same cluster to (2) the number of data records in the same bucket is low, CR module 112 may determine that the existing bucketing criteria are inefficient.

[0167] Subsequently, CR module 112 can adjust the bucketing criteria to avoid undesirable comparisons while allowing as few good comparisons as possible to be skipped. This process allows CR module 112 to create sophisticated bucketing strategies, such as identifying attributes or groups of attributes that provide a good matching ratio to the overall comparisons. Through this process, CR module 112 can also subdivide attributes, such as generating two-letter or three-letter groups from name or address attributes, to identify a set of data records that should be included for further comparisons. Furthermore, CR module 112 can also help adjust hashing methods such as simhash or minhash by informing which elements are considered (or excluded) for hashing.

[0168] In some embodiments, the coordination module 118 may be configured to calculate one or more automated scores to measure the performance of various components of the grouping mechanism. These automated scores are generated from measured aspects and by scoring the ground-based cluster. Measured aspects may include the number of good comparisons, the number of bad comparisons, the average time of comparisons, and / or the map diameter. Ground-based scoring aspects include the number of overfolds (inappropriately grouped data records), the number of underfolds (data records that should have been grouped but were not), and / or composite functions that combine different scores to optimize preferences such as "underfolds are better than overfolds".

[0169] As an example, coordination module 118 may receive a set of data records, along with a ground-based cluster associated with each data record. Coordination module 118 can then run the data records via CR module 112, SC module 114, and CC module 116, comparing the calculated cluster with the initial annotated cluster. Coordination module 118 can then calculate a score for the calculated cluster, applying an appropriate score penalty for each deviation.

[0170] Other embodiments are within the scope and spirit of the disclosed subject matter.

[0171] The subject matter described herein, including the structural components disclosed herein and their equivalents, or combinations thereof, can be implemented in digital electronic circuits, or in computer software, firmware, or hardware. The subject matter described herein can be implemented as one or more computer program products to execute, or thereby control, the operation of a data processing device (e.g., a programmable processor, a computer, or multiple computers), such one or more computer program products being tangibly embodied in an information carrier (e.g., in a machine-readable storage device) or embodied in a propagating signal. A computer program (also referred to as a program, software, software application, or code) can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file. A program can be stored in a portion of a file that holds other programs or data, in a single file dedicated to the program in question, or in multiple co-located files (e.g., a file storing one or more modules, subroutines, or code portions). Computer programs can be deployed to run on one or more computers at one site or distributed across multiple sites, and interconnected via a communication network.

[0172] The processes and logic flows described in this specification, including the method steps of the subject matter described herein, can be implemented by one or more programmable processors executing one or more computer programs to obtain the functionality of the subject matter described herein by manipulating input data and producing output. Similarly, the processes and logic flows can be executed by dedicated logic circuits such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits), and the devices of the subject matter described herein can be implemented as dedicated logic circuits.

[0173] Processors suitable for executing computer programs include, for example, both general-purpose and special-purpose microprocessors, and any one or more processors of any type of digital computer. Generally, a processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or the computer is operatively coupled to receive data from or transfer data to one or more mass storage devices, or both. Information carriers suitable for implementing computer program instructions and data include, for example, all forms of non-volatile memory including semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices); magnetic disks (e.g., internal hard disks or removable disks); magneto-optical disks; and optical disks (e.g., CDs and DVDs). Processors and memory may be complemented by or incorporated into dedicated logic circuitry.

[0174] To provide interaction with the user, the subjects described herein can be implemented on a display device having, for example, a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user, and on a computer through which the user can provide input to the computer via a keyboard and pointing device (e.g., a mouse or trackball). Other types of devices can also be used to provide interaction with the user. For example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form including sound, speech, or tactile input.

[0175] One or more modules can be used to implement the techniques described herein. As used herein, the term "module" refers to computing software, firmware, hardware, and / or various combinations thereof. However, at least a module should not be construed as software not implemented in hardware, firmware, or recorded on a non-transitory processor-readable and recordable storage medium. In fact, a "module" will be construed as including at least some physical, non-transitory hardware such as a processor or part of a computer. Two different modules may share the same physical hardware (e.g., two different modules may use the same processor and network interface). Modules described herein can be combined, integrated, separated, and / or replicated to support a variety of applications. Furthermore, functions described herein as performing at a particular module may be performed at one or more other modules, and / or by one or more other means that replace or attach to the functions performing at a particular module. Further, modules may be implemented across multiple devices and / or as other components that are local or remote to each other. Additionally, modules may be moved from one device and added to another device, and / or may be included in both devices.

[0176] The subjects described herein can be implemented in computing systems that include backend components (e.g., data servers), middleware components (e.g., application servers), or frontend components (e.g., client computers with graphical user interfaces or web browsers through which users can interact with implementations of the subjects described herein), or any combination of such backend, middleware, and frontend components. The components of the system can be interconnected via digital data communication through any form or medium, such as a communication network. Examples of communication networks include local area networks (“LANs”) and wide area networks (“WANs”) such as the Internet.

[0177] The term “a” or “an” as used herein can be defined as one or more. Furthermore, the use of introductory phrases such as “at least one” and “one or more” should not be construed as implying, through the indefinite article “a” or “an,” that the introduction of another element restricts the corresponding element to only one such element. The same applies to the use of the definite article.

[0178] It should be understood that the disclosed subject matter is not limited to the details of the construction and the arrangement of components as set forth in the following description or shown in the accompanying drawings. The disclosed subject matter can be other embodiments and can be practiced and performed in various ways. Furthermore, it should be understood that the syntax and terminology used herein are for descriptive purposes and should not be considered limiting.

[0179] Therefore, those skilled in the art will understand that the concepts upon which this disclosure is based can be readily used as the basis for other structures, methods, and systems that serve to achieve some of the purposes of the disclosed subject matter. Therefore, it is important that the claims include such equivalent constructions without departing from the spirit and scope of the disclosed subject matter.

[0180] While the subject matter of this disclosure has been described and illustrated in the foregoing exemplary embodiments, it is to be understood that this disclosure has been implemented by way of example only, and many variations may be made in the details of implementations of the disclosed subject matter without departing from the spirit and scope of the disclosed subject matter.

Claims

1. A device for grouping data records, comprising: A processor configured to fetch instructions stored in one or more memories and execute the instructions for: Receive multiple data records from multiple data sources, each of which includes multiple attributes describing an entity; Identify a pair of data records from the received data records, and determine whether the pair of data records is eligible for determination based on a similarity value of a predetermined set of attributes shared by the plurality of attributes of the pair of data records; When the eligibility determination step determines that the pair of data records is not eligible, the pair of data records is excluded from the similarity value determination. When the qualification determination step determines that the pair of data records is qualified, the pair of data records is processed by similarity value determination, wherein the similarity value determination includes determining the similarity value of the pair of data records by comparing multiple attributes of one data record with multiple attributes of another data record in the pair of data records. Provide one or more clusters, wherein each of the clusters is configured to store data records of unique entities, and to associate the pairs of data records with one of the clusters based on the similarity value of the pairs of data records, wherein the clusters associated with the pairs of data records are configured to store data records of the entities described by the plurality of attributes; After associating the pair of data records with the cluster, the plurality of attributes in the pair of data records are compared with the attributes of other data records in the cluster, and one or more attribute differences are determined. Based on the determined attribute differences, at least one importance score of one or more first attributes among the plurality of attributes is determined, wherein the determined importance score is determined by the similarity value as a coefficient used to adjust the weight of the first attribute used to determine the similarity value; as well as Identify another pair of data records consisting of data records in the cluster that have not been determined by similarity values, and process the other pair of data records by determining additional similarity values; The additional similarity value determination includes determining the similarity value of the other pair of data records by comparing multiple attributes of one data record in the other pair with multiple attributes of the other data record in the other pair. The other pair of data records is associated with the cluster based on the similarity value of the other pair of data records, wherein the cluster is configured to store data records of the entity described by multiple attributes in the pair of data records and multiple attributes in the other pair of data records.

2. The device of claim 1, wherein the processor is configured to adjust the set of predetermined attributes based on the association between data records and the cluster from previous iterations.

3. The device of claim 1, wherein the processor is configured to determine the similarity value based on a similarity function learned from training data records.

4. The device of claim 3, wherein the similarity function is used to determine the importance score of a component associated with the first attribute, wherein the similarity function is learned by: Determine the differences between components associated with the first attribute of the training data records, wherein the training data records are known to belong to the same cluster; and The importance of a component is determined based on the number of times it appears in the differences.

5. The device of claim 4, wherein the similarity function is used to infer the probability of interchangeably swapping a first component and a second component in a specific attribute of a data record, wherein the similarity function is learned by: Determine the differences between components associated with the specific attribute of the training data record, wherein the training data records are known to belong to the same cluster, and The likelihood of swapping the first component and the second component is determined based on the number of times the first component and the second component appear simultaneously in the difference.

6. The device of claim 4, wherein the similarity function is used to determine the conditional probability that a missing attribute of a data record has a specific component, wherein the conditional probability is determined by: Determine the combination of known attributes corresponding to a specific entity; Determine all variations of the missing attribute among data records of a specific entity having combinations of the known attributes; and Assuming the data record has a specific combination of known attributes, the conditional probability of the missing attribute having the specific component is determined based on the change in the missing attribute.

7. The device of claim 1, wherein the processor is configured to: Represent multiple data records as multiple nodes in a graph; The similarity value of the pair of data records is represented as at least one edge between nodes corresponding to the pair of data records in the graph; and Based on the graph, one or more clusters are provided.

8. The device of claim 7, wherein the processor is configured to determine one or more clusters provided based on the graph using graph clustering techniques.

9. The apparatus of claim 1, wherein the processor is configured to receive a clustering instruction instructing the processor to associate the pair of data records with the cluster of data records of the entity described by the plurality of attributes of the pair of data records.

10. The device of claim 1, wherein the processor is configured to Clustering techniques are used to associate at least one of the plurality of data records with the cluster configured to store data records of the entity described by the plurality of attributes of the data records; and The parameters of the clustering technique are adjusted based on the data records in the cluster of the entity's data records, which are configured to be described by the plurality of attributes of the data records.

11. The apparatus of claim 1, wherein the processor is configured to determine the similarity value of the pair of data records by receiving the similarity value of the pair of data records from another computing device.

12. The device of claim 1, wherein the processor is configured to: Processing multiple sub-clusters independently identified at said multiple computing devices, received from said multiple computing devices; and Perform a lookup operation on the plurality of sub-clusters to identify the cluster configured to store data records of the entity described by the plurality of attributes of the pair of data records.

13. A method for grouping data records, comprising: The processor receives multiple data records from multiple data sources, each of which includes multiple attributes describing an entity; The processor identifies a pair of data records from the received data records and determines whether the pair of data records is eligible for determination based on a similarity value of a predetermined set of attributes shared by the plurality of attributes of the pair of data records. When the eligibility determination step determines that the pair of data records is not eligible, the processor excludes the pair of data records from the similarity value determination. When the qualification step determines that the pair of data records is qualified, the processor processes the pair of data records by determining a similarity value, wherein the similarity value determination includes determining the similarity value of the pair of data records by comparing multiple attributes of one data record with multiple attributes of another data record in the pair of data records. The processor provides one or more clusters, each of which is configured to store data records of unique entities, and associates a pair of data records with one of the clusters based on the similarity value of the pair of data records, wherein the cluster associated with the pair of data records is configured to store data records of the entities described by the plurality of attributes; After associating the pair of data records with the cluster, the processor compares the plurality of attributes in the pair of data records with the attributes of other data records in the cluster, and the processor determines one or more attribute differences. The processor determines at least one importance score of one or more first attributes among the plurality of attributes based on the determined attribute differences, wherein the determined importance score is determined by the similarity value as a coefficient used to adjust the weight of the first attribute used to determine the similarity value; as well as The processor identifies another pair of data records consisting of data records in the cluster that have not been determined by similarity values, and the processor processes the other pair of data records by determining additional similarity values. The additional similarity value determination includes determining the similarity value of the other pair of data records by comparing multiple attributes of one data record in the other pair with multiple attributes of the other data record in the other pair. The other pair of data records is associated with the cluster based on the similarity value of the other pair of data records, wherein the cluster is configured to store data records of the entity described by multiple attributes in the pair of data records and multiple attributes in the other pair of data records.

14. The method of claim 13, further comprising adjusting the set of predetermined attributes by the processor based on the association between data records from previous iterations and the cluster.

15. The method of claim 13, further comprising determining the similarity value by the processor based on a similarity function learned from training data records.

16. The method of claim 15, wherein the similarity function is used to determine the importance score of the component associated with the first attribute.

17. The method of claim 15, wherein the similarity function is used to infer the probability of interchangeably swapping a first component with a second component in a particular attribute of a data record.

18. A computer-readable storage medium storing a computer program product thereon, the computer program product including executable instructions that can be executed by a processor to: Receive multiple data records from multiple data sources, each of which includes multiple attributes describing an entity; Identify a pair of data records from the received data records, and determine whether the pair of data records is eligible for determination based on a similarity value of a predetermined set of attributes shared by the plurality of attributes of the pair of data records; When the eligibility determination step determines that the pair of data records is not eligible, the pair of data records is excluded from the similarity value determination. When the qualification determination step determines that the pair of data records is qualified, the pair of data records is processed by similarity value determination, wherein the similarity value determination includes determining the similarity value of the pair of data records by comparing multiple attributes of one data record with multiple attributes of another data record in the pair of data records. Provide one or more clusters, wherein each of the clusters is configured to store data records of unique entities, and to associate the pairs of data records with one of the clusters based on the similarity value of the pairs of data records, wherein the clusters associated with the pairs of data records are configured to store data records of the entities described by the plurality of attributes; After associating the pair of data records with the cluster, the plurality of attributes in the pair of data records are compared with the attributes of other data records in the cluster, and one or more attribute differences are determined. Based on the determined attribute differences, at least one importance score of one or more first attributes among the plurality of attributes is determined, wherein the determined importance score is determined by the similarity value as a coefficient used to adjust the weight of the first attribute used to determine the similarity value; as well as Identify another pair of data records consisting of data records in the cluster that have not been determined by similarity values, and process the other pair of data records by determining additional similarity values; The additional similarity value determination includes determining the similarity value of the other pair of data records by comparing multiple attributes of one data record in the other pair with multiple attributes of the other data record in the other pair. The other pair of data records is associated with the cluster based on the similarity value of the other pair of data records, wherein the cluster is configured to store data records of the entity described by multiple attributes in the pair of data records and multiple attributes in the other pair of data records.

19. The computer-readable storage medium of claim 18, wherein the instructions are executable by the processor to adjust the set of predetermined attributes based on the association between data records and clusters from previous iterations.

20. The computer-readable storage medium of claim 18, wherein the instructions are executable by the processor to determine the similarity value based on a similarity function learned from training data records.

21. The computer-readable storage medium of claim 20, wherein the similarity function is used to determine an importance score of a component associated with the first attribute.

22. The computer-readable storage medium of claim 20, wherein the similarity function is used to infer the probability of interchangeably swapping a first component with a second component in a particular attribute of a data record.