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