绪理解是文本处理里最常见任务之一。现提供一个五类情绪字典(由情绪词组成,5个文件,人工标注),实现一个情绪分析工具,并利用该工具对10000条新浪微博进行测试和分析(一行一条微博)。微博数据见课程中心weibo.txt,字典数据见公开数据中的emotion lexicon
(https://doi.org/10.6084/m9.figshare.12163569.v2)。请按要求用函数进行功能封装,并在main中调用测试,鼓励尝试不同方式的可视化。
- 实现一个函数,对微博数据进行清洗,去除噪声(如url等),过滤停用词。注意分词的
时候应该将情绪词典加入Jieba的自定义词典,以提高这些情绪词的识别能力。
2.实现两个函数,实现一条微博的情绪分析,返其情绪向量或情绪值。目前有两种方法,一是认为一条微博的情绪是混合的,即一共有n个情绪词,如果joy有n1个,则joy的比例是 n1/n;二是认为一条微博的情绪是唯一的,即n个情绪词里,anger的情绪词最多,则该微博的情绪应该为anqrv。注意,这里要求用闭包实现,尤其是要利用闭包实现一次加载情绪词典且局部变量持久化的特点。同时,也要注意考虑一些特别的情况,如无情绪词出现,不同情绪的情绪词出现数目一样等,并予以处理(如定义为无情绪,便于在后面的分析中去除)。
3、微博中包含时间,可以讨论不同时间情绪比例的变化趋势,实现一个函数,可以通过参数来控制并返回对应情绪的时间模式,如joy的小时模式,sadness的周模式等。
4.微博中包含空间,可可以讨论情绪的空间分布,实现一个函数,可以通过参数来控制并返回对应情绪的空间分布,即围绕某个中心点,随着半径增加该情绪所占比例的变化,中心点可默认值可以是城市的中心位置。 - (附加)讨论字典方法进行情绪理解的优缺点,有无可能进一步扩充字典来提高情绪识别的准确率?
- (附加)可否对情绪的时间和空间分布进行可视化?(如通过matplotlib绘制曲线,或者用pyecharts(注意版本的兼容性)在地图上标注不同的情绪)
7.(附加)思考情绪时空模式的管理意义?
目录
一、源代码
二、功能实现
1.评论清洗
2.对每条评论的情绪、地理位置、时间进⾏标准
3.情绪的时间模式
4.围绕中⼼点的情绪⽐例
5.在北京地图上进⾏情绪点的可视化
三、⼀些思考
1.字典⽅法进⾏情绪理解的优缺点
2.情绪时空模式的管理意义
四、参考⽂章
一、源代码
import jieba
import matplotlib.pyplot as plt
import re
import easygui as g
from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType
def Emo_list():
‘’‘这是将存储情绪词的文件路径变成列表’‘’
path1 = “D:/学习文件/大三上/现代程序设计/第二次作业/emotion_lexicon/anger.txt”
path2 = “D:/学习文件/大三上/现代程序设计/第二次作业/emotion_lexicon/disgust.txt”
path3 = “D:/学习文件/大三上/现代程序设计/第二次作业/emotion_lexicon/fear.txt”
path4 = “D:/学习文件/大三上/现代程序设计/第二次作业/emotion_lexicon/joy.txt”
path5 = “D:/学习文件/大三上/现代程序设计/第二次作业/emotion_lexicon/sadness.txt”
emotion_path = [path1,path2,path3,path4,path5]
return emotion_path
def add_word(emotion_path):
‘’‘这是将情绪词加入jie