J'ai travaillé sur un petit projet personnel qui prend les compétences professionnelles d'un utilisateur et suggère la carrière la plus idéale pour lui en fonction de ces compétences. J'utilise une base de données de listes d'emplois pour y parvenir. Pour le moment, le code fonctionne comme suit:
1) Traitez le texte de chaque offre d'emploi pour extraire les compétences qui y sont mentionnées
2) Pour chaque carrière (par exemple "Data Analyst"), combinez le texte traité des listes d'emplois pour cette carrière dans un seul document
3) Calculez le TF-IDF de chaque compétence dans les documents de carrière
Après cela, je ne sais pas quelle méthode je devrais utiliser pour classer les carrières en fonction d'une liste de compétences d'un utilisateur. La méthode la plus populaire que j'ai vue serait de traiter également les compétences de l'utilisateur comme un document, puis de calculer le TF-IDF pour le document de compétences, et d'utiliser quelque chose comme la similitude en cosinus pour calculer la similitude entre le document de compétences et chaque document de carrière.
Cela ne me semble pas être la solution idéale, car la similitude cosinus est mieux utilisée lors de la comparaison de deux documents du même format. D'ailleurs, TF-IDF ne semble pas du tout la mesure appropriée à appliquer à la liste de compétences de l'utilisateur. Par exemple, si un utilisateur ajoute des compétences supplémentaires à sa liste, le TF de chaque compétence baissera. En réalité, je ne me soucie pas de la fréquence des compétences dans la liste des compétences de l'utilisateur - je me soucie simplement qu'ils possèdent ces compétences (et peut-être à quel point ils connaissent ces compétences).
Il semble qu'une meilleure mesure serait de procéder comme suit:
1) Pour chaque compétence de l'utilisateur, calculez le TF-IDF de cette compétence dans les documents de carrière
2) Pour chaque carrière, additionnez les résultats TF-IDF pour toutes les compétences de l'utilisateur
3) Classement de carrière basé sur la somme ci-dessus
Suis-je en train de penser dans le bon sens ici? Si oui, existe-t-il des algorithmes qui fonctionnent dans ce sens, mais sont-ils plus sophistiqués qu'une simple somme? Merci pour l'aide!