几种简单相似度算法:

1、简单共有词判断

假设现有文本A和B,将A、B经过分词、去停用词之后形成集合A={a1,a2,...,an}和集合B={b1,b2,...,bn}。用NUM(A∩B)表示集合A与集合B的交集的元素个数,用NUM(A∪B)表示集合A与集合B的并集元素个数,则相似度为:

2、VSM向量空间模型

VSM空间向量模型,该模型将文档映射到向量空间当中。假设文档用ai表示文档集A中的第i个文本,则ai表示为:ai={w1,w2,...,wi}其中wi的取值有两种方式,如下:

1)布尔类型,用0或1表示该词条是否在ai中出现,出现为1,否则为0.

例: 词袋: #长度为7

a1 = ( 1, 1, 1, 0, 0, 0, 0 ) #长度为7

a2 = ( 0, 1, 1, 0, 1, 1, 0 ) #长度为7

2)wi表示该词在ai中的权重,即

其中,N代表文档ai中词的总数,Nj表示词语i在文档ai中出现的次数。

经过以上两种方法得到空间向量之后,采用余弦算法计算相似度即可。

3、Simhash

simhash的主要思想是降维,将文本分词结果从一个高维向量映射成一个0和1组成的bit指纹(fingerprint),然后通过比较这个二进制数字串的差异进而来表示原始文本内容的差异。

4、TF-IDF算法

使用TF-IDF算法得到文本对应的词向量,然后利用余弦算法求相似度。其中TF表示词频,即一个词在这篇文本中出现的频率;IDF表示逆文档频率,即一个词在所有文本中出现的频率倒数,具体如下:

通过该公式获得每一个词的权重,然后组成每个文本向量。使用余弦算法计算相似度。

优缺点:TF-IDF的优点是简单快速,而且容易理解。缺点是有时候用词频来衡量文章中的一个词的重要性不够全面,有时候重要的词出现的可能不够多,而且这种计算无法体现位置信息,无法体现词在上下文的重要性。如果要体现词的上下文结构,那么你可能需要使用word2vec算法来支持

5、WORD2VEC算法

由第4个算法可以看出缺陷,word2vec算法增加了自然语言的理解,关注到词与词之间的关系,比如近义词,能够体现词的上下文结构。借助公布的大语料库训练的标准模型来计算自己的文档相似度。

word2vec相似度计算_文档相似度助力搜索引擎相关推荐

  1. word2vec相似度计算_干货|文本相似度计算

    点击上方"AI遇见机器学习",选择"星标"公众号 原创干货,第一时间送达 一.余弦测量相似度 为了定义两个目标词v和w之间的相似度,我们需要一个度量来取两个这样 ...

  2. 软件工程java向量相似度计算_向量的相似度计算常用方法9个

    <向量的相似度计算常用方法9个>由会员分享,可在线阅读,更多相关<向量的相似度计算常用方法9个(5页珍藏版)>请在人人文库网上搜索. 1.向量的相似度计算常用方法相似度的计算简 ...

  3. 文档相似度之词条相似度word2vec、及基于词袋模型计算sklearn实现和gensim

    文档相似度之词条相似度word2vec.及基于词袋模型计算sklearn实现和gensim 示例代码: import jieba import pandas as pd from gensim.mod ...

  4. Python自然语言处理:文档相似度计算(gensim.models)

    目录 1. tf-idf(每个文档形成一个tfidf向量) 2. 仅频率(每个文档形成一个频率值向量) 3. 仅出现与否(每个文档形成一个出现与否的二元向量) 4. Word2vec模型(每个词形成一 ...

  5. 使用spark计算文档相似度

    2019独角兽企业重金招聘Python工程师标准>>> 1.TF-IDF文档转换为向量 以下边三个句子为例 罗湖发布大梧桐新兴产业带整体规划 深化伙伴关系,增强发展动力 为世界经济发 ...

  6. 向量空间模型(VSM)在文档相似度计算上的简单介绍

      向量空间模型(VSM:Vector space model)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理. 假设共有十个词:w1,w2 ...

  7. vsm java_向量空间模型(VSM)在文档相似度计算上的简单介绍

    C#实现在: 向量空间模型(VSM:Vector space model)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理. 假设共有十个词: ...

  8. java文档相似度计算,计算文档与文档的相似度

    最近帮很多本科毕业生做文本数据分析,经常遇到的一个需求是计算文档相似度. 思路: 抽取语料(所有文档)中的词语,构建词典(词语与数字对应起来). 根据构建的词典对每个文档进行重新编码(将文档转化为向量 ...

  9. 文档相似度之doc2vec、文档聚类

    文档相似度之doc2vec.文档聚类 示例代码: import jieba import pandas as pd from gensim import corpora, models from ge ...

最新文章

  1. Aizu - 0033 Ball
  2. 还在 for 循环里使用 + 拼接字符串?明天不用来上班了!
  3. 卸载系统预装McAfee Agent
  4. 理财周报,致歉还远远不够
  5. 前端工程化系列[06]-Yeoman脚手架核心机制
  6. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤
  7. leetcode算法题--“气球” 的最大数量
  8. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP
  9. 2016年物联网市场5大趋势
  10. Delphi中如何将一个extended型等实数强制转换为integer型
  11. java发送文件_java 模拟http发送文件和参数
  12. 百度地图 Android SDK - 个性化地图
  13. Android系统(76)---ART和Dalvik区别
  14. C#获取文件编码格式(转)
  15. C语言sopc蜂鸣器按键弹奏中音,五邑大学sopc实验报告:基于自定义PWM的乐曲演奏实验.doc...
  16. java算法——哈希表 电话号码查询系统
  17. 【加拿大签证】加拿大访问学者签证所需材料【加拿大访学签证,超详细,看一篇就够了】
  18. ORB-SLAM2安装以及遇到问题
  19. 鸡年生的男宝宝取什么名字好?为宝宝起名也有小技巧
  20. 世界时间UT和协调世界时间UTC

热门文章

  1. POJ 1611 The Suspects (并查集)
  2. SAPGUI系统登录页面配置的SAProuter有什么用 1
  3. 深度学习:向人工智能迈进
  4. Linux 实例常用内核网络参数介绍与常见问题处理
  5. java springboot+maven发送邮件
  6. GOROOT、GOPATH、GOBIN、project目录
  7. (转) xcodebuild和xcrun自动化编译ipa包 笔记
  8. 贪吃蛇系列之一——引入
  9. 网络上经典的DOS小命令
  10. ppt android sdk,《0.AndroidSDK概述.ppt