Технологии хранения и обработки больших объёмов...

71
Big Data’15 Лекция VIII: поиск похожих документов Дмитрий Барашев [email protected] Computer Science Center 7 апреля 2015 1/48

Upload: cs-center

Post on 18-Jul-2015

393 views

Category:

Documents


2 download

TRANSCRIPT

Big Data’15Лекция VIII: поиск похожих документов

Дмитрий Барашев[email protected]

Computer Science Center

7 апреля 2015

1/48

Этот материал распространяется под лицензией

Creative Commons ”Attribution - Share Alike” 3.0http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru

сверстано в онлайн LATEX редакторе

Pa

peeriapapeeria.com

2/48

Сегодня в программе

Схожесть объектов

Покрытие текста перекрывающимися n-граммами

Понижение размерности множества

Пространственно чувствительное хеширование

3/48

Сегодня в программе

Схожесть объектов

Покрытие текста перекрывающимися n-граммами

Понижение размерности множества

Пространственно чувствительное хеширование

4/48

О задаче

▶ Часто нужно найти «почти похожие» объекты

▶ Что такое «похожие»?▶ Что такое «почти»?▶ Как быть, если много признаков?▶ Как быть, если много объектов?

5/48

О задаче

▶ Часто нужно найти «почти похожие» объекты▶ Что такое «похожие»?▶ Что такое «почти»?▶ Как быть, если много признаков?▶ Как быть, если много объектов?

5/48

Схожесть множеств: коэффициентЖаккара

▶ Для абстрактных множеств есть простая мерасхожести: коэффициент Жаккара

J(A,B) = |A ∩ B||A ∪ B|

▶ Очевидно, J(A,B) = 0 если множества непересекаются и J(A,B) = 1 если они равны

6/48

Возможные применения к текстовымдокументам

▶ Выявление плагиата. Плагиатор может:▶ переставлять слова▶ заменять некоторые слова на синонимы(например белый шоколад на российскаяговядина)

▶ копировать, наконец, не бессовестно всё, а лишьчастями!

▶ но это его не спасет▶ Страницы-зеркала.

▶ почти идентичны, но немного отличаются▶ поисковики предпочли бы показывать толькоодну (например с наибольшим статическимрангом)

▶ то же самое применимо к распространениюновостей по новостным сайтам

▶ Поиск дубликатов в коде▶ DRY

7/48

Возможные применения к текстовымдокументам

▶ Выявление плагиата. Плагиатор может:▶ переставлять слова▶ заменять некоторые слова на синонимы(например белый шоколад на российскаяговядина)

▶ копировать, наконец, не бессовестно всё, а лишьчастями!

▶ но это его не спасет

▶ Страницы-зеркала.▶ почти идентичны, но немного отличаются▶ поисковики предпочли бы показывать толькоодну (например с наибольшим статическимрангом)

▶ то же самое применимо к распространениюновостей по новостным сайтам

▶ Поиск дубликатов в коде▶ DRY

7/48

Возможные применения к текстовымдокументам

▶ Выявление плагиата. Плагиатор может:▶ переставлять слова▶ заменять некоторые слова на синонимы(например белый шоколад на российскаяговядина)

▶ копировать, наконец, не бессовестно всё, а лишьчастями!

▶ но это его не спасет▶ Страницы-зеркала.

▶ почти идентичны, но немного отличаются▶ поисковики предпочли бы показывать толькоодну (например с наибольшим статическимрангом)

▶ то же самое применимо к распространениюновостей по новостным сайтам

▶ Поиск дубликатов в коде▶ DRY

7/48

Возможные применения к текстовымдокументам

▶ Выявление плагиата. Плагиатор может:▶ переставлять слова▶ заменять некоторые слова на синонимы(например белый шоколад на российскаяговядина)

▶ копировать, наконец, не бессовестно всё, а лишьчастями!

▶ но это его не спасет▶ Страницы-зеркала.

▶ почти идентичны, но немного отличаются▶ поисковики предпочли бы показывать толькоодну (например с наибольшим статическимрангом)

▶ то же самое применимо к распространениюновостей по новостным сайтам

▶ Поиск дубликатов в коде▶ DRY

7/48

Вычисление коэффициента Жаккара

▶ Наивный способ: рассмотреть декартовопроизведение множеств

▶ если множеств много, и большинство непересекаются, то КПД невелик

▶ Оставшаяся часть лекции посвященаповышению КПД

8/48

Вычисление в три итерации Map-Reduce

▶ На первой итерации построим спискивхождений для каждого элемента:

map(S) → (tj,S) ∀tj ∈ S

9/48

Вычисление в три итерации Map-Reduce

▶ На второй итерации мап построит декартовопроизведение документов для каждого списка,а свертка для каждой пары документов снепустым пересечением посчитает размерпересечения

map(list(t)) → (Si,Sj) ∀Si,Sj ∈ list(t)

reduce(Sk,Ubag = {Sj}) → (Sk, {Sj : 1Ubag(Sj)})

▶ В результате получим для каждого множествасписок пересекающихся множеств и размерпересечения

10/48

Вычисление в три итерации Map-Reduce

▶ На третьей итерации надо посчитать размеркаждого исходного множества и посчитатькоэффициент Жаккара:

J(S1,S2) =|S1 ∩ S2|

|S1|+ |S2| − |S1 ∩ S2|

11/48

Коэффициент Жаккара длямультимножеств

▶ Вычисляется так же, с учетом семантикиопераций

▶ |A| =∑1A(x)

▶ 1A∩B(x) =min(1A(x),1B(x))▶ 1A∪B(x) =max(1A(x),1B(x))

▶ другой вариант: 1A⊎B(x) = 1A(x) + 1B(x)▶ где 1A(x) – кардинальность x в A

J({a,b, c, c}, {a,a, c, c, c, c}) = |{a, c, c}||{a,a,b, c, c, c, c}| =

3

7

12/48

Сегодня в программе

Схожесть объектов

Покрытие текста перекрывающимися n-граммами

Понижение размерности множества

Пространственно чувствительное хеширование

13/48

Элементы текстового документа

▶ Для вычисления коэффициента Жаккара нужноопределить «элемент»

▶ Символы? а, б, в, …

▶ скорее всего тогда все документы будут оченьпохожи

▶ съешь ещё этих мягких французских булок давыпей же чаю

▶ южно-эфиопский грач увёл мышь за хобот насъезд ящериц

14/48

Элементы текстового документа

▶ Для вычисления коэффициента Жаккара нужноопределить «элемент»

▶ Символы? а, б, в, …▶ скорее всего тогда все документы будут оченьпохожи

▶ съешь ещё этих мягких французских булок давыпей же чаю

▶ южно-эфиопский грач увёл мышь за хобот насъезд ящериц

14/48

Элементы текстового документа

▶ Для вычисления коэффициента Жаккара нужноопределить «элемент»

▶ Символы? а, б, в, …▶ скорее всего тогда все документы будут оченьпохожи

▶ съешь ещё этих мягких французских булок давыпей же чаю

▶ южно-эфиопский грач увёл мышь за хобот насъезд ящериц

14/48

Элементы текстового документа

▶ Символьные n-граммы?съ, ъе, еш, шь, ещ, щё, …

▶ в общем-то неплохо, осталось выбрать n

▶ если n мало то разные документы все равнобудут похожи, учитывая неравную вероятностьпоявления n-грамм

▶ если n велико то наоборот, вероятностьвстретить одинаковые n-граммы в разныхдокументах резко падает

▶ хотя конечно остается ненулевой: слово – этотоже n-грамма и одинаковые слова в разныхдокументах точно есть

15/48

Элементы текстового документа▶ Символьные n-граммы?съ, ъе, еш, шь, ещ, щё, …

▶ в общем-то неплохо, осталось выбрать n▶ если n мало то разные документы все равнобудут похожи, учитывая неравную вероятностьпоявления n-грамм

▶ если n велико то наоборот, вероятностьвстретить одинаковые n-граммы в разныхдокументах резко падает

▶ хотя конечно остается ненулевой: слово – этотоже n-грамма и одинаковые слова в разныхдокументах точно есть

15/48

Элементы текстового документа

▶ Символьные n-граммы?съ, ъе, еш, шь, ещ, щё, …

▶ в общем-то неплохо, осталось выбрать n▶ если n мало то разные документы все равнобудут похожи, учитывая неравную вероятностьпоявления n-грамм

▶ если n велико то наоборот, вероятностьвстретить одинаковые n-граммы в разныхдокументах резко падает

▶ хотя конечно остается ненулевой: слово – этотоже n-грамма и одинаковые слова в разныхдокументах точно есть

15/48

Элементы текстового документа

▶ Символьные n-граммы?съ, ъе, еш, шь, ещ, щё, …

▶ в общем-то неплохо, осталось выбрать n▶ если n мало то разные документы все равнобудут похожи, учитывая неравную вероятностьпоявления n-грамм

▶ если n велико то наоборот, вероятностьвстретить одинаковые n-граммы в разныхдокументах резко падает

▶ хотя конечно остается ненулевой: слово – этотоже n-грамма и одинаковые слова в разныхдокументах точно есть

15/48

Shingling▶ Процесс превращения текста вперекрывающиеся n-граммы называетсяshingling

▶ Shingle - дранка, деревянная дощечка, сперекрытиями укладываемая на кровлю.

▶ Shingling – замечательная метафора без точногокороткого перевода

16/48

Кольчужное покрытие текста

▶ Наш ответ супостатам

17/48

Кстати о словах

▶ Слово – прекрасная лексическая единица

▶ Почему бы не делать n-граммы из слов?▶ съешь ещё, ещё этих, этих мягких, мягкихфранцузских

▶ Пространство становится очень большим, нозато смысла появляется больше

▶ Можно даже брать нормализованныесловоформы (stemming)

▶ и даже, возможно, синонимы

18/48

Кстати о словах

▶ Слово – прекрасная лексическая единица▶ Почему бы не делать n-граммы из слов?▶ съешь ещё, ещё этих, этих мягких, мягкихфранцузских

▶ Пространство становится очень большим, нозато смысла появляется больше

▶ Можно даже брать нормализованныесловоформы (stemming)

▶ и даже, возможно, синонимы

18/48

Кстати о словах

▶ Слово – прекрасная лексическая единица▶ Почему бы не делать n-граммы из слов?▶ съешь ещё, ещё этих, этих мягких, мягкихфранцузских

▶ Пространство становится очень большим, нозато смысла появляется больше

▶ Можно даже брать нормализованныесловоформы (stemming)

▶ и даже, возможно, синонимы

18/48

И кстати о смысле

▶ Покрытие не зря кольчужное

▶ Триграммы «желтая подводная лодка» и «встепях Украины» вполне обычные

▶ а вот дополнение их связующими подводнаялодка в, лодка в степях сделают документдовольно уникальным и повысят точностьопределения схожести

19/48

И кстати о смысле

▶ Покрытие не зря кольчужное▶ Триграммы «желтая подводная лодка» и «встепях Украины» вполне обычные

▶ а вот дополнение их связующими подводнаялодка в, лодка в степях сделают документдовольно уникальным и повысят точностьопределения схожести

19/48

Снижение объемов данных

▶ Размер кольчужного покрытия равен O(N) где N- количество элементов

▶ Делаем символьные 9-граммы – получаем 9×N▶ Можно ли уменьшить количество данных?

20/48

Снижение объемов данных

▶ Будем хешировать 9-граммы в int32▶ В чем разница между хешированными9-граммами и 4-граммами?

▶ 4-граммы распределены неравномерно и будутзаполнять пространство int32 неравномерно

▶ 9-граммы тоже не равновероятны, но хеш их,предположительно, равномерно разбросает по 4байтам

21/48

Снижение объемов данных

▶ Будем хешировать 9-граммы в int32▶ В чем разница между хешированными9-граммами и 4-граммами?

▶ 4-граммы распределены неравномерно и будутзаполнять пространство int32 неравномерно

▶ 9-граммы тоже не равновероятны, но хеш их,предположительно, равномерно разбросает по 4байтам

21/48

Построение предвзятого покрытия

▶ Часто искомые дубликаты окружены горамимусора

▶ реклама, навигация, копирайты, вот это все

▶ Если нам что-то известно про структуруосмысленного текста то можно это знаниеиспользовать

▶ Например мы можем брать только N-граммы,начинающиеся или заканчивающиеся словом сбольшой буквы. Обоснование: в тексте,проходящем через журналиста, редактора икорректора предложения, скорее всего, будутоформлены по правилам.

▶ а уж в каментах как кому в голову взбредет

22/48

Построение предвзятого покрытия

▶ Часто искомые дубликаты окружены горамимусора

▶ реклама, навигация, копирайты, вот это все▶ Если нам что-то известно про структуруосмысленного текста то можно это знаниеиспользовать

▶ Например мы можем брать только N-граммы,начинающиеся или заканчивающиеся словом сбольшой буквы. Обоснование: в тексте,проходящем через журналиста, редактора икорректора предложения, скорее всего, будутоформлены по правилам.

▶ а уж в каментах как кому в голову взбредет

22/48

Построение предвзятого покрытия

▶ Часто искомые дубликаты окружены горамимусора

▶ реклама, навигация, копирайты, вот это все▶ Если нам что-то известно про структуруосмысленного текста то можно это знаниеиспользовать

▶ Например мы можем брать только N-граммы,начинающиеся или заканчивающиеся словом сбольшой буквы. Обоснование: в тексте,проходящем через журналиста, редактора икорректора предложения, скорее всего, будутоформлены по правилам.

▶ а уж в каментах как кому в голову взбредет

22/48

Построение предвзятого покрытия

▶ Часто искомые дубликаты окружены горамимусора

▶ реклама, навигация, копирайты, вот это все▶ Если нам что-то известно про структуруосмысленного текста то можно это знаниеиспользовать

▶ Например мы можем брать только N-граммы,начинающиеся или заканчивающиеся словом сбольшой буквы. Обоснование: в тексте,проходящем через журналиста, редактора икорректора предложения, скорее всего, будутоформлены по правилам.

▶ а уж в каментах как кому в голову взбредет

22/48

Сегодня в программе

Схожесть объектов

Покрытие текста перекрывающимися n-граммами

Понижение размерности множества

Пространственно чувствительное хеширование

23/48

Проблема

▶ Как ни крути, у документов может быть оченьмного признаков

▶ Рассматривать их все – очень дорого▶ Хочется как-нибудь уменьшить их количество▶ Но так чтоб сохранить возможность посчитатькоэффициент Жаккара

24/48

Min-Hash

▶ Рассмотрим характеристические векторымножеств и составленную из ниххарактеристическую матрицу

S1 S2 S3 S4

a 1 0 0 1

b 0 0 1 0

c 0 1 0 1

d 1 0 1 1

e 0 0 1 0

25/48

Min-Hash

S1 S2 S3 S4

a 1 0 0 1

b 0 0 1 0

c 0 1 0 1

d 1 0 1 1

e 0 0 1 0

▶ Для двух множеств J(Si,Sj) = |X||X|+|Y| где X – строки

с единицами в обоих множествах и Y – строки сединицей в одном из множеств

26/48

Min-Hash▶ Рассмотрим хеш-функцию minhashp(S) котораядля перестановки строк p и множества S вернетid первой сверху строки, где в столбце Sненулевое значение.

S1 S2 S3 S4

a 1 0 0 1

b 0 0 1 0

c 0 1 0 1

d 1 0 1 1

e 0 0 1 0

minhashbedac d c b dminhashcebda d c e cminhashadbec a c d a

27/48

Хорошие и плохие перестановки

▶ Назовём для множеств Si и Sj перестановку pхорошей если minhashp(Si) =minhashp(Sj)

S1 S2 S3 S4

a 1 0 0 1

b 0 0 1 0

c 0 1 0 1

d 1 0 1 1

e 0 0 1 0

minhashabcde a c b a

▶ abcde – хорошая перестановка для пары S1 и S4

28/48

Количество хороших перестановок

▶ Пусть x = |X|,y = |Y|▶ Пусть z - количество строк с нулями в обоихвекторах. Перетащим их все вниз и вдальнейшем будем игнорировать

▶ Всего x+ y ненулевых строк и (x+ y)!перестановок

▶ Рассмотрим перестановку px где первой идетлюбая строка из X. px - хорошая

|px| = x× (x+ y− 1)!

29/48

Вероятность p – хорошая

▶ Отношение количества хороших к общемуколичеству

x× (x+ y− 1)!

(x+ y)! =x

x+ y

30/48

Min-Hash и коэффициент Жаккара

▶ Для случайной перестановки p

P(minhashp(Si) =minhashp(Sj)) = J(Si,Sj)

31/48

Посчитаем вероятность

▶ Вычислим достаточно большое количествоminhash функций с разными перестановками изапишем результат в новую матрицу сигнатур

▶ Матрицу сигнатур и будем использовать длявычисления коэффициента Жаккара:отношение количества одинаковых значений кдлине сигнатуры

32/48

Снова пример▶ Уже посчитанные сигнатуры

S1 S2 S3 S4

a 1 0 0 1

b 0 0 1 0

c 0 1 0 1

d 1 0 1 1

e 0 0 1 0

minhashbedac d c b dminhashcebda d c e cminhashadbec a c d a

▶ Истинный J(S1,S4) = 2/3 = вычисленный посигнатурам

▶ Истинный J(S3,S4) = 1/5. По сигнатурам: 033/48

Перестановки дороговаты…

▶ От перестановки применительно к Si нужнатолько одна строка, первая где значениестолбца равно 1

▶ Можно заменить перестановку случайнойхеш-функцией hi : r→ 1 . . .k где r - номер строки,k - общее количество строк

▶ Для каждой ячейки матрицы сигнатур (i, c)значением будет argminr {hi(r) : (r, c) = 1}

▶ Упорядочим хеш-функцией единичные ячейки ивыберем первую из них

34/48

Снова пример

▶ Замена перестановки хеш-функциями

S1 S2 S3 S4

a 1 0 0 1

b 0 0 1 0

c 0 1 0 1

d 1 0 1 1

e 0 0 1 0

h1 : b→1,e→2,d→3,a→4,c→5 d c b dh2 : c→1,e→2,b→3,d→4,a→5 d c e ch3 : a→1,d→2,b→3,e→4,c→5 a c d a

35/48

Заменим argmin на minS1 S2 S3 S4 h1 h2 h3

0(a) 1 0 0 1 1 1 3

1(b) 0 0 1 0 2 4 0

2(c) 0 1 0 1 3 2 2

3(d) 1 0 1 1 4 0 4

4(e) 0 0 1 0 0 3 1

h1=(x+1)%5 1(b) 3(d) 0(a) 1(b)h2=(3x+1)%5 0(a) 2(b) 0(a) 0(a)h3=(2x+3)%5 3(d) 2(b) 0(a) 2(c)

▶ Истинный J(S1,S4) = 2/3 = вычисленный поminhashсигнатурам

▶ Истинный J(S3,S4) = 1/5. По minhash сигнатурам:1/3

36/48

Сегодня в программе

Схожесть объектов

Покрытие текста перекрывающимися n-граммами

Понижение размерности множества

Пространственно чувствительное хеширование

37/48

Точная попарная схожесть стоитдорого

▶ Пусть у нас 1млн. документов и для каждогопосчитана сигнатура из 250 элементов = 1к

▶ На хранение матрицы сигнатур требуется 1Gпамяти

▶ Но попарных сравнений будет 1012/2

▶ По микросекунде (10−6) на каждое – и за 106/2секунд справимся. Это больше 5 суток.

▶ На 1000 машинах это займет около 10 минут

38/48

Может нам не нужны всекоэффициенты

▶ Может мы не против иногда пропустить парупохожих документов

▶ Или хотим искать только очень похожие, анизкие значения коэффициента Жаккара намнеинтересны

39/48

Пространственно чувствительноехеширование

▶ Locality Sensitive Hashing▶ Метод хеширования, увеличивающийвероятность коллизии объектов, которые имеютшансы быть схожими

▶ выбрать несколько хеш-функций▶ каждую применить к исходным объектам▶ объекты, которые какая-либо из хеш-функцийопределила в одну корзину, объявитькандидатами в близнецы

▶ объекты, попавшие в разные корзины, объявитьнепохожими

▶ Бывают false positive, бывают false negative

40/48

Выбор хеш функций для матрицысигнатур

▶ Поделим матрицу на b полос по r строк▶ К каждому r-столбцу в полосе i применимхеш-функцию hi : (r) → kij где kij ∈ Kiи K = K1 . . .Kb – большой интервал корзин,разбитый на b непересекающихся интервалов

▶ Сама хеш-функция может быть одной и той же,лишь бы разные полосы попадали в разныекорзины

41/48

Критерий отбора кандидатов

r-столбцы, выделенные жирным, попадут в однукорзину и их векторы станут кандидатами

2 1 4 20 3 0 01 2 3 13 2 1 3

1 4 0 0

3 1 2 3

1 1 4 10 2 4 21 3 0 3

42/48

Критерий отбора кандидатов

▶ Если хоть одна хеш-функцияопределила два r-столбца в однукорзину то они кандидаты вблизнецы

ORLY o_0 ?

43/48

Критерий отбора кандидатов

▶ Если хоть одна хеш-функцияопределила два r-столбца в однукорзину то они кандидаты вблизнецы

ORLY o_0 ?

43/48

Анализ вероятности▶ Вспомним, что вероятность того, что значениястолбцов A и B совпадут в одной строке равнаJ(A,B) = s

▶ Вероятность того, что значения совпадут вовсех строках полосы равна sr

▶ для s = 0.8, r = 5 это 0.32768▶ Вероятность того, что значения не совпадутхотя бы в одной строке полосы равна 1− sr

▶ для s = 0.8, r = 5 это 0.67232▶ Вероятность того, что это произойдет в каждойполосе равна (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.00035▶ Вероятность того, что хотя бы в одной полосевсе значения совпадут равна 1− (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.99965

44/48

Анализ вероятности▶ Вспомним, что вероятность того, что значениястолбцов A и B совпадут в одной строке равнаJ(A,B) = s

▶ Вероятность того, что значения совпадут вовсех строках полосы равна sr

▶ для s = 0.8, r = 5 это 0.32768

▶ Вероятность того, что значения не совпадутхотя бы в одной строке полосы равна 1− sr

▶ для s = 0.8, r = 5 это 0.67232▶ Вероятность того, что это произойдет в каждойполосе равна (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.00035▶ Вероятность того, что хотя бы в одной полосевсе значения совпадут равна 1− (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.99965

44/48

Анализ вероятности▶ Вспомним, что вероятность того, что значениястолбцов A и B совпадут в одной строке равнаJ(A,B) = s

▶ Вероятность того, что значения совпадут вовсех строках полосы равна sr

▶ для s = 0.8, r = 5 это 0.32768▶ Вероятность того, что значения не совпадутхотя бы в одной строке полосы равна 1− sr

▶ для s = 0.8, r = 5 это 0.67232

▶ Вероятность того, что это произойдет в каждойполосе равна (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.00035▶ Вероятность того, что хотя бы в одной полосевсе значения совпадут равна 1− (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.99965

44/48

Анализ вероятности▶ Вспомним, что вероятность того, что значениястолбцов A и B совпадут в одной строке равнаJ(A,B) = s

▶ Вероятность того, что значения совпадут вовсех строках полосы равна sr

▶ для s = 0.8, r = 5 это 0.32768▶ Вероятность того, что значения не совпадутхотя бы в одной строке полосы равна 1− sr

▶ для s = 0.8, r = 5 это 0.67232▶ Вероятность того, что это произойдет в каждойполосе равна (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.00035

▶ Вероятность того, что хотя бы в одной полосевсе значения совпадут равна 1− (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.99965

44/48

Анализ вероятности▶ Вспомним, что вероятность того, что значениястолбцов A и B совпадут в одной строке равнаJ(A,B) = s

▶ Вероятность того, что значения совпадут вовсех строках полосы равна sr

▶ для s = 0.8, r = 5 это 0.32768▶ Вероятность того, что значения не совпадутхотя бы в одной строке полосы равна 1− sr

▶ для s = 0.8, r = 5 это 0.67232▶ Вероятность того, что это произойдет в каждойполосе равна (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.00035▶ Вероятность того, что хотя бы в одной полосевсе значения совпадут равна 1− (1− sr)b

▶ для s = 0.8, r = 5,b = 20 это 0.99965

44/48

Другие значения коэффициента

▶ При s = 0.2 и тех же r = 5,b = 20 вероятностьсовпадения хотя бы в одной полосе равна

▶ 0.00639▶ При s = 0.5 вероятность совпадения хотя бы водной полосе равна 0.47006

45/48

Другие значения коэффициента

▶ При s = 0.2 и тех же r = 5,b = 20 вероятностьсовпадения хотя бы в одной полосе равна

▶ 0.00639

▶ При s = 0.5 вероятность совпадения хотя бы водной полосе равна 0.47006

45/48

Другие значения коэффициента

▶ При s = 0.2 и тех же r = 5,b = 20 вероятностьсовпадения хотя бы в одной полосе равна

▶ 0.00639▶ При s = 0.5 вероятность совпадения хотя бы водной полосе равна 0.47006

45/48

S-curve

46/48

Занавес

▶ Приблизительный поиск похожих текстовыхдокументов1. Определить природу (символы/слова и размер kкольчужного покрытия

2. Сгенерировать k-граммы и список вхожденийдля каждой k-граммы

3. Выбрать длину minhash сигнатур исгенерировать матрицу сигнатур

4. Разбить матрицу на горизонтальные полосы,выбрав r и b и применить LSH

5. Для кандидатов в близнецы посчитатькоэффициент Жаккара

▶ Практически каждый шаг можно выполнить припомощи Map-Reduce

47/48

Литература I

Anand Rajaraman and Jeffrey David Ullman.Mining of massive datasets.Cambridge University Press, 2011.

48/48