在 2017 台灣人工智慧年會演講中,清華大學資工系的陳宜欣副教授,分享團隊以機器學習分析社群發文情緒的經驗。希望有助偵測網路發文者的心理狀態,或協助醫師理解病人無法清楚陳述的情緒。
「我沒事」到底是什麼情緒
情緒,是許多疾病和社會問題的表徵。例如有躁鬱傾向的人們,說話用詞有很大的情緒起伏;又如網路霸凌,會反映於社群留言的用字情緒。若能及早偵測到這些情緒,就有機會及時避免憾事發生,而這個任務可透過人工智慧 (Artificial Intelligence, AI) 協助。
但是,情緒不是那麼容易透過詞語理解。
例如,朋友在 Facebook 發文「我沒事」,究竟代表心平氣和的「我沒事」,還是絕望至極的「我沒事」;還有當鄉民留言「看吧!」,想表達的是讚賞意味的「看吧!」,或是嘲諷語氣的「看吧!」?
如同《來自星星的傻瓜》電影主角(一名外星人)所言,人類的語言非常難理解,在不同情境脈絡有不同意思,甚至會隱藏真實情感說謊。這些都增加人工智慧從語意分析情緒的難度。
清華大學資工系的陳宜欣副教授,是三個小孩的媽媽。她發現從小孩學習如何說話表達情緒的過程,可以梳理出一條路徑訓練機器學習。雖然小孩說話常常毫無邏輯,但許多小細節累積起來,就能讓大人判斷小孩的情緒。
例如當小孩對媽媽說「妳總是叫我收玩具」,其中用了「總是」這個詞,可以判斷小孩不太高興。或是小孩說「我永遠不能電視看了」,乍聽滿頭問號,但用了「永遠不能」這組詞,可以判斷其中的負面情緒。
不懂語法、沒背過辭典,還是可以表達情緒,反之也能分析情緒。
網路爬文 借用群眾智慧
陳宜欣團隊運用網路爬蟲技術,將社群網站公開發文 ( PTT、Facebook、Twitter 等) ,跟情緒有關的內容都蒐集建立至「情緒資料庫」。或許有些人會認為:「這不就是一堆人在發廢文?」,但以群眾外包 (crowdsourcing) 的角度,這些社群發言集結起來,就是群眾智慧,可做為訓練機器學習的資料。
團隊將社群發文者原先在發文加上的情緒 Hashtag (例如 #anger) 作為參考答案 ,但一開始先把這些「答案」遮起來,訓練機器透過演算法學習發文中「出現哪些字」代表「什麼樣的情緒」,最後再與原本的答案 (例如 #anger) 對照,一次次地優化機器判斷情緒的準確率。
「用大數據做情緒分析有個重點,就是刪資料不要心痛!」陳宜欣笑中有股失敗無數次的堅毅,「太多 Hashtag 的發文、重複發文、太短沒有情緒特徵的發文……等等,都要從訓練資料中拿掉」。