TF-IDF 和余弦相似度的替代方案(比较不同格式的文档)

Alternatives to TF-IDF and Cosine Similarity (comparing documents with different formats)

我一直在从事一个小型的个人项目,该项目需要用户的工作技能,并根据这些技能为他们建议最理想的职业。我使用工作列表数据库来实现这一点。目前,代码的工作方式如下:

1) 处理每个职位列表的文本以提取列表中提到的技能

2) 对于每个职业(例如 "Data Analyst"),将该职业的工作列表的处理文本合并到一个文档中

3) 计算职业文档中每个技能的TF-IDF

在此之后,我不确定应该使用哪种方法根据用户技能列表对职业进行排名。我见过的最流行的方法是将用户的技能也视为文档,然后计算技能文档的 TF-IDF,并使用诸如余弦相似度之类的东西来计算技能文档与每个技能文档之间的相似度职业文件。

这对我来说似乎不是理想的解决方案,因为在比较两个相同格式的文档时最好使用余弦相似度。就此而言,TF-IDF 似乎根本不是适用于用户技能列表的合适指标。例如,如果用户将其他技能添加到他们的列表中,则每项技能的 TF 将会下降。实际上,我不关心技能在用户技能列表中出现的频率——我只关心他们是否拥有这些技能(也许他们对这些技能的了解程度)。

似乎更好的指标是执行以下操作:

1) 对于用户拥有的每项技能,计算该技能在职业文档中的TF-IDF

2) 对于每个职业,将用户所有技能的 TF-IDF 结果相加

3) 根据以上总和对职业进行排名

我的思路是否正确?如果是这样,是否有任何算法可以按照这些思路工作,但比简单的求和更复杂?感谢您的帮助!

您解释的第二种方法会起作用。但是有更好的方法可以解决这类问题。 一开始你应该对语言模型有所了解,离开向量 space 模型。 在第二步中,根据你的问题类型,类似于专家 finding/profiling 你应该学习一个基线语言模型框架来实现一个解决方案。 您可以通过稍作更改来实现 A language modeling framework for expert finding,以便公式可以适应您的问题。 另外阅读 On the assessment of expertise profiles 将使您更好地理解使用上述框架进行专家分析。 您可以在 Balog's blog 的专家 finding/profiling 上找到一些好的想法、资源和项目。

我会采用 SSRM [1] 方法来扩展查询(工作文档),使用 WordNet(提取的数据库 [2])作为语义词典 - 因此您不仅限于直接 word-vs-word 匹配。 SSRM 有自己的相似性度量(我相信论文是 open-access,如果不是,请查看: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(测量为 macro-average F1,5-class 单标签 class化,窄域)。

[1] A. Hliaoutakis,G. Varelas,E. Voutsakis,E.G.M。 Petrakis, E. Milios,通过语义相似性进行信息检索,Int。 J.语义。网络信息系统。 2 (2006) 55–73。 doi:10.4018/jswis.2006070104.

[2]J.E。 Petralba,从 WordNet 中提取的用于自然语言处理和文字游戏的数据库内容,载于:2014 Int。会议。亚洲郎。过程,2014 年:第 199-202 页。 doi:10.1109/IALP.2014.6973502.

[3]P.W。 Foltz,text-based 研究的潜在语义分析,行为。水库。方法、仪器、计算机。 28 (1996) 197–202。 doi:10.3758/BF0​​3204765.

[4] A. Kashyap、L. Han、R. Yus、J. Sleeman、T. Satyapanich、S. Gandhi、T. Finin,使用 LSA、机器学习和语言资源的稳健语义文本相似性,施普林格荷兰,2016 年。doi:10.1007/s10579-015-9319-2.