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

Posted

技术标签:

【中文标题】TF-IDF 和余弦相似度的替代方案(比较不同格式的文档)【英文标题】:Alternatives to TF-IDF and Cosine Similarity (comparing documents with different formats) 【发布时间】:2017-05-16 20:10:25 【问题描述】:

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

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

2) 对于每个职业(例如“数据分析师”),将该职业的职位列表的处理文本合并到一个文档中

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

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

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

非常感谢您提供的链接——简单浏览一下它们似乎就是我想要的。我赞成你的解决方案,但我没有足够的声誉让它出现。再次感谢!【参考方案2】:

我会采用 s-s-rM [1] 方法来扩展查询(作业文档),使用 WordNet(提取的数据库 [2])作为语义词典 - 因此您不仅限于直接的单词与单词匹配。 s-s-rM 有自己的相似度度量(我相信这篇论文是开放获取的,如果没有,请查看:http://blog.veles.rs/document-similarity-computation-models-literature-review/,列出了许多相似度计算模型)。或者,如果您的语料库足够大,您可以尝试 LSA/LSI[3,4](也包括在页面上) - 不使用外部词典。但是,如果是英文的话,WordNet 的语义图真的是全方位的丰富(hyponims, synonyms, hypernims...concepts/SinSet)。

底线:对于这样的具体域,我会避免使用简单的 SVM/TF-IDF。我在 TF-IDF/VSM 上测量了 s-s-rM 的非常严重的边际(测量为宏观平均 F1,5 类单标签分类,窄域)。

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

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

[3] Foltz,基于文本的研究的潜在语义分析,行为。水库。方法、仪器、计算。 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.

【讨论】:

以上是关于TF-IDF 和余弦相似度的替代方案(比较不同格式的文档)的主要内容,如果未能解决你的问题,请参考以下文章

Python中N-Gram、tf-idf和余弦相似度的简单实现

NLP文本相似度(TF-IDF)

计算两个数组之间余弦相似度的正确方法?

如何在 Lucene 中实现 tf-idf 和余弦相似度?

余弦相似度的应用

使用 sklearn 如何计算文档和查询之间的 tf-idf 余弦相似度?