第1关:情感分析基础
snownlp
情感分析
snownlp
还能对中文文本进行情感分析。
情感分析的结果是一个0~1
之间的数字,数字越大表示这句话越偏向于肯定的态度,数字越小表示越偏向于否定的态度。
from snownlp import SnowNLP
s1 = SnowNLP('不错不错,楼主真棒')
s2 = SnowNLP('不知道你到底想说什么')
print(s1.sentiments)
print(s2.sentiments)
输出:
0.9719003655581226
0.2321400466499438
编程要求
根据提示,在右侧Begin-End
区域补充代码,具体要求如下:
1.
对给定test.txt
文本进行情感分析;
2.
将文本内容逐行读取,对每行文本进行情感分析,并统计结果在0.9
以上的文本数量。
测试说明
平台会对你编写的代码进行测试:
test.txt
内容如下:
测试输出:
大于0.9的评论总数为:6
代码实现如下:
from snownlp import SnowNLP
def count_sno():
#count变量为分析结果大于0.9的数量
count = 0
a = open('./step1/test.txt',encoding='utf-8')
# *********** Begin **********#
text=a.readline()
# print(text)
while len(text)!=0:
s1=SnowNLP(text)
if s1.sentiments>=0.9:
count+=1
text=a.readline()
# *********** End **********#
return count
第2关:帖子好评度分析
本关任务:提取HTML
文件中的所有回复,分析帖子的好评度。
相关知识
相关知识略
编程要求
在Begin-End
区域编写程序,分析帖子中的HTML
代码格式,提取HTML
中的所有回帖内容,在此基础上计算该帖子的好评度。
好评度计算:利用snownlp
对每一条回复进行情感分析,将结果累加,再除以总帖数,分数越高即越受好评。
测试说明
平台会对你编写的代码进行测试:
测试文件一post_1.html
内容如下:
<!DOCTYPE html>
<html lang="en">
<body id="activity-detail" class="zh_CN mm_appmsg">
<p class="top">评论区域:</p>
<div class="text">
<a target="_blank">用户1</a>:赞!
</div>
<div class="text">
<a target="_blank">用户2</a>:不错不错,楼主真棒!
</div>
<div class="text">
<a target="_blank">用户3</a>:还可以。
</div>
<div class="text">
<a target="_blank">用户4</a>:楼主加油。
</div>
<div class="text">
<a target="_blank">用户5</a>:向楼主学习。
</div>
<div class="text">
<a target="_blank">用户6</a>:感谢楼主。
</div>
<div class="text">
<a target="_blank">用户7</a>:这个帖子真心很赞,推荐大家都看看。
</div>
<div class="text">
<a target="_blank">用户8</a>:受益颇多。
</div>
<div class="text">
<a target="_blank">用户9</a>:赞赞赞赞赞赞赞赞。
</div>
</body>
</html>
测试输出:
87
-
#-*- codeing = utf-8 -*- #@Time : 2021/11/26 20:44 from snownlp import SnowNLP import re def evaluate(path): html = open(path,'r',encoding="utf-8") score=0 count=0 # *********** Begin **********# HTML=html.read() x=re.compile("</a>:(.*)\n") #注意此处可用斜杠回车 tap_list=re.findall(x,HTML) #获取文字列表 #print(tap_list) for i in tap_list: #将论坛文字列表进行遍历 #print(i) s1=SnowNLP(i) score+=s1.sentiments #print(i+" "+str(s1.sentiments)) count+=1 # *********** End **********# #print(score*100) return int(score*100/count)