dennisgorelik: 2020-06-13 in my home office (Default)

What is the purpose of this neural network?

[personal profile] dennisgorelik 2022-10-04 10:15 pm (UTC)(link)
Is this backpropagation for image recognition?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: What is the purpose of this neural network?

[personal profile] dennisgorelik 2022-10-05 10:27 am (UTC)(link)
> Ей пофиг, к чему приложишь - то и будет.

Откуда ты знаешь, что пофиг?
Вряд ли NN, специализирующаяся на распознавании картином, будет хорошо работать с текстами.

> Я пока играю с игрушечными примерами.

Какую проблему решают твои игрушечные примеры?

dennisgorelik: 2020-06-13 in my home office (Default)

Re: What is the purpose of this neural network?

[personal profile] dennisgorelik 2022-10-05 04:39 pm (UTC)(link)
> Смотря для какой цели и смотря как подключить.

У меня есть практическая задача: взять резюме кандидата, и извлечь из этого резюме ключевые слова, по которым можно искать работу для этого кандидата.

Думаешь neural network, в настройке которой ты упражнялся, поможет в решении этой задачи?

> только имитировать простую гладкую функцию

Для того, чтобы имитировать простую гладкую функцию - нет необходимости использовать neural network.
dennisgorelik: 2020-06-13 in my home office (Default)

How to create a job search query from resume text?

[personal profile] dennisgorelik 2022-10-05 07:19 pm (UTC)(link)
> Во-вторых, твоя задача, наверное, хорошо решается более простым способом?

Решается, но, пока, не очень хорошо.
Мы создаем и поддерживаем общий список skills (keywords).

Соответственно, несложно найти эти skills в тексте резюме.
Также, мы считаем частоту использования каждого skill.

В общем списке мы также считаем, насколько часто каждый skill используется при поиске работ и насколько часто используется в описании работ.
Чем больше соотношение "частота поиска"/"частота использования в работе" - тем более важный такой skill.

Можно взять один, два или три самых важных skills и использовать для поиска работ.
Это работает, но не идеально.
Например, вот это резюме:
https://www.postjobfree.com/resume/adsn0r/customer-service-clerk-new-city-ny
превращается в набор skills:
1) warehouse
2) sales
3) customer service
4) data entry
То есть можно автоматически получить такой job search:
warehouse sales

Но, хотелось бы, результат получше, что-нибудь вроде:
(manager or management) (warehouse or sales or quality or control or dairy or shop or frozen or osha)

Но как автоматически добиться подобного результата (job search query) - пока не совсем понятно.

Как ты думаешь, подходит ли NN для решения подобных задач?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: How to create a job search query from resume text?

[personal profile] dennisgorelik 2022-10-06 03:39 am (UTC)(link)
> Ваше нынешнее решение по соотношению частот - Байесово

Почему анализ частоты использования skills ты называешь "байесовой" моделью?

> 1. Этот конкретный человек у тебя популярно написал что он хочет в разделе Objectives. Просто выделять этот раздел и считать слова из него более важными.

Мне кажется, получится не очень хорошо. Давай рассмотрим на примере того же резюме:
https://www.postjobfree.com/resume/adsn0r/customer-service-clerk-new-city-ny
Objective
A Management position that will allow me to utilize my skills and develop additional managerial insight to provide employee development and enhance future growth
"Management" и "managerial" - правильно. Но "develop" и "development" - неправильно.
Кроме того, упущены другие важные skills: "customer service", "deposits", "store", "sales", "quality control".

> искать предолжения с фразами типа "looking for"

Анализ использования looking for - показывает, что:
1) "looking for" указывает на важные skills лишь иногда.
2) "looking for" используется лишь в примерно 3% опубликованных резюме.

> 2. Использовать не отдельные слова, а словосочетания.

Это мы уже делаем: выделяем фразы из двух слов.

> надо искать слова не сами по себе важные, а важные в контексте резюме

Как определить какие слова - важные в контексте резюме?
dennisgorelik: 2020-06-13 in my home office (Default)

Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-10-07 04:11 am (UTC)(link)
> Потому что частота - она же вероятность. В твоей байесовой модели используется событие - найм. Ты считаешь частоту встречания скилла у работников до найма, это твоя априорная вероятность,

Да: частота использования скилла в резюме - кореллирует с вероятностью того, что работника наняли из-за этого скилла.

> и частоту скилла у работ, то есть работников после найма, это твоя постериорная вероятность.

Нет.
Частота употребления скилла в описании работы - коррелирует с востребованностью этого скилла на этой работе. А вовсе не с тем, сколько работников на этот скилл уже наняли.

> Когда ты их делишь, ты получаешь условную вероятность найма с таким скиллом

В данном случае, чтобы получить вероятность найма с таким скиллом, надо умножать эти две частоты использования, а не делить их друг на друга.

> Байесовую модель можно развернуть и дальше - получить рейтинг соответствия резюме к вакансии исходя из полного списка скиллов, перечисленных в обоих.

Да, примерно так можно считать match score.
Но это слабо похоже на байесовую модель.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-10-08 03:21 am (UTC)(link)
Сейчас я вижу, что ты и я говорим о разных частотах.
Ты говоришь о том, насколько много resumes содержат рассматриваемый нами skill (HowManyResumesContainOurSkill).
Я же говорю о том, сколько раз рассматриваемый нами skill встречается в одной работе (HowManyTimesOurResumeContainsOurSkill).

Вероятность соответствия между резюме и работой:
- пропорциональна 1/HowManyResumesContainOurSkill
- пропорциональна log(HowManyTimesOurResumeContainsOurSkill + 1)

То есть формула вероятности:
log(HowManyTimesOurResumeContainsOurSkill + 1) / HowManyResumesContainOurSkill

> проще всего начать с рисования квадрата, который будет представлять всех кандидатов

Всех кандидатов на все работы?
Или всех кандидатов на одну работу?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-10-11 02:54 am (UTC)(link)
> > Я же говорю о том, сколько раз рассматриваемый нами skill встречается в одной работе (HowManyTimesOurResumeContainsOurSkill).

> В смысле, не в работе, а в резюме?

Да, сколько раз skill встречается в резюме (а не в работе).

На самом деле, сколько раз skill встречается в работе - тоже желательно учитывать. И тоже по логарифмической шкале. Только, естественно, при подсчитывании match score - нужно будет поделить на сумму весов skills (умноженных на логарифм количества встречания этих skills.

А вот для резюме -- логарифмы количества использования skills в резюме - делить на общую сумму -- не обязательно. Потому, что мы ищем (и сортируем) работы для одного резюме. Поэтому делитель, во всех случаях, одинаковый. Поэтому сортировка не нарушается.

> Если кто-то поменял за год 5 работ и в каждой написал скилл, будет ли ему соответствие лучше

Мы же ищем наиболее подходящую работу для этого job-hopper. Поэтому учитывать нужно только пропорцию между skills в этом резюме.

Если бы мы для работы искали кандидатов - тогда нужно было бы делить resume matching skills score на общую skills score.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-10-14 03:07 am (UTC)(link)
> попадаются только плохие работы, и приходится брать что есть

1) Даже если бы это было так (а это не так), это никак не отменяет того, что при поиске работ для job seeker, учитывать нужно только пропорцию между skills в этом резюме.

2) Обычно, люди часто меняют работу потому, что на интервью они выглядят лучше, чем в самой работе.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-10-27 04:46 am (UTC)(link)
> никак не отменяет того, что при поиске работ для job seeker, учитывать нужно только пропорцию между skills в этом резюме.

> как мы уже обсудили, более недавние скиллы важнее давних

Да: недавние skills - важнее давних.
Поэтому при учете пропорции между skills в резюме - надо учитывать и давность тоже.


>> 2) Обычно, люди часто меняют работу потому, что на интервью они выглядят лучше, чем в самой работе.

> 2) обычно люди часто меняют работу потому, что постепенно находят варианты с больше денег

Варианты с "больше денег", для подавляющего большинства людей - не возникают часто.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-10-28 07:39 am (UTC)(link)
Так если зарплата постоянно растет - разве не проще попросить текущего работодателя поднять зарплату?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-11-03 06:28 pm (UTC)(link)
Что произойдет, если попросить поднять зарплату на основании того, что из других компаний приходят более выгодные предложения о работе?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-11-05 01:10 am (UTC)(link)
Почему нынешний работодатель не готов поднимать зарплату?
Ведь программист с опытом работы на текущем проекте, как правило, гораздо важнее/продуктивнее, чем программист, нанимаемый со стороны.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Skills: frequency vs Bayesian probability

[personal profile] dennisgorelik 2022-11-10 02:43 am (UTC)(link)
> пока есть другие люди, согласные работать за меньшие деньги

Получается, что причина, по которой переходящие с работы на работу зарабатывают больше -- заключается в том, что на новом месте -- нет других людей, согласных работать за меньшие деньги?
dennisgorelik: 2020-06-13 in my home office (Default)

Квадрат Bayesian probability

[personal profile] dennisgorelik 2022-10-11 03:02 am (UTC)(link)
> Хоть так, хоть так

Давай рассмотрим случай "всех кандидатов на одну работу" (как более простой).
Ты написал:
https://sab123.dreamwidth.org/679065.html?thread=2657177#cmt2657177
начать с рисования квадрата, который будет представлять всех кандидатов. Потом его поделить на две части: в одной части те, что нашли работу, в другой - что не нашли работу, и с площадью пропорциональной количеству. Потом каждую часть поделить на две части: у которых есть скилл, и у которых нет скилла.
Под "не нашли работу" ты имеешь ввиду, что "не нашли работу, на которую мы, сейчас, пытаемся найти кандидатов? Или "не нашли никакую работу"?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Квадрат Bayesian probability

[personal profile] dennisgorelik 2022-10-14 03:13 am (UTC)(link)
Как отличить кандидатов, кто нашел интересующую нас работу от кандидатов, кто не нашел интересующую нас работу?
https://sab123.dreamwidth.org/679065.html?thread=2657177#cmt2657177
рисования квадрата, который будет представлять всех кандидатов. Потом его поделить на две части: в одной части те, что нашли работу, в другой - что не нашли работу, и с площадью пропорциональной количеству. Потом каждую часть поделить на две части: у которых есть скилл, и у которых нет скилла.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Квадрат Bayesian probability

[personal profile] dennisgorelik 2022-10-27 04:49 am (UTC)(link)
> можно строить предположения исходя из того, что если есть предлагаемые работы, то должны же туда кого-то нанять

Это - неверное предположение.
Есть много работ, на которые никого нанять не могут. Или могут нанять, но потом хотя снова заменить на другого соискателя, потому что предыдущий не устраивает (или сбежал).

И есть много работ, которые нанимают вообще без публикации вакансии. Например, по знакомству. Или с помощью поиска в базах резюме.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Квадрат Bayesian probability

[personal profile] dennisgorelik 2022-10-28 07:38 am (UTC)(link)
Мне кажется, что оценка количества нанятых по числу опубликованных работ - слишком уж неточна для того, чтобы на эту оценку полагаться.
dennisgorelik: 2020-06-13 in my home office (Default)

"Objective" and "looking for"

[personal profile] dennisgorelik 2022-10-07 04:18 am (UTC)(link)
> Есть словосочетания, которые указывают на то, что рядом с ними выражаются желания кандидата. Например, "objective", "looking for", но не только они, а и прочие.

Секция "Objective" - задумывалась для того, чтобы изложить желания кандидата.
Но большинство кандидатов просто хотят денег побольше, причем стесняются об этом написать.
Поэтому пишут всякую обобщенную фигню про то, как они хотели бы повысить свой уровень качества работы и не упоминают skills, которые помогают найти наиболее подходящую этим кандидатам работу.

> Это не рецепт, а направление для дальнейшего изучения.

Я этот "не рецепт" уже изучил. Выглядит довольно безнадежно.
Проще просто пытаться найти skills в тексте, а на заголовок "Objective" - не обращать внимания.
Также лучше не обращать внимание на "looking for".
dennisgorelik: 2020-06-13 in my home office (Default)

Search location and distance

[personal profile] dennisgorelik 2022-10-08 03:25 am (UTC)(link)
> очеь бесит, когда единственный способ фильтрации - по зип-коду, и в радиус попадает какой-нибудь Нью-Йорк или Сиэттл, и потом этот мусор приходится вручную вычищать.

Какую ты видишь альтернативу кругу поиска с определенным радиусом?
Рисовать карту с границами зоны поиска работ?
99% кандидатов подобным заморачиваться не станут, даже если им дать в руки такой инструмент.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Search location and distance

[personal profile] dennisgorelik 2022-10-11 02:41 am (UTC)(link)
Можно использовать список zipcodes.
Например, начать с одного zipcode и указания радиуса.
Потом выдать список всех попадающих в радиус зипкодов - и дать возможность удалить их из списка.
Ну а дальше - уже запомнить этот список и искать работы только в этих зипкодах.

Но это требует advanced user и более сложного кодирования.
Поэтому подобное мало кто делает.

Да и строгие ограничения по зипкоду - не всегда хорошо подходят.
Ведь ради какой-то работы ты вполне можешь согласиться ездить в ненавистный тобой downtown.
Например, потому, что очень много платят.
Или, потому, что работа очень интересная.
Или, потому, что туда нужно ездить только раз в месяц, а остальное время - работать из дома.
Разве эти варианты можно указать в стандартом фильтре при поиске работ?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Search location and distance

[personal profile] dennisgorelik 2022-10-14 03:01 am (UTC)(link)
> эти зипкоды никто не знает кроме своего

Вероятно, поэтому интерфейс со списком зипкодов редко используется.

Хотя мне иногда пользователи перечисляют в каких зипкодах они ищут работу.
Но, в их случае, лучше использовать один зипкод (с радиусом), а не несколько.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: "Objective" and "looking for"

[personal profile] dennisgorelik 2022-10-08 03:27 am (UTC)(link)
> То есть не надо смотреть _только_ на objective, но и на его тоже.

В objective тоже может оказаться что-то полезное, но смотреть надо не на то, что это objective, а на то, какие skills можно обнаружить в тексте.

> Там же могут содержаться уточнения про географию

Это как? "Исключить работы в NYC"?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: "Objective" and "looking for"

[personal profile] dennisgorelik 2022-10-11 02:36 am (UTC)(link)
> Но там хотя бы есть вариант, что если есть ограничение по штату, то ставишь штат NJ - и готово, NYC исключен.

New Jersey - слишком большой по размеру.
Лучше уж в NYC через мост ехать, чем ехать на другой конец New Jersey.
Я, обычно, выбираю zipcode миль на 7 западнее от исходного zipcode в NJ, и выставляю радиус поиска миль 10-15: и до NYC не достает, и в New Jersey не слишком далеко.

> есть еще городки на другой стороне залива.

Заливы - это вообще сложная ситуация.
Ведь через залив может ходить паром.
Или можно на своей лодке плыть или даже вертолете летать.
Иногда через залив идет мост. Или подземный туннель.
Все случаи - сложно учесть.

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

Препятствия вполне могут быть преодолимыми для некоторых людей.
И, в любом случае, это существенно усложняет как код поиска, так и UI.
dennisgorelik: 2020-06-13 in my home office (Default)

Чекбокс, исключающий препятствия

[personal profile] dennisgorelik 2022-10-14 02:59 am (UTC)(link)
Что бы ты написал на "исключающем чекбоксе", чтобы пользователь сумел понять, что же он обозначает?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Чекбокс, исключающий препятствия

[personal profile] dennisgorelik 2022-10-27 04:39 am (UTC)(link)
Заранее job board может не знать, в каком зипкоде job seeker ищет работу.
Значит, такой checkbox нужно будет показывать только после того, как job seeker ввел свой зипкод (и оказалось, что на западе, поблизости от введенного зипкода, располагается Lake Washington.
Это несколько усложняет UI (и backend).

При большом объеме поисков в районе Lake Washington -- такой чекбокс может себя и оправдать. Но совсем необязательно.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Чекбокс, исключающий препятствия

[personal profile] dennisgorelik 2022-10-28 07:40 am (UTC)(link)
Слишком сложно для подавляющего большинства ищущих работу. Увы.
dennisgorelik: 2020-06-13 in my home office (Default)

Old skills

[personal profile] dennisgorelik 2022-10-07 04:20 am (UTC)(link)
> Другой пример - скиллзы в недавних работах гораздо более важны, чем скиллзы в работах десятилетней давности.

Да.
Поэтому, чем skills ниже в тексте резюме, тем меньший вес они имеют при нашем подсчете.
dennisgorelik: 2020-06-13 in my home office (Default)

Антисигнал

[personal profile] dennisgorelik 2022-10-07 04:22 am (UTC)(link)
> У тебя, кстати, есть хорошая возможность набрать много тренировочных данных, если хранить историю резюме. Вот у тебя есть человек с неким резюме, ищет работу. Потом через какое-то время опа, он же закачивает новое резюме, в котором добавилась новая работа. Это твой сигнал, что человек с таким-то резюме хорошо подошел для вот такой работы.

Если бы человек хорошо подошел для новой работы, то он, вероятно, уже бы не публиковал новое резюме, верно?
Может быть, связь старой секции и новой секции -- это не сигнал, а антисигнал?
dennisgorelik: 2020-06-13 in my home office (Default)

Re: Антисигнал

[personal profile] dennisgorelik 2022-10-08 03:30 am (UTC)(link)
> Все такие теории, конечно, нужно проверять на практике.

Обычно подобная практика есть у рекрутеров, которые получают свою компенсацию только после того, как кандидат проработает на новом месте 3 месяца.
Рекрутеры видят какие резюме с какими ключевыми словами привели к стабильному трудоустройству, а какие - нет.
dennisgorelik: 2020-06-13 in my home office (Default)

Re: How to create a job search query from resume text?

[personal profile] dennisgorelik 2022-10-07 04:25 am (UTC)(link)
> Распознавание смысла делается примерно так: делается сеть, которая пытается предсказывать следующее слово. Она натренировывается. Потом с нее срезуют верхний слой нейронов, и используют выходы с предпоследнего слоя как индикаторы смысла.

Это слишком сложно для имплементации если конечная цель - найти наиболее подходящие работы для резюме.