數字解析專欄:出版社有書名的偏好嗎?(三)

離這系列的上一次專欄竟然已經過去 11 個月又 10 天了!

 

雖然一直想要脫離比較簡單的敘述統計,進入一些更進階的自然語言處理 (NLP) 領域(像是文字生成),但想著想著就懶了,也一直沒設計一套完整的流程。

原本打算把書名轉成向量,去看各出版社在二維空間中的書名分布,但今天工作到一半突然想到一個新的切入點!

不如,來看看電腦模型能不能正確區分出不同出版社的書好了!

 

在開始做研究前先想了一下書名的可能變因,一個是出版社(像是很久之前有提過禾馬較不愛「總裁」),另一個則是時間,不同時期可能會有不同的流行命名法。

因此我設計了兩個 subtask:

  1. 訓練電腦模型區分新月出版社不同書系的書名,包含了「浪漫情懷、花園、甜檸檬、藍海」
  2. 訓練電腦模型區分不同出版社某一書系的書名,包含了「禾馬-珍愛、喵喵屋-臉紅紅、新月-藍海」

結果 subtask 1 失敗了 :-) 準確率只有約莫 50%,甚至在電腦的預測中,沒有任何一本書被預測為藍海書系。

檢討失敗的理由可能有幾個:

  1. 資料量的不平衡 (imbalanced data);在我手邊的資料集中,浪漫情懷、花園、甜檸檬、藍海分別有 1,852 本、2,120 本、1,146 本、383 本,可以看出藍海筆數明顯偏少,因此電腦模型可能比較難學到藍海書系的特徵,甚至全部不要預測藍海書系還會有更高的準確率。
  2. 各書系之間差異不明顯;因為是同一個出版社的書,即使書系不同,可能還是有同樣的命名策略,加上這四個書系的出書橫跨時間軸很廣,彼此之間也有很大部分的重疊(在我手邊的資料集中,浪漫情懷出書日涵蓋了 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

 

希望下一集不要是一年後見 :-)

部落格分類: 
自訂標籤: 

回應