不同品种猫猫有多相似呢,Python 文本相似度计算

0d441d89f2101d30120816d04f3924eb.png

71fd67289cd0874ef0817980ab394abe.jpeg

前言

之前小编呢爬过猫猫 20w 的交易数据,做了一个简单的数据分析,详情看这篇文章:

爬取 20W 猫猫数据,来了解一下喵喵~

最近碰到了文本相似度的问题,想到了猫猫数据中有品种的相关描述,于是用品种描述文本来研究一下文本相似度计算的。

查找了一下资料找到了几种实现方法,实现的目的都一样,小编就做了一个对比。

数据处理

a45e1b6e6e9ae2fdbd62532859aee0fb.png

数据原始有很多列,我们需要把 O 列直至末尾的这些描述每个品种猫猫的文本合为一列:

7c3037a5c19b420124636e3a27a30fe9.png

53db3728c532084e18d0d8427308b47a.png

以此计算每个品种的描述与其他品种描述的相似度,把“描述”列作为文本列表,“品种”作为索引,两两计算。

合并后的文本指数其实是挺多的,这样便于对比出那种方法更快。

difflib

difflib 是 Python 的内置库,基于 Ratcliff-Obershelp 算法(格式塔模式匹配)。

88c97bd96a49ebb68966ae064dca4bf5.png

b6797eca919d7a176ff0f9f5de89b8c4.png

计算值是 0-1 之间的,越接近 1 说明文本越相似。

fuzzywuzzy

fuzzywuzzy 是一个第三方库,基于莱文斯坦距离,需要安装 python-Levenshtein,fuzzywuzzy,直接 pip 即可。

这个原理最容易说明,莱文斯坦距离一个字符串变为另外一个字符串经过删除,插入,替换的编辑距离。

cdddcfb01c07f038627405c850e704df.png

68b95ab1ee47ec3b2692485f1f720893.png

计算的值介于 0-100,值越大说明两文本越相似。

余弦距离

接下来介绍的集中距离都是需要先将文本进行向量化的,通过向量化计算显示距离。

文本向量化必须两个对比的文本同时向量化操作,确保两文本向量化的长度一样才可进行计算,部分代码:

04dc3751b5a898e9f40fe864ab4c8277.png

两对比文本向量化后,再进行相似度计算:

b60b7ff7d03f397779851efdef8908b4.png

004952f8bc7b7c3ce7c2a2d98963d674.png

余弦相似度,值介于 0-1,越大说明两文本越相似。

从结果上看对比前两个,值要大于 0.9 才相当于有 60% 以上的相似度,前两种方法更为直观。

其他距离

其他距离的计算方法还有欧式距离,曼哈顿距离,切比雪夫距离,杰尔德距离,汉明距离,这些值的范围没有上限,越小说明文本越相似。

还有皮尔逊相关系数,这个计算的值介于 0-1,值越大说明文本越相似。

它们的实现方式都与余弦相似,详细可查看源代码。

结果

27cadbf10b67c7d4b5cea4a53fda03bf.png

小编使用了所有方法计算相似度,fuzzywuzz 方法计算的时间最快,其次是 difflib,且结果比较直观,其他方法都需要文本向量化在比较,所以在文本较长时,时间有点久。

最后使用 fuzzywuzz 计算的相似度,绘制热力相关图直观的展示猫猫品种哪些描述较为相似:

f60af5b2576674082c8a7004605cb8da.png

异国短毛猫与加菲猫描述相似度较高,英囯蓝白与英国短毛猫相似度也较高。

这样一个文本相似度计算就完成了。

源码获取

在公众号对话框回复关键字“文本相似度”即可获取

END

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注小编呗~小编给你分享爬虫,数据分析,可视化的内容噢~

扫一扫下方二维码即可关注我噢~

-END-

403e9b59f0a74f6c2f0a224a2e03a008.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值