Я работал над небольшим, личным проектом, который берет навыки работы пользователя и предлагает наиболее идеальную карьеру для них на основе этих навыков. Я использую базу данных списков вакансий для достижения этой цели. На данный момент код работает следующим образом:
1) Обработайте текст каждого списка вакансий для извлечения навыков, упомянутых в списке
2) Для каждой карьеры (например, «Аналитик данных») объедините обработанный текст списков вакансий для этой карьеры в один документ
3) Рассчитайте TF-IDF каждого навыка в рамках карьерных документов.
После этого я не уверен, какой метод мне следует использовать для ранжирования карьеры на основе списка навыков пользователя. Самый популярный метод, который я видел, состоит в том, чтобы рассматривать навыки пользователя как документ, а затем вычислять TF-IDF для документа навыков и использовать что-то вроде косинусного сходства для вычисления сходства между документом навыка и каждым документом. карьерный документ.
Это не кажется мне идеальным решением, так как косинусное сходство лучше всего использовать при сравнении двух документов одного формата. В этом отношении TF-IDF не кажется подходящей метрикой для применения к списку навыков пользователя вообще. Например, если пользователь добавляет дополнительные навыки в свой список, TF для каждого навыка будет понижен. На самом деле мне все равно, как часто встречаются навыки в списке навыков пользователя - мне просто важно, чтобы у них были эти навыки (и, возможно, насколько хорошо они знают эти навыки).
Похоже, что лучшей метрикой было бы сделать следующее:
1) Для каждого навыка, который есть у пользователя, рассчитайте TF-IDF этого навыка в документах о карьере.
2) Для каждой карьеры суммируйте результаты TF-IDF для всех навыков пользователя.
3) Ранжирование карьеры на основе вышеуказанной суммы
Думал ли я в правильном направлении здесь? Если да, есть ли алгоритмы, которые работают в этом направлении, но являются более сложными, чем простая сумма? Спасибо за помощь!