Interested Article - Сходство Джаро — Винклера

В области информатики и статистики сходство Джаро — Винклера представляет собой * для измерения расстояния между двумя последовательностями символов. Это вариант, который в 1999 году предложил Уильям Э. Винклер (William E. Winkler) на основе расстояния Джаро (1989, Мэтью А. Джаро, Matthew A. Jaro). Неформально, расстояние Джаро между двумя словами — это минимальное число односимвольных преобразований, которое необходимо для того, чтобы изменить одно слово в другое.

Чем меньше расстояние Джаро — Винклера d w {\displaystyle d_{w}} для двух строк, тем больше сходства имеют эти строки друг с другом. Результат нормируется, так что d w = 0 {\displaystyle d_{w}=0} означает отсутствие сходства, а d w = 1 {\displaystyle d_{w}=1} — точное совпадение. Сходство Джаро — Винклера равно 1 d w {\displaystyle 1-d_{w}} .

Определение

Расстояние Джаро

Расстояние Джаро d j {\displaystyle d_{j}} между двумя заданными строками s 1 {\displaystyle s_{1}} и s 2 {\displaystyle s_{2}} это:

d j = { 0 когда m = 0 1 3 ( m | s 1 | + m | s 2 | + m t m ) в остальных случаях {\displaystyle d_{j}=\left\{{\begin{array}{l l}0&{\text{когда }}m=0\\{\frac {1}{3}}\left({\frac {m}{|s_{1}|}}+{\frac {m}{|s_{2}|}}+{\frac {m-t}{m}}\right)&{\text{в остальных случаях}}\end{array}}\right.}

Где:

  • | s i | {\displaystyle |s_{i}|} — длина строки s i {\displaystyle s_{i}} ;
  • m {\displaystyle m} — число совпадающих символов (см. ниже);
  • t {\displaystyle t} — половина числа транспозиций (см. ниже).

Два символа из s 1 {\displaystyle s_{1}} и s 2 {\displaystyle s_{2}} соответственно, считаются совпадающими только если они одинаковы и не дальше, чем max ( | s 1 | , | s 2 | ) 2 1 {\displaystyle \left\lfloor {\frac {\max(|s_{1}|,|s_{2}|)}{2}}\right\rfloor -1} .

Каждый символ строки s 1 {\displaystyle s_{1}} сравнивается со всеми соответствующими ему символами в s 2 {\displaystyle s_{2}} . Количество совпадающих (но отличающихся порядковыми номерами) символов, которое делится на 2, определяет число транспозиций . Например, при сравнении слова CRATE со словом TRACE, только 'R' 'A' и 'Е' являются совпадающими символами, то есть m=3. Хотя 'C' и 'T' появляются в обоих строках, они дальше, чем на 1, то есть floor(5/2)-1=1. Следовательно, t=0 . В сравнении DwAyNE с DuANE соответствующие буквы находятся уже в том же самом порядке D-A-N-E, так что никаких перестановок не требуется.

Расстояние Джаро — Винклера

Расстояние Джаро — Винклера использует коэффициент масштабирования p {\displaystyle p} , что дает более благоприятные рейтинги строкам, которые совпадают друг с другом от начала до определённой длины {\displaystyle \ell } , которая называется префиксом. Даны две строки s 1 {\displaystyle s_{1}} и s 2 {\displaystyle s_{2}} . Их расстояние Джаро — Винклера d w {\displaystyle d_{w}} это:

d w = d j + ( p ( 1 d j ) ) {\displaystyle d_{w}=d_{j}+(\ell p(1-d_{j}))}

где:

  • d j {\displaystyle d_{j}} — расстояние Джаро для строк s 1 {\displaystyle s_{1}} и s 2 {\displaystyle s_{2}}
  • {\displaystyle \ell } — длина общего префикса от начала строки до максимума 4-х символов
  • p {\displaystyle p} — постоянный коэффициент масштабирования, использующийся для того, чтобы скорректировать оценку в сторону повышения для выявления наличия общих префиксов. p {\displaystyle p} не должен превышать 0,25, поскольку в противном случае расстояние может стать больше, чем 1. Стандартное значение этой константы в работе Винклера: p = 0.1 {\displaystyle p=0.1} .

Хотя расстояние Джаро-Винклера часто называют метрикой расстояния , это не метрика в математическом смысле этого слова, потому что оно не подчиняется неравенству треугольника . Также расстояние Джаро-Винклера не удовлетворяет аксиоме, которая гласит, что d ( x , y ) = 0 x = y {\displaystyle d(x,y)=0\leftrightarrow x=y} .

В некоторых реализациях алгоритма расчёта расстояния Джаро — Винклера префиксный бонус p ( 1 d j ) {\displaystyle \ell p(1-d_{j})} добавляется, только если сравниваемые строки имеют расстояние Джаро выше установленного «порога усиления» b t {\displaystyle b_{t}} . Порог в реализации Винклера составил 0,7.

d w = { d j если d j < b t d j + ( p ( 1 d j ) ) в остальных случаях {\displaystyle d_{w}=\left\{{\begin{array}{l l}d_{j}&{\text{если }}d_{j}<b_{t}\\d_{j}+(\ell p(1-d_{j}))&{\text{в остальных случаях}}\end{array}}\right.}

Примеры

Следует отметить, что написанный Винклером программный код на языке программирования C различается по крайней мере в двух местах от опубликованных работ по метрике Джаро — Винклера. Первое — это его использование таблицы опечаток (adjwt), а второе — это некоторые дополнительные условия для длинных строк.

Пример 1

Даны строки s 1 {\displaystyle s_{1}} MARTHA и s 2 {\displaystyle s_{2}} MARHTA. Представим их пересечение в табличном виде:

M A R T H A
M 1 0 0 0 0 0
A 0 1 0 0 0 0
R 0 0 1 0 0 0
H 0 0 0 0 1 0
T 0 0 0 1 0 0
A 0 0 0 0 0 1

Здесь максимальное расстояние составляет 6/2 — 1 = 2. В желтых ячейках приведенной таблицы указаны единицы, когда символы идентичны (имеется совпадение), и нули в противном случае.

Получается:

  • m = 6 {\displaystyle m=6}
  • | s 1 | = 6 {\displaystyle |s_{1}|=6}
  • | s 2 | = 6 {\displaystyle |s_{2}|=6}
  • Есть несовпадающие символы T/H и Н/Т, в результате: t = 2 2 = 1 {\displaystyle t={\frac {2}{2}}=1}

Расстояние Джаро:

d j = 1 3 ( 6 6 + 6 6 + 6 1 6 ) = 0.9 ( 4 ) {\displaystyle d_{j}={\frac {1}{3}}\left({\frac {6}{6}}+{\frac {6}{6}}+{\frac {6-1}{6}}\right)=0.9(4)}

Чтобы найти результат Джаро — Винклера с помощью стандартного веса p = 0.1 {\displaystyle p=0.1} мы продолжаем искать:

= 3 {\displaystyle \ell =3}

Таким образом:

d w = 0.9 ( 4 ) + ( 3 0.1 ( 1 0.9 ( 4 ) ) ) = 0.96 ( 1 ) {\displaystyle d_{w}=0.9(4)+(3\cdot 0.1(1-0.9(4)))=0.96(1)}

Пример 2

Даны строки s 1 {\displaystyle s_{1}} DWAYNE и s 2 {\displaystyle s_{2}} DUANE. Получается:

  • m = 4 {\displaystyle m=4}
  • | s 1 | = 6 {\displaystyle |s_{1}|=6}
  • | s 2 | = 5 {\displaystyle |s_{2}|=5}
  • t = 2 2 = 1 {\displaystyle t={\frac {2}{2}}=1}

Расстояние Джаро:

d j = 1 3 ( 4 6 + 4 5 + 4 1 4 ) = 0.73 ( 8 ) {\displaystyle d_{j}={\frac {1}{3}}\left({\frac {4}{6}}+{\frac {4}{5}}+{\frac {4-1}{4}}\right)=0.73(8)}

Чтобы найти результат Джаро-Винклера с помощью стандартного веса p = 0.1 {\displaystyle p=0.1} мы продолжаем искать:

= 1 {\displaystyle \ell =1}

Таким образом:

d w = 0.73 ( 8 ) + ( 1 0.1 ( 1 0.73 ( 8 ) ) ) = 0.765 {\displaystyle d_{w}=0.73(8)+(1\cdot 0.1(1-0.73(8)))=0.765}

Пример 3

Даны строки s 1 {\displaystyle s_{1}} DIXON и s 2 {\displaystyle s_{2}} DICKSONX . Получается:

D I X O N
D 1 0 0 0 0
I 0 1 0 0 0
C 0 0 0 0 0
K 0 0 0 0 0
S 0 0 0 0 0
O 0 0 0 1 0
N 0 0 0 0 1
X 0 0 0 0 0

Здесь закрашенные клетки — это окно соответствия для каждого символа. Единицы в ячейке указывает на совпадение. Заметим, что два икса (X) не считаются совпавшими, поскольку они находятся за пределами третьего окна совпадения.

  • m = 4 {\displaystyle m=4}
  • | s 1 | = 5 {\displaystyle |s_{1}|=5}
  • | s 2 | = 8 {\displaystyle |s_{2}|=8}
  • t = 2 2 = 1 {\displaystyle t={\frac {2}{2}}=1}

Расстояние Джаро:

d j = 1 3 ( 4 5 + 4 8 + 4 1 4 ) = 0.68 ( 3 ) {\displaystyle d_{j}={\frac {1}{3}}\left({\frac {4}{5}}+{\frac {4}{8}}+{\frac {4-1}{4}}\right)=0.68(3)}

Чтобы найти результат Джаро-Винклера с помощью стандартного веса p = 0.1 {\displaystyle p=0.1} мы продолжаем искать:

= 2 {\displaystyle \ell =2}

Таким образом:

d w = 0.68 ( 3 ) + ( 2 0.1 ( 1 0.68 ( 3 ) ) ) = 0.74 ( 6 ) {\displaystyle d_{w}=0.68(3)+(2\cdot 0.1(1-0.68(3)))=0.74(6)}

Отношения с другими метриками изменения расстояния

Есть и другие популярные меры изменения расстояния, которые рассчитываются с использованием другого набора допустимых операций редактирования. Например,

Изменение расстояния обычно определяется как параметризуемая метрика, вычисленная с помощью определённого набора допустимых операций редактирования, и каждой операции присваивается стоимость (возможно, бесконечная). Это является дальнейшим обобщением генетических алгоритмов выравнивания последовательностей , таких, как алгоритм Смита-Ватермана , которые делают стоимость операции зависящей от того, где она применяется.

Практическое применение

  • Алгоритм Джаро-Винклера использовался для обработки результатов переписи населения .
  • Алгоритм сравнения строк Джаро — Винклера реализован в СУБД Oracle .

Реализации алгоритма на различных языках программирования

Примечания

  1. (неопр.) . Дата обращения: 21 марта 2017. 31 декабря 2019 года.
  2. (неопр.) . Дата обращения: 21 марта 2017. 22 марта 2017 года.
  3. (неопр.) . Дата обращения: 21 марта 2017. 12 января 2017 года.
  4. (неопр.) . Дата обращения: 23 февраля 2011. Архивировано из 23 февраля 2011 года.
  5. от 22 марта 2017 на Wayback Machine (фр.)
  6. (англ.)

Ссылки

  • Cohen, W. W. (англ.) // KDD Workshop on Data Cleaning and Object Consolidation : journal. — 2003. — Vol. 3 . — P. 73—8 .
  • Jaro, M. A. Advances in record linkage methodology as applied to the 1985 census of Tampa Florida (англ.) // Journal of the American Statistical Association : journal. — 1989. — Vol. 84 , no. 406 . — P. 414—420 . — doi : .
  • Jaro, M. A. Probabilistic linkage of large public health data file (англ.) // Statistics in Medicine : journal. — 1995. — Vol. 14 , no. 5—7 . — P. 491—498 . — doi : . — .
  • Winkler, W. E. (англ.) // Proceedings of the Section on Survey Research Methods : journal. — American Statistical Association, 1990. — P. 354—359 . 13 февраля 2015 года.
  • William E. Winkler. (англ.) // Research Report Series, RRS : journal. — 2006. 4 сентября 2021 года.

Same as Сходство Джаро — Винклера