2016年7月24日 星期日

機器學習與文字探勘於學生情緒分析與輔導的運用

(這篇曾在噗浪八年會心跳300分組分享過,是大數據小數據分析無誤@@)

(這是約莫在七年前做的小實驗,當時是帶著班上孩子進行未來教室的方案,所以有機會一玩,而當時數據分析技術與工具較為陳舊,現在的工具較當年已經方便很多惹,甚至還有許多Cloud Service or API可以使用,所以請不用找我要程式碼XDDD)





(這是噗八的投影片)

高年級的孩子,尤其在升上六年級之後,因身心狀況已進入青春期,
已趨近於國中生的發展狀態,有許多時候孩子自身心理的狀況、家庭狀況或者是與同儕相處的狀況,往往不會輕易被老師所發現,也不甚願意表露;
甚至是孩子們出現需要援助狀況或者是發生問題時,老師往往未能在第一時間掌握與得知,只能在狀況發生之後,老師才能介入與協助處理。
但在學生不輕易顯露與表達內心想法的狀況下,而如何最快得知學生的狀況?

    
其一便是透過同儕或者是學生家人透露或告知,老師才能掌握與了解相關訊息;

其二則是透過孩子的日記來發現。後來偶然發現孩子們平時可能拙於言辭、或在學校不願意輕易表達內心想法時,卻意外發現學生喜歡在社群網絡上暢所欲言,侃侃而談。

因此萌生一個想法:若是能透過自動化的方式,了解孩子們在社群網絡發表的內容,並加以自動化分析之,提早了解孩子的狀況,是否能及時提供協助,甚至是防患於未然?



好了,開始動手進行實作囉!

  1. 先寫一支 簡單的爬蟲 script 定期(每天)去爬學生的公開文(當年最紅也最多人使用的是無名部落格)。
  2. 爬完後的資料,存入資料庫當中。
  3. 將上述收集的文章,呼叫中研院的斷詞系統API(是的,當年只有這個能用@@),以及自己的辭庫,建立每篇文章的特徵向量。
  4. 採集上述樣本後,開始針對學生的文章進行分類。(例如說這篇是難過文、這篇是攻擊文、這篇是開心文….等等)。
  5. 運用詞頻統計等方式,去除贅詞或者是停用詞,取出關鍵字作為文件的特徵值,作為分類演算法的前處理。
  6. 以步驟三為樣本進行訓練。採用Apriori、Naive Bayes、SVM等演算法進行分析建模。
  7. 學生新的部落格文章預測與模型修正。
  8. (建立時間序列,若連續異常,則系統會主動通知老師。


優點:

  1. 老師可以藉由分析與預測結果,提早了解孩子的身心狀況,可洞察先機,即刻進行了解與處理。
  2. 一切自動化,老師不用辛苦爬文與分析,省卻工人智慧勞心勞力之苦。
  3. 文章分類預測準確率高(約80%,還是會有誤判的狀況,或者是心情已經雨過天青)
  4. 文章可以串連,分析其相關度。

缺點:

  1. 有的學生根本不用無名,或者是潛水。
  2. 學生文章會情緒會有所偏頗(例如只報喜不報憂,只發開心文)。


案例分享:
系統去爬某生A與某生B,以及別班某生C的文章,發現其用詞關聯度甚高,甚至是情緒已偏向負面,發生以文章彼此互相攻擊的狀況,導師得知後遂與該班導師聯手處理,遏止一場即將由虛擬衝突轉為實體衝突的狀況。(學生驚呆云:老師你怎麼發現的??)




後記:現今社群網絡較之當年更為發達,若是能善用此技術,能得知學生的狀況,不論在偏差行為發生之際,或者是學生及需要協助之時,相信能更早得知學生的狀況,並適時給予協助,成為輔導的利器之一。