我一直在从事一个小型的个人项目,该项目需要用户的工作技能,并根据这些技能为他们建议最理想的职业。我使用工作列表数据库来实现这一目标。目前,代码的工作方式如下:
1)处理每个职位列表的文本以提取列表中提到的技能
2) 对于每个职业(例如“数据分析师”),将该职业的职位列表的处理文本合并到一个文档中
3)计算职业文档中每个技能的TF-IDF
在此之后,我不确定应该使用哪种方法根据用户的技能列表对职业进行排名。我见过的最流行的方法是将用户的技能也视为文档,然后计算技能文档的 TF-IDF,并使用诸如余弦相似度之类的东西来计算技能文档与每个技能文档之间的相似度职业文件。
这对我来说似乎不是理想的解决方案,因为在比较相同格式的两个文档时最好使用余弦相似度。就此而言,TF-IDF 似乎根本不是适用于用户技能列表的合适指标。例如,如果用户将其他技能添加到他们的列表中,则每个技能的 TF 都会下降。实际上,我并不关心技能在用户技能列表中出现的频率——我只关心他们是否拥有这些技能(以及他们对这些技能的了解程度)。
似乎更好的指标是执行以下操作:
1)对于用户拥有的每一项技能,计算职业文档中该技能的TF-IDF
2) 对于每个职业,将所有用户技能的 TF-IDF 结果相加
3)根据上述总和对职业进行排名
我在这里思考是否正确?如果是这样,是否有任何算法可以沿着这些思路工作,但比简单的求和更复杂?谢谢您的帮助!