11
АЛГОРИТМЫ ОПРЕДЕЛЕНИЯ СХОЖЕСТИ ДАННЫХ Похож ли? Горбач Александр +7 914 192 10 56 [email protected] Специально для DersuDev #1

Рассказ об алгоритмах определения похожести данных

Embed Size (px)

Citation preview

Page 1: Рассказ об алгоритмах определения похожести данных

АЛГОРИТМЫ ОПРЕДЕЛЕНИЯ СХОЖЕСТИ ДАННЫХПохож ли?

Горбач Александр

+7 914 192 10 56

[email protected]

Специально для DersuDev #1

Page 2: Рассказ об алгоритмах определения похожести данных

Практическая ценность - нормализация данных - поиск среди заведомо ошибочных данных

- слияние баз данных- приём данных из разнородных систем- корректировка введённых человеком данных

Page 3: Рассказ об алгоритмах определения похожести данных

Детерменистический алгоритм

Это КИТ?

Первая буква К Вторая буква И Третья буква Т Есть ли ещё буквы

ЭТО КИТ!Это точно не КОТ! Похож на КОТа! Вообще не понятно что это

Вторая буква О Третья буква Т

Это КОТЭто точно не КОТ! Это точно не КОТ!

Page 4: Рассказ об алгоритмах определения похожести данных

Алгоритмы сравнения посимвольно

Winkler◦ Смотрит на порядок общих символов двух строк. Добавляет дополнительный вес строкам у которых

более четырёх одинаковых символов подрядJaro◦ Аналогичен Winkler, но не добавляет дополнительного веса. Хорош для коротких строк.Hamming◦ Подсчитывает количество символов, которые нужно изменить, чтобы из одной строки получить другую.

Строки должны быть одинаковой длиныEdit (Levenshtein)◦ Подсчитывает количество одно-символьных правок (удаление, вставка и т.п.), необходимых, чтобы

одна строка превратилась в другую.Editex◦ Подсчитывает отношения количества совпадающих биграмм (2-х символьных подстрок) к общему

количеству биграмм.

Page 5: Рассказ об алгоритмах определения похожести данных

Посмотрим что получается. f(“К О Т”,”К И Т”)

Jaro-Winkler: dj=1/3(3/3+3/3+(3-0.5)/3)= 0,944(4)Hamming: 1Levenstein: 1Editex: 0

Page 6: Рассказ об алгоритмах определения похожести данных

Сравнение по звучанию …Так вот спрашиваю: как по-украински «кот»? Он отвечает «кит». Спрашиваю: «А как кит?» А он остановился, вытаращил глаза и молчит. И теперь не кланяется….

Белая Гвардия, Булгаков М.А.

Page 7: Рассказ об алгоритмах определения похожести данных

Soundex Первая буква сохраняется

В остальной части слова:◦ Буквы, обозначающие, как правило, гласные звуки: a, e, h, i, o, u, w и y — отбрасываются◦ Оставшиеся буквы (согласные) заменяются на цифры от 1 до 6, причём похожим по звучанию буквам соответствуют одинаковые цифры:

◦ 1: b, f, p, v◦ 2: c, g, j, k, q, s, x, z◦ 3: d, t◦ 4: l◦ 5: m, n◦ 6: r

◦ Любая последовательность одинаковых цифр сокращается до одной такой цифры.

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

Примеры:

аmmonium → ammnm → a5555 → a5 → a500

implementation → implmnttn → i51455335 → i514535 → i514

Page 8: Рассказ об алгоритмах определения похожести данных

Metaphone Первая версия

Индексирование слов по их звучанию с учётом основных правил английского произношения. На выходе алгоритм даёт ключи переменной длины, в отличие от алгоритма Soundex, который генерирует ключи с фиксированной длиной. Из схожих по звучанию слов получаются одинаковые ключи.

Вторая версия

Учитывает особенности транскрипции с помощью букв латинского алфавита некоторых других языков

Третья версия

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

Page 9: Рассказ об алгоритмах определения похожести данных

Посмотрим что получается с другой стороны. f(“К О Т”,”К И Т”) Soundex:

КОТ = KT = K3 КИТ = КТ = К3

Page 10: Рассказ об алгоритмах определения похожести данных

Зачем вообще это надо? Объединение записей баз данных - Финансы - Медицина - PRISM

Page 11: Рассказ об алгоритмах определения похожести данных

Спасибо за внимание!Вопросы?