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

Preview:

Citation preview

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

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

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

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

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

Paul Jaccard

J (A, B)=AA

BB

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

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

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

7e0e61c15101ae881bf1a63484907871

e8b91c39a5b888620801f1bbe3529e54

Хэширование

LSH locality-sensitive hashing

simhash vs minhash

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

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

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

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]

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]

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 +

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

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

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

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

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

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

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

h1 = 00111101

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

h1 = 00111101h2 = 00111000 h3 = 00001101

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

h1 = 00111101h2 = 00111000 h3 = 00001101

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

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

h1 = 00111101h2 = 00111000 h3 = 00001101

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

!

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

h1 = 00111101h2 = 00111000 h3 = 00001101

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

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

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

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

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

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

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

a b

bc de

def

bcdef

abcdef

dc e f

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

distance

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

a gb j k lndc e f ih m

a

g

b jk

i

l

n

d

c

e

f

h

m

distance threshhold

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

a gb j k lndc e f ih m

a

g

b jk

i

l

n

d

c

e

f

h

m

distance threshhold

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

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

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

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

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

SPH_GROUPBY_ATTR

hierarchical-clustering package

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

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

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

Метрики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% поисков пользователь видел похожие вакансии.

Ссылки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

#superjobmeetup

#superjobmeetup

Recommended