今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。
为了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)。下面,我举一个例子来说明,什么是"余弦相似性"。
为了简单起见,我们先从句子着手。
句子A:我喜欢看电视,不喜欢看电影。 |
句子B:我不喜欢看电视,也不喜欢看电影。 |
请问怎样才能计算上面两句话的相似程度?
基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。
第一步,分词。
句子A:我/喜欢/看/电视,不/喜欢/看/电影。 |
句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。 |
第二步,列出所有的词。
第三步,计算词频。
句子A:我 1,喜欢 2,看 2,电视 1,电影 1,不 1,也 0。 |
句子B:我 1,喜欢 2,看 2,电视 1,电影 1,不 2,也 1。 |
第四步,写出词频向量。
句子A:[1, 2, 2, 1, 1, 1, 0] |
句子B:[1, 2, 2, 1, 1, 2, 1] |
到这里,问题就变成了如何计算这两个向量的相似程度。
我们可以把它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
以二维空间为例,上图的a和b是两个向量,我们要计算它们的夹角θ。余弦定理告诉我们,可以用下面的公式求得:
假定a向量是[x1, y1],b向量是[x2, y2],那么可以将余弦定理改写成下面的形式:
数学家已经证明,余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,A是 [A1, A2, ..., An] ,B是 [B1, B2, ..., Bn] ,则A与B的夹角θ的余弦等于:
使用这个公式,我们就可以得到,句子A与句子B的夹角的余弦。
余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。所以,上面的句子A和句子B是很相似的,事实上它们的夹角大约为20.3度。
由此,我们就得到了"找出相似文章"的一种算法:
(1)使用TF-IDF算法,找出两篇文章的关键词;
(2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
(3)生成两篇文章各自的词频向量;
(4)计算两个向量的余弦相似度,值越大就表示越相似。
"余弦相似度"是一种非常有用的算法,只要是计算两个向量的相似程度,都可以采用它。

- 大小: 3.8 KB

- 大小: 2.4 KB

- 大小: 4.7 KB

- 大小: 3.1 KB

- 大小: 7.6 KB

- 大小: 5.3 KB

- 大小: 3.2 KB
分享到:
相关推荐
在机器学习领域,余弦相似度是一种常用的度量两个非零向量之间角度的方法,它在计算图片相似性时有着广泛的应用。通过比较图片特征向量之间的夹角余弦值,我们可以判断图片内容的相似程度。这篇博文链接(<https://...
在找出相似文章的场景中,首先使用TF-IDF算法对每篇文章进行关键词提取,确保选取的关键词能反映文章的主题。然后,将所有文章的关键词合并,计算每篇文章对这个关键词集合的词频向量。这里的词频可以是相对词频,以...
SimHash的主要优点在于计算速度快,可以快速找出相似的字符串。在C#中,可以使用BitConverter类将字符串转换为字节,再进行位运算,最后通过比较哈希签名的差异来评估相似度。 在提供的压缩包文件"StringSimilarity...
让我们深入探讨一下余弦相似性和其在图片相似度检测中的应用。 余弦相似度是基于向量空间模型的一种度量方法,它通过计算两个向量的夹角余弦值来判断它们的相似度。在二维或高维空间中,如果两个向量的方向接近,...
总的来说,余弦相似度是一种有效的文本相似性度量方法,它基于向量的角度关系,能够在大量文本数据中快速找出相似的内容,为各种NLP任务提供有力的支持。在实际应用中,结合其他技术如TF-IDF、N-grams等可以进一步...
在IT领域,文本相似度计算是一项重要的任务,用于找出两篇或多篇文章之间的相似性。本文主要探讨了如何利用C#编程语言实现基于TF-IDF的余弦算法来完成这一任务,特别是针对文章内容以及图片的相似度比较。下面将详细...
- 在内容为基础的图像检索系统中,用户输入一张图像,系统通过计算待检索图像与数据库中所有图像的相似性,找出最相似的图像。 - 在人脸识别技术中,人脸特征的提取和相似性度量是关键步骤,用于识别或验证个体...
例如,在社交网络分析中,两个用户可能有相似的帖子或关注的页面,余弦相似度可以帮助找出这些相似的用户群体。 在提供的压缩包文件"余弦相识度的计算"中,可能包含了具体的C#代码实现,你可以通过查看源码了解详细...
余弦相似性是一种在多维空间中衡量两个非零向量之间角度的度量方法,广泛应用于文本相似性分析、信息检索、推荐系统等领域。它通过计算两个向量的夹角余弦值来评估它们之间的相似程度。在文本处理中,通常将文本转化...
常见的节点相似性算法有Jaccard相似性、余弦相似性和Adamic/Adar指数等。 1. Jaccard相似性:计算两个节点的共同邻居占各自邻居总数的比例,适用于边稀疏的网络。 2. 余弦相似性:基于节点的邻接矩阵,通过计算两...
- 在旅行相关的语境中,余弦相似度可以用来比较两个旅行目的地描述的相似性,或者找出用户评论之间的共性。 - 它也可以用于推荐系统,根据用户的旅行历史或偏好,找到与之最相似的其他旅行选择。 - 此外,它还...
例如,欧拉距离适合处理连续数据,余弦相似性和皮尔逊相关系数适合处理方向或相关性,而Jaccard指数和Dice系数则适用于处理离散的集合数据。理解这些度量的性质和应用场景,对于有效地解决问题至关重要。
总结起来,余弦相似度推荐系统的核心是利用余弦相似度计算用户与物品的相似性,进而生成个性化的推荐。在Jupyter Notebook中,我们可以轻松实现这一过程,从数据预处理到结果分析,为实际应用提供了一个完整的解决...
2. **推荐系统**:在推荐系统中,余弦相似度用于找出用户兴趣的相似性,从而推荐与用户过去行为相似的其他项目。 3. **信息检索**:搜索引擎会使用余弦相似度来评估查询与文档的相关性。 4. **图像处理**:在图像...
3. 防欺诈:检测异常行为,如恶意刷分、团伙作弊,通过相似性分析找出潜在的欺诈模式。 4. 热门内容推荐:根据玩家兴趣相似性,推送个性化游戏内容,提升用户体验。 5. 游戏平衡调整:分析节点间的关系,优化游戏...
4. **应用**:TF-IDF算法常用于自动关键词提取,即从大量文本中找出最能代表文档主题的词汇。此外,它还应用于信息检索系统,用于衡量查询词与文档的相关性。通过计算搜索词的TF-IDF值并比较不同文档的总和,可以...
通过对这些数据的分析,我们可以找出不同发动机在生命周期内的共同特征和变化规律。 在MATLAB中,我们可以利用统计学方法,如主成分分析(PCA)、聚类分析或因子分析来识别发动机性能的关键参数,并构建相似性模型。...
例如,皮尔逊相关系数衡量的是两个用户评分序列之间的线性相关性,而余弦相似性则通过计算两个向量的夹角余弦值来评估它们的相似程度。 协同过滤是推荐系统中最经典的算法之一,分为用户-用户协同过滤和物品-物品...