Package: recordlinkage
RecordLinkage: powerful and modular Python record linkage toolkitRecordLinkageis a powerful and modular record linkage toolkit to
link records in or between data sources. The toolkit provides most of
the tools needed for record linkage and deduplication. The package
contains indexing methods, functions to compare records and classifiers.
The package is developed for research and the linking of small or medium
sized files.This project is inspired by theFreely Extensible Biomedical Record
Linkage (FEBRL)project, which
is a great project. In contrast with FEBRL, the recordlinkage project
usespandasandnumpyfor data handling and computations. The
use ofpandas, a flexible and powerful data analysis and manipulation
library for Python, makes the record linkage process much easier and
faster. The extensivepandaslibrary can be used to integrate your
record linkage directly into existing data manipulation projects.One of the aims of this project is to make an easily extensible record
linkage framework. It is easy to include your own indexing algorithms,
comparison/similarity measures and classifiers.Basic linking exampleImport therecordlinkagemodule with all important tools for record
linkage and import the data manipulation frameworkpandas.importrecordlinkageimportpandasLoad your data into pandas DataFrames.df_a=pandas.DataFrame(YOUR_FIRST_DATASET)df_b=pandas.DataFrame(YOUR_SECOND_DATASET)Comparing all record can be computationally intensive. Therefore, we
make set of candidate links with one of the built-in indexing techniques
likeblocking. In this example, only pairs of records that agree on
the surname are returned.indexer=recordlinkage.Index()indexer.block('surname')candidate_links=indexer.index(df_a,df_b)For each candidate link, compare the records with one of the comparison
or similarity algorithms in the Compare class.c=recordlinkage.Compare()c.string('name_a','name_b',method='jarowinkler',threshold=0.85)c.exact('sex','gender')c.date('dob','date_of_birth')c.string('str_name','streetname',method='damerau_levenshtein',threshold=0.7)c.exact('place','placename')c.numeric('income','income',method='gauss',offset=3,scale=3,missing_value=0.5)# The comparison vectorsfeature_vectors=c.compute(candidate_links,df_a,df_b)Classify the candidate links into matching or distinct pairs based on
their comparison result with one of theclassification
algorithms.
The following code classifies candidate pairs with a Logistic Regression
classifier. This (supervised machine learning) algorithm requires
training data.logrg=recordlinkage.LogisticRegressionClassifier()logrg.fit(TRAINING_COMPARISON_VECTORS,TRAINING_PAIRS)logrg.predict(feature_vectors)The following code shows the classification of candidate pairs with the
Expectation-Conditional Maximisation (ECM) algorithm. This variant of
the Expectation-Maximisation algorithm doesn't require training data
(unsupervised machine learning).ecm=recordlinkage.ECMClassifier()ecm.fit_predict(feature_vectors)Main FeaturesThe main features of this Python record linkage toolkit are:Clean and standardise data with easy to use toolsMake pairs of records with smart indexing methods such asblockingandsorted neighbourhood indexingCompare records with a large number of comparison and similarity
measures for different types of variables such as strings, numbers
and dates.Several classifications algorithms, both supervised and unsupervised
algorithms.Common record linkage evaluation toolsSeveral built-in datasets.DocumentationThe most recent documentation and API reference can be found atrecordlinkage.readthedocs.org.
The documentation provides some basic usage examples likededuplicationandlinkingcensus data. More examples are coming soon. If you do have interesting
examples to share, let us know.InstallationThe Python Record linkage Toolkit requires Python 3.8 or higher. Install the
package easily with pippipinstallrecordlinkageThe toolkit depends on popular packages likePandas,Numpy,Scipyand,Scikit-learn. A complete list of
dependencies can be found in theinstallation
manualas well as recommended and optional dependencies.LicenseThe license for this record linkage tool is BSD-3-Clause.CitationPlease cite this package when being used in an academic context. Ensure
that the DOI and version match the installed version. Citatation styles
can be found on the publishers website10.5281/zenodo.3559042.@software{de_bruin_j_2019_3559043,
  author       = {De Bruin, J},
  title        = {{Python Record Linkage Toolkit: A toolkit for
                   record linkage and duplicate detection in Python}},
  month        = dec,
  year         = 2019,
  publisher    = {Zenodo},
  version      = {v0.14},
  doi          = {10.5281/zenodo.3559043},
  url          = {https://doi.org/10.5281/zenodo.3559043}
}Need help?Stuck on your record linkage code or problem? Any other questions? Don't
hestitate to send me an email (jonathandebruinos@gmail.com).