赵 柯, 卿粼波, 熊淑华, 刘 苹, 王亚男
(1 四川大学 电子信息学院, 成都 610065; 2 四川大学 商学院, 成都 610064)
情绪是心理学研究的重要课题,在心理学研究中,愉悦度又叫做效价,指的是高兴或悲伤的程度,范围是从极端悲伤到极端高兴;唤醒度又叫做激活度,指的是身体激活程度,范围是从极端困倦(如睡眠)到极端激动(如高度紧张);情绪自报告是指个人情绪状态的测评报告。 利用图片愉悦度和唤醒度反射志愿者情绪的研究方法常常被应用于情绪测试环节[1]。 一套完整的情绪图库可以辅助心理学研究人员更好地从事基础心理学和应用心理学问题的评估工作[2]。
不同场景所需要的情绪图库不尽相同。 上野大辅等学者[3]研究了国际情感图片系统(IAPS)的均值差异和情绪评分在日本老年人和年轻人中的差异。 Xu 等学者[4]评估了部分国际情感图片系统(IAPS)中图片的情感,最终仅保留了10 个子因素的59 张图片,达到了良好的模型拟合效果、且具备令人满意的可靠性。 Eliana 等学者[5]避免使用IAPS 中过于刺激的图片,创建了儿童情感图片系统(NAPS),并取得了较好效果。
建立情绪图库时,需要相关心理学专家对图库中的图片标定愉悦度和唤醒度的分值标签,但所标定的愉悦度和唤醒度指标在一定程度上却缺乏客观性。 因此需要大量志愿者情绪自报告数据与图片愉悦度和唤醒度分值加以对比,才能正确反映出图库所标定分值的可靠性与合理性。 构建出完整的情绪图库验证系统是必要的。
构建情绪图库验证系统时,传统线下验证方式会消耗大量时间及资源。 为获取大样本容量且真实有效的评价数据,有必要设计出高性能可实时监控的在线情绪图库验证系统[6],该系统具备在线评图、数据监测、数据分析功能,可以帮助相关工作人员完成图库构建并提高工作效率。
一套标准化情绪图片系统的建立具有重要的使用价值,可以方便研究人员选择更合适的情绪材料[7]。 但情绪图库搭建后,图库的有效性、准确性会随着应用场景的转换而发生改变。 图库中标定的图片愉悦度、唤醒度等指标也并不能反映所有人的真实情况。 因此,需要志愿者对情绪图库进行测试后才能得到标准且客观的情绪图库。
在传统方式下,情绪图库搭建的测试环节需要邀请大量志愿者参与线下的研究实验,该方式效率低下,会消耗大量人力、物力资源,且有可能影响被试者的情绪状态。 因此,有必要采用线上分布式多数据库布局方式,构建出一套完整、高效、可实时监测的应用管理系统。 该系统允许不同场景下的志愿者在线上参与图片测评工作,便于志愿者操作的同时,减轻相关研究人员的操作难度。
情绪图库验证系统需要采用数据驱动技术进行构建。 数据驱动源自计算机领域,其核心是在程序设计时以数据库中的数据作为导向[7]。 数据驱动技术能够很好满足情绪图库验证系统的构建需求。而当前心理学研究中,传统心理学方法很少与数据驱动相结合,尤其在大量被试者参与测试场景下,传统线下测试模式将很难兼顾用户体验、管理员管理难度、数据维护成本三个因素间的平衡关系。
因此,采用线上的分布式架构的数据驱动系统一直是国内外该领域的研究热点,将系统模块和数据源模块分散可以有效地降低主服务器压力,提高系统吞吐量[8-9]。 在诸多方面都取得了令人满意的研究成果[10],采用分布式架构及多数据库设计服务系统正逐渐成为系统设计主流方式[11]。
本文采用B/S 架构模式和SpringBoot 框架,在高并发场景下实现负载均衡和分布式部署,构建了高并发场景下的图片评价及管理系统。 并加入身份控制和权限管理技术,兼顾用户体验的同时简化管理员操作难度,降低单一系统开销。
根据以上需求,由于C/S 架构模式需要下载客户端软件,会增加用户操作复杂度,影响志愿者使用体验。 因此本系统选择采用B/S 架构模式进行设计,结合Web 页面及微信小程序作为载体,核心技术采用SpringBoot 框架搭载Mybatis-Plus 提供的多数据源技术及Nginx 负载均衡技术[12],有利于快速高效的系统开发及维护,减少开发周期、降低开发成本,满足多数据库分布式服务的需求。
系统总体架构设计中,用户可以通过浏览器或微信小程序访问应用服务器,应用服务器通过负载均衡分别向本地服务器和云服务器发出用户请求,随后本地服务器调用相关数据库或者图片服务器完成用户请求。 系统总体架构如图1 所示。
图1 系统总体架构Fig. 1 Architecture of the system
系统逻辑架构设计中,本系统采用传统的B/S三层架构。 其中,表示层管理与用户对接情况,用于用户请求接收、用户页面展示等。 业务逻辑层处理相关业务逻辑,包括用户注册、图片评分、数据监测等研发代码逻辑的实现。 持久层操作数据库与系统的对接,用于各项数据的接收入库。 系统逻辑架构设计如图2 所示。
图2 系统逻辑架构Fig. 2 Logical architecture of the system
兼顾系统应当具有可用、安全、数据可控等特点,本验证系统主要设计了三大功能模块,包括:数据监测模块、图片评分及用户情绪自报告模块、用户权限管理模块。 系统模块设计组成如图3 所示。
图3 系统模块组成Fig. 3 The modules of the system
在互联网环境中,拥有用户登录、注册等功能几乎成为应用系统的必要前提[13]。 在本系统构建时,考虑到系统会涉及到相关研究人员、管理员、志愿者等多种角色参与,不同角色对于系统的需求也不尽相同,因此需要设计用户及权限管理模块用于用户注册登录、权限管理及资格审核,以满足不同身份用户对于系统的不同需求。
图片评分及自报告模块则是系统的核心功能部分,在志愿者进入图片测试前,将自身情绪状态等数据通过报告单的形式存储到数据库中[14],随后允许该志愿者进行图片选择,即依次将不同种类的现有图片展示给志愿者,要求志愿者选择最符合当前心境图片作为其情绪反射,进行5 组图片选择后,再次测试情绪状态等数据并形成报告单。 最终系统将测前报告单所反映的分值与志愿者所选择图片对应情绪图库中的分值进行对比,若某图片的愉悦度、唤醒度分值与大部分志愿者测评结果一致,则认为图库中该图片分值有效。 若最终比对后大量图片有效,则判定图库无效。
数据监测模块用于辅助实验的顺利进行,例如在实验过程中有志愿者面临账号丢失、实验被迫中断等问题,系统提供了完整的解决方案。 该模块也协助管理员对志愿者每日任务完成度、志愿者评分数据合理性进行监督检查,以协助志愿者高效完成本次实验。
2.1.1 分布式方案
考虑系统并发量问题,本系统采用分布式部署方案,通过云服务器方案和内网穿透方案相结合的方法及将应用服务器、ftp 服务器、数据库分离的手段实现高并发条件下的访问的需求。
在系统访问量较大时,由于阿里云服务器性能稳定且安全可靠,但是所提供带宽有限,适合作为主服务器供用户数据写入使用;而多台本地服务器搭配内网穿透技术在公网上访问时具有较大的带宽,可以将其作为从服务器使用。
另外,对于功能应用方面,可以在所有从服务器上开启ftp 服务,以供用户查找及获取图片,主服务器则主要用于数据的写入。 如此,不同服务器单独建立、协作运行的方式,不但有利于系统的更新维护,同时降低了系统整体压力。
2.1.2 数据收集方案
系统使用Nginx 反向代理,将用户读取请求分配到多个已部署的从服务器上,写入请求则直接写入主服务器上。 核查时可以采用Mybatis-plus 框架的多数据源技术,将不同服务器数据库中的数据分别读取出来。 当管理员进行查询时,可以直接访问主数据库情况,系统会自动汇总所有数据情况并按需求返回。
2.1.3 部署方案
Docker 容器可以有效地解决在不同系统、多台服务器上部署跨平台项目带来的不兼容与环境配置问题,利用其容器特性可以降低系统开销的同时兼容多台服务器同时运行。
本系统将Java 环境文件、Redis 数据库文件、MySQL 数据库文件、项目前后端压缩包文件等相关文件通过Docker 配置打包后形成镜像文件,随后利用系统命令安装Docker 容器,该系统即可以一键运行在多个服务器平台上。 Docker 部署流程如图4 所示。
图4 Docker 部署流程图Fig. 4 Flowchart of Docker deployment
在Docker 容器中部署时,由于从服务器内容相同,可以统一打包、集体部署,一定程度上减少了服务器分别部署及环境配置带来的不便。
系统Docker 容器部署方案如图5 所示。
图5 Docker 部署方案Fig. 5 Docker deployment scheme
2.1.4 数据库设计
系统利用MySQL 数据库设计5 个主要信息表,即:用户、图片、用户情绪、图片选择结果、用户角色及权限。
其中,根据数据库设计规则,将用户id、用户角色id、用户评分图片id信息分别作为各表的主键与其他表相关联, 可以避免数据库间的传递依赖,并有效地减少数据库中数据的冗余情况。 提高系统可维护性,也利于后期统计和数据处理。
数据库设计的实体关系(ER)图如图6 所示。
图6 数据库ER 图Fig. 6 ER diagram of the database
系统拥有一系列安全手段对各业务接口进行安全管理,以便于用户使用及系统安全维护。 采用SpringSecurity 安全框架结合JWT 安全令牌完成整体的安全设计。 在用户注册后,登录环节即可生成用户独有的安全令牌,用户访问任何系统界面都须携带该令牌,若令牌过期、令牌造假或身份不符,系统将拒绝该用户的访问。 运用该项技术在一定程度上提高系统可靠性的同时可以降低系统整体开销。
系统安全管理设计流程如图7 所示。
图7 安全验证流程设计Fig. 7 Security verification process
2.2.1 用户注册
用户在身份注册时默认为普通用户身份,当有需要时,可开放选择管理员注册权限来注册管理员身份,当不同身份用户登录系统后,系统展示界面不同,以便于用户对应使用不同功能。
2.2.2 权限管理
由于在高并发多用户访问情况下,使用session保存用户信息会增大系统开销,有可能导致系统崩溃,而cookie 存在系统安全风险,因此本系统选用JWT 技术管理用户登录信息。
JWT 是在用户登录时,将用户的ID、用户名、电话、权限信息及登录时间等关键信息以Json 形式通过base64 加密形成密钥,再将密钥通过自定义盐的MD5 算法散列形成签名,拼接密钥、签名以形成完整的JWT。
用户登录系统时,系统采用SpringSecurity 安全框架验证JWT 技术为用户生成安全令牌,仅持有安全令牌的用户才能正常访问系统的重要页面,起到维护系统安全的目的。
用户登录系统时,会首先进行正负性情绪测试(PANAS)、愉悦度、唤醒度测试,以获取当前用户的情绪状态保存到数据库中。 随后用户在情绪图库中选出最符合自己当前情绪的图片进行保存,5 组图片结束后,用户再次进行PANAS、愉悦度、唤醒度测试,在大样本情况下系统通过比对用户前后PANAS、愉悦度、唤醒度测试数据即可验证用户所选择图片是否对用户心情状态产生影响。
每个用户在结束PANAS、愉悦度、唤醒度测试后,系统自动计算并保存其测试所得分数,用户测前分数与测后分数的差值即为图片对用户情绪的影响程度。
而图库中的图片也对应一个分数和一个情绪标签,若对于70%用户情绪状态的影响与图片标签相符,则认为图片有效,否则认为图片无效。 最终系统会去除无效图片,形成完整图库。
(1)注册登录。 普通用户注册并登录系统后,能成功生成JWT 令牌。 保存JWT 的部分请求头信息见表1。 表1 中,Authorization 对应的是JWT。
表1 部分请求头信息Tab. 1 Partial request header information
(2)用户情绪自报告。 在用户登录后,需要进行情绪自报告,即PANAS、愉悦度、唤醒度测试。 愉悦度、唤醒度测试用于直接反映志愿者当前情绪状态,而PANAS 测试需要志愿者根据近期心情状态进行20 项正负性情绪测试。 测试后,系统会根据测试出的正性题目和负性题目估算出符合志愿者近期情绪的分值。 正性题目越多,用户情绪越积极,反之越消极。 PANAS 测试可以避免用户当前情绪受到外部环境干扰产生的误差。 愉悦度测试界面如图8 所示。 PANAS 测试模块如图9 所示。
图8 愉悦度测试界面Fig. 8 The interface of pleasure test
图9 PANAS 情绪测试界面Fig. 9 The interface of PANAS emotion testing
(3)图片测试。 用户情绪测试后,进入图片选择模块,可以从3 张512∗512 像素大小、同种类、且分别被标定了积极、中性、消极情绪标签的图片中,选出最符合自己当前情绪状态的图片。 图片选择后,系统会自动记录该用户选择的选项并跳转下一种类图片继续进行实验。 所有种类图片选择完成后,系统会自动匹配用户的愉悦度、唤醒度分值和其所选择图片的愉悦度、唤醒度分值,若分值接近,则系统将该图片标定为合格,否则标定为不合格。 最终,系统会统计合格图片的数量以得出图库的合格率。 图片选择界面如图10 所示。
图10 图片选择界面Fig. 10 The interface of picture selection
(4)数据监测。 管理员登录系统后,可以对用户数据进行监测,并正常进行用户密码找回、当日未完成用户查询、当日已完成用户查询、当前注册情况百分比查询等功能操作。 数据监测模块如图11 所示。
图11 数据监测模块Fig. 11 Data monitoring module
(5)用户管理。 管理员登录系统后,可以查询用户基本信息。 对于普通身份用户,管理员可以对其基本信息进行修改、删除等操作。
考虑到系统需要达到在高并发场景中,短时间内将接受大量用户访问的目标,系统在正式上线前需进行压力测试,这既是维护系统稳定的重要环节,同时也是衡量系统性能的重要指标[15]。
由于系统达到最高并发量时,需要容纳2000人同时访问,系统测试采用apache-jmeter 模拟线程测试方案,模拟出2000 名用户在2 min 内进入实验环境,与真实情况相匹配。 测试结果显示,系统吞吐量稳定在正常水平,且异常率为0%,没有出现丢包情况,证明正常环境下系统可以容纳至少2000 个用户进入实验。 测试指标及结果见表2。
表2 Jmeter 测试情况Tab. 2 Jmeter test status
为适应不同用户的需求,系统需要在各种系统环境完成部署,以及在各种实验平台顺利运行,测试采用WinXP、Win10、Linux 系统进行部署测试,采用Edge、Chrome、Firefox、360 等浏览器和微信小程序平台进行访问测试。 实验证明在各平台上系统均运行良好。
该验证系统开发完成后应用于多模态职工情绪动态感知及管理体系研究中,原始构建图库的图片量为4250 张,分为人物、植物、动物、物体、场景五个大类。
该图库经系统进行了2000 人次大规模测试后,筛选出志愿者情绪和专家标签匹配人数与志愿者总人数比值大于70%的图片,认为该图片为有效图片,否则就认为该图片并不客观,从库中删除。
最终得到的图库数量为3401 张,其中涵盖各类别如图12 所示。
图12 图片类别情况Fig. 12 Picture categories
本系统完成了情绪图库验证实验,为后续情绪图库搭建提供了有效支持。
在目前存在的情绪图库中,高并发、可拓展的图库验证系统较为少见。 本文结合目前需求构建出了一套完整可行的情绪图库验证系统。 系统采用简单易用的B/S 架构,在传统设计基础上加入分布式部署方案,设计出完整的用户权限管理系统和实时监测系统、且通过压力测试验证,符合现有需求。
本系统的设计简化了传统情绪图库测试的实验步骤,降低了实验开销。 为心理学研究人员及相关领域工作者提高了情绪图库验证的实用性和可行性,并且为志愿者提供了一个更大、更便利的测试平台,保证了志愿者高效完成测试。