python 两个word文档之间的相似度_用python计算两个文档的相似度(一)

一、相关的知识点及参考资料

这篇文章不会写很长,但是涉及的知识点蛮多,所以首先会在这里介绍相关的知识点,了解的同学可以一笑而过,不了解的同学最好能做一些预习,这对于你了解topic model以及gensim更有好处。如果以后时间允许,我可能会基于其中的某几个点写一篇比较详细的介绍性的文章。不过任何知识点首推维基百科,然后才是下面我所罗列的参考资料。

1) TF-IDF,余弦相似度,向量空间模型

这几个知识点在信息检索中是最基本的,入门级的参考资料可以看看吴军老师在《数学之美》中第11章“如何确定网页和查询的相关性”和第14章“余弦定理和新闻的分类”中的通俗介绍或者阮一峰老师写的两篇科普文章“TF-IDF与余弦相似性的应用(一):自动提取关键词”和“TF-IDF与余弦相似性的应用(二):找出相似文章”。

专业一点的参考资料推荐王斌老师在中科院所授的研究生课程“现代信息检索(Modern Information Retrieval)”的课件,其中“第六讲向量模型及权重计算”和该主题相关。或者更详细的可参考王斌老师翻译的经典的《信息检索导论》第6章或者其它相关的信息检索书籍。

2)SVD和LSI

想了解LSI一定要知道SVD(Singular value decomposition, 中文译为奇异值分解),而SVD的作用不仅仅局限于LSI,在很多地方都能见到其身影,SVD自诞生之后,其应用领域不断被发掘,可以不夸张的说如果学了线性代数而不明白SVD,基本上等于没学。想快速了解或复习SVD的同学可以参考这个英文tutorial: Singular Value Decomposition Tutorial , 当然更推荐MIT教授Gilbert Strang的线性代数公开课和相关书籍,你可以直接在网易公开课看相关章节的视频。

关于LSI,简单说两句,一种情况下我们考察两个词的关系常常考虑的是它们在一个窗口长度(譬如一句话,一段话或一个文章)里的共现情况,在语料库语言学里有个专业点叫法叫Collocation,中文译为搭配或词语搭配。而LSI所做的是挖掘如下这层词语关系:A和C共现,B和C共现,目标是找到A和B的隐含关系,学术一点的叫法是second-order co-ocurrence。以下引用百度空间上一篇介绍相关参考资料时的简要描述:LSI本质上识别了以文档为单位的second-order co-ocurrence的单词并归入同一个子空间。因此:1)落在同一子空间的单词不一定是同义词,甚至不一定是在同情景下出现的单词,对于长篇文档尤其如是。2)LSI根本无法处理一词多义的单词(多义词),多义词会导致LSI效果变差。A persistent myth in search marketing circles is that LSI grants contextuality; i.e., terms occurring in the same context. This is not always the case. Consider two documents X and Y and three terms A, B and C and wherein:A and B do not co-occur.X mentions terms A and CY mentions terms B and C.:. A—C—BThe common denominator is C, so we define this relation as an in-transit co-occurrence since both A and B occur while in transit with C. This is called second-order co-occurrence and is a special case of high-order co-occurrence.

这两个简明版本主要是通过简单的例子直观告诉你什么是SVD,什么是LSI,非常不错。

这几个版本的pdf文件我在微盘上上传了一个打包文件,也可以从这里下载:svd-lsi-doc.tar.gz

3) LDA

这个啥也不说了,隆重推荐我曾经在腾讯工作时的leader rickjin的”LDA数学八卦“系列,通俗易懂,娓娓道来,另外rick的其他系列也是非常值得一读的。

欢迎大家关注我的微信公众号:大邓带你玩转python

好的,针对你的问题,我可以给出以下几种常见的计算物品相似度的方法: 1. 余弦相似度(Cosine Similarity) 余弦相似度是一种常用的计算两个物品之间相似度的方法。它通过计算两个向量之间的余弦值来衡量它们的相似程度。在推荐系统中,可以将用户对物品的评分看作向量,使用余弦相似度计算两个物品之间相似度。 2. 皮尔逊相关系数(Pearson Correlation Coefficient) 皮尔逊相关系数也是一种常用的计算两个物品之间相似度的方法。它通过计算两个向量之间的皮尔逊相关系数来衡量它们的相似程度。在推荐系统中,可以将用户对物品的评分看作向量,使用皮尔逊相关系数计算两个物品之间相似度。 3. Jaccard相似度(Jaccard Similarity) Jaccard相似度是一种常用的计算两个物品之间相似度的方法。它通过计算两个集合的交集与并集的比值来衡量它们的相似程度。在推荐系统中,可以将用户对物品的评分看作集合,使用Jaccard相似度计算两个物品之间相似度。 4. 信息熵相似度(Entropy-Based Similarity) 信息熵相似度是一种基于信息论的计算两个物品之间相似度的方法。它通过计算两个物品之间的信息熵来衡量它们的相似程度。在推荐系统中,可以将用户对物品的评分看作概率分布,使用信息熵相似度计算两个物品之间相似度。 以上是常用的计算物品相似度的方法,不同的方法适用于不同的推荐场景,具体使用哪一种方法需要根据具体情况来选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值