由 mugicha 在 發表
離這系列的上一次專欄竟然已經過去 11 個月又 10 天了!
雖然一直想要脫離比較簡單的敘述統計,進入一些更進階的自然語言處理 (NLP) 領域(像是文字生成),但想著想著就懶了,也一直沒設計一套完整的流程。
原本打算把書名轉成向量,去看各出版社在二維空間中的書名分布,但今天工作到一半突然想到一個新的切入點!
不如,來看看電腦模型能不能正確區分出不同出版社的書好了!
在開始做研究前先想了一下書名的可能變因,一個是出版社(像是很久之前有提過禾馬較不愛「總裁」),另一個則是時間,不同時期可能會有不同的流行命名法。
因此我設計了兩個 subtask:
- 訓練電腦模型區分新月出版社不同書系的書名,包含了「浪漫情懷、花園、甜檸檬、藍海」
- 訓練電腦模型區分不同出版社某一書系的書名,包含了「禾馬-珍愛、喵喵屋-臉紅紅、新月-藍海」
結果 subtask 1 失敗了 準確率只有約莫 50%,甚至在電腦的預測中,沒有任何一本書被預測為藍海書系。
檢討失敗的理由可能有幾個:
- 資料量的不平衡 (imbalanced data);在我手邊的資料集中,浪漫情懷、花園、甜檸檬、藍海分別有 1,852 本、2,120 本、1,146 本、383 本,可以看出藍海筆數明顯偏少,因此電腦模型可能比較難學到藍海書系的特徵,甚至全部不要預測藍海書系還會有更高的準確率。
- 各書系之間差異不明顯;因為是同一個出版社的書,即使書系不同,可能還是有同樣的命名策略,加上這四個書系的出書橫跨時間軸很廣,彼此之間也有很大部分的重疊(在我手邊的資料集中,浪漫情懷出書日涵蓋了 1995-08-01~2006-10-05;花園涵蓋了 2005-08-16~2016-01-29;甜檸檬涵蓋了2006-12-01~2017-09-01;藍海涵蓋了 2011-08-17~2021-02-03),可能單獨比較浪漫情懷或藍海會有更好的結果,但因為我覺得只比較兩個太無聊了 (?),所以我就直接進入 subtask 2。
subtask 2 選的這三個書系「禾馬-珍愛、喵喵屋-臉紅紅、新月-藍海」,應該平常有在看言小的人或多或少有察覺彼此之間的差異其實算大,出書年份跟出版社風格都有一點差別,我也是這樣才選了這三個來比較。
我把它視為一個分類問題 (classification task),將資料分成 3 類,讓電腦學習各類不同的 features 再去預測;我拿 85% 的資料作為訓練用,最後留 15% 的資料作為測試。
使用的是深度學習 NLP 目前的 state-of-the-art:BERT,搭配中央院 CKIP 小組預訓練好的模型,最後接上後面三層的神經網路 (NN)。
BTW,上面這串看不懂完全沒有關係
這組資料還是有一點(或是很多點)資料不平衡的問題,禾馬-珍愛有 3488 本、喵喵屋-臉紅紅有 952 本、新月-藍海則僅有 383 本,也就是說如果全部都猜珍愛,準確率還是能有 3488/(3488+952+383) = 72.32%,不過好消息是,最終訓練出的結果正確率有 630/724 = 87.02%!
先放幾本書名讓大家猜猜這是珍愛、臉紅紅、藍海三書系中哪個書系的書:
- 總裁的灰姑娘
- 偷心萬人迷
- 我的廢材前妻
- 七品芝麻官
- 天生女主命
- 擒得暖床夫
答案是:
- 總裁的灰姑娘 - 珍愛
- 偷心萬人迷 - 珍愛
- 我的廢材前妻 - 喵喵屋
- 七品芝麻官 - 藍海
- 天生女主命 - 藍海
- 擒得暖床夫 - 喵喵屋
你答對了嗎 這些都是電腦模型有成功分類正確的書名。
至於分類錯誤的有哪些呢?同樣來看幾個例子:
「三妻四妾負了誰」是珍愛的,但模型認為這是喵喵屋的;
「將軍的押寨夫人」是珍愛的,但模型認為這是藍海的;
「娘子不請自來」是喵喵屋的,但模型認為這是藍海的;
「我的澀女人」是喵喵屋的,但模型認為這是珍愛的;
「穿越一枝花」是藍海的,但模型認為這是珍愛的;
「首輔大人求包養」是藍海的,但模型認為這是喵喵屋的。
大概是這樣,希望大家覺得有趣XD
另外發現這集都沒附圖,我想附 BERT 模型的架構圖也不會有人想看,那就附一下電腦訓練時的進度條好了XD
希望下一集不要是一年後見
- mugicha 的專欄
- 發表回應前,請先登入或註冊
- 瀏覽次數:2451
回應
CHENG-CHEN replied on 固定網址
七品芝麻官 擒得暖床夫
七品芝麻官 擒得暖床夫 這個有猜到~
首輔大人求包養 這本看名字真的蠻喵喵屋
將軍的押寨夫人...這個看名字我很有興趣看耶 來找找~