Python - 中文文本进行余弦相似度比较
今天,在看论文的时候,突然想到了一件事情,爱是相对的,是双方的事情。那么“你爱我”和“你爱我”的相似度是多少呢?采用余弦相似度的方式来进行相似度比较。首先“简单”的介绍一下余弦相似度:
概念:余弦相似性通过计算两个向量的余弦角来测量两个向量之间的相似性。
余弦相似性公式如下:

当时,找关于中文的相似度比较的时候,废了一点点时间,干脆自己写一个,当做笔记了。关于一些过程都放到了代码里面。代码如下所示:
import numpy as np
from numpy.linalg import norm
import jieba
# 1、原始文本
origin_text1 = "我爱你"
origin_text2 = "你爱我"
# 2、NLP 分词 jieba
text1_list=jieba.cut(origin_text1,cut_all=False, HMM=False)
text2_list=jieba.cut(origin_text2,cut_all=False, HMM=False) # 3、使用Python中的collections库,将分词后的文本转换成词汇向量
import collections
A = ['我','爱','你']
B = ['你','爱','我']
text1_counter = collections.Counter(text1_list)
text2_counter = collections.Counter(text2_list) # 4、使用Python中的math库,计算两个词汇向量的余弦相似度:
import math def cos_sim(vector1, vector2):
numerator = sum(a * b for a, b in zip(vector1, vector2))
denominator = math.sqrt(sum(a**2 for a in vector1)) * math.sqrt(sum(b**2 for b in vector2))
return round(numerator / denominator, 3) print(cos_sim(text1_counter.values(), text2_counter.values()))
# 0.577
其实,从结果来看的话,是0.577。那么是不是说,单纯一方面的爱别人,只能得到一般成功的概率。
因为,我采用jieba分词的形式,对这两句话进行分词,但是通过结果查看得知,jieba分完词之后,结果还是“我爱你”、“你爱我”。然后我采用['我','爱','你']、['你','爱','我']的形式,发现结果为1。这表明了爱别人是有收获的。
如果有错误,欢迎大家指正,谢谢!!!
Python - 中文文本进行余弦相似度比较的更多相关文章
- python 2 计算字符串 余弦相似度
def get_ord_list(str): return [ord(i) for i in str] def calcu_approx(str1,str2): def dot(A,B): retur ...
- [转]python进行中文文本聚类(切词以及Kmeans聚类)
简介 查看百度搜索中文文本聚类我失望的发现,网上竟然没有一个完整的关于Python实现的中文文本聚类(乃至搜索关键词python 中文文本聚类也是如此),网上大部分是关于文本聚类的Kmeans聚类的原 ...
- Python简单实现基于VSM的余弦相似度计算
在知识图谱构建阶段的实体对齐和属性值决策.判断一篇文章是否是你喜欢的文章.比较两篇文章的相似性等实例中,都涉及到了向量空间模型(Vector Space Model,简称VSM)和余弦相似度计算相关知 ...
- word2vec词向量训练及中文文本类似度计算
本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...
- 余弦相似度及基于python的三种代码实现、与欧氏距离的区别
1.余弦相似度可用来计算两个向量的相似程度 对于如何计算两个向量的相似程度问题,可以把这它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向.两条线段之间形成一个夹角, ...
- SnowNLP:一个处理中文文本的 Python 类库[转]
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和Te ...
- python实现余弦相似度文本比较
向量空间模型VSM: VSM的介绍: 一个文档可以由文档中的一系列关键词组成,而VSM则是用这些关键词的向量组成一篇文档,其中的每个分量代表词项在文档中的相对重要性. VSM的例子: 比如说,一个文档 ...
- Python 余弦相似度与皮尔逊相关系数 计算
夹角余弦(Cosine) 也可以叫余弦相似度. 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异. (1)在二维空间中向量A(x1,y1)与向量B(x2,y2 ...
- python读入中文文本编码错误
python读入中文文本编码错误 python读入中文txt文本: #coding:utf-8 def readFile(): fp = open('emotion_dict//neg//neg_al ...
- python结巴分词余弦相似度算法实现
过余弦相似度算法计算两个字符串之间的相关度,来对关键词进行归类.重写标题.文章伪原创等功能, 让你目瞪口呆.以下案例使用的母词文件均为txt文件,两种格式:一种内容是纯关键词的txt,每行一个关键词就 ...
随机推荐
- 基于生成式预训练Transformer的跨语言文本摘要与情感分析
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成 ...
- 好的,以下是我为您拟定的自然语言处理(NLP)领域的100篇热门博客文章标题,以逻辑清晰、结构紧凑、简单易懂的
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 1. 机器翻译 2. 文本分类 3. 情感分析 5. 优化与改进 6. 结论与展望 好的,以下是我为您拟定的 ...
- PlayWright(十二)- PO模式
1.PO模式是什么? PO,即Page Object,直译为页面对象,代表 Web 应用程序的一部分 具体什么意思呢,通俗来讲,一个页面有输入.点击.搜索功能,而且有很多页面,这时候我们就采用每个 ...
- 大白话讲讲 Go 语言的 sync.Map(二)
上一篇文章 <大白话讲讲 Go 语言的 sync.Map(一)> 讲到 entry 数据结构,原因是 Go 语言标准库的 map 不是线程安全的,通过加一层抽象回避这个问题. 当一个 ke ...
- KVM (Centos7)使用macvtap网卡的后续 -- 宿主机创建macvtap网卡,并配置ip
因为使用虚拟机上的 macvtap 网卡与宿主机器上的网卡无法直接通信,所以需要在宿主机上也创建 macvtap 网卡,将 ip 迁移过去. 因为未能找到配置文件的设置方法,所以使用脚本来配置,并将脚 ...
- 深度系统安装mysql
# 安装 Mysql 8.0.19下载 MySQL Community Server 8.0.19 [Compressed TAR Archive](mysql-8.0.19-linux-glibc2 ...
- Cilium系列-11-启用带宽管理器
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...
- OpenLayers示例
http://develop.smaryun.com:81/API/JS/OL3InterfaceDemo/index.htm
- Python类型提示
摘自:Python 类型提示简介 - FastAPI (tiangolo.com) 快速入门 类型提示用于声明一个变量的类型,在Python 3.6+版本的时候引入. 示例: def get_full ...
- # Unity 如何获取Texture 的内存大小
Unity 如何获取Texture 的内存大小 在Unity中,要获取Texture的内存文件大小,可以使用UnityEditor.TextureUtil类中的一些函数.这些函数提供了获取存储内存大小 ...