// MRA - Match Rating Approach для интеллектуального сравнения имён
Вычисляет числовую степень схожести между именами.
Оптимизированные коды, использующие первые 3 и последние 3 символа.
Настраивает порог в зависимости от длины имени.
Match Rating Approach (MRA) — фонетический алгоритм, разработанный компанией Western Airlines в 1977 году. Он кодирует имена, удаляя гласные (кроме первой буквы), устраняя повторяющиеся согласные и сокращая результат до 6 символов (первые 3 + последние 3, если имя длиннее). На этапе сравнения рассчитывается схожесть путём сопоставления символов с начала и конца, а порог совпадения корректируется в зависимости от суммарной длины кодов.
Шаги кодирования:
1. Удалить гласные (кроме первой)
2. Удалить повторяющиеся согласные
3. Оставить первые 3 + последние 3, если длина > 6
Примеры:
CATHERINE → CTHRN
C[a]TH[e]R[i]N[e] → CTHRN
KATHERINE → KTHRN
K[a]TH[e]R[i]N[e] → KTHRN
SMITH → SMTH
SM[i]TH → SMTH
Пороги совпадения:
Сумма ≤ 4: нужно 5 совпадений
Сумма 5–7: нужно 4 совпадения
Сумма 8–11: нужно 3 совпадения
Сумма ≥ 12: нужно 2 совпадения
CTHRN vs KTHRN:
Сумма = 10, нужно 3 совпадения
Фактически: 4 совпадения → MATCH!
Match Rating Approach (MRA) — фонетический алгоритм, разработанный Western Airlines в 1977 году для сопоставления имён пассажиров. Он объединяет этапы кодирования и сравнения и предоставляет как фонетический код, так и оценку схожести между именами.
В отличие от Soundex или Metaphone, которые выдают только коды, MRA включает сложный алгоритм сравнения, вычисляющий оценки схожести. Порог совпадения регулируется в зависимости от длины имени, что делает алгоритм более гибким и точным.
Оценка схожести — это количество совпадающих символов при сравнении двух кодов MRA с начала и конца. Минимально необходимое значение зависит от суммарной длины кодов — для коротких имён требуется более высокая степень схожести, чтобы считать их совпадением.
MRA подходит для задач, требующих тонкого сопоставления имён: клиентские базы данных, генеалогические исследования, обнаружение мошенничества и связывание записей. Особенно полезен при поиске потенциальных дубликатов с разным написанием.