我一直在从事一个小型的个人项目,该项目需要了解用户的工作技能,并根据这些技能为他们推荐最理想的职业。我使用工作列表数据库来实现这一点。目前,代码工作如下:
1) 处理每个职位列表的文本以提取列表中提到的技能
2) 对于每个职业(例如“数据分析师”),将该职业的职位列表的处理文本合并到一个文档中
3) 计算职业文档中每个技能的TF-IDF
在此之后,我不确定应该使用哪种方法来根据用户技能列表对职业进行排名。我见过的最流行的方法是将用户的技能也视为文档,然后计算技能文档的 TF-IDF,并使用诸如余弦相似度之类的东西来计算技能文档与每个技能文档之间的相似度职业文件。
这对我来说似乎不是理想的解决方案,因为在比较两个相同格式的文档时最好使用余弦相似度。就此而言,TF-IDF 似乎根本不是适用于用户技能列表的合适指标。例如,如果用户将其他技能添加到他们的列表中,则每项技能的 TF 将会下降。实际上,我不关心这些技能在用户技能列表中出现的频率是多少——我只关心他们是否拥有这些技能(以及他们对这些技能的了解程度)。
似乎更好的指标是执行以下操作:
1) 对于用户拥有的每一项技能,计算该技能在职业文档中的TF-IDF
2) 对于每个职业,总结用户所有技能的 TF-IDF 结果
3) 根据以上总和对职业进行排名
我的思路是否正确?如果是这样,是否有任何算法可以按照这些思路工作,但比简单的求和更复杂?感谢您的帮助!
最佳答案
您解释的第二种方法将起作用。但是有更好的方法可以解决这类问题。 首先你应该了解一点语言模型并离开向量空间模型。 在基于你的问题类型的第二步中,类似于专家发现/分析,你应该学习一个基线语言模型框架来实现一个解决方案。 您可以实现 A language modeling framework for expert finding稍作改动,以便公式可以适应您的问题。 也在阅读 On the assessment of expertise profiles将使您更好地了解使用上述框架进行专家分析。 您可以在 Balog's blog 找到一些关于专家寻找/分析的好主意、资源和项目。 .
关于nlp - TF-IDF 和余弦相似度的替代方案(比较不同格式的文档),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431572/