如何用python实现简单的文本情感分析,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。
很久没有在微信官方账号发布新内容了。这段时间没想到这么多python爱好者关注我。香港真的很激动。
今天给大家带来我刚刚实现的简单多文本情感分析代码,代码环境python3.5。
原理
比如:“这款手机画面优秀,操作比较流畅。但是拍照真的很烂!系统也不好。”
情感词汇
要分析一个句子是积极的还是消极的,最简单最基本的方法就是找出句子中的情感词,积极的情感词如:赞、好、顺、华丽等。以及负面情绪词如:不好、不好、欺骗等。一个正词是1,一个负词是-1。
有两个积极情绪词“好”和“顺利”,一个消极情绪词“不好”。它的情感评分是1.1-1.1=2。显然,这个分数是不合理的。我们一步一步来修改。
程度词
“好”、“流利”和“烂”前面都有程度修饰语。“很好比好或好强,太坏比一点坏强多了。因此,在找到情感词后,要找出是否有程度修改,并给不同的程度一个权重。比如“极端”、“无比”、“太”表示情绪得分*4,“比较”和“只是情绪得分*2”、“只有”和“只有”这些都是*0.5。那么这句话的情感得分是:4*1 1*2-1*4 1=3。
感叹号
你会发现它很烂,后面还有一个感叹号,表示强烈的情感。因此发现感叹号可以是情感值2。那么这句话的情感得分就变成了:4*1 1*2-1*4-2 1=1。
否定词
明眼人一眼就能看出,最后一个“好”并不代表“好”,因为前面有一个“不”字。所以当你找到情绪词的时候,你需要寻找负面的词。比如“不”和“不能”这两个词。并统计这些否定词出现的次数。如果是单数,情感得分会是*-1,但如果是偶数,情感就不会反转,或者*1。在这句话中,我们可以看到“好”之前只有一个“不”,所以“好”的情感价值应该颠倒一下,*-1。
所以这句话的准确情感评分是:4*1 1*2-1*4-2 1*-1=-1
区分阳性和阴性。
接下来,很明显这句话夹杂着赞美,无法用分数来表达。而且这个权重的设置也会影响最终的情感评分,敏感度太高。所以,这句话最后正确的处理就是得到这句话的正分值和负分值(这样负分值也是正的,所以不用用负数)。它们也代表了这句话的情感倾向。所以这个评论应该是“正面评分:6,负面评分:7”
基于子句的情感
更细致一点来说,一个评论的情感得分是由不同的分句相加的,所以要得到一个评论的情感得分,首先要计算评论中每一句的情感得分。本例注释共有四个子句,因此其结构如下([正分数,负分数]): [[4,0],[2,0],[0,6],[0,1]]
以上是使用情感字典进行情感分析的主要过程,算法设计将按照这个思路来实现。
算法设计
第一步:阅读评论数据,对评论造句。
第二步:找到从句的情感词,记录它们是积极的还是消极的,以及它们的位置。
第三步:在情感词前寻找程度词,找到了就停止搜索。为程度词设定权重,并将其乘以情感值。
第四步:在情感词前寻找否定词,找到所有否定词。如果数字是奇数,乘以-1;如果是偶数,就乘以1。
第五步:判断从句尾是否有感叹号。如果有感叹号,找情感词。如果有,相应的's的情感值是2。
第六步:计算一个评论所有子句的情感值,并用数组(列表)记录下来。
第七步:计算并记录所有评论的情感价值。
第八步:分句计算每条评论的积极情绪均值、消极情绪均值、积极情绪方差和消极情绪方差。
实际战斗
这里我参考现有的代码,根据自己的需要对代码做一个简单的修改。这个脚本的运行环境是python3.5,请原谅我使用了2.x
阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/94353.html