public static List <DataObjects.column_match_m_u> transposeBlockMatch(Blocks.blocking_match blockMatch, List <string> matchColumns, IDictionary <String, DataObjects.parameter> parameters) { var colMatchMU = new List <DataObjects.column_match_m_u>(); foreach (string colName in matchColumns) { var newMMU = new DataObjects.column_match_m_u(); newMMU.columnName = colName; PropertyInfo pI = blockMatch.GetType().GetProperty(colName); int val = (int)pI.GetValue(blockMatch, null); newMMU.match = (double)val; newMMU.m_prob = parameters[colName].column_m; newMMU.u_prob = parameters[colName].column_u; colMatchMU.Add(newMMU); } return(colMatchMU); }
public static List <Blocks.blocking_match> blockMatches() { var block_matches = new List <Blocks.blocking_match> (); var block_match_1 = new Blocks.blocking_match(); block_match_1.person_unique_entity_id_1 = "A"; block_match_1.person_unique_entity_id_2 = "B"; block_match_1.person_first_name = 1; block_match_1.person_last_name = 1; block_match_1.person_dob_day = 1; block_match_1.person_dob_month = 1; block_match_1.person_dob_year = 1; block_match_1.person_fips_5 = 1; block_matches.Add(block_match_1); var block_match_2 = new Blocks.blocking_match(); block_match_2.person_unique_entity_id_1 = "C"; block_match_2.person_unique_entity_id_2 = "D"; block_match_2.person_first_name = 0; block_match_2.person_last_name = 1; block_match_2.person_dob_day = 1; block_match_2.person_dob_month = 1; block_match_2.person_dob_year = 1; block_match_2.person_fips_5 = 0; block_matches.Add(block_match_2); var block_match_3 = new Blocks.blocking_match(); block_match_3.person_unique_entity_id_1 = "E"; block_match_3.person_unique_entity_id_2 = "F"; block_match_3.person_first_name = 1; block_match_3.person_last_name = 0; block_match_3.person_dob_day = 1; block_match_3.person_dob_month = 1; block_match_3.person_dob_year = 1; block_match_3.person_fips_5 = 1; block_matches.Add(block_match_3); return(block_matches); }
public static List <Blocks.blocking_match> MakeBlockingMatches(IEnumerable <DataObjects.person_identifiers_pair> pairs, List <string> matchFields) { var jw = new JaroWinkler(); var matchVectors = new ConcurrentBag <Blocks.blocking_match>(); Parallel.ForEach(pairs, pair => { var matchVector = new Blocks.blocking_match(); matchVector.person_unique_entity_id_1 = pair.person_identifiers_1.person_unique_entity_id; matchVector.person_unique_entity_id_2 = pair.person_identifiers_2.person_unique_entity_id; matchVector.person_first_name = matchFields.Contains("person_first_name") && jw.GetSimilarity(pair.person_identifiers_1.person_first_name, pair.person_identifiers_2.person_first_name) > .90 ? 1 : 0; matchVector.person_middle_names = matchFields.Contains("person_middle_names") && jw.GetSimilarity(pair.person_identifiers_1.person_middle_names, pair.person_identifiers_2.person_middle_names) > .9 ? 1 : 0; matchVector.person_last_name = matchFields.Contains("person_last_name") && jw.GetSimilarity(pair.person_identifiers_1.person_last_name, pair.person_identifiers_2.person_last_name) > .90 ? 1 : 0; matchVector.person_dob_day = matchFields.Contains("person_dob_day") && Int16.Parse(pair.person_identifiers_1.person_dob_day) == Int16.Parse(pair.person_identifiers_2.person_dob_day) ? 1 : 0; matchVector.person_dob_month = matchFields.Contains("person_dob_month") && Int16.Parse(pair.person_identifiers_1.person_dob_month) == Int16.Parse(pair.person_identifiers_2.person_dob_month) ? 1 : 0; matchVector.person_dob_year = matchFields.Contains("person_dob_year") && Int16.Parse(pair.person_identifiers_1.person_dob_year) == Int16.Parse(pair.person_identifiers_2.person_dob_year) ? 1 : 0; matchVector.person_gender = matchFields.Contains("person_gender") && pair.person_identifiers_1.person_gender == pair.person_identifiers_2.person_gender ? 1 : 0; matchVector.person_fips_5 = matchFields.Contains("person_fips_5") && pair.person_identifiers_1.person_fips_5 == pair.person_identifiers_2.person_fips_5 ? 1 : 0; matchVector.person_email = matchFields.Contains("person_email") && pair.person_identifiers_1.person_email == pair.person_identifiers_2.person_email ? 1 : 0; matchVector.person_phone = matchFields.Contains("person_phone") && pair.person_identifiers_1.person_phone == pair.person_identifiers_2.person_phone ? 1 : 0; matchVector.person_match_id_1 = matchFields.Contains("person_match_id_1") && pair.person_identifiers_1.person_match_id_1 == pair.person_identifiers_2.person_match_id_1 ? 1 : 0; matchVector.person_match_id_2 = matchFields.Contains("person_match_id_2") && pair.person_identifiers_1.person_match_id_2 == pair.person_identifiers_2.person_match_id_2 ? 1 : 0; matchVector.person_match_id_3 = matchFields.Contains("person_match_id_3") && pair.person_identifiers_1.person_match_id_3 == pair.person_identifiers_2.person_match_id_3 ? 1 : 0; matchVector.person_identifiers_pair.person_identifiers_1 = pair.person_identifiers_1; matchVector.person_identifiers_pair.person_identifiers_2 = pair.person_identifiers_2; matchVectors.Add(matchVector); }); return(matchVectors.ToList <Blocks.blocking_match>()); }