习题解析之:英文信息极性分析
【问题描述】
编写一个能对小说进行极性分析的程序。
相关知识
为了完成本关任务,你需要掌握:
读取txt文件。
自然语言处理第三方库textblob中相关函数。
文件读取
第三方库textblob
textblob是英文自然语义处理的第三方库,它可以用于英文文本的分词、词性标注、情感分析、文本分类,单词纠错等功能。(部分功能需额外安装NLTK,本题无需使用)
本地安装指令为 pip install textblob
情感分析:
import textblob
s1 = "I feel good."
t1 = textblob.TextBlob(s1) #基于英文字符串 s1 创建 SnowNLP Object。
print(t1.sentiment) # 输出英文句子的极性和主观性指数
# 输出:Sentiment(polarity=0.7, subjectivity=0.6000000000000001)
s1 = "You are too slow"
t1 = textblob.TextBlob(s1) #基于英文字符串 s1 创建 SnowNLP Object。
print(t1.sentiment.polarity) # 输出英文句子的极性
# 输出:-0.30000000000000004
Sentiment包含了两个数据:
polarity情感极性指数,取值范围为[-1,1]。值越接近1表明越积极,越接近0表明越消极。
subjectivity主观性指数,取值范围为[0,1]。0为完全客观,1为完全主观。
单词纠错:(该功能存在局限性)
import textblob
s1 = "He certanly was not a mafacturer"
t1 = textblob.TextBlob(s1) #基于中文字符串 s1 创建 SnowNLP Object。
print(t1.correct()) # 输出正确拼写
# 输出:He certainly was not a manufacturer
编程要求
分析数据文件Around_the_World_in_Eighty_Days.txt,正确读取数据。
数据说明:
小说按章节分为19章,每章以CHAPTER开头
使用textblob库对全文以及每章进行极性与主观性分析。(格式参照测试说明)
如果输入为Novel,读取文件,分别输出该小说的情感极性和主观性。
如果输入为CHAPTER 章节号,读取文件,如:CHAPTER IV。分别输出该章节(从该章节CHAPTER开始,到下一个CHAPTER前或者文本结束)的情感极性和主观性。
如果章节号不存在文件中,如输入CHAPTER CIV,则输出wrong input: CHAPTER CIV
如果输入为其他英文句子,将该英文句子中的拼写错误改正,并输出修改后的句子。
示例1
输入:
Novel
输出:
0.101846787656830299
0.47233464579839661
示例2
输入:
CHAPTER VIII
输出:
0.092253465476756889
0.4666666666667
示例3
输入:
CHAPTER CIV
输出:
wrong input: CHAPTER CIV
示例4
输入:
wrnog inptu
输出:
wrong input
【编程思路】
按题目要求用分支结构进行处理。编写的源程序如下:

浙公网安备 33010602011771号