`
gaojingsong
  • 浏览: 1182510 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

文本相似度余弦相似度算法原理

阅读更多

余弦相似度基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。

第一步,预处理主要是进行中文分词和去停用词,分词。

第二步,列出所有的词。

第三步,计算词频。

第四步,写出词频向量。

 

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

余弦相似度缺陷

这类算法没有很好地解决文本数据中存在的自然语言问题,即同义词和多义词。这样对于搜索的精度产生很大的影响。

 

衡量文本相似度的几种手段:

(1)最长公共子串(基于词条空间)

(2)最长公共子序列(基于权值空间、词条空间)

(3)最少编辑距离法(基于词条空间)

(4)汉明距离(基于权值空间)

(5)余弦值(基于权值空间)

 

 

 

 

向量空间余弦相似度(Cosine Similarity)

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

上图两个向量a,b的夹角很小可以说a向量和b向量有很高的的相似性,极端情况下,a和b向量完全重合。如下图:

如上图二:可以认为a和b向量是相等的,也即a,b向量代表的文本是完全相似的,或者说是相等的。如果a和b向量夹角较大,或者反方向。如下图

如上图三: 两个向量a,b的夹角很大可以说a向量和b向量有很底的的相似性,或者说a和b向量代表的文本基本不相似。那么是否可以用两个向量的夹角大小的函数值来计算个体的相似度呢?

向量空间余弦相似度理论就是基于上述来计算个体相似度的一种方法。下面做详细的推理过程分析。

想到余弦公式,最基本计算方法就是初中的最简单的计算公式,计算夹角

 

图(4)

的余弦定值公式为:

但是这个是只适用于直角三角形的,而在非直角三角形中,余弦定理的公式是

图(5)

三角形中边a和b的夹角 的余弦计算公式为:

公式(2)

在向量表示的三角形中,假设a向量是(x1, y1),b向量是(x2, y2),那么可以将余弦定理改写成下面的形式:

图(6)

向量a和向量b的夹角 的余弦计算如下

 

扩展,如果向量a和b不是二维而是n维,上述余弦的计算法仍然正确。假定a和b是两个n维向量,a是  ,b是  ,则a与b的夹角 的余弦等于:

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于0,即两个向量相等,这就叫"余弦相似性"。

0
0
分享到:
评论

相关推荐

    易语言快速计算文本相似度

    在计算文本相似度时,常见的算法有Jaccard相似度、余弦相似度、编辑距离(Levenshtein距离)、最长公共子序列(Longest Common Subsequence,LCS)等。这些算法各有特点,适用于不同的场景。例如,Jaccard相似度适用...

    kmeans算法 文本相似度计算(可控制台手动输入数据)

    综上所述,KMeans算法在文本相似度计算中是一个有效的工具,通过控制台手动输入数据可以实现定制化的分析。理解和应用这些概念对于理解和处理文本数据的聚类问题至关重要。在实际项目中,结合合适的特征工程和预处理...

    余弦相似度计算代码

    余弦相似度是一种用于衡量两个非零向量之间角度的度量方法,广泛应用于信息检索、文本挖掘、推荐系统等领域。它通过计算两个向量之间的夹角余弦值来评估它们之间的相似性:值越接近1表示两向量越相似;值越接近0则...

    余弦相似度算法实现

    余弦相似度是一种在信息检索和数据挖掘领域广泛使用的衡量两个非零向量之间相似性的方法。在文本分析中,它被用来评估两篇文档...对于初学者来说,这是一个很好的学习资源,能够帮助理解算法原理并将其应用于实际项目。

    易语言文本相似度判断模块源码

    通过实际运行示例,用户可以直观地看到文本相似度判断的效果,理解其工作原理。 9. **资源分享**: 这个资源提供了一个下载链接,允许用户获取到完整的源码,这对于初学者和开发者来说是一份宝贵的参考资料,他们...

    易语言向量法计算文本相似度

    这里我们将深入探讨易语言中的向量法计算文本相似度的原理和实现。 向量法,通常指的是词袋模型(Bag-of-Words Model)或TF-IDF(Term Frequency-Inverse Document Frequency)模型,这些方法将文本转化为数值向量...

    text-similarity-php, 通过余弦定理 分词计算文本相似度PHP版.zip

    文本相似度计算是自然语言处理领域的一个重要任务,主要用于...它涉及了自然语言处理的基本步骤,包括分词、向量化以及相似度计算,对于理解文本相似度计算的原理以及在PHP环境中如何实现这些功能有着重要的参考价值。

    数据挖掘与数据分析应用案例 数据挖掘算法实践基于Java的文本相似度(Levenshtein distance算法)计算.doc

    ### 数据挖掘与数据分析应用案例:基于Java的文本相似度(Levenshtein distance算法)计算 #### 一、引言 在数据科学和自然语言处理领域,文本相似度的计算是一项核心任务。它不仅用于信息检索、数据挖掘,还广泛...

    文本相似度对比器(Java)

    文本相似度计算通常基于词频、余弦相似性或者TF-IDF等算法。在这个Java程序中,可能采用了这些方法之一来度量两个文本之间的相似度。词频统计每个文本中单词出现的次数,余弦相似性通过计算两个文本向量的夹角余弦...

    Java 推荐系统 字符串 余弦相似度 算法

    ### 二、余弦相似度算法原理 余弦相似度是一种用于计算两个非零向量之间角度的余弦值,以此来衡量两个个体间的相似度。具体来说,在本例中,我们将每个字符串视为一个向量空间中的向量,每个字符出现的次数作为该...

    易语言源码易语言快速计算文本相似度源码.rar

    易语言是一种专为中国人设计的编程语言,它的语法简洁明了,强调易学易用,适合初学者入门。...通过对这份源码的分析和实践,开发者不仅可以掌握文本相似度计算的基本原理,还能提升在易语言环境下的编程技能。

    毕业设计:Python (bert)深度学习文本相似度检测系统设计(源码 + 数据库)

    4. **文本相似度计算**:学习如何使用BERT的输出向量计算文本之间的余弦相似度或其他相似度指标。 5. **数据库操作**:掌握SQL语言,理解如何设计数据库表结构,进行数据的插入、查询、更新和删除操作。 6. **数据...

    .NET下文本相似度算法余弦定理和SimHash浅析及应用实例分析

    本文实例讲述了.NET下文本相似度算法余弦定理和SimHash浅析及应用。分享给大家供大家参考。具体分析如下: 余弦相似性 原理:首先我们先把两段文本分词,列出来所有单词,其次我们计算每个词语的词频,最后把词语...

    文本余弦相似度

    总结,文本余弦相似度是一种有效的文本相似度度量方法,它通过向量空间模型将文本转化为可比较的形式,并利用余弦相似度衡量这些向量之间的角度关系。这种方法在多种文本处理任务中都有广泛的应用,包括信息检索、...

    数据挖掘与数据分析应用案例 数据挖掘算法实践 基于C++的文本相似度算法实现.doc

    ### 数据挖掘与数据分析应用案例:基于C++的文本相似度算法实现 #### 一、文本相似度计算系统概述 文本相似度计算系统是一项重要的数据挖掘技术,它涉及到多个步骤,包括去除停用词、文本特征选择、加权、余弦算法...

    人工智能大作业:关于计算文本相似度的深度神经网络模型与算法研究分析(BERT、SentenceBERT、SimCSE).zip

    在计算文本相似度时,BERT可以对输入的文本进行编码,得到向量表示,然后通过计算两个向量之间的余弦相似度来评估它们的相似程度。 SentenceBERT(SBERT)是对BERT的扩展,专门针对句子级别的表示学习。SBERT采用...

    python170文本相似度计算系统.zip

    Python170文本相似度计算系统是一个利用Python编程语言实现的工具,用于衡量两段文本之间的相似程度。...通过学习和理解这个Python170系统,我们可以深入掌握文本相似度计算的核心原理和技术,并将其应用到实际问题中。

    易语言源码易语言向量法计算文本相似度源码.rar

    这个压缩包中的源码实现了以上流程,对于学习易语言和理解文本相似度计算的原理非常有帮助。你可以通过阅读和分析源代码,加深对这些概念和技术的理解,并可能扩展应用到其他项目中。同时,这也是一个很好的实践案例...

Global site tag (gtag.js) - Google Analytics