Examples

Example 33.1. Deduplication

table 'input_data':
    id imie         nazwisko    ulica            nr_domu data_urodzenia kod_pocztowy plec
    1 "Joanna"      "Spyt"      "Sorkratesa"     "15"   "1985-09-24"    "86-126"     "F"
    2 "Michał"      "Jarosz"    "Sokołowska"     None   "1995-12-29"    "90-691"     "M"
    3 "Jakub"       "Sokół"     "Piaskowa"       "72"   None            "36-912"     "M"
    4 "Pola"        "Łada"      "Łąkocińska"     "79"   "1988-05-28"    "12-726"     "F"
    5 "Anastazja"   "Zborowska" "Gorlicka"       "76"   "1978-07-15"    "30-452"     "F"
    6 "Jakub"       "Zbrowski"  "Niezapominajki" None   "1977-10-08"    "48-371"     "M"
    7 "Julia"       "Jóźwiak"   "Styrska"        "57"   None            "58-855"     "F"
    8 "Aleksandra"  "Tytuła"    "Buńczuk"        "8"    "2005-07-17"    None         "F"
    9 "Joanna"      "Sprot"     "Małcużyńskiego" "94"   None            "27-237"     "F"
    10 "Mateusz"    "Saks"      "Prudnicka"      "80"   "1973-01-27"    "34-828"     "M"
    11 "Piotr"      "Przyborowski" "Biedronki"   "52"   None            "53-123"     "M"
    12 "Maja"       "Stasiak"   "Racjonalizacji" "37"   None            "01-344"     "F"
    # duplicates
    13 "Joana"      "Spyd"      "Sorkratesa"     "15"   "1985-09-25"    "86-126"     "F"
    14 "Micał"      "Jalosz"    "Sokolowska"     None   "1995-12-29"    "90-691"     "M"
    15 "akub"       "Sokol"     "Pieskowa"       "72"   None            "36-912"     "M"

inputTable = 'input_data'
pd = PhysicalData(inputTable)
outputTable = inputTable + "_out"


#------ algorithm settings ------
as = WeightedMatchingAlgorithmSettings()
as.cutOff = 3.0
as.setIgnoreNullsInGroup(0)
as.setCaseSensitive(0)

#------ function settings ------
fs = WeightedMatchingFunctionSettings()
fs.setAlgorithmSettings(as)
fs.setLogicalData(LogicalData(pd))
fs.getAttributeUsageSet().getAttribute('id').setUsage(MatchingUsage.id)
fs.getAttributeUsageSet().getAttribute('plec').setUsage(MatchingUsage.block)


#------ mining task ------
mt = MatchingTask()
mt.setTarget(DataObjectSet(outputTable))
mt.setPhysicalDataName(inputTable+'_pd')
mt.setMatchingFunctionSettingsName(inputTable+'_fs')


save(inputTable+'_pd', pd)
save(inputTable + '_fs', fs)
save(inputTable+'_mt', mt)

execute(inputTable + '_mt')

print 'Done'
from specialized.dataquality import *
matching_results(inputTable + '_mt', inputTable)
    

This script creates an Excel spreadsheet report.