snownlp情感分析,如何计算获得文本相似度?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔在这里讲述:snownlp
的最后一个功能“文本相似度”的测试结果。计算上还算简单,就是具体数值的由来,目前还未知。本文描述snownlp
的文本相似度的获取方式,方法很简单,就是结果理解上稍稍有点困难。
大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。snownlp
的文本相似度算法是BM25
,具体来说,方法是.sim()
。测试环境:win10
,python@3.6.8
,snownlp@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]
n1 | n2 | n3 | n4 | n5 | n6 | n7 |
---|---|---|---|---|---|---|
苏南大叔 | 今天 | 很 | 不 | 高兴 | 高兴 | 高兴 |
――― | ――― | ――― | ――― | 高兴 | 高兴 | 高兴 |
传入文本,以字为单位
这个例子里面,传入的是一句话。那么,.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]
分析
目前来看的话,传入的是数组的时候,和数组对比才有结果。传入的是文字的话,和单个文字对比才有结果。具体的数值是怎么计算来的,未知,待议。
相关链接
- https://newsn.net/say/snownlp-cut.html
- https://newsn.net/say/snownlp-keywords.html
- https://newsn.net/say/snownlp-tf.html
- https://newsn.net/say/snownlp-pinyin.html
总结
不想总结啥,snownlp
的各个功能都实验了一通,觉得都挺鸡肋的。后续的snownlp
文章,可能会从源码角度对snownlp
进行分析了。如果您想看相关经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。