文/劉海靜 杜意權
隨著社會經濟的快速發展,人們的生活習慣發生了翻天覆地的變化,快餐式的生活使得人們很少去關注自己的情緒變化,人們的心理健康得不到保障。當人長期處于負面情緒的時候很有可能進一步變成心理問題,比如像抑郁癥。但是這種后果可以避免,只要人們意識到自己的情緒變化,并適時調節一下,就可以從負面情緒中走出來。本課題通過設計一個情緒管理日記系統讓人們了解自己的情緒走向,避免因為情緒問題而產生一系列不良后果。
該系統不是一個簡單的日記記錄本,它的主要功能是情緒分析。通過分析用戶提交的數據,得到用戶情緒狀態,使用戶更好的了解自己,及時調整,起到提醒的作用。本系統中的情緒分析實質就是情感分析,也稱為意見挖掘或觀點挖掘,是對于給定的一段文本進行分析并提取其情感意見的過程。情緒分析讓人們更直觀地了解文本中的態度、意見及情感傾向。
國外的文本情感分析從20世紀90年代末開始。由于英文具有很強的語法約束,句子結構很明確,所以研究起來相對于中文比較簡單。國內研究比較出名的有哈爾濱工業大學,清華大學和大連理工大學、杭州電子科技大學等。哈爾濱工業大學的秦兵教授提出了機器智能中的文本情感計算,將情感分析與人工智能結合起來。大連理工大學的林鴻飛教授在細粒度情感分析方面也做出了很多貢獻,其中獨立整理標注完成了情感詞匯本體庫。隨著研究的深入,研究者在對情感分析方法進行改進的同時,也將其應用到不同的行業進行了實踐,如趙妍妍,王素格等都取得了不錯的成果。他們分別通過自動獲取句法路徑來描述評價對象和評價詞語之間的關系和基于情感詞粗糙隸屬度的文本分類方法將情感傾向分析應用到了電商評價和汽車評價預測上。
網絡的發展推動了IT行業的發展,各種軟件的出現為人們的生活提供了極大的便利,幾乎滿足了人們在生活中各個方面的需求。生活中物質方面的富足也推動了人們對心理情緒方面的需求,然而到目前為止,個人情緒狀態的信息化應用研究卻很少。這套情緒日記管理系統希望通過記日記,并對日記做情緒分析,給用戶直觀展現自己情緒方面的走勢,提供適時的建議,讓用戶對自己的情緒有一個清楚的認識和及時的調整。
在系統登錄頁面輸入用戶名密碼就可以進入屬于自己的情緒天地。每天用日記的形式記錄下感受,系統通過分析日記內容,給每個日記一個情緒值,用戶就可以直觀看到自己的情緒走勢,對用戶的心理起到一定的積極引導作用。
整個系統分為前端操作頁面、后臺業務邏輯處理兩大模塊。首先系統要記錄用戶的基本數據信息以及用戶發布的日記;其次系統必須人性化。比如用戶可以修改自己的基本信息、用戶可以選擇性刪除自己不想要的日記等。還能實現日記的分析功能并可以統計情緒詞,最終以圖表的形式展現給用戶。具體需求描述如下:
(1)實現用戶的注冊,登錄,退出,以及查看和編輯基本資料的功能。
(2)實現用戶修改密碼的功能。
(3)實現用戶發布日記及用戶日記的顯示功能。
(4)實現用戶刪除指定日記的功能。
(5)實現對用戶日記的分析功能,計算出指定日記的情緒值,提取出情緒詞和關鍵字并統計用戶的情緒詞,最終顯示給用戶等功能。
(6)實現對用戶情緒四個維度的計算,并展現給用戶,以及基于關鍵字查詢日記和顯示日記等功能。
(7)日志功能,記錄用戶發布日記和刪除日記的情況。
在需求分析基礎上,對系統進行歸納和抽象,得到系統的主要實體。本系統的主要實體包括:用戶、日記、情緒分類、情緒詞、否定詞、程度副詞、日志、建議等。

圖1:系統總體架構圖
將每個實體的E-R圖轉換為如下關系模型,關系模型中的關系碼使用下劃線標識標出。
(1)用戶實體的關系模型:用戶(用戶ID、用戶名、性別、手機、郵箱、密碼、二級密碼、出生年月)。
(2)日記實體的關系模型:日記(日記ID、用戶ID、標題、內容、發布時間、狀態、圖片、情緒值、關鍵字、情緒詞)。
(3)日志實體的關系模型:日志(日志ID、用戶ID、日志時間、內容、積極日記條數、消極日記條數、總日記條數)。
(4)情緒類別實體的關系模型:情緒類別(情緒ID、情緒詞)。
(5)情緒詞實體的關系模型:情緒詞(詞ID、情緒類別ID、情緒詞、情緒值、極性)。
(6)否定詞實體的關系模型:否定詞(詞ID、書否定詞、情緒值、極性)。
(7)程度副詞實體的關系模型:程度副詞(詞ID、程度副詞、情緒值)。
(8)建議實體的關系模型:建議(建議ID、建議標題、建議內容)。
(9)正能量句子實體的關系模型:句子(句子ID、句子內容)。
本系統采用MVP開發模式,系統的總體功能模塊如圖1所示。
用戶情緒分析是本系統的亮點。用戶在提交日記后會進入分析模塊,在分析模塊中會對日記文本進行一些處理,如替換句子結束符等。然后進行分句,對每句進行分詞,然后進入分析模型進行分析,最后得到文本的情緒值并將情緒詞進行連接成字符串,調用Jieba分詞特性中的TFIDFAnalyzer類進行關鍵字提取,提取算法是TFIDF算法。將提取到的關鍵字進行字符串拼接,并將之前得到的情緒值和情緒詞一起封裝成對象,保存到對應的日記中去。

圖2:日記文本情緒分析模型

圖3:發布日記頁面

圖4:情緒值統計顯示頁面
顯示的時候,為了顯示方便,只顯示最近的七條數據,對獲取到的日記對象,提取出全部的情緒詞,統計每個情緒詞出現的個數,統計后進行從大到小冒泡排序,封裝對象并采用HashSet去重,返回到前端。
具體分析步驟如下:
第一步:替換句子結束符。在用戶提交過來的文本數據中,句子結束符可能會有中文和英文,為了方便切割,所以先統一替換為英文結束符。
第二步:切割文本。將整段文本切割成若干具體的語句。以句子為最小分析單位。
第三步:分詞。將每一個句子進行分詞,并將分詞保存到一個序列中。
第四步:分析。對分詞后的句子進行分析,得到句子的情緒值。
第五步:匯總。將全部的句子分析完成后,將所有句子的情緒值匯總。
第六步:去極值。去掉匯總后的情緒值中的極值。
第七步:計算。計算整個文本的情緒值。
分析模型如圖2所示。
系統實現了預期功能,界面簡潔大方,使用方便。下面給出兩個例圖。圖3是用戶發布日記頁面,圖4是情緒值統計顯示頁面。
建議模塊中,給用戶的建議應該從負情緒值出發,根據負情緒的內容給出具體的建議。首先要找到最近的情緒值為負的日記,然后進行關鍵字提取,再將所有的建議進行關鍵字提取,進行混合相似度計算,如果有建議符合實際,則返回給用戶;如果沒有符合的再進行本文相似度計算,如果計算結果有符合實際的,則返回給用戶;如果沒有符合的,則在核心建議內抽取一條返回給用戶。
該系統通過日記方式記錄用戶的點滴情緒,并首次將自然語言處理領域的分析算法用于對日記情緒文本的分析,給出用戶一段時間以來的情緒傾向,讓用戶能直觀看到自己的情緒變化,系統還會從數據庫里提取合適的情緒建議,給用戶恢復自己的心態和情緒以積極的幫助和引導。如圖3、圖4所示。
物質生活提高的同時,我們更應該關注自己的精神世界。本系統設計并實現了一個情緒日記管理系統,能夠幫助用戶記錄情緒并了解自己的情緒變化。在情緒建議模塊,目前只根據相似度匹配,不能根據實際情況自動生成建議。后續將嘗試使用神經網絡算法進行分析模型的優化和改進。