Reltio Connect

 View Only

Detailed Explanation of Relevance Score Calculation

  • 1.  Detailed Explanation of Relevance Score Calculation

    Posted 16 hours ago

    Hi All,

    I have hard time in understanding how reltio calculates the relevance Score in Relevance based algorithm. I have below match rule configured.

     
            {
              "uri": "configuration/entityTypes/DvaPerson/matchGroups/PatientIteration1",
              "label": "PatientIteration1",
              "type": "relevance_based",
              "scope": "ALL",
              "useOvOnly": "true",
              "rule": {
                "ignoreInToken": [
                  "configuration/entityTypes/DvaPerson/attributes/ssn4",
                  "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine2",
                  "configuration/entityTypes/DvaPerson/attributes/names/attributes/middleName",
                  "configuration/entityTypes/DvaPerson/attributes/names/attributes/suffix",
                  "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine1",
                  "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/city",
                  "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/state",
                  "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/zip",
                  "configuration/entityTypes/DvaPerson/attributes/phones/attributes/phone",
                  "configuration/entityTypes/DvaPerson/attributes/emails/attributes/email"
                ],
                "cleanse": [
                  {
                    "cleanseAdapter": "com.reltio.cleanse.impl.NameDictionaryCleanser",
                    "mappings": [
                      {
                        "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/firstName",
                        "mandatory": false,
                        "allValues": false,
                        "cleanseAttribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/firstName"
                      }
                    ]
                  }
                ],
                "matchTokenClasses": {
                  "mapping": [
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/dob",
                      "class": "com.reltio.match.token.ExactMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/ssn4",
                      "class": "com.reltio.match.token.ExactMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/phones/attributes/phone",
                      "class": "com.reltio.match.token.PhoneNumberMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/gender",
                      "class": "com.reltio.match.token.ExactMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/suffix",
                      "class": "com.reltio.match.token.ExactMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine1",
                      "class": "com.reltio.match.token.AddressLineMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine2",
                      "class": "com.reltio.match.token.AddressLineMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/zip",
                      "class": "com.reltio.match.token.ExactMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/firstName",
                      "class": "com.reltio.match.token.DoubleMetaphoneMatchToken"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/lastName",
                      "class": "com.reltio.match.token.DoubleMetaphoneMatchToken"
                    }
                  ]
                },
                "comparatorClasses": {
                  "mapping": [
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/dob",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/ssn4",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/phones/attributes/phone",
                      "class": "com.reltio.match.comparator.PhoneNumberComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/gender",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/middleName",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/suffix",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine1",
                      "class": "com.reltio.match.comparator.AddressLineComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine2",
                      "class": "com.reltio.match.comparator.AddressLineComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/state",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/city",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/zip",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/firstName",
                      "class": "com.reltio.match.comparator.DoubleMetaphoneComparator"
                    },
                    {
                      "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/lastName",
                      "class": "com.reltio.match.comparator.DoubleMetaphoneComparator"
                    }
                  ]
                },
                "and": {
                  "exact": [
                    "configuration/entityTypes/DvaPerson/attributes/dob",
                    "configuration/entityTypes/DvaPerson/attributes/ssn4",
                    "configuration/entityTypes/DvaPerson/attributes/phones/attributes/phone",
                    "configuration/entityTypes/DvaPerson/attributes/gender",
                    "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine1",
                    "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine2",
                    "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/state",
                    "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/city",
                    "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/zip",
                    "configuration/entityTypes/DvaPerson/attributes/emails/attributes/email",
                    "configuration/entityTypes/DvaPerson/attributes/names/attributes/firstName",
                    "configuration/entityTypes/DvaPerson/attributes/names/attributes/lastName"
                  ],
                  "exactOrAllNull": [
                    "configuration/entityTypes/DvaPerson/attributes/names/attributes/middleName",
                    "configuration/entityTypes/DvaPerson/attributes/names/attributes/suffix"
                  ]
                },
                "weights": [
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/firstName",
                    "weight": 0.15
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/lastName",
                    "weight": 0.15
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/middleName",
                    "weight": 0.04
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/names/attributes/suffix",
                    "weight": 0.02
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/gender",
                    "weight": 0.02
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/dob",
                    "weight": 0.12
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/ssn4",
                    "weight": 0.1
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/emails/attributes/email",
                    "weight": 0.1333
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/phones/attributes/phone",
                    "weight": 0.1333
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine1",
                    "weight": 0.0933
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/addressLine2",
                    "weight": 0.01
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/city",
                    "weight": 0.01
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/state",
                    "weight": 0.01
                  },
                  {
                    "attribute": "configuration/entityTypes/DvaPerson/attributes/addresses/attributes/zip",
                    "weight": 0.01
                  }
                ],
                "actionThresholds": [
                  {
                    "type": "potential_match",
                    "threshold": "0.63-1",
                    "label": "Strong matches"
                  },
                  {
                    "type": "potential_match",
                    "threshold": "0.4-0.63",
                    "label": "Medium matches"
                  }
                ]
              },
              "scoreStandalone": 0,
              "scoreIncremental": 0
            }
          ]
    For this match rule , i got the below response from _verifymatches. Every thing looks correct except the relevance score. 
    {
        "summary": [
            "There are common match tokens. These entities are considered as match candidates and will be checked according to the list of common applicable match rules.",
            "There are no bypassed rules for the given entity type",
            "No manually set 'not-matches' are found for the entities"
        ],
        "matchTokensSummary": {
            "firstTotal": 1,
            "secondTotal": 1,
            "common": [
                "7W6xk83rlrA="
            ]
        },
        "applicableMatchGroups": {
            "first": [
                "configuration/entityTypes/DvaPerson/matchGroups/PatientIteration1"
            ],
            "second": [
                "configuration/entityTypes/DvaPerson/matchGroups/PatientIteration1"
            ],
            "both": [
                "configuration/entityTypes/DvaPerson/matchGroups/PatientIteration1"
            ]
        },
        "candidatesDiscovery": {
            "matchGroupCandidateDiscoveries": {
                "configuration/entityTypes/DvaPerson/matchGroups/PatientIteration1": {
                    "label": "PatientIteration1",
                    "candidatesFound": true
                }
            },
            "globalCandidatesFound": true
        },
        "rules": {
            "configuration/entityTypes/DvaPerson/matchGroups/PatientIteration1": {
                "label": "PatientIteration1",
                "matched": true,
                "matchAction": "POTENTIAL_MATCH",
                "matchedByDocuments": true,
                "bypassed": false,
                "relevance": 0.5018012404154513,
                "useOvOnly": true,
                "matchTokens": {
                    "first": {
                        "foundInMatchTables": true,
                        "tokens": [
                            "7W6xk83rlrA="
                        ],
                        "tokensGenerated": 1
                    },
                    "second": {
                        "foundInMatchTables": true,
                        "tokens": [
                            "7W6xk83rlrA="
                        ],
                        "tokensGenerated": 1
                    },
                    "intersection": {
                        "tokens": [
                            "7W6xk83rlrA="
                        ]
                    }
                },
                "rule": {
                    "relevance": 0.5018012404154513,
                    "and": [
                        {
                            "relevance": 0.5018012404154513,
                            "and": [
                                {
                                    "exact": {
                                        "ssn4": {
                                            "ignoreInToken": true,
                                            "relevance": 0.0
                                        },
                                        "addresses.addressLine1": {
                                            "ignoreInToken": true,
                                            "relevance": 0.0933
                                        },
                                        "addresses.addressLine2": {
                                            "ignoreInToken": true,
                                            "relevance": 0.0
                                        },
                                        "gender": {
                                            "ignoreInToken": false,
                                            "relevance": 0.02
                                        },
                                        "dob": {
                                            "ignoreInToken": false,
                                            "relevance": 0.12
                                        },
                                        "addresses.state": {
                                            "ignoreInToken": true,
                                            "relevance": 0.01
                                        },
                                        "addresses.zip": {
                                            "ignoreInToken": true,
                                            "relevance": 0.01
                                        },
                                        "addresses.city": {
                                            "ignoreInToken": true,
                                            "relevance": 0.01
                                        },
                                        "phones.phone": {
                                            "ignoreInToken": true,
                                            "relevance": 0.0
                                        },
                                        "names.lastName": {
                                            "ignoreInToken": false,
                                            "relevance": 0.15
                                        },
                                        "emails.email": {
                                            "ignoreInToken": true,
                                            "relevance": 0.0
                                        },
                                        "names.firstName": {
                                            "ignoreInToken": false,
                                            "relevance": 0.15
                                        }
                                    },
                                    "exactOrAllNull": {
                                        "names.suffix": {
                                            "ignoreInToken": true,
                                            "relevance": 0.02
                                        },
                                        "names.middleName": {
                                            "ignoreInToken": true,
                                            "relevance": 0.04
                                        }
                                    },
                                    "relevance": 0.5018012404154513
                                }
                            ]
                        }
                    ]
                }
            }
        },
        "manualMatches": {}
    }
    I am expecting 0.63 as relevance score but it is given only 0.501801 . Based on my match rule configuration , can someone explain how the numerator and denominator value is calculated? complete attribute level score while calculating the final score?



    ------------------------------
    Vasu M
    TechLead - MDM
    ------------------------------