R 文字探勘-word2vec 財經新聞應用

在 2013 年 Google 公布了一個開源項目 word2vec,有別於以往常用的文字探勘的模型 RNN ( recurrent neural network) 或 N-gram model,word2vec 提供了另一個角度來理解非結構化的純文字資料。在這篇會稍微介紹 word2vec 的原理,並分析鉅亨網的頭條新聞。  

word2vec

word2vec 是一個處理自然語言的方法,在一般處理自然語言時,最直覺也是最簡單的方法,會直接使用每個詞的詞頻,也就是詞出現的次數來作為將文字結構化的方法,不過這樣的做法會因為文本太大使得模型訓練速度緩慢。而 word2vec 的概念是先開設一個固定的向量空間,利用 deep learning 方法計算詞與詞之間的相對位置,如此的反覆訓練,將詞擺在相對應的位置,在模型訓練後,每個詞會由一個向量表示,向量本身並不具意義,不過詞與詞之間的向量卻帶有意義,最有名的例子就是 ([‘King’] – [‘Man’]) + [‘Woman’] = [‘Queen’] 的結果。

在這裡推薦一個 Live demo wevi ,在這個 Live demo 可以清楚了解模型訓練的過程與結果。其中也有國王與皇后的例子。

安裝 R 套件:wordVectors

小編使用的 word2vec 模型 R 套件為 wordVectors,在 R 安裝 wordVectors 跟一般安裝套件的指令不太一樣,需要先安裝 devtools 之後才能安裝 wordVectors 這個套件,指令如下:

install.packages("devtools")
library(devtools)
install_github("bmschmidt/wordVectors")

分析鉅亨網新聞

小編利用爬蟲抓取 2015-09-30 ~ 2016-02-22 “鉅亨網-宏觀" 分類的新聞,內容主要是與國際財經相關重要的新聞。不過小編在 2016-12-02 發現,鉅亨網已經改掉這個分類了。

先利用之前提到的 jieba 進行斷詞,後定義一個 300 維度的空間,進行 word2vec 模型訓練。模型訓練完後,可以輸入某些關鍵字,觀察與這些關鍵字距離較近的字有哪些。以下為小編模型訓練的結果。

> nearest_to(cn.model,cn.model[[“成本"]])
成本 降低 居高不下 轉嫁 負擔 折舊 壓縮 降下來 高昂 節省
1.22E-15 3.56E-01 4.88E-01 5.37E-01 5.89E-01 5.89E-01 5.94E-01 5.98E-01 5.98E-01 6.01E-01
> nearest_to(cn.model,cn.model[[“日本"]])
日本 安倍 總務 田東 東京 產經新聞 殿堂 宏一 厚生
5.55E-16 4.39E-01 4.81E-01 5.10E-01 5.23E-01 5.50E-01 5.52E-01 5.65E-01 5.66E-01 5.68E-01
> nearest_to(cn.model,cn.model[[“美國"]])
美國 少有 強勁 週五 勞工 上週 週四 咨商 多過 七年
3.33E-16 5.61E-01 6.13E-01 6.22E-01 6.31E-01 6.35E-01 6.40E-01 6.49E-01 6.51E-01 6.52E-01
> nearest_to(cn.model,cn.model[[“中國"]])
中國 全球 經濟 國家 世界 我們 印度 發作 一個 密不可分
1.11E-15 5.65E-01 5.67E-01 6.30E-01 6.54E-01 6.54E-01 6.69E-01 6.94E-01 6.95E-01 7.08E-01


可以發現如果輸入"成本",就會有與成本相關的字眼,降低、居高不下、轉嫁、壓縮等等。可以想像如何降低成本在財經新聞裡是一個相當重要的議題。

若輸入"日本" 則會跟安倍晉三跟一些地名與機構有關的詞。
若輸入 “美國" 則會出現一些與日期相關的詞,週五、周四、上週、七年。原因不明,與想像的結果不太一樣。
若輸入 “中國" 則會出現與全球經濟相關的詞,全球、世界、經濟。比較特別的是在第六項出現印度。

結論

word2vec 提供另一個觀點將文字轉換成結構化資料,然而 word2vec 屬於一種非監督式學習,需要大量的樣本才可以得到較好的結果。以小編實作的模型為例,"日本"、"美國"、"中國" 都是國家名,在小編的想像裡這些詞應該會是接近的。然而卻得到與想像不一樣的結果,其中的原因也許是因為樣本過小,或是訓練的樣本不對導致。

2 comments

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s