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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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>());
        }