Вам нужно будет создать пользовательский класс, который наследует «BaseCompareFeature», а затем добавить метод к классу с именем _compute_vectorized (self, s1, s2). Только тогда Record Linkage примет ее в качестве допустимой пользовательской функции
Пример кода:
импорт recordlinkage как rl из recordlinkage.base import BaseCompareFeature
класс CompareZipCodes (BaseCompareFeature):
def __init__(self, left_on, right_on, partial_sim_value, *args, **kwargs):
super(CompareZipCodes, self).__init__(left_on, right_on, *args, **kwargs)
self.partial_sim_value = partial_sim_value
def _compute_vectorized(self, s1, s2):
"""Compare zipcodes.
If the zipcodes in both records are identical, the similarity
is 0. If the first two values agree and the last two don't, then
the similarity is 0.5. Otherwise, the similarity is 0.
"""
# check if the zipcode are identical (return 1 or 0)
sim = (s1 == s2).astype(float)
# check the first 2 numbers of the distinct comparisons
sim[(sim == 0) & (s1.str[0:2] == s2.str[0:2])] = self.partial_sim_value
return sim