System and methods for bloom filter-based canopying
Bloom filter-based canopying enhances database search efficiency and security by transforming records into probabilistic data structures for fuzzy matching and encrypted model-based searches, addressing the challenges of computational intensity and data privacy in PII searches.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- EQUIFAX INC
- Filing Date
- 2025-01-22
- Publication Date
- 2026-07-30
AI Technical Summary
Existing database search methods face challenges in achieving fuzzy matching due to the need for numerous search keys and high computational effort, particularly when dealing with records containing personally identifiable information (PII), which complicates the process and requires significant computational resources.
The implementation of bloom filter-based canopying, where records are tokenized and transformed into bloom filters, allowing for fuzzy matching by calculating distances and similarity scores in a Euclidean space, and utilizing encrypted matching models to enhance security and privacy.
This approach improves search efficiency and cryptographic security by enabling fuzzy matching despite subtle variations in records, while reducing computational load and enhancing data privacy through probabilistic data structures and encrypted models.
Smart Images

Figure US2025012571_30072026_PF_FP_ABST
Abstract
Description
PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOSYSTEM AND METHODS FOR BLOOM FILTER-BASED CANOPYINGTechnical Field
[0001] The present disclosure relates generally to artificial intelligence. More specifically, but not by way of limitation, this disclosure relates to systems and methods for bloom filterbased canopying.Background
[0002] Databases often store data in records. Each record may generally have one or more identifiers that can be utilized to identify the record. For example, if the record stores data for an entity, the record can include an identifier field indicating the name of the entity, another identifier field indicating an address of the entity, and so on. If the record stores data for a product, the record can include an identifier field indicating the serial number of the product, another identifier field indicating the model of the product, and so on. These identifiers can be used to find records that match a search query containing the identifiers to be matched.
[0003] Some database search methods involve canopy based searching. Canopy based searching approaches are based on the creation of one or more search keys, then applying a joining operation between input data and reference data to find potential candidate records. Search keys generally must be derived from the data directly, without comparing input data against reference data. As a result, fuzzy matching based searches can be difficult to achieve as they may require hundreds of search keys or heavy computational effort.Summary
[0004] Various examples of the present disclosure provide bloom filter-based canopying for facilitating database searches. In one example, a non-transitory computer-readable storage medium having program code executable by a processing device to perform operations is described. The operations include receiving a set of candidate records from a data repository and receiving, by a search computing device, a query request including a query record. The operations include, for each record including the query record and the set of candidate records, tokenizing the record into a set of tokens and transforming, via a hashing module, each token of the set of tokens into a respective bloom filter. The bloom filters include a query bloom 1US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOfilter corresponding to the query record and a set of candidate bloom filters, each candidate bloom filter corresponding to a respective candidate record in the set of candidate records. The operations include generating a query bloom filter - candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters. The operations include for each query bloom filter - candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter. A selected set of candidate records can be identified based on the selected set of candidate records falling under a distance threshold among the query bloom filter - candidate bloom filter pairs. The operations include linking the query record to the selected set candidate records.
[0005] In another example, a method is described. The method including receiving a set of candidate records from a data repository and receiving, by a search computing device, a query request including a query record. The method includes, for each record including the query record and the set of candidate records, tokenizing the record into a set of tokens and transforming, via a hashing module, each token of the set of tokens into a respective bloom filter. The bloom filters include a query bloom filter corresponding to the query record, and a set of candidate bloom filters, each candidate bloom filter corresponding to a respective candidate record in the set of candidate records. The method includes generating a query bloom filter - candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters. The method includes for each query bloom filter - candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter. A selected candidate set of records can be identified based on the selected set of candidate records falling under a distance threshold among the query bloom filter - candidate bloom filter pairs. The method includes linking the query record to the selected set of candidate records.
[0006] In yet another example, a computing system is described. The computing system includes a processing device and a data repository for storing records. Each record includes one or more identifiers. The system further includes a non-transitory computer-readable storage medium having program code executable by the processing device to perform operations. The operations include receiving a set of candidate records from the data repository and receiving, by a search computing device, a query request including a query record. The operations include, for each record including the query record and the set of candidate records, tokenizing the record into a set of tokens and transforming, via a hashing module, each token2US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOof the set of tokens into a respective bloom filter. The bloom filters include a query bloom filter corresponding to the query record and a set of candidate bloom filters, each candidate bloom filter corresponding to a respective candidate record in the set of candidate records. The operations include generating a query bloom filter - candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters. The operations include for each query bloom filter - candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter. A selected set of candidate records can be identified based on the selected set of candidate records falling under a distance threshold among the query bloom filter - candidate bloom filter pairs. The operations include linking the query record to the selected set candidate records.
[0007] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification, any or all drawings, and each claim.
[0008] The foregoing, together with other features and examples, will become more apparent upon referring to the following specification, claims, and accompanying drawings.Brief Description of the Drawings
[0009] FIG. 1 is a block diagram depicting an example of a computing environment in which a bloom filter canopying computing system can efficiently identify a selected set of candidate records associated with a query record, according to certain aspects of the present disclosure.
[0010] FIG. 2 is a flow diagram depicting an example of a process for linking a query record to a selected set of candidate records, according to certain aspects of the present disclosure.
[0011] FIG. 3 is a flow diagram depicting an example of a process for generating bloom filters from records, according to certain aspects of the present disclosure.
[0012] FIG. 4 is a diagram depicting an example of correlating bloom filters between a query record and candidate records, according to certain aspects of the present disclosure.3US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO
[0013] FIG. 5 is a diagram depicting example of a process for encrypted model-based matching, according to certain aspects of the present disclosure.
[0014] FIG. 6 is a diagram depicting example of a process for training a classification model, according to certain aspects of the present disclosure.
[0015] FIG. 7 is a diagram depicting example of a process for a query search using embeddings, according to certain aspects of the present disclosure.
[0016] FIG. 8 is a block diagram depicting an example of a computing device, which can be used to implement the resource management server or the model training server, according to certain aspects of the present disclosure.Detailed Description
[0017] Certain aspects and features of the present disclosure involve querying a database storing personally identifiable information (“PII”) using bloom filter based searching. Bloom filters are space-efficient probabilistic data structures that are made from arrays of binary values that indicate the presence or absence of elements within the bloom filter. Space efficiency is premised on mapping multiple elements to the same values in the array leading to “collisions.” Such collisions conserve memory storage space, but because two or more elements are mapped to the same value, the value being set to “1” is indicative only that a given element may be present in the bloom filter, while values of “0” are indicative that the element is not present. Collisions ensure that false positives are not possible but expected, while false negatives are not. The degree of collision, directly correlated with the size of the filter and applied hashing functions, can be controlled to provide additional cryptographic security, while also allowing for fuzzy-based searching, where collisions can be used to expand searching or canopying beyond exact-matching based keying and linking.
[0018] A bloom filter search computing system can, for each record in the database, or a subset of records in the database, generate one or more bloom filters. Generally, each record can correspond to an entity and contain a set of elements or values, such as first name, last name, address, social security number, and the like. To generate the bloom filter for a given record, the bloom filter search computing system can tokenize each element in the record into one or more tokens (e.g., N-grams), and hash the tokens of the record into a bloom filter.4US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WODifferent elements may be separated into a different number of tokens. For instance, each address record for each record can be tokenized into two tokens, while each SSN value for each record can be tokenized into three tokens. The number of tokens generated for a given element can be tuned and varied according to various implementations.
[0019] In some examples, certain tokens may be identified as having low predictive weight. For instance, the tokenization of each address record may produce a disproportionate number of tokens corresponding to “Apt”, “Ste”, “Main” and other common values. Other common values among other record types can include, for instance, “Me” within name records, and “ 19” within elements representing birth year (e.g., when birth year elements are tokenized into a 2-gram N-gram). Such values, being overrepresented and having low predictive value, can be filtered or removed from the hash generation process to both improve the space and time efficiency in searching.
[0020] Once the set of tokens is produced for the given record, each token may be hashed into a bloom filter corresponding to the record. Thus, each record, including both the candidate records for matching, and the query record can be transformed into a bloom filter data structure to entity keying and linking and database searching.
[0021] Bloom filters, as data structures comprising an array of binary values, can be mapped into a Euclidean space (referred to as b-space) for potential matching and searching. With records represented in bloom filter format within the b-space, distances can be calculated and evaluated to determine the relative proximity of various candidate records to the query record. In one example, such distance mapping can be employed to identify a selected set of candidate records as the matching records to the query record, for instance, as the closest subset of records among the candidate records to the query record in b-space. The size of the selected set of candidate records can be based on threshold criteria such as maximum allowed distance and / or the maximum number of allowable selected records. The size of the selected set of candidate records can be any number which constitutes the same set or a subset of the set of candidate records ranging from one selected record to all records within set of candidate records being selected (for instance, when all records within the set of candidate records meet the distance and size thresholds).5US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO
[0022] In some examples, the bloom filter representation of each record can be further manipulated for candidate searching and matching. In addition to pure distance based mapping between the query record and set of candidate records, similarity scores between the query record and the candidate record can be generated based on bloom filter comparison scores such as dice coefficients. Dice coefficients represent one means of generating a similarity score by comparing correlations between bloom-filter data structures. Other examples can include Hamming distances, Jaccard similarity scores, and cosine similarity scores, among others. By employing dice coefficients, among any other type of similarity scoring metric between bloom filters, bloom filter similarity scores can be produced which may provide a further means of identifying the candidate record with the greatest similarity to the query record.
[0023] In some examples, the generated bloom filter based similarity score for each record can be employed for use with an encrypted matching model for identifying matching candidate records through use of encrypted data. An encrypted matching model can be trained on training data including encrypted data in the form of the bloom filters and the associated bloom filter based similarity scores. The training data for the encrypted matching model can further include unencrypted match scores generated based on unencrypted matching models, where the unencrypted matching models determine scores based on attributes within unencrypted records. Once trained based on the bloom filter based similarity scores and further based on the unencrypted match scores, the encrypted matching model can then identify corresponding records without requiring unencrypted data. Thus use of the encrypted matching model can provide enhanced data security and privacy during the canopying based search techniques described according to the various examples below.
[0024] Certain aspects described herein overcome the limitations of previous techniques and provide improvements to database technology by transforming records and queries into bloom filter data structures to improve search efficiency and the cryptographic security of the underlying records. With respect to improving search efficiency, bloom filter representations, premised on tolerable levels of collision within data, allow for fuzzy-based searching which can account for unintentional discrepancies within records. Thus, correctly matching records can occur despite subtle variations in records (e.g., entered typos, slight name variations, and the like).6US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO
[0025] With respect to cryptographic security, several stages of data manipulation are described according to certain aspects of the disclosure which increase the security of underlying records. For instance, tokenizing elements of each record increases the entropy of each record, and subsequently hashing the tokenized elements into respective bloom filters, and optionally adding noise to the bloom filters, further increases the security of the generated data structures. Representing records in b-space significantly increases the amount of brute force (e.g., via rainbow table attacks) required to access the underlying records and the respective PII within such records. Users with access to the bloom filter search computing system may only need to calculate hashes based on accessible data, rendering such computations highly efficient relative to computations by potential threat actors and hackers who would need to generate rainbow tables for all possible values.
[0026] These illustrative examples are given to introduce the reader to the general subject matter discussed here and are not intended to limit the scope of the disclosed concepts. The following sections describe various additional features and examples with reference to the drawings in which like numerals indicate like elements, and directional descriptions are used to describe the illustrative examples but, like the illustrative examples, should not be used to limit the present disclosure.Operating Environment Example for Embedding-based Search
[0027] FIG. 1 is a block diagram depicting an example of a computing environment in which a bloom filter canopying computing system can efficiently identify a selected set of candidate records associated with a query record, according to certain aspects of the present disclosure. FIG. 1 depicts examples of hardware components of a bloom filter canopying computing system 100 according to some aspects. The bloom filter canopying computing system 100 is a specialized computing system that may be used for processing large amounts of data using a large number of computer processing cycles. The number of devices depicted in FIG. 1 are provided for illustrative purposes. Different numbers of devices may be used. For example, while certain devices or systems are shown as single devices in FIG. 1, multiple devices may instead be used to implement these devices or systems.
[0028] As shown in FIG. 1, the bloom filter canopying computing system 100 can include a query matching server 106, a model training server 108, an internal data network 120, data7US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOrepository 122 including records 124 and bloom filters 126, and a client external-facing subsystem 132.
[0029] The data repository 122 can include internal databases or other data sources that are stored at or otherwise accessible via the internal data network 120. The data repository 122 can include records 124, where each record 124 includes one or more elements (also referred to as identifiers). An element can include any information that can be used alone or in combination with other identifiers to uniquely identify a record 124. For example, if the records 124 represent data associated with an individual or entity, the identifiers in each record 124 can include information that can be used on its own to identify an individual or entity. Non-limiting examples of such information include one or more of a legal name, a company name, a social security number, a credit card number, a date of birth, an e-mail address, etc. In other aspects, the identifiers can include information that can be used in combination with other information to identify an individual or entity. Non-limiting examples of such consumer identification data include a street address or other geographical location, etc. The model training server 108 can include one or more processing devices that execute program code, such as a model training application 116. The program code is stored on a non-transitory computer-readable medium. The model training application 116 can execute one or more processes to train a machine learning model for predicting a match a query record 114 and a record 124.
[0030] The query matching server 106 can operate a query matching application 110 for matching records. For a given query record 114, the query matching application 110 is configured to find matching records from the records 124 stored in the data repository 122. The query record 114 can have the same data structure as the record 124 or at least include one or more of the identifies. In some examples, the query matching application 110 can determine the record 124 matching the query record 114 through generating bloom filters 126 of each record and determining the closest matching candidate bloom filter to the query bloom filter. Additional details regarding bloom filter matching are discussed in FIGS. 2-4.
[0031] To train the machine learning model(s) 118, the bloom filter canopying computing system 100 can include the model training server 108 configured to operate a model training server 108 for training the machine learning model(s) 118 for use by the query matching8US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOapplication 110. The machine learning model(s) 118 can include a matching model 134 for matching query records to candidate records 112, in addition to auxiliary models 136 which can provide techniques for further training the matching model 134. The model training server 108 can train the machine learning model(s) 118 using an initial set of training samples 128 which may include records 124, bloom filters 126 and further determine predicted matches for the sets of training samples 128 using the initially trained matching model.
[0032] To correct the matching labels of the misclassified training samples, the model training server 108 can refine classifications for each of the misclassified training samples using multiple auxiliary models 136. The auxiliary models 136 can be trained determine whether and how to correct the labels of the misclassified training samples. The training samples 128 with the updated or corrected matching labels can be used to re-train the matching model 134 and auxiliary models 136. This training process can be repeated until there are no misclassified training samples in the training samples 128. In this way, ground truth matching labels for the training samples 128 can be obtained in conjunction with training the matching model 134 and auxiliary models 136. Additional details regarding training the machine learning model(s) 118 and determining ground truth labels for the training samples 128 are provided below with regard to FIGs 6.-7.
[0033] The bloom filter canopying computing system 100 can communicate with various other computing systems such as client computing systems 102. For example, the bloom filter canopying computing system 100 may include one or more provider external-facing devices that communicate with data provider systems for receiving the data regarding entities or other items to be stored in records in the data repository 122. The query matching server 106 may also communicate with the client computing system 102.
[0034] The client computing systems 102 may interact, via one or more public data networks 104, with various external -facing subsystems of the bloom filter canopying computing system 100. For instance, an individual can use a client computing system 102 to attempt to search in the records 124 for a match to a query record 114. The client computing system 102 may generate the query record 114 and send the query record 114 to the query matching server 106. Alternatively, the client computing system 102 can send data to be used for the search in any format and the query matching server 106 can generate the query record9US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO114 based on the received information. To request the search, the client computing system 102 can communicate with the client external-facing subsystem 132. The client external-facing subsystem 132 can selectively prevent the client computing system 102 from accessing or searching in the data repository 122. For example, the client external-facing subsystem 132 can determine whether the client computing system 102 can access or search in the databases based on an identifier of the client computing system and a record stored in a secure location in the client external -facing subsystem 132, such as a memory in a basic input-output system (BIOS) of the client external-facing subsystem 132. The record can indicate the access permission of a client computing device and can be determined based on various factors such as whether the client computing system is an authorized system to access a certain database, whether the timing of the access is within an authorized window, and so on.
[0035] To determine if a client computing system 102 can access a certain database, the client external-facing subsystem 132 can retrieve the record associated with the client computing system 102 from the secure location and encrypt the record and other associated data using a cryptographic key. Similarly, the client external-facing subsystem 132 can encrypt the record submitted by the client external -facing subsystem 132 using the same cryptographic key to determine a match. A match indicates that the client computing system 102 can access the database. The client external-facing subsystem 132 can prevent the client computing system 102 from accessing the databases if there is no match.
[0036] Each client computing system 102 may include one or more third-party devices, such as individual servers or groups of servers operating in a distributed manner. Client computing system 102 can include any computing device or group of computing devices operated by a seller, lender, or other provider of products or services. Client computing system 102 can include one or more server devices. The one or more server devices can include or can otherwise access one or more non-transitory computer-readable media. The client computing system 102 can also execute an online service. The online service can include executable instructions stored in one or more non-transitory computer-readable media.
[0037] Each communication within or with the bloom filter canopying computing system 100 may occur over one or more data networks, such as the public data network 104, internal data network 120, or some combination thereof. A data network may include one or more of10US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOa variety of different types of networks, including a wireless network, a wired network, or a combination of a wired and wireless network. Examples of suitable networks include the Internet, a personal area network, a local area network (“LAN”), a wide area network (“WAN”), or a wireless local area network (“WLAN”). A wireless network may include a wireless interface or a combination of wireless interfaces. A wired network may include a wired interface. The wired or wireless networks may be implemented using routers, access points, bridges, gateways, or the like, to connect devices in the data network.
[0038] A data network may include network computers, sensors, databases, or other devices that may transmit or otherwise provide data to the bloom filter canopying computing system 100. For example, a data network may include local area network devices, such as routers, hubs, switches, or other computer networking devices. The data networks depicted in FIG. 1 can be incorporated entirely within (or can include) an intranet, an extranet, or a combination thereof. In one example, communications between two or more systems or devices can be achieved by a secure communications protocol, such as secure Hypertext Transfer Protocol (“HTTPS”) communications that use secure sockets layer (“SSL”) or transport layer security (“TLS”). In addition, data or transactional details communicated among the various computing devices may be encrypted. Lor example, data may be encrypted in transit and at rest.
[0039] Query matching server 106 can implement tamper protection 130 for analyzing and reacting to patterns of activity via client devices and computing systems 102. For example, query matching server 106 can remotely monitor the search requests from client computing system 102 and can maintain a log of the indexes provided by client computing system 102. Query matching server 106 can analyze the indexes to determine whether the indexes are an attempt to reverse engineer or extract data from the data repository 122 such as records 124, encrypted bloom filters 126, and / or the training samples 128.
[0040] Tamper protection 130 can also be implemented by a threshold function. For example, a threshold number of requests that includes indexes for objects which are unlikely correlated or when a threshold of requests that result in different, i.e., non-matching, entity identifiers being returned can be suspicious. In the event that a computing device such as client computing system 102 submits a pattern of requests for entity identifiers that is indicative of11US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOunauthorized use, the entity-resolution device can take an action such as ceasing to function, removing access from the client computing device, or notifying the owner.
[0041] The bloom filter canopying computing system 100 can include one or more query matching servers 106 and one or more model training servers 108. The query matching server 106 or the model training servers 108 may be a specialized computer or other machine that processes the data received at the bloom filter canopying computing system 100. The query matching server 106 or the model training servers 108 may include one or more other systems. For example, the query matching server 106 or the model training servers 108 may include a database system for accessing the network-attached storage unit, a communications grid, or both. A communications grid may be a grid-based computing system for processing large amounts of data.
[0042] The query matching server 106 or the model training servers 108 can include one or more processing devices that execute program code, such as the query matching application 110 or the model training server 108. The program code can be stored on a non-transitory computer-readable medium. As shown, the query matching server 106 and the model training server 108 are two separate servers, however, the function of these two servers can be implemented in a single server or a group of servers.
[0043] The bloom filter canopying computing system 100 may also include one or more network-attached storage units on which various repositories, databases, or other data structures are stored. Examples of these data structures are the data repository 122. Network-attached storage units may store a variety of different types of data organized in a variety of different ways and from a variety of different sources. For example, the network-attached storage unit may include storage other than the primary storage located within the query matching server 106 or the model training server 108 that is directly accessible by processors located therein. In some aspects, the network-attached storage unit may include secondary, tertiary, or auxiliary storage, such as large hard drives, servers, virtual memory, among other types. Storage devices may include portable or non-portable storage devices, optical storage devices, and various other mediums capable of storing and containing data. A machine-readable storage medium or computer-readable storage medium may include a non-transitory medium in which data can be stored and that does not include carrier waves or transitory12US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOelectronic signals. Examples of a non-transitory medium may include, for example, a magnetic disk or tape, optical storage media such as compact disk or digital versatile disk, flash memory, memory, or memory devices.
[0044] In some aspects, the bloom filter canopying computing system 100 can implement one or more procedures to secure communications between the bloom filter canopying computing system 100 and other client systems. Non-limiting examples of features provided to protect data and transmissions between the bloom filter canopying computing system 100 and other client systems include secure web pages, encryption, firewall protection, network behavior analysis, intrusion detection, etc. In some aspects, transmissions with client systems can be encrypted using public-key cryptography algorithms using a minimum key size of 130 bits. In additional or alternative aspects, website pages or other data can be delivered through HTTPS, secure file-transfer protocol (“SFTP”), or other secure server communications protocols. In additional or alternative aspects, electronic communications can be transmitted using Secure Sockets Layer (“SSL”) technology or other suitable secure protocols. Extended Validation SSL certificates can be utilized to clearly identify a website’s organization identity. In another non-limiting example, physical, electronic, and procedural measures can be utilized to safeguard data from unauthorized access and disclosure.
[0045] The number of devices depicted in FIG. 1 is provided for illustrative purposes. Different numbers of devices may be used. For example, while certain devices or systems are shown as single devices in FIG. 1, multiple devices may instead be used to implement these devices or systems. Similarly, devices or systems that are shown as separate, such as the model training server 108 and the query matching server 106, may be instead implemented in a signal device or system.Examples of Bloom Filter Based Search Operations
[0046] FIG. 2 is a flow diagram depicting an example of a process for linking a query record to a selected set of candidate records, according to certain aspects of the present disclosure. For illustrative purposes, the process 200 is described with reference to implementations described above with respect to one or more examples described herein. Other implementations, however, are possible. In some aspects, the operations in FIG. 2 may be implemented in program code that is executed by one or more computing devices such as13US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOthe query matching server 106 depicted in FIG. 1. In some aspects of the present disclosure, one or more operations shown in FIG. 2 may be omitted or performed in a different order. Similarly, additional operations not shown in FIG. 2 may be performed.
[0047] At block 202, the process 200 involves receiving, from a data repository, a set of candidate records. The candidate records include a set of records, where each corresponds to an entity. In some instances, an entity may correspond to multiple candidate records. Each record of the set of candidate records includes a set of one or more elements representative of an entity (e.g., PII) . For instance, the set of one or more elements can include first name, last name, address, social security number, and the like. The query record can have varying configurations of elements, such as having a first name element but not a last name element and vice versa. The data repository 122 can include store records 124, where the records 124 include the candidate records. Additionally or alternatively, the set of candidate records can be accessed from an external data repository (not shown) accessed across a public data network 104 or an internal data network 120.
[0048] At block 204, the process 200 involves receiving a query request including a query record. The query request may be received from a client device, such as a client computing systems 102, transmitted across a public data network 104. The query request may also originate from internal to the bloom filter canopying computing system 100. The query request includes a query record. Like the candidate records of block 202, the query record includes a set of one or more elements representative of the entity, which may be used for matching the query record to a selected set of candidate records of the set of candidate records, as described according to additional operations of process 200.
[0049] Blocks 206 and 208 of process 200 are shown as occurring for each record of a set of records, including the query record (as received per block 202), in addition to a set of candidate records accessible via the bloom filter canopying computing system. At block 206, the process 200 involves tokenizing the records into a set of tokens. At block 208, the process 200 involves transforming, via a hashing module, each token of the set of tokens into a respective bloom filter, including a query bloom filter and a set of candidate bloom filers, where each candidate bloom filter corresponds to a respective candidate record in the set of candidate14US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOrecords. The operations of blocks 206 and 208, describing a process of generating bloom filters, are further described according to the example of FIG. 3.
[0050] At block 210, the process 200 involves generating a query bloom filter-candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters. In other words, the query bloom filter is paired with each candidate bloom filter among the set of candidate bloom filters generated per block 208. Pairing can include generating new data structures, or appending to existing data structures (e.g., to each candidate record), the query bloom filter-candidate bloom filter pair. In some examples, only a subset of the candidate bloom filters will have query bloom filter-candidate bloom filter pairs generated. For instance, some candidate records may be initially determined to be insufficiently similar to the query record based on unencrypted scoring techniques See e.g., FIGs. 5-7 discussing techniques for generating unencrypted matching scores Insufficiently similar candidate records or corresponding bloom filters may thus not be paired to the query bloom filter to narrow the distance determining operations and searching space used per blocks 212-216.
[0051] At block 212, the process 200 involves, for each query bloom filter-candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter. Generally, bloom filters, as binary array data structures, can be linearly mapped to other bloom filters such that Euclidean distances between bloom filter pairs can be evaluated. Thus, the query bloom filter-candidate bloom filter pairs, already mapped, can be evaluated such that a distance for each bloom filter pair is determined. For instance, the distance may be measured via Hamming distance calculations. Other distance measurements can include Jaccard distance, Tanimoto distance, cosine similarity and the like.
[0052] According to some examples, the distance between bloom filter pairs is determined via a bloom filter comparison score calculated for each bloom filter pair. For each query record-candidate record pair, a bloom filter comparison score between the bloom filtercandidate bloom filter pair can be determined. The candidate records may then be selected based in part on the bloom filter comparison score of the query bloom filter respective bloom filters of the selected set of candidate records.
[0053] At block 214, the process 200 involves identifying a selected set of candidate records based on the selected set of candidate records falling under a distance threshold among15US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOthe query bloom filter-candidate bloom filter pairs. The selected set of candidate records can represent a subset of the overall candidate records as retrieved per block 202. The selected set of candidate records can be filtered, for instance, based on a percentile similarity among all candidate records, or a threshold similarity score among all candidate records.
[0054] At block 216, the process 200 involves linking the query record to the selected set of candidate records. Linking the query record to the selected set of candidate records can include generating new data structures, or appending to existing data structures (e.g., to the query record and / or the selected set of candidate records).
[0055] In some examples, the process 200 involves transmitting the linked query record-selected candidate record pairs. Transmitting the linked query record-selected candidate record pairs can include transmission from the bloom filter canopying computing system 100 to a device initiating the query and / or to a client computing system 102. The transmission can cause the client computing system 102 to display the selected candidate records and / or update the client identity database by linking a first identity data object and the second identity data object via a common entity identifier.Examples of Bloom Filter Generation and Bloom Filter Based Searchins
[0056] FIG. 3 is a flow diagram depicting an example of a process for generating bloom filters from records, according to certain aspects of the present disclosure. For illustrative purposes, the process 300 is described with reference to implementations described above with respect to one or more examples described herein. Other implementations, however, are possible. In some aspects, the operations in FIG. 3 may be implemented in program code that is executed by one or more computing devices such as the query matching server 106 depicted in FIG. 1. In some aspects of the present disclosure, one or more operations shown in FIG. 3 may be omitted or performed in a different order. Similarly, additional operations not shown in FIG. 3 may be performed.
[0057] The process 300 involves receiving a record 302 for generation of a corresponding bloom filter 314, the bloom filter 314 being a hash encoding of the record 302. Generally, any record may be converted into a corresponding bloom filter, including the query record and the set of candidate records. Thus, while only one record 302 is shown converted into a corresponding bloom filter 314, process 300 is representative of the process for converting any 16US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOrecord into a bloom filter according to the examples of this disclosure. In some examples, only a subset of the set of candidate records within the data repository 122 may be converted into bloom filters. The query record will otherwise be converted into a bloom filter to facilitate keying and linking between the query record bloom filter and an identified candidate record bloom filter having the greatest similarity or proximity to the query record bloom filter.
[0058] The record 302 is shown including PII elements 304. PII elements represent different identifiable aspects of the record. Examples of PII elements 304 can include first name, last name, date of birth, social security number, address, and the like. While according to the example of FIG. 3, only three PII elements 304 are shown, it is to be appreciated that any number of PII elements 304 may be included within a given record 302. Different records may also have different combinations and configurations of PII elements 304 contained within the records.
[0059] The process 300 involves parsing each PII element 304 via a tokenizer 306. While the example of FIG. 3 shows only a second PII element input into the tokenizer, it is to be appreciated that each PII element 304 within a record 302 may be converted into PII tokens 308 per tokenizer 306. The tokenizer 306 can refer to one or more tokenization tools and techniques used to convert each PII element 304 into a set of one or more PII tokens. Examples of tokenization techniques applied by the tokenizer 306 can include n-gram tokenization, where the number of tokens n per n-gram can vary based on the type of PII element 304 being converted into a set of PII tokens 308.
[0060] In an example, PII elements 304 such as a record first name element, may be converted into 2 PII tokens 308, while SSN PII elements may be converted into 4 or more PII tokens, and Date of Birth PII elements be converted into 3 tokens. Such examples are to illustrate that any number of tokens may be generated for each class of PII element, and that according to certain examples, it may be advantageous to generate more tokens for a class of PII elements (e.g., SSN) compared to other classes of PII elements (e.g., last name). The number of tokens, or value of n for n-gram generation, may thus be tuned according to the class of PII element 304 to be converted.
[0061] A token filtering module 310 is shown as an optional element per process 300 to illustrate additional procedures for generating bloom filters, according to certain examples. In17US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOgenerating PII tokens 308 per the tokenizer 306, some classes of PII elements 304 may be prone to generating high volumes of common PII tokens which are of low value and little effect in predicting and identifying matching records. For instance, PII elements corresponding to addresses may frequently include “Apt.” or “Apartment”, and PII elements corresponding to date of birth may frequently include “19” as a specific token of the year category. Such common tokens may be afforded low predictive weight in the keying and linking process, while contributing to higher volumes of data to process. As such, the token filtering module 310 can identify common, non-predictive tokens with high volume (e.g., crossing a threshold) within the set of tokens, and remove such tokens from the PII token set prior to the non-predictive tokens being hashed into a bloom filter.
[0062] Once the PII tokens 308 are generated, and optionally filtered per token filtering module 310, the process 300 involves generating a bloom filter 314 from the set of PII tokens 308 per a hashing module 312. The hashing module 312 can include any variety and combination of hashing algorithms for converting the set of PII tokens 308 into the bloom filter 314, such as Message-Digest Algorithm 4 (MD5), MurmurHash, Secure Hash Algorithms 1 and 2 (SHA-1, SHA-2), and the like. In a preferred example, cryptographic one way hash functions are used in the bloom filter generation process to provide additional layers of cryptographic security of the underlying PII.
[0063] The hashing module 312 is employed to generate a bloom filter 314 from the received PII tokens 308, where the bloom filter 314 corresponds to the input record from which the PII tokens 308 originate. Bloom filters 314 provide a space-efficient probabilistic data structure indicating whether elements, such as PII tokens 308, are present within the bloom filter data structure. The PII tokens 308 can be hashed to locations within the bloom filter 314 in such a manner that multiple PII tokens 308 are hashed to the same value within the bloom filter 314. Also referred to as collisions, the locations of overlap allow for false positives in identifying whether a given PII token 308 is present with the bloom filter 314, but are otherwise capable of indicating that a given PII token 308 is not present within the bloom filter 314. Such points of collision provide benefits including allowing for fuzzy-matching while also providing additional cryptographic security by exponentially reducing the ability to derive the PII tokens 308 (in addition to the PII elements 304) from hashed bloom filter.18US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO
[0064] According to some examples, “noise” can be added to the bloom filters to further improve the cryptographic security and render brute force attacks more difficult. Adding noise can include adding randomly set bits into each bloom filter. The amount of noise added to each bloom filter may be configured and controllable to balance false positive match rates. For instance, increasing the noise to certain values may increase security while also yielding greater numbers of false positives (i.e., records incorrectly identified as matching owing to the noise). In matching multiple records, the number of false positives, (and hence noise) may be adjusted and configured based on the maximum number of candidates allowed.
[0065] FIG. 4 is a diagram depicting an example of correlating bloom filters between a query record and candidate records, according to certain aspects of the present disclosure. FIG.4 shows a query bloom filter 402 compared against a set of candidate bloom filters 404a-404d. Each bloom filter, including the query bloom filter 402 and the set of candidate bloom filters 404a-404d, can be generated according to the techniques described with respect to FIG. 3.
[0066] The query bloom filter 402 can be compared against a full set or a partial set of the candidate bloom filters 404a-404d. Different techniques may be used for comparing the query bloom filter 402 with the candidate bloom filters 404a-404d. For instance, different coefficients and scores can be generated including dice coefficients, Hamming distance scores, Jaccard similarity scores, cosine similarity scores and the like. Once the comparison is made between the query bloom filter 402 and the candidate bloom filters 404a-404d, a specific set of candidate bloom filters may be selected based on a given metric, for instance based on proximity. In the example of FIG. 4, candidate bloom filters 404a and 404c are shown having the greatest similarity with the query bloom filter 402. As a result candidate bloom filters 404a and 404c may be identified as the selected set of bloom filter 404c, allowing for the retrieval of the associated candidate records as the return result for the query.
[0067] According to some examples, beyond selecting a given candidate bloom filter 404a-404d for retrieval, the comparison scores for each query bloom filter - candidate record pair (denoted by the lines shown in FIG. 4) may be stored as data values for training machine learning models, where the machine learning models can perform encrypted matching supplemented by unencrypted matching scores generated by unencrypted matching algorithms. Such techniques are described further with respect to FIGS. 5-7.19US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOExamples of Encrypted Matching Models
[0068] FIG. 5 is a diagram depicting example of a process for encrypted model-based matching, according to certain aspects of the present disclosure. For illustrative purposes, the process 500 is described with reference to implementations described above with respect to one or more examples described herein. Other implementations, however, are possible. In some aspects, the operations in FIG. 5 may be implemented in program code that is executed by one or more computing devices such as the model training server 108 depicted in FIG. 1. In some aspects of the present disclosure, one or more operations shown in FIG. 5 may be omitted or performed in a different order. Similarly, additional operations not shown in FIG.5 may be performed.
[0069] At block 502, the process 500 involves obtaining a plurality of initial training samples, each initial training sample of the plurality of initial training samples including a training record pair. The training record pairs can include pairs of records 124 from the data repository 122, where each record includes data associated with an entity, and each record is capable of being converted into a corresponding bloom filter.
[0070] At block 504, the process 500 involves generating, for each initial training sample, an unencrypted match score by applying an unencrypted scoring model to the initial training sample. Techniques for generating the unencrypted match score via training unencrypted scoring model are discussed further with respect to FIGs. 6-7. However, the process for generating the unencrypted match score can generally include training an unencrypted scoring model based on attributes generated via an attribute generation module configured to generate various identifier attributes for a pair of records such as name identifiers, address identifiers, number identifiers, date identifiers, and the like. Compound scores can be generated based on the identifier scores, and the unencrypted match score can be generated based on the attribute scores and / or the compound scores.
[0071] At block 506, the process 500 involves generating a bloom filter and a bloom filter comparison score based on the bloom filter for each training record pair. The techniques described according to FIGs. 2-4 may be applied to each pair, such as tokenization of each record into PII tokens, hashing the tokens into respective bloom filters, and performing a comparison between each record in order to generate the bloom filter comparison score.20US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO
[0072] At block 508, the process 500 involves generating encrypted training samples, where each training sample involves the unencrypted match score and the bloom filter comparison score for the training record pair. At block 510, the process 500 involves training an encrypted scoring model using the encrypted training samples. Thus, per blocks 508 and 510, an encrypted matching model can be trained such that, for each query record - candidate record pair, the query record - candidate record pair can be applied to the encrypted scoring model to generate an encrypted match score. Identifying the selected set of candidate records may then be based, in part, on the encrypted match scores.
[0073] The techniques described with respect to process 500 may thus allow for canopy based searching based on encrypted bloom filters and associated comparison scores input into an encrypted model. Such matching can thus circumvent the need to perform additional unencrypted matching techniques (e.g., such as those used to train the unencrypted model, based on attributes and components of the PII). Avoiding reliance on unencrypted matching techniques can provide for improved cybersecurity, in addition to more efficient searching, for instance due to fuzzy tolerances allowed by bloom filter comparison scores such as dice coefficients.
[0074] FIG. 6 is a flowchart depicting an example of a process 600 for training machine learning matching models, such as the unencrypted scoring model, according to certain aspects of the present disclosure. FIG. 6 will be described in conjunction with FIG. 7. FIG. 7 is a diagram illustrating the data flow in the training of the machine learning model, according to certain aspects of the present disclosure. For illustrative purposes, the process 600 is described with reference to implementations described above with respect to one or more examples described herein. Other implementations, however, are possible. In some aspects, the operations in FIG. 6 may be implemented in program code that is executed by one or more computing devices such as the model training server 108 depicted in FIG. 1. In some aspects of the present disclosure, one or more operations shown in FIG. 6 may be omitted or performed in a different order. Similarly, additional operations not shown in FIG. 6 may be performed.
[0075] At block 602, the process 600 involves obtaining the training samples for the query matching application 110. As shown in FIG. 6, each of the training samples 128 can include input identifier attributes 704 generated for a corresponding pair of training samples 128 and a21US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOmatching label 706 for the pair. The input identifier attributes 704 can include a set of rules pertaining to a collection of one or more elements.
[0076] Attributes can be generated for instance per an attribute generation module. The identifier attributes can include attributes for each of the identifiers included in the query record - candidate record pair, such as a numerical identifier (e.g., social security number), a name identifier, an address identifier, a date identifier (e.g., date of birth), and so on. Whether a data field in the query record 114 and the candidate record is an identifier can be pre-determined or provided as an input to the attribute generation module. The input identifier attributes 704 can be generated to capture the uncertainty of the identifiers, the likelihood of inadvertent mistakes in entering the identifiers into the records (e.g., via Levenshtein edit distance or other data entry error detection algorithms), and various nuances in the identifiers.
[0077] The matching label 706 indicates whether the pair of training records match or not. In some examples, the matching label 706 may be inaccurate and thus cannot serve as the ground truth for the training. As such, the process 600 may also be used to identify ground truth matching labels for the training samples 128.
[0078] In some examples, the training samples 128 can be selected from the records 124 and the respective associated labels based on stratified sampling. In the records 124, some patterns of the identifier values may be rare compared to others. The model training server 108 can first perform random sampling in the records 124 by the type of matches indicated by the label, such as a match or no match. If the labels have flags other than match or no match, those flags can be mapped to match or no match. A stratified sample by scores is extracted on the randomly selected samples. In some examples, the score attributes, such as identifier scores, along with compound scores (e.g., area scores and volume scores) are used for extracting out the stratified samples. The scores or compound scores can be rounded to the nearest integer before a stratified sample is extracted. Samples are also ensured to have each attribute value represented n times with n being a positive integer.
[0079] At block 604, the process 600 involves using the training samples 128 to train the machine learning model(s) 118. As discussed above with respect to FIG. 1, the matching models 134 may include decision tree models, random forests, RIPPER models, or any other model that is explainable and exportable as a rule set. The training can involve supervised22US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOtraining using the input attributes and the current matching labels in the training samples 128. In some examples, the auxiliary models 708 are employed in order to correct the matching label 706 in the misclassified training samples. The auxiliary models 708 can operate under different principles of classification and each can be trained to generate a classification of match or no-match based on attributes associated with a pair of records. Examples of the auxiliary models 708 can include a naive Bayes model, a multi-layered perception model, a random forest model, and a support vector machine (SVC).
[0080] Each of the auxiliary models 708 can be trained using the training samples 128 further used to train the matching models 134. In some examples, the attributes input to each of the auxiliary models 136 can include the input identifier attributes 704 for the matching model 134. In other examples, the attributes input to each of the auxiliary models 136 include a subset of the input identifier attributes 704, such as the identifier scores and the compound scores. By using a subset of the input identifier attributes 704, the computational complexity of training the auxiliary models 136, and thus training the matching model 134, can be significantly reduced.
[0081] At block 606, the process 600 involves determining predicted classifications for the training samples using the initially trained matching model 134. In other words, the input identifier attributes 704 in each training sample 128 are input to the initially trained matching model 134 to generate the respective predicted classifications 702.
[0082] At block 608, the process 600 involves identifying misclassified training samples. The misclassified training samples can include training samples that are mistakenly labeled. In other words, the matching label 706 in a training sample for a pair of matched records is incorrectly marked as no-match, or the matching label 706 in a training sample for a pair of unmatched records is incorrectly marked as a match. The query matching server 106 can identify a set of the training samples as misclassified training samples 712 if the predicted classifications 702 of the set of training samples 128 are different from the respective matching labels 706.
[0083] At block 610, the process 600 involves the query matching server 106 determining if there are any misclassified training samples 712. If so, the process 600 involves generating, at block 612, predicted classifications for each of the misclassified training samples 712 using23US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOthe auxiliary models 136, also referred to as auxiliary classification 710. At block 614, the process 600 involves updating the misclassified training samples 712 based on the auxiliary classifications 710 generated by the auxiliary models 136.
[0084] In some examples, the auxiliary classifications 710 are compared with each other to determine if the misclassified training samples need to be corrected. Because the auxiliary models 136 have different underlying principles to predict the classifications, if a pair of records is a genuine match, the auxiliary models 136 should agree on the classification. But if the auxiliary models 136 do not agree on the predicted classifications, the pair of records should be further analyzed to determine the accurate label. For example, for a mismatched training sample, if the auxiliary classifications 710 are consistent with the predicted classification by the matching model 134, the query matching server 106 can change the matching label 706 of the mismatched training sample to be consistent with the classification output by the matching model 134. If the auxiliary classifications 710 include conflicting classifications, the query matching server 106 can determine the matching label for the mismatched training sample based on a combination of the original matching label, the classification by the matching model, and the auxiliary classifications 710 by the auxiliary matching models, such as through a majority voting. Alternatively, or additionally, the record-matching computing system can output the mismatched training sample to another system for further analysis to determine the correct matching label. The mismatched training samples whose matching labels are corrected can then be used to update the corresponding training sample 128.
[0085] The matching model 134 can be re-trained using the updated training samples 128 at block 604 and the operations in blocks 606-614 can be repeated until the query matching server 106 determines, at block 610, that there are no misclassified training samples. The process 600 then involves, at block 416, the query matching server 106 outputting the trained matching model 134 and the training samples 128. At this stage, the training samples 128 include the corrected matching labels 706, which can be used as ground truth matching labels 706.24US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOExample o f Computing System for Machine-Learning Operations
[0086] Any suitable computing system or group of computing systems can be used to perform the operations for the machine-learning operations described herein. For example, FIG. 8 is a block diagram depicting an example of a computing device 800, which can be used to implement the query matching server 106 or the model training server 108, according to certain examples. The computing device 800 can include various devices for communicating with other devices in the operating environment, as described with respect to FIG. 1. The computing device 800 can include various devices for performing one or more transformation operations described above with respect to FIGS. 1-7.
[0087] The computing device 800 can include a processor 802 that is communicatively coupled to a memory 804. The processor 802 executes computer-executable program code stored in the memory 804, accesses information stored in the memory 804, or both. Program code may include machine-executable instructions that may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, among others.
[0088] Examples of a processor 802 include a microprocessor, an application-specific integrated circuit, a field-programmable gate array, or any other suitable processing device. The processor 802 can include any number of processing devices, including one. The processor 802 can include or communicate with a memory 804. The memory 804 stores program code that, when executed by the processor 802, causes the processor to perform the operations described in this disclosure.
[0089] The memory 804 can include any suitable non-transitory computer-readable medium. The computer-readable medium can include any electronic, optical, magnetic, or other storage device capable of providing a processor with computer-readable program code or other program code. Non-limiting examples of a computer-readable medium include a magnetic disk, memory chip, optical storage, flash memory, storage class memory, ROM,25US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WORAM, an ASIC, magnetic storage, or any other medium from which a computer processor can read and execute program code. The program code may include processor-specific program code generated by a compiler or an interpreter from code written in any suitable computerprogramming language. Examples of suitable programming language include Hadoop, C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, ActionScript, etc.
[0090] The computing device 800 may also include a number of external or internal devices such as input or output devices. For example, the computing device 800 is shown with an input / output interface 808 that can receive input from input devices or provide output to output devices. A bus 806 can also be included in the computing device 800. The bus 806 can communicatively couple one or more components of the computing device 800.
[0091] The computing device 800 can execute program code 814 that includes the query matching application 110 and / or the model training application 116. The program code 814 for the query matching application 110 and / or the model training application 116 may be resident in any suitable computer-readable medium and may be executed on any suitable processing device. For example, as depicted in FIG. 8, the program code 814 for the query matching application 110 and / or the model training application 116 can reside in the memory 804 at the computing device 800 along with the program data 816 associated with the program code 814, such the query matching application 110 and the machine learning model(s) 118. Executing the query matching application 110 or the model training application 116 can configure the processor 802 to perform the operations described herein.
[0092] In some aspects, the computing device 800 can include one or more output devices. One example of an output device is the network interface device 810 depicted in FIG. 8. A network interface device 810 can include any device or group of devices suitable for establishing a wired or wireless data connection to one or more data networks described herein. Non-limiting examples of the network interface device 810 include an Ethernet network adapter, a modem, etc.
[0093] Another example of an output device is the presentation device 812 depicted in FIG.8. A presentation device 812 can include any device or group of devices suitable for providing visual, auditory, or other suitable sensory output. Non-limiting examples of the presentation device 812 include a touchscreen, a monitor, a speaker, a separate mobile computing device,26US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOetc. In some aspects, the presentation device 812 can include a remote client-computing device that communicates with the computing device 800 using one or more data networks described herein. In other aspects, the presentation device 812 can be omitted.General Considerations
[0094] Numerous specific details are set forth herein to provide a thorough understanding of the claimed subject matter. However, those skilled in the art will understand that the claimed subject matter may be practiced without these specific details. In other instances, methods, apparatuses, or systems that would be known by one of ordinary skill have not been described in detail so as not to obscure claimed subject matter.
[0095] Unless specifically stated otherwise, it is appreciated that throughout this specification that terms such as “processing,” “computing,” “determining,” and “identifying” or the like refer to actions or processes of a computing device, such as one or more computers or a similar electronic computing device or devices, that manipulate or transform data represented as physical electronic or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the computing platform.
[0096] The system or systems discussed herein are not limited to any particular hardware architecture or configuration. A computing device can include any suitable arrangement of components that provides a result conditioned on one or more inputs. Suitable computing devices include multipurpose microprocessor-based computing systems accessing stored software that programs or configures the computing system from a general purpose computing apparatus to a specialized computing apparatus implementing one or more aspects of the present subject matter. Any suitable programming, scripting, or other type of language or combinations of languages may be used to implement the teachings contained herein in software to be used in programming or configuring a computing device.
[0097] Aspects of the methods disclosed herein may be performed in the operation of such computing devices. The order of the blocks presented in the examples above can be varied — for example, blocks can be re-ordered, combined, or broken into sub-blocks. Certain blocks or processes can be performed in parallel.27US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WO
[0098] The use of “adapted to” or “configured to” herein is meant as open and inclusive language that does not foreclose devices adapted to or configured to perform additional tasks or steps. Additionally, the use of “based on” is meant to be open and inclusive, in that a process, step, calculation, or other action “based on” one or more recited conditions or values may, in practice, be based on additional conditions or values beyond those recited. Headings, lists, and numbering included herein are for ease of explanation only and are not meant to be limiting.
[0099] While the present subject matter has been described in detail with respect to specific aspects thereof, it will be appreciated that those skilled in the art, upon attaining an understanding of the foregoing, may readily produce alterations to, variations of, and equivalents to such aspects. Any aspects or examples may be combined with any other aspects or examples. Accordingly, it should be understood that the present disclosure has been presented for purposes of example rather than limitation, and does not preclude inclusion of such modifications, variations, or additions to the present subject matter as would be readily apparent to one of ordinary skill in the art.28US200830971064 1
Claims
PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOWHAT IS CLAIMED IS:
1. A non-transitory computer-readable storage medium having program code executable by a processing device to perform operations comprising:receiving, from a data repository, a set of candidate recordsreceiving, by a search computing device, a query request comprising a query record; for each record of a set of records that includes the query record and the set of candidate records:tokenizing the record into a set of tokens; andtransforming, via a hashing module, each token of the set of tokens into a respective bloom filter, including a query bloom filter corresponding to the query record, and a set of candidate bloom filters, each candidate bloom filter corresponding to a respective candidate record in the set of candidate records;generating a query bloom filter - candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters;for each query bloom filter - candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter;identifying a set of selected candidate records based in part on the selected set of candidate records falling under a distance threshold among the query bloom filter - candidate bloom filter pairs; andlinking the query record to the set of selected candidate record to generate linked query record - selected candidate record pairs.
2. The non-transitory computer-readable storage medium of claim 1, wherein the operations further include, for each record of the set of records, and prior to transforming each token of the set of tokens into a respective bloom filter, identifying a non-predictive token within the set of tokens, and removing the non-predictive token from the set of tokens.
3. The non-transitory computer-readable storage medium of claim 1, further comprising:determining, for each query record - candidate record pair, a bloom filter comparison score between the query bloom filter - candidate bloom filter pair, wherein identifying the set29US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOof selected candidate records is based at least in part on the bloom filter comparison score of the query bloom filter and bloom filters of the set of selected candidate records.
4. The non-transitory computer-readable storage medium of claim 1, further comprising:for each query record - candidate record pair, applying the query record - candidate record pair to an encrypted scoring model to generate an encrypted match score; and wherein identifying the set of selected candidate records is based in part on the encrypted match score.
5. The non-transitory computer-readable storage medium of claim 4, wherein the encrypted scoring model is trained by steps comprising:obtaining a plurality of initial training samples, each initial training sample of the plurality of initial training samples comprising a training record pair;generating for each initial training sample of the plurality of initial training samples, an unencrypted match score by applying an unencrypted scoring model to the initial training sample;generating for each initial training sample of the plurality of initial training samples, a bloom filter, and a bloom filter comparison score based on the bloom filter;generating a plurality of encrypted training samples, each encrypted training sample of the encrypted training samples comprising the unencrypted match score and the bloom filter comparison score for the training record pair; andtraining the encrypted scoring model using the plurality of encrypted training samples.
6. The non-transitory computer-readable storage medium of claim 5, wherein the unencrypted scoring model is trained by steps comprising:obtaining a plurality of training samples, each training sample of the plurality of training samples comprising a set of training matching attributes generated for a pair of records and a matching label indicating a match or a no-match between the pair of records; training the unencrypted scoring model using the plurality of training samples; determining predicted classifications for the plurality of training samples by inputting the sets of training matching attributes to the unencrypted scoring model;30US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOidentifying a set of the training samples as misclassified training samples based on a set of the predicted classifications being different from the respective matching labels in the training samples;generating two or more auxiliary classifications for each of the misclassified training samples using two or more auxiliary models;updating the matching labels of the misclassified training samples based on the two or more auxiliary classifications; andre-training the unencrypted scoring model using the plurality of training samples with the updated matching labels.
7. The non-transitory computer-readable storage medium of claim 1, further comprising:receiving, by the search computing device, a set of subsequent search requests from a client computing device;identifying, by the search computing device, from the set of subsequent search requests, a pattern of activity that is indicative of unauthorized use of a query-matching server; andremoving, by the search computing device, access to initiating search requests from a client computing device.
8. A method that includes one or more processing devices performing operations comprising:receiving, from a data repository, a set of candidate recordsreceiving, by a search computing device, a query request comprising a query record; for each record of a set of records that includes the query record and the set of candidate records:tokenizing the record into a set of tokens; andtransforming, via a hashing module, each token of the set of tokens into a respective bloom filter, including a query bloom filter corresponding to the query record, and a set of candidate bloom filters, each candidate bloom filter corresponding to a respective candidate record in the set of candidate records;generating a query bloom filter - candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters;31US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOfor each query bloom filter - candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter; andidentifying a selected set of candidate records based on the selected set of candidate records falling under a distance threshold among the query bloom filter - candidate bloom filter pairs;linking the query record to the selected set of candidate records.
9. The method of claim 8, wherein the operations further comprise:for each record of the set of records, and prior to transforming each token of the set of tokens into a respective bloom filter, identifying a non-predictive token within the set of tokens, and removing the non-predictive token from the set of tokens.
10. The method of claim 8, wherein the operations further comprise:determining, for each query record - candidate record pair, a bloom filter comparison score between the query bloom filter - candidate bloom filter pair, wherein identifying the selected set of candidate records is based in part on the bloom filter comparison score of the query bloom filter bloom filters of the selected set of candidate records.
11. The method of claim 10, wherein the operations further comprise:for each query record - candidate record pair, applying the query record - candidate record pair to an encrypted scoring model to generate an encrypted match score; and wherein identifying the selected set of candidate records is based in part on the encrypted match score.
12. The method of claim 11, wherein the encrypted scoring model is trained by steps comprising:obtaining a plurality of initial training samples, each initial training sample of the plurality of initial training samples comprising a training record pair;generating for each initial training sample of the plurality of initial training samples, an unencrypted match score by applying an unencrypted scoring model to the initial training sample;32US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOgenerating for each initial training sample of the plurality of initial training samples, a bloom filter, and a bloom filter comparison score based on the bloom filter;generating a plurality of encrypted training samples, each encrypted training sample of the encrypted training samples comprising the unencrypted match score and the bloom filter comparison score for the training record pair; andtraining the encrypted scoring model using the plurality of encrypted training samples.
13. The method of claim 12, wherein the unencrypted scoring model is trained by steps comprising:obtaining a plurality of training samples, each training sample of the plurality of training samples comprising a set of training matching attributes generated for a pair of records and a matching label indicating a match or a no-match between the pair of records; training the unencrypted scoring model using the plurality of training samples; determining predicted classifications for the plurality of training samples by inputting the sets of training matching attributes to the unencrypted scoring model;identifying a set of the training samples as misclassified training samples based on a set of the predicted classifications being different from the respective matching labels in the training samples;generating two or more auxiliary classifications for each of the misclassified training samples using two or more auxiliary models;updating the matching labels of the misclassified training samples based on the two or more auxiliary classifications; andre-training the unencrypted scoring model using the plurality of training samples with the updated matching labels.
14. The method of claim 8, further comprising:receiving, by the search computing device, a set of subsequent search requests from a client computing device;identifying, by the search computing device, from the set of subsequent search requests, a pattern of activity with respect to a query-matching server that is indicative of unauthorized use of the query-matching server; and33US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOremoving, by the search computing device, access to initiating search requests from a client computing device.
15. A computing system comprising:a processing device;a data repository for storing records, wherein each record comprises one or more identifiers; anda non-transitory computer-readable storage medium having program code executable by the processing device to perform operations comprising:receiving, from the data repository, a set of candidate records receiving, by a search computing device, a query request comprising a query record;for each record of a set of records that includes the query record and the set of candidate records:tokenizing the record into a set of tokens; andtransforming, via a hashing module, each token of the set of tokens into a respective bloom filter, including a query bloom filter corresponding to the query record, and a set of candidate bloom filters, each candidate bloom filter corresponding to a respective candidate record in the set of candidate records;generating a query bloom filter - candidate bloom filter pair for each candidate bloom filter in the set of candidate bloom filters;for each query bloom filter - candidate bloom filter pair, identifying a distance between the query bloom filter and the candidate bloom filter; andidentifying a selected set of candidate records based on the selected set of candidate records falling under a distance threshold among the query bloom filter - candidate bloom filter pairs;linking the query record to the selected set of candidate records.
16. The computing system of claim 15, operations further comprise:34US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOfor each record of the set of records, and prior to transforming each token of the set of tokens into a respective bloom filter, identifying a non-predictive token within the set of tokens, and removing the non-predictive token from the set of tokens.
17. The computing system of claim 15, wherein the operations further comprise:determining, for each query record - candidate record pair, a bloom filter comparison score between the query bloom filter - candidate bloom filter pair, wherein identifying the selected set of candidate records is based in part on the bloom filter comparison score of the query bloom filter bloom filters of the selected set of candidate records.
18. The computing system of claim 17, wherein the operations further comprise:for each query record - candidate record pair, applying the query record - candidate record pair to an encrypted scoring model to generate an encrypted match score; and wherein identifying the selected set of candidate records is based in part on the encrypted match score.
19. The computing system of claim 18, wherein the encrypted scoring model is trained by steps comprising:obtaining a plurality of initial training samples, each initial training sample of the plurality of initial training samples comprising a training record pair;generating for each initial training sample of the plurality of initial training samples, an unencrypted match score by applying an unencrypted scoring model to the initial training sample;generating for each initial training sample of the plurality of initial training samples, a bloom filter, and a bloom filter comparison score based on the bloom filter;generating a plurality of encrypted training samples, each encrypted training sample of the encrypted training samples comprising the unencrypted match score and the bloom filter comparison score for the training record pair; andtraining the encrypted scoring model using the plurality of encrypted training samples.
20. The computing system of claim 19 wherein the unencrypted scoring model is trained by steps comprising:35US200830971064 1PATENT Attorney Docket No. 096923-1476934 Client Ref. No. EFX-204WOobtaining a plurality of training samples, each training sample of the plurality of training samples comprising a set of training matching attributes generated for a pair of records and a matching label indicating a match or a no-match between the pair of records;training the unencrypted scoring model using the plurality of training samples; determining predicted classifications for the plurality of training samples by inputting the sets of training matching attributes to the unencrypted scoring model;identifying a set of the training samples as misclassified training samples based on a set of the predicted classifications being different from the respective matching labels in the training samples;generating two or more auxiliary classifications for each of the misclassified training samples using two or more auxiliary models;updating the matching labels of the misclassified training samples based on the two or more auxiliary classifications; andre-training the unencrypted scoring model using the plurality of training samples with the updated matching labels.36US200830971064 1