◇江西财经大学 李雨昕 连思雅 贺晓宇 吴浩邦
近年来,随着人们的生活压力逐渐增大,心理健康或多或少在一定程度受到影响,抑郁症等心理疾病给许多人带来了不小的困扰痛苦,甚至威胁到自身生命安全;与此同时,随着互联网的发展,社交网络也是发展迅速,人们常常在微博、QQ空间、朋友圈等社交平台上表达自己的观点想法,而这些言论恰恰可以大致反映出一个人的情绪状态,进而对其心理健康状况进行简单评测。针对以上情况,本文以IDEA为运行平台使用了SpringMVC与MyBatis来实现其功能。选用的数据库为MySQL,Tomcat8.0作为系统的主要服务器,在此基础上使用Bootstrap搭建页面,以及JavaScript、JSP、Ajax等技术实现前端框架的设计,使用了Spring、SpringBoot、MyBatis实现后端,以完成爬取微博用户数据,对其言论进行情感分析等功能,最后以Echarts可视化的形式展示数据的返回结果。
现如今,世界各处患有心理疾病的群体在不断扩大。然而由于社会原因、医疗原因及个人原因等,大部分患有心理疾病的人群并未能得到及时有效的救助和医治,并且人们一开始也难以深入分析和了解其出现心理疾病的原因。同时,随着科学技术的高速发展,互联网开始进入大众的视野。第44次《中国互联网络发展统计报告》[2]显示,截止到2019年6月,我国网民规模达8.54亿,较2018年底增长2598万,互联网普及率达61.2%。在此情况下,各种各样的社交网络通信工具逐渐出现在人们的日常生活之中。人们往往通过各种社交平台发表自己的观点想法等,且往往以文本为载体,而这恰为通过分社交网络上用户的行为及发表的言论,进行情感分析,进而呈现用户心理变化情况、反映其心理健康状况提供了可能。
通过查找资料,我们发现如刘立新所提出的“7+1”大学生心理健康监测系统[3],以及高等人所开发的基于Web端的铁路工程建设员工心理健康动态监测系统[4]。我们根据这些资料文献发现虽然早已有人在心理健康监测方面进行研究,但大多数人研究方向的还是理论性与解释性,例如关于大学生心理健康的监测,有人就曾经利用同样测量工具 (SCL90) 的测量结果的一致性上加以检验,针对10年来有关大学生心理健康调查结果进行数据分析[5]。
前人在心理健康监测方面的研究已经为我们指出了大致的方向。但其仍存在强侵入性、高参与度等问题。结合如今时代的发展特色,我们提出是否可以充分运用在线社交平台大量数据的优势,来有效改善原有系统参与度较高、精准性较差的问题。本文基于上述启发及充分的需求分析,旨在开发出一款基于SSM的网络用户情感倾向监测系统。该系统在一定程度上保留了其他类似系统的优点,并且能够更加及时地获取用户的言论,对此进行情感分析,并以可视化的形式呈现给用户和系统管理员,为之后的心理危机预警提供了可能。
该社交网络数据采集系统支持两类用户:普通用户和系统管理员。普通用户注册登录成功之后进入网页,在成功到入微博账号后,用户可以查看自己近段时间的微博言论信息以及情感分析的具体情况等。用户的基本操作将会记录到系统。系统管理员可以查看所有用户的微博数据汇总的情感分析状况以及查看和删除数据库中的微博用户信息等。
图1 系统数据总体功能图
根据功能需求的分析结果,社交网络数据采集系统的数据库的数据需求如下:
(1)系统用户信息(sys_user),存储本系统内的用户信息,包括用户编号、账号、密码、昵称、头像、自我简介、姓名、性别、家庭住址、手机号、QQ号、邮箱、班级、学习、身份、用户状态、微博账号、微博状态。其中,身份说明该用户是“普通用户”还是“系统管理员”,用户状态包含“正常”与“被删除”两种情况,微博状态包含“正常”、“未导入”、“更新申请中”三种情况。用户编号为唯一标识。
(2)微博爬取信息(mblog_crawl),系统执行数据爬取的依据信息,包括爬取信息编号、微博账号、爬取状态、用户导入方式、用户导入时间、最近一次爬取时间、总爬取次数、有效爬取次数。其中,用户导入方式分为“单个导入”和“批量导入”。爬取信息编号为唯一编号。
(3)微博用户表(mblog_user),用于存储爬到的微博用户信息。包括微博用户编号、微博账号、微博昵称、头像链接、微博主页链接、是否认证、认证理由、用户性别、用户简介、微博数量、粉丝数量、关注数量、起始微博系统编号、末尾微博系统编号、用户信息爬取时间、用户信息是否为最新、情感值。
(4)微博数据表(mblog_data),用于存储爬到的微博数据信息。包括微博编号、微博系统发布类型、本条微博链接、微博发布时间、微博正文内容、发布类型、是否含媒体、首张图片原图链接、微博系统编号、本条微博爬取时间、点赞数、评论数、转发数、微博账号、分析类型、分析时间、情感值、置信度。其中,微博系统发布类型若为“9”说明是原创微博;微博系统编号可以唯一标识一条微博,并可以根刺判断发布的先后顺序;分析类型分为百度API和其他情况。微博用户编号为唯一标识。
(5)请求日志表(sys_log_controller),用于存储请求相关的日志信息。包括日志编号、操作时间、操作名称、操作状态、操作者账号、操作者姓名、操作者身份、附加信息1、附加信息2、附加信息3。日志编号为唯一标识。
(6)业务日志表(sys_log_service),用于存储业务相关的日志信息。包括日志编号、操作时间、操作名称、操作状态、操作类型、受影响行数、附加信息1、附加信息2、附加信息3。日志编号为唯一标识。
该系统采用B/S结构,可以实现普通用户的登录注册,爬取用户的微博数据信息,并进行情感分析,系统管理员可以查看所有用户的微博数据信息以及对应的情感变化,旨在实现对用户的心理危机进行预警。该系统前端以HTML、CSS、JavaScript为基础语言,用bootstrap框架进行数据展示,并使用Echarts对返回的数据进行可视化展示;后端则以Java语言为基础,采用Spring+SpringMVC+MyBatis搭建基本框架,使用网络爬虫进行数据采集,采用字符编码转换和词频统计技术对数据进行预处理,使用百度API对微博言论进行情感分析,以及ajax异步请求实现网页内容的部分更新。
SSM框架由Spring、SpringBoot和MyBatis所构成,其中SpringMVC是Spring中的部分内容。对比其他框架而言,SSM框架设计清晰,能够达到减少代码冗余性、提高开发效率以及便于维护和管理的目的[6]。
其中,SpringBoot的controller层负责接收来自View层 (视图层) 的请求转发,Service层实现类实现业务逻辑model层管理,并且使用SpringBoot的可以极大的简化繁琐配置。MyBatis是一款轻量级的持久层框架,其作为与数据库交互引擎对象,其与Dao层紧密联系,从而完成对数据库的增、删、改、查操作。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。
前端发送请求给web服务器,web服务器处理请求并传给后端,后端的Controller层分析请求类型并交给下一层Service层处理,Service层调用相关业务并转至下一层Dao层,Dao联合MyBatis对数据库进行操作,然后由数据库返回结果,再经Dao层处理后转至Service层,Service验证结果并继续返回上一层Controller层,Controller层返回结果并响应请求,最后由web服务器联合前端框架对结果进行解析和展示。
首先,前端对注册信息进行最基本的正确性判断,通过之后将注册信息封装为json字符串向后端发送ajax请求进行注册校验,根据url找到controller层的registerActionController方法,该方法 调 用service层 的getUserByAccountService方 法,在getUserByAccountService方法中实例化一个SqlSession对象,使用SqlSession对象创建Dao接口的代理对象去执行对应的方法实现与数据库的交互,返回一个SysUser对象,接着判断该对象是否为空,如果不为空说明用户已经存在,需要向前端返回包含注册失败信息的Msg对象;否则,需要向数据库中插入新用户,并返回包含注册成功信息的Msg对象。最后前端将接收的结果进行解析,反馈给用户提示信息。
微博数据爬取先输入微博账号,同样先对其进行前后端的校验,若该微博用户在数据库中不存在说明是首次爬取,于是更新系统用户的账号信息和状态信息,并将爬取信息和爬取微博用户信息插入到数据库中,并更HttpSession对象,然后开启新线程去爬取该用户的微博言论数据,并对其进行情感分析,最后将得到的微博言论数据和分析的情感值插入数据库;若存在,先爬取用户信息判断其是否更新了用户信息以及微博言论数据,若无更新则结束,否则调用之前的方法爬取数据更新数据库。值得注意的是,为了保证更新数据库时不会将之前爬取到的微博重复插入数据,我们采用每次将目前爬取到的微博系统编号与数据库中的微博系统编号进行比较,当数据库中的微博系统编号不再小于爬到的微博系统编号且比较5次都满足时,可以保证不会爬取到旧的微博数据。
此处我们是直接调用百度API对数据库中的微博数据进行情感倾向分析,对于每条微博短文本它会返回一个0到1之间的情感值与置信度。情感值越接近1说明这句话的情感越积极,越接近0说明这句话的情感越消极,接着将爬取到的该用户的所有微博文本情感值汇总再求均值,即可得到该微博用户情感值。当一个微博用户的情感值过低时,则说明该用户可能会出现心理危机,需要引起关注。微博用户情感分析的返回结果我们采用ECharts来呈现,ECharts是一个使用JavaScript实现的开源可视化库,它提供了常规的折线图、柱状图、散点图等,具有清晰明了的优点。
本系统实现了基本的社交网络用户数据采集,情感分析等功能,并且将分析结果及时返回以图表形式呈现,具有高效便捷的特点。该系统可以观察到用户在一段连续的时间内的情绪起伏、情感变化,对用户的心理危机预警具有一定的参考推测效用,然而不够准确,无法直接预警,后续本系统还有待改进。