文章快速检索     高级检索
  华东师范大学学报(自然科学版)  2019 Issue (3): 86-100  DOI: 10.3969/j.issn.1000-5641.2019.03.010
0

引用本文  

叶健, 赵慧. 基于大规模弹幕数据监听和情感分类的舆情分析模型[J]. 华东师范大学学报(自然科学版), 2019, (3): 86-100. DOI: 10.3969/j.issn.1000-5641.2019.03.010.
YE Jian, ZHAO Hui. A public opinion analysis model based on Danmu data monitoring and sentiment classification[J]. Journal of East China Normal University (Natural Science), 2019, (3): 86-100. DOI: 10.3969/j.issn.1000-5641.2019.03.010.

第一作者

叶健, 男, 硕士研究生, 研究方向为自然语言处理.E-mail:arthurhappy@qq.com

通信作者

赵慧, 女, 教授, 硕士生导师, 研究方向为数据管理与分布式计算.E-mail:hzhao@sei.ecnu.edu.cn

文章历史

收稿日期:2018-07-26
基于大规模弹幕数据监听和情感分类的舆情分析模型
叶健 , 赵慧     
华东师范大学 计算机科学与软件工程学院, 上海 200062
摘要:随着在线视频平台的快速发展,弹幕逐渐成为人们表达观点的一个重要途径,尤其受到年轻人的欢迎.与常规的文本不同,弹幕文本普遍较短,表达随意,网络词汇较多,一些常规的停用词被用于表达情感.提出了一种基于弹幕数据的舆情分析模型,针对弹幕数据生成和存储特点,提出了热点检测循环自适应弹幕数据获取算法;扩充了情感词典来区分弹幕中情感倾向数据和中性数据,以解决弹幕中出现的网络词汇较多的问题;基于卷积神经网络(Convolutional Neural Network,CNN)建立了情感褒贬分类模型,用来区分情感倾向弹幕的正负情感倾向,在此基础上得到了舆情分析的结果.实验表明,本文的舆情分析模型能有效地表达新闻类弹幕数据的舆情分析结果.
关键词弹幕情感    网络舆情    情感分类    深度学习    网络爬虫    
A public opinion analysis model based on Danmu data monitoring and sentiment classification
YE Jian , ZHAO Hui     
School of Computer Science and Software Engineering, East China Normal University, Shanghai 200062, China
Abstract: With the rapid development of online video platforms, Danmu has gradually become an important way for people to express their opinions, and it is particularly welcomed by young people. Unlike conventional texts, Danmu texts are generally short, unstructured, and involve Internet slang as well as conventional stop words to express emotions. In this paper, a public opinion analysis model based on Danmu data is proposed. According to the data generation and storage characteristics of Danmu, a hotspot detection-based loop algorithm is proposed for Danmu data collection. Moreover, the sentiment dictionary to distinguish emotional tendencies is expanded to include network vocabularies commonly appearing in Danmu. Finally, based on the convolutional neural network (CNN), we build a classification model to distinguish positive and negative emotions. Experiments show that the public opinion analysis model of this paper can effectively demonstrate public opinion analysis of Danmu data.
Keywords: Danmu emotion    Internet sentiment    emotion classification    deep learning    web crawler    
0 引言

随着消费者自生成媒体(Consumer Generated Media, CGM)的广泛普及, 出现了大量的用户自生成内容(User Generated Content, UGC).视频弹幕作为一种新型的视频交互形式在亚洲甚至于全世界范围内都越来越流行, 即用户在观看弹幕视频时, 可以随时发表自己的实时评论, 并且能够看到其他用户发表的实时评论.

据统计, 国外的YouTube(youtube.com)和Nicovideo(nicovideo.jp)以及中国的youku.com、tudou.com和bilibili.tv等视频分享网站是广受欢迎的几个网站, 这些网站每天都会有大量的视频产生.例如目前bilibili.tv活跃用户超过1.5亿, 每天视频播放量超过1亿, 弹幕总量超过14亿, 原创投稿总数超过1 000万, 用户平均年龄17岁, 75%的用户在24岁以下[1]. "弹幕文化"目前主要流行于年轻人之间, 这为分析年轻人舆论生态提供了途径, 但也面临以下问题和挑战: ①弹幕数据与传统的UGC不同, 网站不会长时间保存弹幕数据, 而是为每个视频维护一个一定大小的弹幕池, 弹幕随时可能会因超出弹幕池大小限制而被删除, 弹幕数据难以完整获取, 尤其是在评论的高峰期, 甚至会有大量的弹幕数据因超出弹幕池上限被删除而丢失.如果采用传统网络数据获取方法, 需要一直保持高频率的数据抓取操作, 会导致因为网络瓶颈使得网络爬虫无法同时跟踪大量的视频弹幕, 难以有效获取数据. ②弹幕文本普遍比较短, 具有信息量少、特征稀疏等传统短文本特点, 但又不同于传统的短文本, 主要体现在:第一, 内容口语化和符号化, 评论者常常选择使用短句和符号表情来表达内心活动; 第二, 弹幕内容流行语化, 评论者往往会使用当下比较流行的语言来表达当前的情感, 导致传统的情感词典因缺少这些流行语而无法有效识别; 第三, 相对于传统短文本, 在弹幕数据处理中典型的停用词表不再适用, 比如"!"通常被认为是一个停用词, 但是在弹幕数据中, 它具有重要的情感识别作用, 需要重新考虑弹幕文本的预处理工作.

针对以上问题, 本文提出了一种基于大规模弹幕数据监听和情感分类的实时舆情分析模型.以新闻事件为例, 首先通过关键字自动检索弹幕网站上相关的新闻视频, 然后对这些视频产生的弹幕数据进行跟踪获取, 提出了一种基于热点检测的循环自适应数据采集算法, 即按照弹幕生成的速度动态调节数据获取的频率, 以解决弹幕数据可能存在的丢失问题, 以及高频率数据抓取带来的性能问题; 构建了针对弹幕数据的停用词表, 去除弹幕数据构中的停用词, 并建立了弹幕情感词典, 用于区分中性评论和情感倾向评论; 提出了基于弹幕情感词典和卷积神经网络(CNN)分析弹幕数据舆情的模型.

1 相关研究

弹幕数据的分析受到国内外研究者的广泛关注, 并取得了一些积极的研究成果. He等人对弹幕做了全方面的预研性工作[2], 对弹幕的各个特点做了详尽的分析, 为弹幕的研究做了很好的铺垫. Jia等人对弹幕网站Bilibili做了全方面的探索性工作[3], 从各角度分析了弹幕网站用户的独特特征, 并使用随机森林算法来预测弹幕视频是否会受欢迎.在对弹幕情感分析相关的工作中, 郑飏飏等人使用多维情感词典对弹幕数据进行情感分类[4], 但该研究中情感词典是固定的, 未考虑不同场景下词汇的极性问题.邓扬等人构建了基于隐含狄利克雷分布的弹幕词语分类[5], 但其训练集数据为传统的规范文本, 未考虑弹幕的非规范性短文本的特点.针对以上问题, 本文用微博数据作为训练集, 并使用迁移学习的方法提出了一套针对弹幕数据的情感分类模型.

作为新兴的用户自生成内容, 传统的文本情感分类研究和短文本处理研究成果对弹幕情感分析有着重要的借鉴意义.现有的文本情感分类方法大致可以分为两类:第一类是基于情感词典的分类方法, 通常不需要训练数据; 第二类是基于监督学习的分类方法, 通常需要训练数据.

(1) 基于情感词典和规则的情感分析方法. Thelwall等人引入了专门用于处理社交数据的词汇和短语的编码词典, 提出了一种名为SentiStrength的算法[6], 该算法利用词典来识别非正式文本的情感强度.但是对于如Twitter这样的短文本数据, 由于不同场景下的词性不相同, 针对此问题, Saif提出了名为SentiCycles的算法[7], 考虑词汇上下文的关系, 通过动态调整情感词典中词汇的权值, 能够有效识别出Twitter文本是否具有情感倾向. Yuan等人使用词典和规则相结合的方式来计算Twitter的情感极性[8]; 但是, 由于同一词汇在不同场景下表达的情感极性可能相反, 因此, 这种方法往往准确率非常高, 但召回率很低, 而且需要人工精心撰写规则, 建立和维护规则集的过程比较费事和费力.弹幕数据有着和Twitter数据相似的特点, 但又具有独特性.弹幕数据经常出现传统字典中不存在的词汇, 使得弹幕数据的情感分析更具挑战性.针对这一问题, 本文提出针对弹幕数据的可动态扩充的弹幕情感词典来区分中性弹幕和有情感倾向的弹幕; 另外针对情感词典对弹幕数据中正负情感的识别率不高的问题, 本文提出对弹幕情感词典区分出的有情感倾向的弹幕数据(除中性以外的弹幕数据)用监督学习来分类.

(2) 基于监督学习的分类方法.刘志明等人针对微博短文本情感分类问题, 使用信息增益(Information Gain, IG)做特征提取, 采用TF-IDF(Term Frequency-Inverse Document Frequency)作为权重计算[9], 基于支持向量机(Support Vector Machines, SVM)作为分类方法, 对微博短文本的情感进行了分类, 并使用此方法对微博评论数据和豆瓣评论数据分类效果进行了对比, 发现针对不同数据集此方法的通用性并不好.秦锋等人针对微博文本短小且口语化严重的问题, 提出了引入马尔可夫支持向量机模型[10], 将微博中的上下文信息融合入模型中, 以提高微博数据的情感识别率.近年来, 越来越多的研究人员在对文本分类问题上使用深度学习[11]. Bharath等人在研究Twitter短文本分类问题时提出了以用户为导向定义小特征集的方式对短文本进行分类的分类模型[12], 该模型优于传统的基于Bag-Of-Words分类模型. 2014年Kim使用word2vec对文本做向量化, 并将CNN应用于文本分类问题中[13], 实验表明, 一层深度的CNN已经能很好地胜任文本分类工作, 为CNN在自然语言处理中奠定了很好的基础. 2015年Lai等人提出了卷积循环神经网络(Convolutional Recurrent Neural Network, CRNN)模型[14], 即结合了CNN和RNN的优势, 利用循环结构捕获上下文信息, 并使用卷积神经网络构建文本的表示, 在文本分类问题中同样取得了不错的效果.

2 基于热点检测的循环自适应弹幕数据采集算法

提供弹幕功能的在线视频网站, 如bilibili.tv, 维护了一个弹幕池, 限制了弹幕数据的数量.在定时抓取弹幕数据时, 当用户生成的弹幕数据超过弹幕池上限, 最早的弹幕评论会被丢弃, 导致弹幕数据大量丢失.同时, 用户生成弹幕数据的时间分布不均匀, 会出现多个峰值, 所以在弹幕大量出现的时候, 为了防止弹幕池溢出, 需要提高爬虫抓取的频率.一种简单的思路是让爬虫一直以高频率爬取, 但是由于爬虫需要同时跟踪大量视频, 每个视频都进行高频率地爬取显然不合理, 因为会占用大量网络带宽和计算机资源, 并且更容易被网站禁止.针对上述问题, 本文设计了一种基于热点检测的循环自适应数据采集算法, 即根据弹幕发送频率动态调整爬虫的数据爬取频率.以bilibili.tv网站上"复兴号高铁首发"这个视频为例, 本文用高频率爬虫跟踪爬取了其100 h的所有弹幕信息, 该视频在网站的弹幕池大小为500. 图 1示意了每1 h、每10 h的弹幕数量的分布情况.

图 1 弹幕数量时间分布图 Fig.1 Distribution of Danmu's quantity over time

图 1可以观察到, 当以1 h为单位统计弹幕数量时, 峰值小于200, 未到弹幕池大小的一半; 当以10 h为单位统计时, 弹幕数量的峰值在1 000左右, 远远超过了弹幕池的大小.经统计, 1 h内弹幕池溢出的概率不大, 而且已经属于低频爬取, 所以本文选择1 h作为最大弹幕爬取时间间隔.在出现弹幕快速增长并可能造成弹幕池溢出的时刻, 称之为热点.因此本文设计了基于热点检测的循环自适应数据获取算法.算法的基本思路如下:将弹幕数据抓取间隔设置为依次递增的方式, 增速先快后慢, 时间间隔设置为从1 min开始, 直到最大间隔时间1 h, 然后重置间隔时间为1 min, 继续循环.在这个过程中, 爬虫每次爬取弹幕数据后都会判断当前新增弹幕数量是否大于阈值以此来判断是否出现热点, 一旦出现热点, 立即重置间隔时间为1 min.本文用阈值$\partial (n, t)$来保证当前弹幕产生的平均速度在最大间隔时间(1 h)内不会出现弹幕池溢出. $\partial (n, t)$的计算公式为

$ \begin{align} \partial (n, t)=\frac{n\times t}{60}, \end{align} $ (1)

其中, $t$为当前爬取的时间间隔(min), $n$为弹幕池的大小(弹幕池的大小可在抓取某个视频的弹幕数据的时候获取), 60即为最大时间间隔(60 min即1 h).当新增弹幕数量大于$\partial$时, 时间间隔重置为1 min, 重新开始先快后慢的方式.在一个循环中, 爬取时间间隔span$(x)$的计算公式为

$ \begin{align} \mathrm {span}(x)=\left\{ \begin{array}{l} &2^{x-1}, \qquad\qquad\qquad\quad x \leq 6, \\ &\mathrm {span}(6)+2(x-6), \quad 6<x\leq20 , \end{array} \right. \end{align} $ (2)

其中, 计算的间隔时间单位为分钟(min), $x$为此次循环中尝试爬取的次数, 初始化为1.为防止算法在非热点时在间隔时间较短时出现长时间高频率爬取, 算法采用先快后慢的增加方式, 当快速增长到30 min以上时(30 min以上即进入低频爬取阶段, 此时$x=6$), 进入慢增长期, 间隔时间做线性增长.当时间间隔达到1 h(此时$x=20$)或某次爬取到的弹幕数量大于阈值$\partial$时(出现热点), 重置$x=1$. 图 2示意了实际爬取间隔时间和数据爬取次数的关系. $A$点表示当爬取次数到达6的时候间隔时间进入线性增加; 当到达$B$点时, 间隔时间到达最大值1 h, 间隔时间重置, $C$点开始新循环; 到达$D$点的时候检测到新增弹幕数量大于阈值$\partial$, 间隔时间重置, 从$E$点开始新的循环.

图 2 数据抓取次数与间隔时间关系图 Fig.2 Relationship between the number and interval between data captures

由于爬取的是整个弹幕池中的所有数据, 所以每次爬取后需要对数据进行去重处理, 并将新的弹幕数据添加到本地弹幕数据库中.本文将弹幕的时间戳与发送者的ID连接构成一字符串, 如"16777215a253bf3f", 作为弹幕的唯一标识.

基于热点检测循环自适应数据获取算法如算法1所示; 算法2为爬取间隔时间计算函数的实现; 算法3为阈值计算算法.

算法1:热点检测循环自适应数据获取算法
FUNCTION hotpot_cycle ()
输入:无
输出:无
1:    WHILE true DO
2:      $x$ = 1 //初始化采集次数为1
3:      span_time = span($x$) //初始化采集间隔时间
4:      WHILE true DO
5:        sleep(span_time) //等待span_time时间
6:      danmus = spider_get_danmus() //获取弹幕池中的所有弹幕数据
7:        pool_size = spider_get_pool_size() //获取弹幕池大小
8:        num_of_danmu = compare_and_storge(danmus) //弹幕去重计算新弹幕的数量
9:        IF (num_of_danmu $>$ $\partial$($n$, span_time)) or $x>20$ THEN //当弹幕数量大于阈值
        或循环次数大于20次时, 跳出此层循环, 回到上层循环
10:          break
11:        END
12:        x++
13:        span_time = span(x)
14:      END
15:    END

算法2:爬取时间计算函数
FUNCTION span (x)
输入:爬虫爬取次数
输出:爬虫爬取的间隔时间
1:    IF $x\leq 6$ THEN
2:      return 2^($\pmb x-1$)
3:    END
4:    return span(6)+2($\pmb x-6$) //递归调用

算法3:阈值计算函数
FUNCTION $\partial$ ($\pmb n, \bf span$)
输入:弹幕池大小
    当前爬取时间间隔
输出:弹幕增长阈值
1:    return $\pmb n\times$span/60

3 弹幕情感分类模型 3.1 弹幕情感分类过程

弹幕情感分类过程如图 3所示. 图 3中输入的弹幕数据即为数据获取模块实时获取的新闻类弹幕数据.经过分词后的弹幕数据, 使用针对弹幕数据的停用词表, 去除停用词; 之后使用弹幕情感分类词典对弹幕数据做分类, 分为中性弹幕数据和带有情感倾向的弹幕数据.对带有情感倾向的弹幕数据, 使用word2vec做向量形式表达, 再使用CNN分类模型做情感分类, 得到正向情感倾向弹幕数据和负向情感弹幕数据.最后, 将中性、正向、负向弹幕数据做聚合, 输出分类结果.聚合即是将正向、负向、中性弹; 幕数据直接合并为一个带有正向、负向、中性标记的数据集.

图 3 弹幕情感分类过程 Fig.3 Danmu emotion classification process
3.2 构建针对弹幕数据的停用词表

与传统的文本分类问题不同, 弹幕数据由于其长度的限制和特殊的场景, 经常会用一些停用词来表达情感.比如弹幕"他是英雄"和"他是英雄????", 前者表达偏向正向, 后者则更偏向于负面.所以可以认为弹幕的停用词表是传统文本停用词表的一个子集.本文基于词频统计的方法提取停用词, 构建了针对弹幕数据的停用词表.首先, 基于传统停用词表统计传统文本中的停用词(本文采用哈工哈尔滨工业大学提供的停用词表, 共767条)分别在情感倾向弹幕数据与中性弹幕数据中出现的频率, 记为$P=\{p_1, p_2, \cdots p_i, \cdots, p_n\}$$Q=\{q_1, q_2, \cdots q_i, \cdots, q_n\}$, 其中$p_i$表示第$i$个停用词在情感倾向弹幕数据中的出现的频率, $q_i$表示第$i$个停用词在中性弹幕数据中出现的频率; 然后, 对每个停用词通过其在情感弹幕中出现的频率与在中性弹幕中出现的频率之比来判断是否保留.据统计, 如果在情感词中出现的频率大于在中性词中出现的频率的两倍, 则大概率是会被用于表达情感的停用词, 此时则保留.依据上述逻辑, 得到函数${\rm {is\_keep\_stop\_word}}(p_i, q_i)$, 依此判断停用词是否保留, 从而得到针对弹幕数据的停用词表.函数返回1时保留, 否则去除.函数${\rm is\_keep\_stop\_word}(p_i, q_i)$的计算公式为

$ \begin{align} {\rm {is\_keep\_stop\_word}}(p_i, q_i)=\left\{ \begin{array}{l} &0, \quad q_i/p_i>2, \\ &1, \quad q_i/p_i\leq2, \quad \mbox{或}\quad p_i=0. \end{array} \right. \end{align} $ (3)
3.3 构建弹幕情感词典

弹幕数据通常含有大量网络词汇, 用语不规范.为了区分弹幕的情感倾向, 本文以知乎情感词典(10 318条词汇)为基础, 基于词频统计的方法进行扩充, 建立针对弹幕的情感词典.观察到弹幕情感词大量使用网络词汇以及停用词, 因此扩充情感词典的关键在于查找这些网络词汇和停用词.对于停用词, 将第3.2节中去除的停用词(即公式(3)返回数据为0的停用词)集合记为$T=\{t_1, t_2, \cdots, t_i, \cdots, t_n\}$, 根据第3.2节, $T$有可能用来表达情感倾向, 故$T$即为用来扩充情感词典的停用词.

对于网络情感词汇的扩充, 本文选取www.zuilxy.comwww.chanduan.com这两个更新及时、网络词汇数量充足的网络流行语汇总网站作为扩充的流行语来源.抓取这两个网站中的流行语词汇, 共554条词汇, 记为$S=\{s_1, s_2, \cdots s_i, s_1\cdots s_n\}$, 并使用其来扩充分词器的词库.由于相对于停用词, 情感词汇数量更为庞大, 基础情感词就有10 318条, 显然相对于停用词, 每个情感词在文本中的分布更为稀疏, 所以需要更大的标记数据集来区分情感词是否保留.所以本文使用了与弹幕数据类似的微博标记数据, 其中有情感倾向的微博数据5万条, 中性的微博数据5万条, 共10万条微博数据作为数据集.统计$S$分别在情感倾向微博数据和中性微博数据中出现的频率, 记为$p_i$$q_i$, 其中$p_i$示第$i$个网络情感词汇在情感倾向微博数据中的出现频率, $q_i$表示第$i$个网络情感词汇在情感倾向微博数据中的出现频率.与第3.2节中的原理相同, 使用函数公式(3)来计算是否保留该情感词, 具体来说, 函数返回1时保留, 否则去除.

使用弹幕情感词典区分弹幕是否为中性弹幕, 做法是检索分词并且去停用词后的弹幕是否在包含情感词典中的词语; 如果包含则认为非中性弹幕, 否则为中性弹幕.情感词典可以高效率区分弹幕是否是中性弹幕, 在弹幕数据的测试集上, 准确率达94.6%.

3.4 训练CNN分类模型

由于情感词典在区分正负向情感上的准确率不高, 所以针对上文中得到的弹幕情感词典区分出的情感倾向类弹幕数据(非中性弹幕数据), 本文采用CNN的监督学习模型来对有情感倾向的弹幕数据进行分类.如图 3所示, 其中的CNN模型分类模块使用的分类模型, 即为本节训练的CNN分类模型.训练数据集上, 由于现有的弹幕标记数据过少, 所以本文使用迁移学习的方式, 采用与弹幕数据相似的已标注的微博数据作为训练集合, 使用标注的弹幕数据作为测试集来建立监督学习的训练模型, 具体步骤如下.

第一步, 使用第3.3中构建的弹幕情感词典对分词器做扩充, 并对微博数据做分词操作.

第二步, 对分词后的弹幕数据使用第3.2中的停用词表去除停用词.

第三步, 经本文统计, 在本文获取的50万条新闻类弹幕信息数据中, 经过第二步后得到的每条弹幕的分词结果, 词语数量大于20的弹幕数量占总弹幕数量的0.06%, 因其数量稀少, 故对结果影响很小.为了减少短文本特征稀疏的影响, 本文去除了经过第二步处理后的弹幕中词语数量大于20的弹幕数据.

第四步, 使用抓取的50万条弹幕数据训练word2vec模型, 并使用word2vec模型对第三步处理后的弹幕做向量化处理.为使不同的词在向量中能够被均匀分布, 本文对每个词转化的向量的长度取为128(可表达$2^{128}$个词).针对短文本的特征稀疏问题, 本文将所有弹幕得到的词向量统一为20$\times $128词向量矩阵, 其中20为一条弹幕经过第三步后得到的最大词数量, 128为每个词生成词向量后的长度.对于第三步处理后得到的词数量小于20的弹幕, 在使用word2vec向量化后使用零向量对其进行填充.

第五步, 采用文献[12]中对文本使用CNN分类的方法进行分类.由于大部分弹幕普遍词语较少, 故本文采用较小的卷积模版和较小的步长来提取特征, 即2$\times $128、3$\times $128、4$\times $128的卷积模板, 步长设置为1, 其中128为词向量的长度.由于本文使用的是微博数据作为训练集来预测弹幕数据并做迁移学习, 故本文设置较大的dropout和lambda惩罚项, 分别为0.5[15]、0.1来牺牲训练集上的少量准确率以防止过拟合, 以提高模型的泛化能力.另外, 对于池化层本文采用maxpooling, 并在全连接层使用softmax分类器, 输出分类结果.

3.5 模型有效性实验 3.5.1 实验环境和实验数据

实验环境所用的计算机配置为固态硬盘256 GB, 内存为8 GB, GPU为GTX1080Ti(显存11 GB), CPU为i7 7700HK.操作系统为Windows10 64位, 使用python3.5开发, 实验使用的深度学习框架为tensorflow1.2, 并使用了GPU加速处理.

数据集包括用于训练模型的微博数据和用于实验的弹幕数据.微博数据为新浪微博(www.weibo.com)2017年到2018年的50 000条人工标记的微博语料, 其中正向和负向各25 000条.提取微博评论数据和标记, 部分结果如表 1所示.弹幕数据来自"大熊猫香香的日本生活"、"复兴号高铁"和"红黄蓝虐童事件"3组(以下分别称为第一组、第二组和第三组)人工标注弹幕数据, 每组数据随机取300条, 正负弹幕数据各150条, 如表 2所示.弹幕数据样式如图 4所示.

表 1 微博评论标记数据 Tab. 1 Weibo comment tagged data
表 2 3组随机弹幕数据 Tab. 2 Three sets of random Danmu data
图 4 弹幕数据示例 Fig.4 Danmu data example
3.5.2 实验结果与分析

本文使用精度、查全率、查准率和$F1$分数($F1$-score)作为模型有效性的评估标准.为了说明本文提出的基于弹幕数据的情感分类模型的有效性, 分别对基于微博数据训练的分类模型和该模型在弹幕测试数据上的应用进行了实验分析, 主要针对情感倾向相关弹幕的区分.通过实验, 分别将基于CNN的分类模型与基于SVM、朴素贝叶斯(Naive Bayesian, NB)的分类模型的结果进行了比较, 其中CNN模型使用了2$\times $128、3$\times $128、4$\times $128的卷积模板, 步长设置为1, dropout和lambda惩罚项分别为0.5和0.1.针对微博数据, 使用十折交叉验证的方式, 并计算了模型各评价指标的平均值. 表 3为各算法通过十折交叉验证得到的模型的各个评价指标.由表 3可以看出, SVM和CNN的分类效果明显优于NB, CNN的分类效果略高于SVM.

表 3 微博数据分类模型评价 Tab. 3 Evaluation of a Weibo data classification model

为了验证本文模型在弹幕数据情感分类上的泛化能力, 本文使用来自"大熊猫香香的日本生活""复兴号高铁"和"红黄蓝虐童事件"3组弹幕数据, 对模型进行测试评估.测试结果如表 4所示.从表 4中可以看出, 每个模型相对于微博数据的分类效果都有所下降, 基于NB模型和基于SVM模型的方法下降非常明显, 基于CNN模型也略有下降, 但是基于CNN模型的分类效果明显优于基于NB模型和基于SVM模型的分类方法.说明使用微博数据训练的模型在弹幕数据上的分类效果是, 基于CNN模型优于基于NB模型和基于SVM模型.

表 4 不同分类模型在弹幕情感分类中的性能评价 Tab. 4 Evaluation of different classification models in Danmu sentiment classification

模型准确率根据训练样本的数量变化如图 5图 8所示.从图 5图 8中可以看出, 当训练数据量较少时, 基于SVM模型的准确率高于基于CNN模型; 但是当数据量上升时, 基于CNN模型的各项评价指标均快速上升, 说明基于CNN模型更适用于训练数据量较大的场景; 另外, 随着样本数量的上升, 当训练样本数超过2万时, 基于NB模型的评价指标基本不再提升, 基于SVM模型则有少量提升, 而基于CNN模型的准确率上升速度最明显.实验表明, 当训练数据较为充足时, 使用微博数据训练的CNN模型在新闻类弹幕数据上的情感分类效果优于传统的基于SVM模型.

图 5 训练样本数量对不同分类模型精度的影响 Fig.5 The effect of variability in the number of training samples on the accuracy of different classification models
图 6 训练样本数量对不同分类模型查全率的影响 Fig.6 The effect of variability in the number of training samples on the recall of different classification models
图 7 训练样本数量对不同分类模型查准率的影响 Fig.7 The effect of variability in the number of training samples on the precision of different classification models
图 8 训练样本数量对不同分类模型$F1$-score的影响 Fig.8 The effect of variability in the number of training samples on the $F1$-score of different classification models
4 舆情分析结果展示

从单个视频分析, 以"复兴号高铁首发"事件为例, 数据采集从2017年6月25日至2017年7月5日, 弹幕数量为3 952条. 图 9图 10显示了分类后得到的不同极性弹幕数据的分布情况, 其中中性弹幕约占79% (3 122条), 情感倾向弹幕(正向、负向)约占21% (830条).情感倾向弹幕中, 正向弹幕约占85% (705条), 负向弹幕约占15%(120条). 图 11显示了不同极性弹幕数量随弹幕发布时间的变化, 从图中可以看出, 随着时间的推移, 弹幕数量逐渐减少. 图 12显示了不同极性的弹幕数量随在视频中发布时间的变化情况.

图 9 中性、正向、负向弹幕分布情况图 Fig.9 Distribution of neutral, positive, and negative Danmu
图 10 正向、负向弹幕分布情况图 Fig.10 Distribution of positive and negative Danmu
图 11 不同极性弹幕数量随发布时间变化图 Fig.11 The number of different polarity Danmu vs. release time
图 12 不同极性弹幕数量随视频时间变化图 Fig.12 The number of different polarity Danmu vs. video time

本文还聚合了相同新闻事件的多个视频的弹幕数据并加以了分析.以"极限永宁失手坠楼"事件为例, 采集了从2017年12月9日至2017年12月30日该事件相关视频的所有弹幕数据.基于本文分类的模型, 对于"极限永宁失手坠楼"事件, 弹幕舆情情感倾向呈现出一种随时间的推移而变化的特征.从图 13图 14可以看出, 弹幕中中性弹幕数量居多, 而在情感倾向弹幕中, 正向的占大多数.但是随时间的推移, 弹幕的总体情感倾发生了变化, 如图 15所示(由于12月12日后评论数量很少, 为了体现数据特征, 图中只有截止至12月12日前的弹幕数据分布情况), 可以看到12月19日14:00左右, 评论呈现一边倒的倾向, 大部分弹幕都表达了正向的观点, 此时可以看到标签云(图 16)中出现大量的"一路走好" "逝者安息"等弹幕; 而到了12月10日上午, 弹幕呈现正向评论和负向评论基本持平的情况.此时可以看到标签云(图 17)中, 除了之前的"一路走好" "逝者安息"等弹幕, 开始出现了大量如"作死""活该"等评论, 这也体现了大众舆论随着时间的推移而变化的特点.当某些事件刚开始发生时, 由于信息的缺乏, 大部分舆论会倾向于一边倒, 而随着时间的推移, 大众获得越来越多的信息后, 评论会逐渐理性化.

图 13 中性、正向、负向弹幕分布情况图 Fig.13 Distribution of neutral, positive, and negative Danmu
图 14 正向、负向弹幕分布情况图 Fig.14 Distribution of positive and negative Danmu
图 15 不同极性弹幕数量随发布时间变化图 Fig.15 The number of different polarity Danmu vs. release time
图 16 2017年12月10日14点前弹幕标签云 Fig.16 Danmu tag cloud before 14:00 on December 10, 2017
图 17 2017年12月10日14点后弹幕标签云 Fig.17 Danmu tag cloud after 14:00 on December 10, 2017
5 结论

本文提出了一种基于大规模弹幕数据监听和情感分类的舆情分析模型.首先使用基于热点检测循环自适应算法的数据获取模块跟踪新闻事件, 抓取弹幕数据并进行合并处理; 其次构建并使用了针对弹幕的情感词典区分情感倾向弹幕和中性弹幕.对于情感倾向弹幕, 本文基于CNN分类模型对其进行了分类, 得出了正向弹幕和负向弹幕.对于CNN分类模型的训练, 本文使用了与弹幕相似的微博评论数据作为训练语料, 标记的弹幕数据作为测试集.最后, 本文使用该模型, 以两个新闻事件为例, 分析了其舆情信息, 展现了某些事件随着时间的推移, 大众舆情也会发生变化的规律, 证明了本文模型的有效性.

参考文献
[1]
燕道成. 新媒体对"95后"青年文化的解构[J]. 当代青年研究, 2017(6): 35-40. DOI:10.3969/j.issn.1006-1789.2017.06.006
[2]
HE M, GE Y, CHEN E, et al. Exploring the Emerging Type of Comment for Online Videos:DanMu[J]. ACM Transactions on the Web (TWEB), 2017, 12(1): Article No 1.
[3]
JIA A L, SHEN S, CHEN S, et al. An analysis on a YouTube-like UGC site with enhanced social features[C]//Proceedings of the 26th International Conference on World Wide Web Companion. International World Wide Web Conferences Steering Committee, 2017:1477-1483. https://www.researchgate.net/publication/322410722_An_Analysis_on_a_YouTube-like_UGC_site_with_Enhanced_Social_Features
[4]
郑飏飏, 徐健, 肖卓. 情感分析及可视化方法在网络视频弹幕数据分析中的应用[J]. 数据分析与知识发现, 2016, 31(11): 82-90. DOI:10.11925/infotech.1003-3513.2016.11.10
[5]
邓扬, 张晨曦, 李江峰. 基于弹幕情感分析的视频片段推荐模型[J]. 计算机应用, 2017, 37(4): 1065-1070.
[6]
THELWALL M, BUCKLEY K, PALTOGLOU G. Sentiment strength detection for the social web[J]. Journal of the Association for Information Science and Technology, 2012, 63(1): 163-173.
[7]
SAIF H, HE Y, FERNANDEZ M, et al. Contextual semantics for sentiment analysis of Twitter[J]. Information Processing & Management, 2016, 52(1): 5-19.
[8]
YUAN D, ZHOU Y Q, LI R F, et al. Sentiment analysis of microblog combining dictionary and rules[C]//Advances in Social Networks Analysis and Mining (ASONAM), 2014 IEEE/ACM International Conference on. IEEE, 2014:785-789. https://www.researchgate.net/publication/286107900_Sentiment_analysis_of_microblog_combining_dictionary_and_rules
[9]
刘志明, 刘鲁. 基于机器学习的中文微博情感分类实证研究[J]. 计算机工程与应用, 2012, 48(1): 1-4. DOI:10.3778/j.issn.1002-8331.2012.01.001
[10]
秦锋, 王恒, 郑啸, 等. 基于上下文语境的微博情感分析[J]. 计算机工程, 2017, 34(3): 241-246. DOI:10.3969/j.issn.1000-3428.2017.03.040
[11]
陈龙, 管子玉, 何金红, 等. 情感分类研究进展[J]. 计算机研究与发展, 2017, 54.
[12]
SRIRAM B, FUHRY D, DEMIR E, et al. Short text classification in twitter to improve information filtering[C]//Proceedings of the 33rd International ACM SIGIR Conference on Research and Development in Information Retrieval. ACM, 2010:841-842. https://www.researchgate.net/publication/221300153_Short_text_classification_in_twitter_to_improve_information_filtering
[13]
KIM Y. Convolutional neural networks for sentence classification[J] arXiv preprint, 2014, arXiv:1408.5882.
[14]
LAI S W, XU L H, LIU K, et al. Recurrent convolutional neural networks for text classification[C]//Proceedings of the 29th AAAI Conference on Artificial Intelligence. 2015:2267-2273.
[15]
HINTON G E, SRIVASTAVA N, KRIZHEVSKY A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. arXiv preprint, arXiv:1207.0580, 2012. https://arxiv.org/abs/1207.0580