我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔在这里讲述:snownlp的最后一个功能“文本相似度”的测试结果。计算上还算简单,就是具体数值的由来,目前还未知。本文描述snownlp的文本相似度的获取方式,方法很简单,就是结果理解上稍稍有点困难。

苏南大叔:snownlp情感分析,如何计算获得文本相似度? - 文本相似度计算
snownlp情感分析,如何计算获得文本相似度?(图2-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。snownlp的文本相似度算法是BM25,具体来说,方法是.sim()。测试环境:win10python@3.6.8snownlp@0.12.3

传入数组,以词为单位

传入的是个二维数组,可以这么理解:

[["文档1关键词1"],["文档2关键词1"]]
from snownlp import SnowNLP
s = SnowNLP([['苏南大叔', '今天','很','不','高兴','高兴','高兴'],
             ['其实', '很',"高兴","心情","愉悦","愉悦","开心"],
             ['开心','笑容满面']])
print(s.sim(['高兴']))   # [-0.7896821236962176, -0.44784712220580003, 0]
print(s.sim("高兴"))     # [0, 0, 0]

苏南大叔:snownlp情感分析,如何计算获得文本相似度? - 文本相似度测试代码
snownlp情感分析,如何计算获得文本相似度?(图2-2)

n1n2n3n4n5n6n7
苏南大叔今天高兴高兴高兴
――――――――――――高兴高兴高兴

传入文本,以字为单位

这个例子里面,传入的是一句话。那么,.sim()的时候,数组也都是没有效果的了。

from snownlp import SnowNLP
s = SnowNLP("苏南大叔今天很高兴")
print(s.sim(['高兴']))   # [0, 0, 0, 0, 0, 0, 0, 0, 0]
print(s.sim(['不高兴'])) # [0, 0, 0, 0, 0, 0, 0, 0, 0]
print(s.sim('不高兴'))   # [0, 0, 0, 0, 0, 0, 0, 1.7346010553881066, 1.7346010553881066]
print(s.sim('高'))       # [0, 0, 0, 0, 0, 0, 0, 1.7346010553881066, 0]

分析

目前来看的话,传入的是数组的时候,和数组对比才有结果。传入的是文字的话,和单个文字对比才有结果。具体的数值是怎么计算来的,未知,待议。

相关链接

总结

不想总结啥,snownlp的各个功能都实验了一通,觉得都挺鸡肋的。后续的snownlp文章,可能会从源码角度对snownlp进行分析了。如果您想看相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    nlp