39

Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Embed Size (px)

Citation preview

Page 1: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 2: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

У компании есть ещё похожие вакансии

Page 3: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 4: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 5: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Постановка задачи:• оценить сходство вакансий;

• объединить похожие вакансии в группы;

• показать одного представителя группы в выдаче.

Page 6: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Похожие вакансии

Page 7: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 8: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Paul Jaccard

J (A, B)=AA

BB

Page 9: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Хэшированиеmd5('водитель такси') 7e0e61c15101ae881bf1a63484907871

Page 10: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

md5('водитель такси')

md5('водитель такси с авто')

7e0e61c15101ae881bf1a63484907871

e8b91c39a5b888620801f1bbe3529e54

Хэширование

Page 11: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

LSH locality-sensitive hashing

simhash vs minhash

Page 12: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритмhash = [0,0,0,0,0,0,0,0]

Page 13: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритмhash = [0,0,0,0,0,0,0,0]doc = [“водитель”,“такси”,“авто”]

Page 14: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритмhash = [0,0,0,0,0,0,0,0]doc = [“водитель”,“такси”,“авто”] doc = [01111001, 00110101, 00101110]

Page 15: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритмhash = [0,0,0,0,0,0,0,0]doc = [“водитель”,“такси”,“авто”] doc = [01111001, 00110101, 00101110]

01111001 00110101 00101110 +

hash =[-3,-1,3,1,1,1,-1,1]

Page 16: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритмhash = [0,0,0,0,0,0,0,0]doc = [“водитель”,“такси”,“авто”] doc = [01111001, 00110101, 00101110]

01111001 00110101 00101110 +

hash =[-3,-1,3,1,1,1,-1,1] hash =[ 0, 0,1,1,1,1, 0,1]

Page 17: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритмhash = [0,0,0,0,0,0,0,0]doc = [“водитель”,“такси”,“авто”] doc = [01111001, 00110101, 00101110]

hash =[-3,-1,3,1,1,1,-1,1] hash =[ 0, 0,1,1,1,1, 0,1]

simhash(doc) = 00111101

01111001 00110101 00101110 +

Page 18: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритм 00111101XOR 00111000 = 00000101

Page 19: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

SimHash-алгоритм 00111101XOR 00111000 = 00000101

Similarity index = 6/8 = 0.75 (75%)

Page 20: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Постановка задачи: оценить сходство вакансий;

• объединить похожие вакансии в группы;

• показать одного представителя группы в выдаче.

Page 21: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Поиск похожих документовНайдем отличающиеся не более чем на 2 бита:

h1 = 00111101

Page 22: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Поиск похожих документовНайдем отличающиеся не более чем на 2 бита:

h1 = 00111101h2 = 00111000 h3 = 00001101

Page 23: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Поиск похожих документовНайдем отличающиеся не более чем на 2 бита:

h1 = 00111101h2 = 00111000 h3 = 00001101

d(h1,h2) = 2 d(h1,h3) = 2

Page 24: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Поиск похожих документовНайдем отличающиеся не более чем на 2 бита:

h1 = 00111101h2 = 00111000 h3 = 00001101

d(h1,h2) = 2 d(h1,h3) = 2 d(h2,h3) > 2

!

Page 25: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Поиск похожих документовНайдем отличающиеся не более чем на 2 бита:

h1 = 00111101h2 = 00111000 h3 = 00001101

d(h1,h2) = 2 d(h1,h3) = 2 d(h2,h3) > 2 !!!

Page 26: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Свойства групп:

1. все вакансии в группе должны отличаться друг от друга не более чем на определенную величину;

2. добавление, изменение или удаление не должно приводить к полному изменению состава групп;

3. количество групп заранее не известно.

Page 27: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Иерархическая кластеризацияComplete linkage (метод полной связи)Сложность O(n3)

Дендрограмма

a b

bc de

def

bcdef

abcdef

dc e f

Page 28: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Дендрограмма

distance

Page 29: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Дендрограмма

a gb j k lndc e f ih m

a

g

b jk

i

l

n

d

c

e

f

h

m

distance threshhold

Page 30: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Дендрограмма

a gb j k lndc e f ih m

a

g

b jk

i

l

n

d

c

e

f

h

m

distance threshhold

Page 31: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 32: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 33: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Постановка задачи: оценить сходство вакансий;

объединить похожие вакансии в группы;

• показать одного представителя группы в выдаче.

Page 34: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Реализацияочередь в rabbitmq на вычисление simhash

очередь в rabbitmq на кластеризацию

SPH_GROUPBY_ATTR

hierarchical-clustering package

Page 35: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Постановка задачи: оценить сходство вакансий;

объединить похожие вакансии в группы;

показать одного представителя группы в выдаче.

Page 36: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий
Page 37: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Метрики1. конверсия в отклики (отношение всех поисков к поискам

с отправкой резюме) — Impact: 7.6%2. конверсия в отклики с первой страницы поиска с кластером

на ней — Impact: 9.1%3. конверсия в просмотр двух и более уникальных клиентов

на поиск — Impact: 6%4. средняя и средне-максимальная глубина просмотра результатов

поиска: control1 1.4406 1.4885 control2 1.4494 1.4835 grouped 1.3708 1.4424

В 75% поисков возможна группировка похожих вакансий. В 66% поисков пользователь видел похожие вакансии.

Page 38: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

Ссылкиhttp://www.cs.princeton.edu/courses/archive/spring04/cos598B/bib/CharikarEstim.pdf

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.473.7179&rep=rep1&type=pdf

http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/33026.pdf

http://jmlr.org/proceedings/papers/v33/shrivastava14.pdf

https://hackage.haskell.org/package/hierarchical-clustering

http://rcdl2007.pereslavl.ru/papers/paper_65_v1.pdf

http://keldysh.ru/abrau/2015/202.pdf

https://habrahabr.ru/users/korzhik/

https://www.facebook.com/dkozhokar

Page 39: Применение алгоритмов поиска нечетких дубликатов в поиске вакансий

#superjobmeetup

#superjobmeetup