计算文本相似度-Word2Vec计算
来源于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计算相关推荐
- 使用余弦相似度算法计算文本相似度-数学
20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势,相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0, ...
- 自然语言处理(NLP)之使用TF-IDF模型计算文本相似度
自然语言处理(NLP)之使用TF-IDF模型计算文本相似度 所用数据集:ChnSentiCorp_htl_all.csv 语料库即存放稀疏向量的列表. 要注意的是,搜索文本text与被检索的文档共用一 ...
- python汉明距离_simhash+汉明距离计算文本相似度
****由于最近需要做大规模的文本相似度的计算,所以用到了simhash+汉明距离来快速计算文本的相似度.** **simhash的原理如下图:其中的weight采用的是jieba的tf-idf的结果 ...
- 使用simhash计算文本相似度
1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 文本相似度计算常用于网页去重以及NLP里文本分析等 ...
- 使用余弦相似度计算文本相似度
1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 2.向量余弦计算文本相似度 2.1 原理 余弦相似 ...
- 使用gensim计算文本相似度
使用gensim计算文本相似度 计算文本相似度步骤逻辑 1.将文本数据,通过jieba分词进行处理,形成一个二维数组 2.将二维数组生成词典 3.将二维数组通过doc2bow稀疏向量,形成语料库 4. ...
- 使用编辑距离计算文本相似度
1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 3. 最小编辑距离计算文本相似度 3.1 编辑距离 ...
- python 文本相似度计算函数_四种计算文本相似度的方法对比
作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...
- DSSM算法-计算文本相似度
转载请注明出处: http://blog.csdn.net/u013074302/article/details/76422551 导语 在NLP领域,语义相似度的计算一直是个难题:搜索场景下quer ...
最新文章
- java中action请求_java模拟js发送action请求
- signature=a7ab3f52fd3143e911ffec68c5ce32d7,2019年强网杯crypto部分题解
- 查询阜阳2021高考成绩,2021年阜阳高考成绩排名及成绩公布时间什么时候出来
- antd react dva在model中使用另一个model的state值
- 微课|中学生可以这样学Python(2.3.3节):filter()函数
- 微信小程序教程笔记7
- C语言习题答案【3】(仅参考)
- x550网卡linux驱动,Intel英特尔X520/X540/X550系列网卡驱动24.3版For Win8.1/10(2019年11月4日发布)...
- 【转】工业物联网技术(IIoT)的技术与挑战(PPT全文)
- 网易云linux版是什么格式,网易云音乐发布Linux版本
- JavaScript按住鼠标左键选中元素, 实现框选(Rubberband)效果
- 二进制安装habor
- 只有手机号或者身份证能查出来绑定QQ号码?大神请赐教
- mac 设置阿里企业邮箱
- 既有住宅加装电梯数学建模问题
- 【云原生之k8s】k8s基础详解
- Ingress-Nginx服务暴露基础学习与实践
- 依据象限搜索及混合预计耗费的A*改进算法,包含8邻域及24邻域的改进
- 文盘Rust -- 子命令提示,提高用户体验
- 读取服务器进程信息,服务器读取客户端进程