Я працював над невеликим особистим проектом, який займає робочі навички користувача та пропонує найбільш ідеальну кар’єру для них, виходячи з цих навичок. Для цього я використовую базу списків завдань. На даний момент код працює наступним чином:
1) Обробіть текст кожного списку завдань, щоб витягнути навички, які згадуються в лістингу
2) Для кожної кар'єри (наприклад, "Аналітик даних") об'єднайте оброблений текст списків завдань для цієї кар'єри в один документ
3) Обчисліть TF-IDF кожного навику в документах про кар’єру
Після цього я не впевнений, який метод я повинен використовувати для ранжирування кар'єри на основі списку навичок користувача. Найпопулярніший метод, який я бачив, - це також ставитись до навичок користувача як до документа, а потім обчислювати TF-IDF для документа на вміння та використовувати щось на зразок косинусної подібності для обчислення подібності між документом навички та кожним кар’єрний документ.
Це не здається ідеальним рішенням для мене, оскільки схожість косинуса найкраще використовувати при порівнянні двох документів одного формату. З цього приводу TF-IDF зовсім не здається відповідним показником, який застосовується до списку вмінь користувача. Наприклад, якщо користувач додає додаткові навички до свого списку, TF для кожного вміння знизиться. Насправді мені байдуже, яка частота цих навичок є у списку навичок користувача - мені просто важливо, щоб вони мали ці вміння (а можливо, наскільки добре вони знають ці вміння).
Схоже, кращим показником було б виконати наступне:
1) Для кожного навику, який має користувач, обчисліть TF-IDF цього вміння в документах про кар’єру
2) Для кожної кар'єри підсумовуйте результати TF-IDF за всі вміння користувача
3) Рангова кар'єра виходячи з вищевказаної суми
Чи думаю я тут по правильній лінії? Якщо так, то чи існують алгоритми, які працюють за цими напрямками, але є більш складними, ніж проста сума? Дякую за допомогу!