To perform record linkage, you typically follow a pattern of indexing, comparing, and then classifying.
1. Setup and Data Loading
Import recordlinkage and pandas, then load your datasets into pandas DataFrames.
2. Indexing (Candidate Generation)
Use recordlinkage.Index() to create candidate links. A common technique is blocking, which only considers pairs that agree on a specific attribute (e.g., 'surname').
3. Comparison
Use recordlinkage.Compare() to define which attributes to compare and which similarity measures to use (e.g., string, exact). The compute() method generates comparison vectors.
4. Classification
You can use supervised learning (requiring training/golden data) or unsupervised learning (like the ECM algorithm) to classify the links.
import recordlinkage
import pandas
# 1. Load data
df_a = pandas.DataFrame(YOUR_FIRST_DATASET)
df_b = pandas.DataFrame(YOUR_SECOND_DATASET)
# 2. Indexing (Blocking)
indexer = recordlinkage.Index()
indexer.block('surname')
candidate_links = indexer.index(df_a, df_b)
# 3. Comparison
compare = recordlinkage.Compare()
compare.string('name', 'name', method='jarowinkler', threshold=0.85)
compare.exact('sex', 'gender')
compare_vectors = compare.compute(candidate_links, df_a, df_b)
# 4. Classification (Supervised Example)
true_linkage = pandas.Series(YOUR_GOLDEN_DATA, index=pandas.MultiIndex(YOUR_MULTI_INDEX))
logrg = recordlinkage.LogisticRegressionClassifier()
logrg.fit(compare_vectors[true_linkage.index], true_linkage)
predictions = logrg.predict(compare_vectors)
# 4. Classification (Unsupervised Example)
ecm = recordlinkage.BernoulliEMClassifier()
ecm.fit_predict(compare_vectors)