微博热点分析——#人民教育出版社回应教材插图争议

服务器

  5月25日,网民在微博发博(小土大橙子、胜利注意章北海等个人用户),称人教版数学教材插画人物眼神奇怪、毫无美感,引发网民讨论转发,“人教版数学教材”和“北京吴勇设计工作室”登上热搜,随后媒体加入其中,事件热度不断攀升。5月26日,事件热度达到峰值,人民教育出版社回应此事,但并未得到网民认可。

  随着事件发酵,更多相关事件爆出,诸如“清华美院”“人教版数学教材不仅时美丑问题”“教育部开展全国教材全面排查工作”等、事件从最初的人教版数学教材插图美丑问题,引发对其他教材、读本等的插图及内容问题及文化导向等的讨论。事件发展到现在,仍未结束,各媒体和网民仍在等待事件结果。

  本文将以”人民教育出版社回应教材插图争议“为中心,爬取网民的评论与话题讨论,并通过可视化的方式,简要分析网民情感等特点。

  一、爬取评论

  首先,我们按微博评论的“热度”排行,爬取了人民教育出版社在5月26日发布的微博评论,包括评论者的id、发布时间、用户昵称、用户城市、点赞数、回复数及评论内容,共计737条。

  代码如下:

  #爬取评论import requestsfrom bs4 import BeautifulSoup #解析数据import pandas as pdimport os #将数据输出存储到本地文件#发起请求def fetchUrl(pid, uid, max_id): url="https://weibo.com/ajax/statuses/buildComments" headers = { #"user-agent": "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360SE" "user-agent": "Mozilla/5.0 (Windows NT 10.0; rv:100.0) Gecko/20100101 Firefox/100.0", } params = { "flow" : 0,#按热度 "is_reload" : 1, #自己的id "id" : pid, "is_show_bulletin" : 2, "is_mix" : 0, "max_id" : max_id, "count" : 20, #作者的id "uid" : uid, } r = requests.get(url, headers = headers, params = params) return r.json() #print(r.json())#解析json数据def parseJson(jsonObj): data = jsonObj["data"] max_id = jsonObj["max_id"] commentData = [] for item in data: # 评论id comment_Id = item["id"] # 评论内容 content = BeautifulSoup(item["text"], "html.parser").text # 评论时间 created_at = item["created_at"] # 点赞数 like_counts = item["like_counts"] # 评论数 total_number = item["total_number"] # 评论者 id,name,city user = item["user"] userID = user["id"] userName = user["name"] userCity = user["location"] dataItem = [comment_Id, created_at, userID, userName, userCity, like_counts, total_number, content] print(dataItem) commentData.app(dataItem) return commentData, max_id#保存数据def save_data(data, path, filename): if not os.path.exists(path): os.makedirs(path) dataframe = pd.DataFrame(data) dataframe.to_csv(path + filename, encoding='utf_8_sig', mode='a', index=False, sep=',', header=False )#主函数if __name__ == "__main__": pid = 4774189015238582 # 微博id,固定 uid = 2173867535 # 用户id,固定 max_id = 0 path = "D:/Data/" # 保存的路径 filename = "人教版数学教材526.csv" # 保存的文件名 csvHeader = [["评论id", "发布时间", "用户id", "用户昵称", "用户城市", "点赞数", "回复数", "评论内容"]] save_data(csvHeader, path, filename) while(True): html = fetchUrl(pid, uid, max_id) comments, max_id = parseJson(html) save_data(comments, path, filename) # max_id 为 0 时,表示爬取结束 if max_id == 0: break;#【最后可能会报错:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) #暂未解决!!!!!】二、数据预处理

  数据爬取下来后,可能存在缺失值、重复值等,所以需要进行数据清洗,在进行查找、删除缺失值和重复值后,将清洗干净的数据存入一个新的csv文件,共计482条。

  代码:

  #数据预处理#导入pandas库并将其简化为pdimport pandas as pd#读取数据mask_data=pd.read_csv('D:\Data\人教5.26回应 - 副本.csv',encoding='utf-8')#查找mask_data中的重复行mask_data.duplicated()mask_data.info()#删除所有重复值mask_data=mask_data.drop_duplicates()#查看mask_data中的重复数据mask_data[mask_data.duplicated()]#保存清洗干净的数据mask_data.to_csv('人教5.28_clean.csv',encoding='utf-8')备注:若文件出现解码错误,可以将原数据文件复制或另存一份,将另存的一份后缀名改为txt,之后将其编码改为utf-8三、可视化分析

  数据清洗干净后,我们首先统计了发布评论的网民的地址,了解用户地理分布情况,其次以网民的评论内容作为分析数据,进行情感分析 and 制作词云图,由此观察网民对此事件的态度和情感特点。

  地理分布情况:

  ​除去“其他”,北京、广东、上海等地网友较多,这和地区经济发展水平相关成正比。

  情感分析:

  词云图:

  ​从情感分析结果可见,“positive“(积极)所占比例最多,但”negative“(消极)的比例也较大,词云图中”教材“”问题“”人民“等词出现频率较高,可见网民虽然对此事件感到愤怒,但更多的人持有一种积极的态度,希望出版社能够整改、道歉,解决问题。

  【运行结果为网页,若想查看可点击链接:

  情感分析链接:

  file:///C:/Users/Administrator/jupter%20notebook/%E4%BA%BA%E6%95%99%E7%BD%91%E5%8F%8B%E8%AF%84%E8%AE%BA.html

  词云图链接:file:///C:/Users/Administrator/jupter%20notebook/%E4%BA%BA%E6%95%99%E7%BD%91%E5%8F%8B%E8%AF%84%E8%AE%BAwordcloud.html】

  柱状图代码:

  import pandas as pdimport matplotlib.pyplot as plt#正确显示中文和负号plt.rcParams["font.sans-serif"] = ["SimHei"]plt.rcParams["axes.unicode_minus"] = Falsex=["河北","陕西","辽宁","吉林","黑龙江","江苏","浙江","安徽","福建","江西","山东","河南","湖北","湖南","广东","四川","贵州","云南","陕西","甘肃","青海","台湾","内蒙古","广西","西藏","新疆","宁夏","北京","天津","上海","重庆","香港","澳门","海外","其他"]y=[28,9,10,4,10,25,29,9,6,8,30,16,14,12,85,25,4,13,9,5,2,0,7,2,0,2,2,73,11,31,11,4,2,25,214]fig=plt.figure(figsize=(20,10))plt.bar(x,y)plt.ylabel("数量")plt.title("城市分布情况")plt.savefig("data2.png")plt.show()#此方法较笨,不建议使用情感分析的代码:

  #情感分析from snownlp import SnowNLPfrom pyecharts import options as optsfrom pyecharts.charts import Piedef emotionAnalysis(path): with open(path, encoding='utf-8') as f: text = [line.split(',')[-1] for line in f.readlines()[1:]] emotions = { 'positive': 0, 'negative': 0, 'neutral': 0 } for item in text: if SnowNLP(item).sentiments > 0.6: emotions['positive'] += 1 elif SnowNLP(item).sentiments < 0.4: emotions['negative'] += 1 else: emotions['neutral'] += 1 print(emotions) c = ( Pie() .add("", list(emotions.items())) .set_colors(["blue", "purple", "orange"]) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")) .rer(r"C:\Users\Administrator\jupter notebook\人教网友评论.html") )if __name__ == "__main__": path = 'C:\\Users\\Administrator\\jupter notebook\\人教5.28_clean.csv' emotionAnalysis(path)制作云图的代码:

  #制作云图# WordCloud.py'''依赖模块pip install jieba, pyecharts'''from pyecharts import options as optsfrom pyecharts.charts import WordCloudimport jiebadef wordcloud(path): with open(path, encoding='utf-8') as f: text = " ".join([line.split(',')[-1] for line in f.readlines()]) words = jieba.cut(text) _dict = {} #对切割的词汇进行排序 for word in words: if len(word) >= 2: _dict[word] = _dict.get(word, 0) + 1 #将字典转化为列表 items = list(_dict.items()) #将字典按照键值排序 items.sort(key=lambda x: x[1], reverse=True) WordCloudPicture = ( WordCloud() .add( "",items,word_size_range=[20, 120], textstyle_opts=opts.TextStyleOpts(font_family="cursive"), ) .rer(r"C:\Users\Administrator\jupter notebook\人教网友评论wordcloud.html") )if __name__ == "__main__": path = 'C:\\Users\\Administrator\\jupter notebook\\人教5.28_clean.csv' wordcloud(path)四、爬取微博话题(博客、评论等)

  除了爬取人民教育出版社微博下的评论,我们根据话题#人民教育出版社回应教材插图争议#,爬取了带此话题发布的406条微博,以此进一步分析网民的特点。

  代码:

  #爬取微博话题下所有微博ID、评论、点赞# -*- coding: utf-8 -*-'''微博爬虫,爬取一个主题下的微博,评论各种信息'''import requests, random, reimport timeimport osimport csvimport sysimport jsonimport importlibfrom fake_useragent import UserAgentfrom lxml import etree# 记录起始时间importlib.reload(sys)startTime = time.time()# --------------------------------------------文件存储-----------------------------------------------------'''设置文件储存的路径 os.getwd()表示返回当前进程的工作目录,(即该文件夹)'''path = os.getcwd() + "/total_weiboComments_spider0508.csv"path1=os.getcwd() +'/title_weiboComments_spider0508.csv'path2=os.getcwd() + '/comment_weiboComments_spider0508.csv'csvfile = open(path, 'a', newline='', encoding='utf-8-sig')csvfile1 = open(path1, 'a', newline='', encoding='utf-8-sig')csvfile2 = open(path2, 'a', newline='', encoding='utf-8-sig')writer = csv.writer(csvfile)writer_1=csv.writer(csvfile1)writer_2=csv.writer(csvfile2)# csv头部writer.writerow(('话题链接', '话题内容', '楼主ID', '楼主昵称', '楼主性别', '发布日期', '发布时间', '转发量', '评论量', '点赞量', '评论者ID', '评论者昵称', '评论者性别', '评论日期', '评论时间', '评论内容'))writer_1.writerow(('话题链接', '话题内容', '楼主ID', '楼主昵称', '楼主性别', '发布日期', '发布时间', '转发量', '评论量', '点赞量'))writer_2.writerow(('评论者ID', '评论者昵称','评论者性别', '评论日期', '评论时间', '评论内容'))# 设置headersheaders = { 'cookie':'M_WEIBOCN_PARAMS=luicode%3D10000011%26lfid%3D100103type%253D38%2526q%253D%25E4%25BA%25BA%25E6%25B0%2591%25E6%2595%2599%25E8%2582%25B2%25E5%2587%25BA%25E7%2589%2588%25E7%25A4%25BE%25E5%259B%259E%25E5%25BA%2594%25E6%258F%2592%25E5%259B%25BE%2526t%253D%26fid%3D231522type%253D1%2526t%253D10%2526q%253D%2523%25E4%25BA%25BA%25E6%25B0%2591%25E6%2595%2599%25E8%2582%25B2%25E5%2587%25BA%25E7%2589%2588%25E7%25A4%25BE%25E5%259B%259E%25E5%25BA%2594%25E6%2595%2599%25E6%259D%2590%25E6%258F%2592%25E5%259B%25BE%25E4%25BA%2589%25E8%25AE%25AE%2523%26uicode%3D10000011; expires=Tue, 07-Jun-2022 13:29:18 GMT; Max-Age=600; path=/; domain=.weibo.cn; HttpOnly', 'Referer': 'https://m.weibo.cn/search?containerid=231522type%3D1%26t%3D10%26q%3D%23%E4%BA%BA%E6%B0%91%E6%95%99%E8%82%B2%E5%87%BA%E7%89%88%E7%A4%BE%E5%9B%9E%E5%BA%94%E6%95%99%E6%9D%90%E6%8F%92%E5%9B%BE%E4%BA%89%E8%AE%AE%23&extparam=%23%E4%BA%BA%E6%B0%91%E6%95%99%E8%82%B2%E5%87%BA%E7%89%88%E7%A4%BE%E5%9B%9E%E5%BA%94%E6%95%99%E6%9D%90%E6%8F%92%E5%9B%BE%E4%BA%89%E8%AE%AE%23&luicode=10000011&lfid=100103type%3D38%26q%3D%E4%BA%BA%E6%B0%91%E6%95%99%E8%82%B2%E5%87%BA%E7%89%88%E7%A4%BE%E5%9B%9E%E5%BA%94%E6%8F%92%E5%9B%BE%26t%3D', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest'}# -----------------------------------爬取该主题首页的每个主题的ID------------------------------------------'''找出发布者id,并存入列表,用于找每个具体博客的网址'''comments_ID = []def get_title_id(): for page in range(2, 45): # 每个页面大约有9个话题 headers = { "User-Agent": UserAgent().chrome # chrome浏览器随机代理 } time.sleep(1) # 该链接通过抓包获得(这里需要更改成你的话题url) api_url='https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23%E4%BA%BA%E6%B0%91%E6%95%99%E8%82%B2%E5%87%BA%E7%89%88%E7%A4%BE%E5%9B%9E%E5%BA%94%E6%95%99%E6%9D%90%E6%8F%92%E5%9B%BE%E4%BA%89%E8%AE%AE%23&extparam=%23%E4%BA%BA%E6%B0%91%E6%95%99%E8%82%B2%E5%87%BA%E7%89%88%E7%A4%BE%E5%9B%9E%E5%BA%94%E6%95%99%E6%9D%90%E6%8F%92%E5%9B%BE%E4%BA%89%E8%AE%AE%23&luicode=10000011&lfid=100103type%3D38%26q%3D%E4%BA%BA%E6%B0%91%E6%95%99%E8%82%B2%E5%87%BA%E7%89%88%E7%A4%BE%E5%9B%9E%E5%BA%94%E6%8F%92%E5%9B%BE%26t%3D&page_type=searchall&page='+str(page) print(api_url) rep1 = requests.get(url=api_url, headers=headers) rep=json.loads(rep1.text) # 获取ID值并写入列表comment_ID中 for json1 in rep['data']['cards']: comment_ID = json1["card_group"][0]['mblog']['id'] comments_ID.app(comment_ID)# -----------------------------------爬取该主题下每个博客的详情页面 ------------------------------------------'''该主题下每个博客主的详情(包括话题内容、楼主id、楼主昵称、楼主性别、发布时间、日期、发布时间、转发量、评论量、点赞量)(利用正则表达式抓取)'''def spider_title(comment_ID): try: article_url = 'https://m.weibo.cn/detail/' + comment_ID print("article_url = ", article_url) html_text = requests.get(url=article_url, headers=headers).text # 话题内容 find_title = re.findall('.*?"text": "(.*?)",.*?', html_text)[0] title_text = re.sub('<(S*?)[^>]*>.*?

  <.*? />', '', find_title) # 正则匹配掉html标签 print("title_text = ", title_text) # 楼主ID title_user_id = re.findall('.*?"id": (.*?),.*?', html_text)[1] print("title_user_id = ", title_user_id) # 楼主昵称 title_user_NicName = re.findall('.*?"screen_name": "(.*?)",.*?', html_text)[0] print("title_user_NicName = ", title_user_NicName) # 楼主性别 title_user_ger = re.findall('.*?"ger": "(.*?)",.*?', html_text)[0] print("title_user_ger = ", title_user_ger) # 发布时间 created_title_time = re.findall('.*?"created_at": "(.*?)".*?', html_text)[0].split(' ') # 日期 if 'Jan' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '01', created_title_time[2]) elif 'Feb' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '02', created_title_time[2]) elif 'Mar' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '03', created_title_time[2]) elif 'Apr' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '04', created_title_time[2]) elif 'May' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '05', created_title_time[2]) elif 'Jun' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '06', created_title_time[2]) elif 'July' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '07', created_title_time[2]) elif 'Aug' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '08', created_title_time[2]) elif 'Sep' in created_title_time: title_created_YMD = "{}/{}/{}".format(created_title_time[-1], '09', created_title_time[2]) else: print('发布在其他时间!URL = ') pass print("title_created_YMD = ", title_created_YMD) # 发布时间 add_title_time = created_title_time[3] print("add_title_time = ", add_title_time) # 转发量 reposts_count = re.findall('.*?"reposts_count": (.*?),.*?', html_text)[0] print("reposts_count = ", reposts_count) # 评论量 comments_count = re.findall('.*?"comments_count": (.*?),.*?', html_text)[0] print("comments_count = ", comments_count) # 点赞量 attitudes_count = re.findall('.*?"attitudes_count": (.*?),.*?', html_text)[0] print("attitudes_count = ", attitudes_count) # 每个ajax一次加载18条数据 comment_count = int(int(comments_count) / 18) #position1是记录 position1 = (article_url, title_text, title_user_id, title_user_NicName, title_user_ger, title_created_YMD, add_title_time, reposts_count, comments_count, attitudes_count, " ", " ", " ", " ", " ", " ") position11 = (article_url, title_text, title_user_id, title_user_NicName, title_user_ger, title_created_YMD, add_title_time, reposts_count, comments_count, attitudes_count) # 写入数据 writer.writerow((position1)) writer_1.writerow(position11) return comment_count except: pass# -------------------------------------------------抓取评论信息---------------------------------------------------# comment_ID话题编号(找出max_id,id_type)def get_page(comment_ID, max_id, id_type): params = { 'max_id': max_id, 'max_id_type': id_type } url = ' https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id'.format(comment_ID, comment_ID) try: r = requests.get(url, params=params, headers=headers) if r.status_code==200: return r.json() except requests.ConnectionError as e: print('error', e.args) pass# -------------------------------------------------抓取评论item最大值---------------------------------------------------def parse_page(jsondata): if jsondata: items = jsondata.get('data') item_max_id = {} item_max_id['max_id'] = items['max_id'] item_max_id['max_id_type'] = items['max_id_type'] return item_max_id# -------------------------------------------------抓取评论信息---------------------------------------------------def write_csv(jsondata): for json in jsondata['data']['data']: # 用户ID user_id = json['user']['id'] # 用户昵称 user_name = json['user']['screen_name'] # 用户性别,m表示男性,表示女性 user_ger = json['user']['ger'] # 获取评论 comments_text = json['text'] comment_text = re.sub('<(S*?)[^>]*>.*?

  <.*? />', '', comments_text) # 正则匹配掉html标签 # 评论时间 created_times = json['created_at'].split(' ') if 'May' in created_times: created_YMD = "{}/{}/{}".format(created_times[-1], '05', created_times[2]) elif 'Apr' in created_times: created_YMD = "{}/{}/{}".format(created_times[-1], '04', created_times[2]) else: print('发布时间不在四月,五月之间!') pass created_time = created_times[3] # 评论时间时分秒 # if len(comment_text) != 0: position2 = ( " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", user_id, user_name, user_ger, created_YMD, created_time, comment_text) position22 = (user_id, user_name, user_ger, created_YMD,created_time,comment_text) # 写入数据 writer.writerow((position2)) writer_2.writerow(position22) # print (user_id, user_name, user_ger, created_YMD, created_time)# -------------------------------------------------主函数---------------------------------------------------def main(): count_title = len(comments_ID) for count, comment_ID in enumerate(comments_ID): print("正在爬取第%s个话题,一共找到个%s话题需要爬取" % (count + 1, count_title)) # maxPage获取返回的最大评论数量 maxPage = spider_title(comment_ID) print('maxPage = ', maxPage) m_id = 0 id_type = 0 if maxPage != 0: # 小于18条评论的不需要循环 try: # 用评论数量控制循环 for page in range(0, maxPage): # 自定义函数-抓取网页评论信息 jsondata = get_page(comment_ID, m_id, id_type) # 自定义函数-写入CSV文件 write_csv(jsondata) # 自定义函数-获取评论item最大值 results = parse_page(jsondata) time.sleep(1) m_id = results['max_id'] id_type = results['max_id_type'] except: pass print("--------------------------分隔符---------------------------") csvfile.close() csvfile1.close() csvfile2.close()if __name__ == '__main__': # 获取话题ID get_title_id() # 主函数操作 main() # 计算使用时间 Time = time.time() useTime = (Time - startTime) / 60 print("该次所获的信息一共使用%s分钟" % useTime)从爬取到的数据中,我们统计了一下男性和女性的数量,从结果来看男性占比较大,可见男性对此话题的度更高。

  代码:

  #发布博主的男女分布情况(饼图)import csvimport matplotlibimport matplotlib.pyplot as pltimport numpy as npimport pandas as pd#正确显示中文和负号plt.rcParams["font.sans-serif"] = ["SimHei"]plt.rcParams["axes.unicode_minus"] = Falsedef hydata_0(): #读取文件 pr=pd.read_csv("title_weiboComments_spider0508 - 副本.csv")#文件放一起 #print(pr) a=[] man=0 woman=0 #统计男女比例 for sex in pr['楼主性别']:#从XB列读取数据 if sex=='f': man+=1 elif sex=='m': woman+=1 #绘制饼状图 labels=['MALE','FEMALE'] #绘图显示的标签 values=[man,woman] colors=['y','m'] explode=[0,0.1] #旋转角度 plt.title("男女分布情况",fontsize=25) #标题 plt.pie(values,labels=labels,explode=explode,colors=colors, startangle = 180, shadow=True,autopct='%1.1f%%') plt.axis('equal') plt.show() if __name__=="__main__": hydata_0() 除了分析男女占比外,我们将数据中的”话题内容“单独放在了一个txt文件中(删去话题#人民教育出版社回应教材插图争议#),统计词频,将其以词云的形式呈现。

  代码:

  #coding=utf-8#Version:python3.6.0#添加自定义分词import jiebafrom os import path #用来获取文档的路径#词云from PIL import Imageimport numpy as npimport matplotlib.pyplot as plt#词云生成工具from wordcloud import WordCloud,ImageColorGenerator#需要对中文进行处理import matplotlib.font_manager as fm#背景图background_image=np.array(Image.open("点赞.jpg"))mask=background_image#获取当前的项目文件加的路径d=path.dirname(__file__) #读取停用词表stopwords_path='停用词表.txt' #记得在同一文件夹下创建此文件,可将不进行分词的词语等放入其中#添加需要自定以的分词# jieba.add_word("xx")#读取要分析的文本text_path="话题内容.txt"#读取要分析的文本,读取格式text=open(path.join(d,text_path),encoding="utf8").read()#定义个函数式用于分词def jiebaclearText(text): #定义一个空的列表,将去除的停用词的分词保存 mywordList=[]五、总结

  从事件发展来看,事件发展经历了潜伏期、爆发期、蔓延期和缓解期

  (图片来自:知微事件关于人教版数学教材插图引争议话题的数据统计

  链接:https://ef.zhiweidata.com/event/5766d34a9e38b2ec10065713/profileV2)

  事件潜伏期,5月25日晚微博用户首先在微博发文,主要是个人用户发布的原创微博,多种意见在微博平台中传播,微博用户之间高频率的互动交流,为舆论的传播提供了空间,新京报、南方都市报、中国新闻周刊等媒体加入,多层媒体转发,提升了舆论的权威性和可靠性;

  事件爆发期与蔓延期间,微博、微信和网媒参与,形成微博合力,使得事件的影响力逐步扩大,更多的主体到该事件。人民教育出版社发布微博对事件做了说明,只提到了整改,但并没有说明事件背后的原因和道歉,从网民的评论中“你们”“教材”“问题”“人民”“出版社”等词多次出现,网友负面情绪达到40.87%,可见人民教育出版社的回应并没有得到网民的认可,并激起了网民的猜测和愤怒;

  事件反复期,随着更多社会力量的介入,新的议题不断被发现,如“家长谈人教版插图争议事件”“8090后的教材插图”等;

  时间的缓解期,事件由最初讨论教材“美丑”逐步演变为意识形态问题,舆论发展向不可控方向发展,主流媒体和政府介入进行舆论引导,公众情绪开始平复,同时随新的热点事件的出现,网民的注意力被分散,舆论高点渐渐下滑。

  网民从以上的情感分析和云图来看,网民对此事件的度较高,且在话语表达时较为情绪化却并非全无理性,除了对教材和孩子的关心、担忧、愤怒,也体现着一种正义感和使命感,以第二幅云图为例,除了“人民教育出版社”“教材”等高频词外,也有”中国“”国家“”人民“等词。

  事件发展至今,此事件仍没有一个真正的结尾,但互联网是有记忆的,当我们再提及教材时,我们都会再次忆起此事。

标签: 服务器