趙 柯, 卿粼波, 熊淑華, 劉 蘋, 王亞男
(1 四川大學(xué) 電子信息學(xué)院, 成都 610065; 2 四川大學(xué) 商學(xué)院, 成都 610064)
情緒是心理學(xué)研究的重要課題,在心理學(xué)研究中,愉悅度又叫做效價,指的是高興或悲傷的程度,范圍是從極端悲傷到極端高興;喚醒度又叫做激活度,指的是身體激活程度,范圍是從極端困倦(如睡眠)到極端激動(如高度緊張);情緒自報告是指個人情緒狀態(tài)的測評報告。 利用圖片愉悅度和喚醒度反射志愿者情緒的研究方法常常被應(yīng)用于情緒測試環(huán)節(jié)[1]。 一套完整的情緒圖庫可以輔助心理學(xué)研究人員更好地從事基礎(chǔ)心理學(xué)和應(yīng)用心理學(xué)問題的評估工作[2]。
不同場景所需要的情緒圖庫不盡相同。 上野大輔等學(xué)者[3]研究了國際情感圖片系統(tǒng)(IAPS)的均值差異和情緒評分在日本老年人和年輕人中的差異。 Xu 等學(xué)者[4]評估了部分國際情感圖片系統(tǒng)(IAPS)中圖片的情感,最終僅保留了10 個子因素的59 張圖片,達到了良好的模型擬合效果、且具備令人滿意的可靠性。 Eliana 等學(xué)者[5]避免使用IAPS 中過于刺激的圖片,創(chuàng)建了兒童情感圖片系統(tǒng)(NAPS),并取得了較好效果。
建立情緒圖庫時,需要相關(guān)心理學(xué)專家對圖庫中的圖片標(biāo)定愉悅度和喚醒度的分值標(biāo)簽,但所標(biāo)定的愉悅度和喚醒度指標(biāo)在一定程度上卻缺乏客觀性。 因此需要大量志愿者情緒自報告數(shù)據(jù)與圖片愉悅度和喚醒度分值加以對比,才能正確反映出圖庫所標(biāo)定分值的可靠性與合理性。 構(gòu)建出完整的情緒圖庫驗證系統(tǒng)是必要的。
構(gòu)建情緒圖庫驗證系統(tǒng)時,傳統(tǒng)線下驗證方式會消耗大量時間及資源。 為獲取大樣本容量且真實有效的評價數(shù)據(jù),有必要設(shè)計出高性能可實時監(jiān)控的在線情緒圖庫驗證系統(tǒng)[6],該系統(tǒng)具備在線評圖、數(shù)據(jù)監(jiān)測、數(shù)據(jù)分析功能,可以幫助相關(guān)工作人員完成圖庫構(gòu)建并提高工作效率。
一套標(biāo)準(zhǔn)化情緒圖片系統(tǒng)的建立具有重要的使用價值,可以方便研究人員選擇更合適的情緒材料[7]。 但情緒圖庫搭建后,圖庫的有效性、準(zhǔn)確性會隨著應(yīng)用場景的轉(zhuǎn)換而發(fā)生改變。 圖庫中標(biāo)定的圖片愉悅度、喚醒度等指標(biāo)也并不能反映所有人的真實情況。 因此,需要志愿者對情緒圖庫進行測試后才能得到標(biāo)準(zhǔn)且客觀的情緒圖庫。
在傳統(tǒng)方式下,情緒圖庫搭建的測試環(huán)節(jié)需要邀請大量志愿者參與線下的研究實驗,該方式效率低下,會消耗大量人力、物力資源,且有可能影響被試者的情緒狀態(tài)。 因此,有必要采用線上分布式多數(shù)據(jù)庫布局方式,構(gòu)建出一套完整、高效、可實時監(jiān)測的應(yīng)用管理系統(tǒng)。 該系統(tǒng)允許不同場景下的志愿者在線上參與圖片測評工作,便于志愿者操作的同時,減輕相關(guān)研究人員的操作難度。
情緒圖庫驗證系統(tǒng)需要采用數(shù)據(jù)驅(qū)動技術(shù)進行構(gòu)建。 數(shù)據(jù)驅(qū)動源自計算機領(lǐng)域,其核心是在程序設(shè)計時以數(shù)據(jù)庫中的數(shù)據(jù)作為導(dǎo)向[7]。 數(shù)據(jù)驅(qū)動技術(shù)能夠很好滿足情緒圖庫驗證系統(tǒng)的構(gòu)建需求。而當(dāng)前心理學(xué)研究中,傳統(tǒng)心理學(xué)方法很少與數(shù)據(jù)驅(qū)動相結(jié)合,尤其在大量被試者參與測試場景下,傳統(tǒng)線下測試模式將很難兼顧用戶體驗、管理員管理難度、數(shù)據(jù)維護成本三個因素間的平衡關(guān)系。
因此,采用線上的分布式架構(gòu)的數(shù)據(jù)驅(qū)動系統(tǒng)一直是國內(nèi)外該領(lǐng)域的研究熱點,將系統(tǒng)模塊和數(shù)據(jù)源模塊分散可以有效地降低主服務(wù)器壓力,提高系統(tǒng)吞吐量[8-9]。 在諸多方面都取得了令人滿意的研究成果[10],采用分布式架構(gòu)及多數(shù)據(jù)庫設(shè)計服務(wù)系統(tǒng)正逐漸成為系統(tǒng)設(shè)計主流方式[11]。
本文采用B/S 架構(gòu)模式和SpringBoot 框架,在高并發(fā)場景下實現(xiàn)負(fù)載均衡和分布式部署,構(gòu)建了高并發(fā)場景下的圖片評價及管理系統(tǒng)。 并加入身份控制和權(quán)限管理技術(shù),兼顧用戶體驗的同時簡化管理員操作難度,降低單一系統(tǒng)開銷。
根據(jù)以上需求,由于C/S 架構(gòu)模式需要下載客戶端軟件,會增加用戶操作復(fù)雜度,影響志愿者使用體驗。 因此本系統(tǒng)選擇采用B/S 架構(gòu)模式進行設(shè)計,結(jié)合Web 頁面及微信小程序作為載體,核心技術(shù)采用SpringBoot 框架搭載Mybatis-Plus 提供的多數(shù)據(jù)源技術(shù)及Nginx 負(fù)載均衡技術(shù)[12],有利于快速高效的系統(tǒng)開發(fā)及維護,減少開發(fā)周期、降低開發(fā)成本,滿足多數(shù)據(jù)庫分布式服務(wù)的需求。
系統(tǒng)總體架構(gòu)設(shè)計中,用戶可以通過瀏覽器或微信小程序訪問應(yīng)用服務(wù)器,應(yīng)用服務(wù)器通過負(fù)載均衡分別向本地服務(wù)器和云服務(wù)器發(fā)出用戶請求,隨后本地服務(wù)器調(diào)用相關(guān)數(shù)據(jù)庫或者圖片服務(wù)器完成用戶請求。 系統(tǒng)總體架構(gòu)如圖1 所示。
圖1 系統(tǒng)總體架構(gòu)Fig. 1 Architecture of the system
系統(tǒng)邏輯架構(gòu)設(shè)計中,本系統(tǒng)采用傳統(tǒng)的B/S三層架構(gòu)。 其中,表示層管理與用戶對接情況,用于用戶請求接收、用戶頁面展示等。 業(yè)務(wù)邏輯層處理相關(guān)業(yè)務(wù)邏輯,包括用戶注冊、圖片評分、數(shù)據(jù)監(jiān)測等研發(fā)代碼邏輯的實現(xiàn)。 持久層操作數(shù)據(jù)庫與系統(tǒng)的對接,用于各項數(shù)據(jù)的接收入庫。 系統(tǒng)邏輯架構(gòu)設(shè)計如圖2 所示。
圖2 系統(tǒng)邏輯架構(gòu)Fig. 2 Logical architecture of the system
兼顧系統(tǒng)應(yīng)當(dāng)具有可用、安全、數(shù)據(jù)可控等特點,本驗證系統(tǒng)主要設(shè)計了三大功能模塊,包括:數(shù)據(jù)監(jiān)測模塊、圖片評分及用戶情緒自報告模塊、用戶權(quán)限管理模塊。 系統(tǒng)模塊設(shè)計組成如圖3 所示。
圖3 系統(tǒng)模塊組成Fig. 3 The modules of the system
在互聯(lián)網(wǎng)環(huán)境中,擁有用戶登錄、注冊等功能幾乎成為應(yīng)用系統(tǒng)的必要前提[13]。 在本系統(tǒng)構(gòu)建時,考慮到系統(tǒng)會涉及到相關(guān)研究人員、管理員、志愿者等多種角色參與,不同角色對于系統(tǒng)的需求也不盡相同,因此需要設(shè)計用戶及權(quán)限管理模塊用于用戶注冊登錄、權(quán)限管理及資格審核,以滿足不同身份用戶對于系統(tǒng)的不同需求。
圖片評分及自報告模塊則是系統(tǒng)的核心功能部分,在志愿者進入圖片測試前,將自身情緒狀態(tài)等數(shù)據(jù)通過報告單的形式存儲到數(shù)據(jù)庫中[14],隨后允許該志愿者進行圖片選擇,即依次將不同種類的現(xiàn)有圖片展示給志愿者,要求志愿者選擇最符合當(dāng)前心境圖片作為其情緒反射,進行5 組圖片選擇后,再次測試情緒狀態(tài)等數(shù)據(jù)并形成報告單。 最終系統(tǒng)將測前報告單所反映的分值與志愿者所選擇圖片對應(yīng)情緒圖庫中的分值進行對比,若某圖片的愉悅度、喚醒度分值與大部分志愿者測評結(jié)果一致,則認(rèn)為圖庫中該圖片分值有效。 若最終比對后大量圖片有效,則判定圖庫無效。
數(shù)據(jù)監(jiān)測模塊用于輔助實驗的順利進行,例如在實驗過程中有志愿者面臨賬號丟失、實驗被迫中斷等問題,系統(tǒng)提供了完整的解決方案。 該模塊也協(xié)助管理員對志愿者每日任務(wù)完成度、志愿者評分?jǐn)?shù)據(jù)合理性進行監(jiān)督檢查,以協(xié)助志愿者高效完成本次實驗。
2.1.1 分布式方案
考慮系統(tǒng)并發(fā)量問題,本系統(tǒng)采用分布式部署方案,通過云服務(wù)器方案和內(nèi)網(wǎng)穿透方案相結(jié)合的方法及將應(yīng)用服務(wù)器、ftp 服務(wù)器、數(shù)據(jù)庫分離的手段實現(xiàn)高并發(fā)條件下的訪問的需求。
在系統(tǒng)訪問量較大時,由于阿里云服務(wù)器性能穩(wěn)定且安全可靠,但是所提供帶寬有限,適合作為主服務(wù)器供用戶數(shù)據(jù)寫入使用;而多臺本地服務(wù)器搭配內(nèi)網(wǎng)穿透技術(shù)在公網(wǎng)上訪問時具有較大的帶寬,可以將其作為從服務(wù)器使用。
另外,對于功能應(yīng)用方面,可以在所有從服務(wù)器上開啟ftp 服務(wù),以供用戶查找及獲取圖片,主服務(wù)器則主要用于數(shù)據(jù)的寫入。 如此,不同服務(wù)器單獨建立、協(xié)作運行的方式,不但有利于系統(tǒng)的更新維護,同時降低了系統(tǒng)整體壓力。
2.1.2 數(shù)據(jù)收集方案
系統(tǒng)使用Nginx 反向代理,將用戶讀取請求分配到多個已部署的從服務(wù)器上,寫入請求則直接寫入主服務(wù)器上。 核查時可以采用Mybatis-plus 框架的多數(shù)據(jù)源技術(shù),將不同服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)分別讀取出來。 當(dāng)管理員進行查詢時,可以直接訪問主數(shù)據(jù)庫情況,系統(tǒng)會自動匯總所有數(shù)據(jù)情況并按需求返回。
2.1.3 部署方案
Docker 容器可以有效地解決在不同系統(tǒng)、多臺服務(wù)器上部署跨平臺項目帶來的不兼容與環(huán)境配置問題,利用其容器特性可以降低系統(tǒng)開銷的同時兼容多臺服務(wù)器同時運行。
本系統(tǒng)將Java 環(huán)境文件、Redis 數(shù)據(jù)庫文件、MySQL 數(shù)據(jù)庫文件、項目前后端壓縮包文件等相關(guān)文件通過Docker 配置打包后形成鏡像文件,隨后利用系統(tǒng)命令安裝Docker 容器,該系統(tǒng)即可以一鍵運行在多個服務(wù)器平臺上。 Docker 部署流程如圖4 所示。
圖4 Docker 部署流程圖Fig. 4 Flowchart of Docker deployment
在Docker 容器中部署時,由于從服務(wù)器內(nèi)容相同,可以統(tǒng)一打包、集體部署,一定程度上減少了服務(wù)器分別部署及環(huán)境配置帶來的不便。
系統(tǒng)Docker 容器部署方案如圖5 所示。
圖5 Docker 部署方案Fig. 5 Docker deployment scheme
2.1.4 數(shù)據(jù)庫設(shè)計
系統(tǒng)利用MySQL 數(shù)據(jù)庫設(shè)計5 個主要信息表,即:用戶、圖片、用戶情緒、圖片選擇結(jié)果、用戶角色及權(quán)限。
其中,根據(jù)數(shù)據(jù)庫設(shè)計規(guī)則,將用戶id、用戶角色id、用戶評分圖片id信息分別作為各表的主鍵與其他表相關(guān)聯(lián), 可以避免數(shù)據(jù)庫間的傳遞依賴,并有效地減少數(shù)據(jù)庫中數(shù)據(jù)的冗余情況。 提高系統(tǒng)可維護性,也利于后期統(tǒng)計和數(shù)據(jù)處理。
數(shù)據(jù)庫設(shè)計的實體關(guān)系(ER)圖如圖6 所示。
圖6 數(shù)據(jù)庫ER 圖Fig. 6 ER diagram of the database
系統(tǒng)擁有一系列安全手段對各業(yè)務(wù)接口進行安全管理,以便于用戶使用及系統(tǒng)安全維護。 采用SpringSecurity 安全框架結(jié)合JWT 安全令牌完成整體的安全設(shè)計。 在用戶注冊后,登錄環(huán)節(jié)即可生成用戶獨有的安全令牌,用戶訪問任何系統(tǒng)界面都須攜帶該令牌,若令牌過期、令牌造假或身份不符,系統(tǒng)將拒絕該用戶的訪問。 運用該項技術(shù)在一定程度上提高系統(tǒng)可靠性的同時可以降低系統(tǒng)整體開銷。
系統(tǒng)安全管理設(shè)計流程如圖7 所示。
圖7 安全驗證流程設(shè)計Fig. 7 Security verification process
2.2.1 用戶注冊
用戶在身份注冊時默認(rèn)為普通用戶身份,當(dāng)有需要時,可開放選擇管理員注冊權(quán)限來注冊管理員身份,當(dāng)不同身份用戶登錄系統(tǒng)后,系統(tǒng)展示界面不同,以便于用戶對應(yīng)使用不同功能。
2.2.2 權(quán)限管理
由于在高并發(fā)多用戶訪問情況下,使用session保存用戶信息會增大系統(tǒng)開銷,有可能導(dǎo)致系統(tǒng)崩潰,而cookie 存在系統(tǒng)安全風(fēng)險,因此本系統(tǒng)選用JWT 技術(shù)管理用戶登錄信息。
JWT 是在用戶登錄時,將用戶的ID、用戶名、電話、權(quán)限信息及登錄時間等關(guān)鍵信息以Json 形式通過base64 加密形成密鑰,再將密鑰通過自定義鹽的MD5 算法散列形成簽名,拼接密鑰、簽名以形成完整的JWT。
用戶登錄系統(tǒng)時,系統(tǒng)采用SpringSecurity 安全框架驗證JWT 技術(shù)為用戶生成安全令牌,僅持有安全令牌的用戶才能正常訪問系統(tǒng)的重要頁面,起到維護系統(tǒng)安全的目的。
用戶登錄系統(tǒng)時,會首先進行正負(fù)性情緒測試(PANAS)、愉悅度、喚醒度測試,以獲取當(dāng)前用戶的情緒狀態(tài)保存到數(shù)據(jù)庫中。 隨后用戶在情緒圖庫中選出最符合自己當(dāng)前情緒的圖片進行保存,5 組圖片結(jié)束后,用戶再次進行PANAS、愉悅度、喚醒度測試,在大樣本情況下系統(tǒng)通過比對用戶前后PANAS、愉悅度、喚醒度測試數(shù)據(jù)即可驗證用戶所選擇圖片是否對用戶心情狀態(tài)產(chǎn)生影響。
每個用戶在結(jié)束PANAS、愉悅度、喚醒度測試后,系統(tǒng)自動計算并保存其測試所得分?jǐn)?shù),用戶測前分?jǐn)?shù)與測后分?jǐn)?shù)的差值即為圖片對用戶情緒的影響程度。
而圖庫中的圖片也對應(yīng)一個分?jǐn)?shù)和一個情緒標(biāo)簽,若對于70%用戶情緒狀態(tài)的影響與圖片標(biāo)簽相符,則認(rèn)為圖片有效,否則認(rèn)為圖片無效。 最終系統(tǒng)會去除無效圖片,形成完整圖庫。
(1)注冊登錄。 普通用戶注冊并登錄系統(tǒng)后,能成功生成JWT 令牌。 保存JWT 的部分請求頭信息見表1。 表1 中,Authorization 對應(yīng)的是JWT。
表1 部分請求頭信息Tab. 1 Partial request header information
(2)用戶情緒自報告。 在用戶登錄后,需要進行情緒自報告,即PANAS、愉悅度、喚醒度測試。 愉悅度、喚醒度測試用于直接反映志愿者當(dāng)前情緒狀態(tài),而PANAS 測試需要志愿者根據(jù)近期心情狀態(tài)進行20 項正負(fù)性情緒測試。 測試后,系統(tǒng)會根據(jù)測試出的正性題目和負(fù)性題目估算出符合志愿者近期情緒的分值。 正性題目越多,用戶情緒越積極,反之越消極。 PANAS 測試可以避免用戶當(dāng)前情緒受到外部環(huán)境干擾產(chǎn)生的誤差。 愉悅度測試界面如圖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 像素大小、同種類、且分別被標(biāo)定了積極、中性、消極情緒標(biāo)簽的圖片中,選出最符合自己當(dāng)前情緒狀態(tài)的圖片。 圖片選擇后,系統(tǒng)會自動記錄該用戶選擇的選項并跳轉(zhuǎn)下一種類圖片繼續(xù)進行實驗。 所有種類圖片選擇完成后,系統(tǒng)會自動匹配用戶的愉悅度、喚醒度分值和其所選擇圖片的愉悅度、喚醒度分值,若分值接近,則系統(tǒng)將該圖片標(biāo)定為合格,否則標(biāo)定為不合格。 最終,系統(tǒng)會統(tǒng)計合格圖片的數(shù)量以得出圖庫的合格率。 圖片選擇界面如圖10 所示。
圖10 圖片選擇界面Fig. 10 The interface of picture selection
(4)數(shù)據(jù)監(jiān)測。 管理員登錄系統(tǒng)后,可以對用戶數(shù)據(jù)進行監(jiān)測,并正常進行用戶密碼找回、當(dāng)日未完成用戶查詢、當(dāng)日已完成用戶查詢、當(dāng)前注冊情況百分比查詢等功能操作。 數(shù)據(jù)監(jiān)測模塊如圖11 所示。
圖11 數(shù)據(jù)監(jiān)測模塊Fig. 11 Data monitoring module
(5)用戶管理。 管理員登錄系統(tǒng)后,可以查詢用戶基本信息。 對于普通身份用戶,管理員可以對其基本信息進行修改、刪除等操作。
考慮到系統(tǒng)需要達到在高并發(fā)場景中,短時間內(nèi)將接受大量用戶訪問的目標(biāo),系統(tǒng)在正式上線前需進行壓力測試,這既是維護系統(tǒng)穩(wěn)定的重要環(huán)節(jié),同時也是衡量系統(tǒng)性能的重要指標(biāo)[15]。
由于系統(tǒng)達到最高并發(fā)量時,需要容納2000人同時訪問,系統(tǒng)測試采用apache-jmeter 模擬線程測試方案,模擬出2000 名用戶在2 min 內(nèi)進入實驗環(huán)境,與真實情況相匹配。 測試結(jié)果顯示,系統(tǒng)吞吐量穩(wěn)定在正常水平,且異常率為0%,沒有出現(xiàn)丟包情況,證明正常環(huán)境下系統(tǒng)可以容納至少2000 個用戶進入實驗。 測試指標(biāo)及結(jié)果見表2。
表2 Jmeter 測試情況Tab. 2 Jmeter test status
為適應(yīng)不同用戶的需求,系統(tǒng)需要在各種系統(tǒng)環(huán)境完成部署,以及在各種實驗平臺順利運行,測試采用WinXP、Win10、Linux 系統(tǒng)進行部署測試,采用Edge、Chrome、Firefox、360 等瀏覽器和微信小程序平臺進行訪問測試。 實驗證明在各平臺上系統(tǒng)均運行良好。
該驗證系統(tǒng)開發(fā)完成后應(yīng)用于多模態(tài)職工情緒動態(tài)感知及管理體系研究中,原始構(gòu)建圖庫的圖片量為4250 張,分為人物、植物、動物、物體、場景五個大類。
該圖庫經(jīng)系統(tǒng)進行了2000 人次大規(guī)模測試后,篩選出志愿者情緒和專家標(biāo)簽匹配人數(shù)與志愿者總?cè)藬?shù)比值大于70%的圖片,認(rèn)為該圖片為有效圖片,否則就認(rèn)為該圖片并不客觀,從庫中刪除。
最終得到的圖庫數(shù)量為3401 張,其中涵蓋各類別如圖12 所示。
圖12 圖片類別情況Fig. 12 Picture categories
本系統(tǒng)完成了情緒圖庫驗證實驗,為后續(xù)情緒圖庫搭建提供了有效支持。
在目前存在的情緒圖庫中,高并發(fā)、可拓展的圖庫驗證系統(tǒng)較為少見。 本文結(jié)合目前需求構(gòu)建出了一套完整可行的情緒圖庫驗證系統(tǒng)。 系統(tǒng)采用簡單易用的B/S 架構(gòu),在傳統(tǒng)設(shè)計基礎(chǔ)上加入分布式部署方案,設(shè)計出完整的用戶權(quán)限管理系統(tǒng)和實時監(jiān)測系統(tǒng)、且通過壓力測試驗證,符合現(xiàn)有需求。
本系統(tǒng)的設(shè)計簡化了傳統(tǒng)情緒圖庫測試的實驗步驟,降低了實驗開銷。 為心理學(xué)研究人員及相關(guān)領(lǐng)域工作者提高了情緒圖庫驗證的實用性和可行性,并且為志愿者提供了一個更大、更便利的測試平臺,保證了志愿者高效完成測試。