snownlp情感分析,如何获得TF和IDF的词频统计信息?
发布于 作者:苏南大叔 来源:程序如此灵动~

关于词频统计功能,苏南大叔也写过几篇文章了。有现成的CountVectorizer
可以使用,也可以手工统计词频。TF
就是说对应词在本文中出现的次数概率,越高越好。IDF
就是说对应词在其它对比文章中,出现的概率,越少越好。本文使用snownlp
来完成这个TF
和IDF
的统计需求。同时,输出snownlp
赖以成名的情感指数,看看效果如何。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文中将试图使用snownlp
来统计一下TF
和IDF
信息,以及情感指数sentiments
。结果先说一下:惨不忍睹,且听我道来。测试环境:win10
,python@3.6.8
,snownlp@0.12.3
。
已知的TF
和IDF
测试
大家可以参考下面的文章,做相关的词频统计:
- 《如何利用CountVectorizer来做词频统计》 https://newsn.net/say/python-count-vectorizer.html
- 《如何手工统计一篇文章的词频Top5分词》 https://newsn.net/say/python-tf.html
- 《用MultinomialNB多项式贝叶斯分类器进行预测》 https://newsn.net/say/sklearn-multinomialnb.html
由于代码量较大,这里就不做代码回顾分析了。
测试代码
输出:

测试代码二
输出内容:
情感指数的输出,直接报错:
词频统计
在测试代码一中:
代码的分词结果,看起来还是可以接受。但是TF
和IDF
信息,就完全不能接受了。为啥这里的统计都是以字为单位的?而不是以词为单位?而且分词结果看起来还算正常啊。大家有何见解,欢迎留言。或者是苏南大叔的理解错误,或者是苏南大叔的设置问题?
在测试代码二中:
因为传入的不是一句话,而是以分词为单位的数组。那么,TF
和IDF
信息看起来是能接受的,不过,为啥IDF
有取负值的呢?这个算法问题,有待考证。
情感分析指数
这个是snownlp
赖以成名的最重要的部分。不过,苏南大叔测试的内容,明显是表达了“不高兴”,结果指数值“0.84”,表示很积极向上,这个问题就有些迷幻操作了。
测试文字 | 指数 |
---|---|
苏南大叔今天很高兴 | 0.9092663197000421 |
苏南大叔今天很不高兴 | 0.8408882404624718 |
不高兴 | 0.3693910911319984 |
不高兴生气 | 0.2086627918123508 |
测试结果似乎很不靠谱...
相关文章
- https://newsn.net/say/python-count-vectorizer.html
- https://newsn.net/say/python-tf.html
- https://newsn.net/say/sklearn-multinomialnb.html
- https://newsn.net/say/snownlp-cut.html
- https://newsn.net/say/snownlp-keywords.html
总结
snownlp
测试结果不咋地,更多经验文章,请点击:


