我一直致力于一个小型的个人项目,该项目以用户的工作技能为基础,并根据这些技能为他们提供最理想的职业。我使用工作列表数据库来实现这一目标。目前,代码的工作原理如下:
1)处理每个职位列表的文本,以提取列表中提到的技能
2)对于每个职业(例如“数据分析师”),将该职业的职位列表的处理文本合并到一个文档中
3)计算职业文件中每项技能的TF-IDF
在此之后,我不确定我应该使用哪种方法根据用户技能列表对职业进行排名。我见过的最流行的方法是将用户的技能视为文档,然后计算技能文档的TF-IDF,并使用余弦相似度等方法计算技能文档与每个文档之间的相似度。职业文件。
这对我来说似乎不是理想的解决方案,因为在比较相同格式的两个文档时最好使用余弦相似性。就此而言,TF-IDF似乎不适合应用于用户的技能列表。例如,如果用户在其列表中添加其他技能,则每种技能的TF将下降。实际上,我并不关心技能在用户技能列表中的频率 - 我只关心他们拥有这些技能(以及他们对这些技能的熟悉程度)。
似乎更好的指标是执行以下操作:
1)对于用户拥有的每项技能,在职业文件中计算该技能的TF-IDF
2)对于每个职业,将所有用户技能的TF-IDF结果相加
3)根据以上总和排名职业生涯
我在这里思考正确的方向吗?如果是这样,是否有任何算法沿着这些方向工作,但是比简单的总和更复杂?谢谢你的帮助!
答案 0 :(得分:1)
您解释的第二种方法是有效的。但是有更好的方法可以解决这类问题。 首先,你应该对语言模型有所了解并留下向量空间模型。 在第二步中,基于您的问题类似于专家查找/分析,您应该学习基线语言模型框架来实现解决方案。 您可以通过一些更改来实现A language modeling framework for expert finding,以便公式可以适应您的问题。 阅读On the assessment of expertise profiles还可以让您更好地了解上述框架的专家分析。 您可以在Balog's blog找到关于专家发现/分析的一些好的想法,资源和项目。
答案 1 :(得分:0)
我会采用SSRM [1]方法使用WordNet(提取数据库[2])作为语义词典来扩展查询(作业文档) - 因此您不仅限于直接的单词与单词匹配。 SSRM有自己的相似性度量(我相信该论文是开放访问的,如果没有,请检查:http://blog.veles.rs/document-similarity-computation-models-literature-review/,列出了许多相似度计算模型)。另外,如果您的语料库足够大,您可以尝试LSA / LSI [3,4](也在页面上介绍) - 不使用外部词典。但是,如果它是英文版,WordNet的语义图在所有方向都非常丰富(hyponims,synonims,hypernims ...... concepts / SinSet)。
底线:对于这样的具体领域,我会避免使用简单的SVM / TF-IDF。我测量了SSRM非常严重的边缘,而不是TF-IDF / VSM(以宏观平均F1,5级单标签分类,窄域测量)。
[1] A. Hliaoutakis,G。Varelas,E。Voutsakis,E.G.M。 Petrakis,E。Milios,Semantic Similarity的信息检索,Int。 J. Semant。 Web Inf。 SYST。 2(2006)55-73。 DOI:10.4018 / jswis.2006070104
[2] J.E. Petralba,一个从WordNet中提取的自然语言处理和文字游戏的数据库内容,在:2014 Int。 CONF。亚朗。 Process。,2014:pp.199-202。 DOI:10.1109 / IALP.2014.6973502
[3] P.W. Foltz,基于文本的研究的潜在语义分析,Behav。 RES。方法,仪器,计算机。 28(1996)197-202。 DOI:10.3758 / BF03204765
[4] A. Kashyap,L。Han,R。Yus,J。Sleeman,T。Satyapanich,S。Gandhi,T。Finin,使用LSA的鲁棒语义文本相似度,机器学习和语言资源,Springer Netherlands ,2016.doi:10.1007 / s10579-015-9319-2。