如何计算两个文档的相似度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算两个文档的相似度相关的知识,希望对你有一定的参考价值。

如何计算两个文档的相似度
winmerge用这个
操作步骤为:
FC——文件比较命令
1.功能:比较文件的异同,并列出差异处。
2.类型:外部命令
3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]
4.使用说明:
(1)选用/A参数,为ASCII码比较模式;
(2)选用/B参数,为二进制比较模式;
(3)选用/C参数,将大小写字符看成是相同的字符。
(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。
参考技术A 当前 课程图谱 中所有课程之间的相似度全部基于gensim计算,自己写的调用代码不到一百行,topic模型采用 LSI (Latent semantic indexing, 中文译为浅层语义索引),LSI和 LSA (Latent semantic analysis,中文译为浅层语义分析)
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的同学可以参考这个英文tutorail: Singular Value Decomposition Tutorial , 当然更推荐MIT教授 Gilbert Strang的线性代数公开课 和相关书籍,你可以直接在网易公开课看相关章节的视频。

关于LSI,简单说两句,一种情况下我们考察两个词的关系常常考虑的是它们在一个窗口长度(譬如一句话,一段话或一个文章)里的共现情况,在语料库语言学里有个专业点叫法叫 Collocation ,中文译文搭配或词语搭配。而LSI所做的是挖掘如下这层词语关系: A和C共现,B和C共现,目标是找到A和B的隐含关系,学术一点的叫法是second-order co-ocurrence 。

我们如何计算由它们的评分表示的两个项目的调整余弦相似度?

【中文标题】我们如何计算由它们的评分表示的两个项目的调整余弦相似度?【英文标题】:How can we calculate adjusted cosine similarity for two items represented by their ratings? 【发布时间】:2016-05-30 08:35:22 【问题描述】:

我想计算分别由ab 表示的两个项目的调整余弦相似度值。我们采用两个向量a=2,3,1,0b=1,0,4,2。我知道余弦相似度是如何工作的,但我坚持使用调整后的余弦相似度方法。

【问题讨论】:

您面临的编程问题到底是什么? 【参考方案1】:

这可能对你有用:

function sim(i,j) 
    item1 = 0
    item2 = 0

    for (k = 0; k < length(data); k++) 
        item1 += (data[k][i] - avg(data[k]))
        item2 += (data[k][j] - avg(data[k]))
    

    var numerator = item1*item2
    var denominator =(sqrt(item1*item1)*sqrt(item2*item2)
    var result = (numerator /denominator )
    return result

【讨论】:

以上是关于如何计算两个文档的相似度的主要内容,如果未能解决你的问题,请参考以下文章

文本相似度算法

Python Gensim:如何使用 LDA 模型计算文档相似度?

计算机如何理解事物的相关性-文档的相似度判断

如何计算两个文本文档之间的相似度?

如何计算两个文本内容的相似度?

针对许多文档计算文本相似度