Estou trabalhando em um projeto pequeno e pessoal, que utiliza as habilidades profissionais de um usuário e sugere a carreira ideal para elas, com base nessas habilidades. Eu uso um banco de dados de listas de empregos para conseguir isso. No momento, o código funciona da seguinte maneira:
1) Processe o texto de cada lista de tarefas para extrair as habilidades mencionadas na lista
2) Para cada carreira (por exemplo, "Analista de Dados"), combine o texto processado das listagens de tarefas para essa carreira em um documento
3) Calcule o TF-IDF de cada habilidade nos documentos de carreira
Depois disso, não tenho certeza de qual método devo usar para classificar carreiras com base em uma lista das habilidades de um usuário. O método mais popular que eu já vi seria tratar as habilidades do usuário como um documento, calcular o TF-IDF para o documento de habilidade e usar algo como similaridade de cosseno para calcular a semelhança entre o documento de habilidade e cada documento de carreira.
Isso não parece a solução ideal para mim, pois a semelhança de cosseno é melhor usada quando se compara dois documentos do mesmo formato. Por esse motivo, o TF-IDF não parece ser a métrica apropriada para aplicar à lista de habilidades do usuário. Por exemplo, se um usuário adicionar habilidades adicionais à sua lista, o TF de cada habilidade cairá. Na realidade, não me importo com a frequência das habilidades na lista de habilidades do usuário - apenas me importo com elas (e talvez com o quão bem elas conheçam).
Parece que uma métrica melhor seria fazer o seguinte:
1) Para cada habilidade que o usuário possui, calcule o TF-IDF dessa habilidade nos documentos de carreira
2) Para cada carreira, some os resultados do TF-IDF para todas as habilidades do usuário
3) Classifique a carreira com base na soma acima
Estou pensando na linha certa aqui? Em caso afirmativo, existem algoritmos que funcionam nesse sentido, mas são mais sofisticados do que uma simples soma? Obrigado pela ajuda!