У компании есть ещё
похожие вакансии
Постановка задачи:
• оценить сходство вакансий;
• объединить похожие вакансии в группы;
• показать одного представителя группы
в выдаче.
Похожие вакансии
Paul Jaccard
J(A,B)=
A
A
B
B
Хэширование
md5('водитель такси') 7e0e61c15101ae881bf1a63484907871
md5('водитель такси')
md5('водитель такси с авто')
7e0e61c15101ae881bf1a63484907871
e8b91c39a5b888620801f1bbe3529e54
Хэширование
LSHlocality-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-алгоритм
		00111101
XOR 00111000
= 00000101
SimHash-алгоритм
		00111101
XOR 00111000
= 00000101
Similarity index = 6/8 = 0.75 (75%)
Постановка задачи:
оценить сходство вакансий;
• объединить похожие вакансии в группы;
• показать одного представителя группы
в выдаче.
Поиск похожих
документов
Найдем отличающиеся не более
чем на 2 бита:
h1 = 00111101
Поиск похожих
документов
Найдем отличающиеся не более
чем на 2 бита:
h1 = 00111101
h2 = 00111000
h3 = 00001101
Поиск похожих
документов
Найдем отличающиеся не более
чем на 2 бита:
h1 = 00111101
h2 = 00111000
h3 = 00001101
d(h1,h2) = 2
d(h1,h3) = 2
Поиск похожих
документов
Найдем отличающиеся не более
чем на 2 бита:
h1 = 00111101
h2 = 00111000
h3 = 00001101
d(h1,h2) = 2
d(h1,h3) = 2
d(h2,h3) > 2
!
Поиск похожих
документов
Найдем отличающиеся не более
чем на 2 бита:
h1 = 00111101
h2 = 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 j
k
i
l
n
d
c
e
f
h
m
distance threshhold
Дендрограмма
a gb j k lndc e f ih m
a
g
b j
k
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

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