◇江西財經大學 李雨昕 連思雅 賀曉宇 吳浩邦
近年來,隨著人們的生活壓力逐漸增大,心理健康或多或少在一定程度受到影響,抑郁癥等心理疾病給許多人帶來了不小的困擾痛苦,甚至威脅到自身生命安全;與此同時,隨著互聯網的發展,社交網絡也是發展迅速,人們常常在微博、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實現的開源可視化庫,它提供了常規的折線圖、柱狀圖、散點圖等,具有清晰明了的優點。
本系統實現了基本的社交網絡用戶數據采集,情感分析等功能,并且將分析結果及時返回以圖表形式呈現,具有高效便捷的特點。該系統可以觀察到用戶在一段連續的時間內的情緒起伏、情感變化,對用戶的心理危機預警具有一定的參考推測效用,然而不夠準確,無法直接預警,后續本系統還有待改進。