来源于https://juejin.im/post/5b237b45f265da59a90c11d6
Word2Vec,顾名思义,其实就是将每一个词转换为向量的过程。
如果不了解的话可以参考:https://blog.csdn.net/itplus/article/details/37969519
这里我们可以直接下载训练好的 Word2Vec 模型,
模型的链接地址为:https://pan.baidu.com/s/1TZ8GII0CEX32ydjsfMc0zw
是使用新闻、百度百科、小说数据来训练的 64 维的 Word2Vec 模型,数据量很大,整体效果还不错,我们可以直接下载下来使用,这里我们使用的是 news_12g_baidubaike_20g_novel_90g_embedding_64.bin 数据,然后实现 Sentence2Vec,代码如下:

import gensim
import jieba
import numpy as np
from scipy.linalg import normmodel_file = './word2vec/news_12g_baidubaike_20g_novel_90g_embedding_64.bin'
model = gensim.models.KeyedVectors.load_word2vec_format(model_file, binary=True)def vector_similarity(s1, s2):def sentence_vector(s):words = jieba.lcut(s)v = np.zeros(64)for word in words:v += model[word]v /= len(words)return vv1, v2 = sentence_vector(s1), sentence_vector(s2)return np.dot(v1, v2) / (norm(v1) * norm(v2))

在获取 Sentence Vector 的时候,我们首先对句子进行分词,然后对分好的每一个词获取其对应的 Vector,然后将所有 Vector 相加并求平均,这样就可得到 Sentence Vector 了,然后再计算其夹角余弦值即可。

调用示例如下:

s1 = '你在干嘛'
s2 = '你正做什么'
vector_similarity(s1, s2)

结果如下:

0.6701133967824016

这时如果我们再回到最初的例子看下效果:

strings = ['你在干什么','你在干啥子','你在做什么','你好啊','我喜欢吃香蕉'
]target = '你在干啥'for string in strings:print(string, vector_similarity(string, target))

依然是前面的例子,我们看下它们的匹配度结果是多少,运行结果如下:

你在干什么 0.8785495016487204
你在干啥子 0.9789649689827049
你在做什么 0.8781992402695274
你好啊 0.5174225914249863
我喜欢吃香蕉 0.582990841450621

可以看到相近的语句相似度都能到 0.8 以上,而不同的句子相似度都不足 0.6,这个区分度就非常大了,可以说有了 Word2Vec 我们可以结合一些语义信息来进行一些判断,效果明显也好很多。所以总体来说,Word2Vec 计算的方式是非常好的。另外学术界还有一些可能更好的研究成果,这个可以参考知乎上的一些回答:
https://www.zhihu.com/question/29978268/answer/54399062
。以上便是进行句子相似度计算的基本方法和 Python 实现,
本节代码地址:
https://github.com/AIDeepLearning/SentenceDistance

计算文本相似度-Word2Vec计算相关推荐

  1. 使用余弦相似度算法计算文本相似度-数学

    20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势,相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0, ...

  2. 自然语言处理(NLP)之使用TF-IDF模型计算文本相似度

    自然语言处理(NLP)之使用TF-IDF模型计算文本相似度 所用数据集:ChnSentiCorp_htl_all.csv 语料库即存放稀疏向量的列表. 要注意的是,搜索文本text与被检索的文档共用一 ...

  3. python汉明距离_simhash+汉明距离计算文本相似度

    ****由于最近需要做大规模的文本相似度的计算,所以用到了simhash+汉明距离来快速计算文本的相似度.** **simhash的原理如下图:其中的weight采用的是jieba的tf-idf的结果 ...

  4. 使用simhash计算文本相似度

    1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 文本相似度计算常用于网页去重以及NLP里文本分析等 ...

  5. 使用余弦相似度计算文本相似度

    1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 2.向量余弦计算文本相似度 2.1 原理 余弦相似 ...

  6. 使用gensim计算文本相似度

    使用gensim计算文本相似度 计算文本相似度步骤逻辑 1.将文本数据,通过jieba分词进行处理,形成一个二维数组 2.将二维数组生成词典 3.将二维数组通过doc2bow稀疏向量,形成语料库 4. ...

  7. 使用编辑距离计算文本相似度

    1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 3. 最小编辑距离计算文本相似度 3.1 编辑距离 ...

  8. python 文本相似度计算函数_四种计算文本相似度的方法对比

    作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...

  9. DSSM算法-计算文本相似度

    转载请注明出处: http://blog.csdn.net/u013074302/article/details/76422551 导语 在NLP领域,语义相似度的计算一直是个难题:搜索场景下quer ...

最新文章

  1. java中action请求_java模拟js发送action请求
  2. signature=a7ab3f52fd3143e911ffec68c5ce32d7,2019年强网杯crypto部分题解
  3. 查询阜阳2021高考成绩,2021年阜阳高考成绩排名及成绩公布时间什么时候出来
  4. antd react dva在model中使用另一个model的state值
  5. 微课|中学生可以这样学Python(2.3.3节):filter()函数
  6. 微信小程序教程笔记7
  7. C语言习题答案【3】(仅参考)
  8. x550网卡linux驱动,Intel英特尔X520/X540/X550系列网卡驱动24.3版For Win8.1/10(2019年11月4日发布)...
  9. 【转】工业物联网技术(IIoT)的技术与挑战(PPT全文)
  10. 网易云linux版是什么格式,网易云音乐发布Linux版本
  11. JavaScript按住鼠标左键选中元素, 实现框选(Rubberband)效果
  12. 二进制安装habor
  13. 只有手机号或者身份证能查出来绑定QQ号码?大神请赐教
  14. mac 设置阿里企业邮箱
  15. 既有住宅加装电梯数学建模问题
  16. 【云原生之k8s】k8s基础详解
  17. Ingress-Nginx服务暴露基础学习与实践
  18. 依据象限搜索及混合预计耗费的A*改进算法,包含8邻域及24邻域的改进
  19. 文盘Rust -- 子命令提示,提高用户体验
  20. 读取服务器进程信息,服务器读取客户端进程

热门文章

  1. 【项目管理】敏捷项目的史诗与迭代
  2. Mac上常用软件-2018
  3. 匈牙利法及其最优性分析
  4. SpringMVC大体流程框架类图版
  5. S4D440Customcode adaption practice
  6. 自建ngrok服务支持https访问
  7. 微软远程桌面0x104_如何处理WIN10上的远程桌面错误0x104教程
  8. OpenGL应用:天空盒子(SkyBox)
  9. TOR交换机和普通交换机有什么区别?
  10. spark-2.2.0发行说明