日経新聞のツイッター(@nikkei)で出現頻度の高い単語を抽出してみた
今回の記事では、自然言語処理の勉強として、日経新聞のツイッター(@nikkei)において出現頻度の高い単語を抽出します。
データセット
データ収集
TwimMachine(http://www.twimemachine.com/)というウェブサービスを用いました。出力結果をコピー・アンド・ペーストしてcsv形式で保存しました。
データ前処理
Excelで処理しました。
=LEFT(A1,FIND("https",A1)-1)
具体的には、以下のように投稿文からURL部分以下を削除しました。
株2万円回復、膠着相場に好決算の風穴 https://t.co/MV6Pdh8klj Wed Jul 26 07:40:03 +0000 2017
株2万円回復、膠着相場に好決算の風穴
最終的には、1行ごとに1投稿文を含むテキストファイル形式(nikkei.txt)で保存しました。
形態素解析
今回は、RパッケージRMeCab*1を用いて解析しました。
パッケージの導入
作者によるウェブサイト*2を参照しました。
利用する関数
今回は、RMeCabFreq()関数*3を利用します。この関数は、指定されたテキストファイルを形態素解析して、その活用形を原形に変換した上で、その頻度を数えて、結果をデータフレームとして返します。
library(RMeCab) result <- RMeCabFreq("C:/nikkei.txt") # 多い順に並べ替え result = result[order(-result$Freq),] result
出力結果(上位を抜粋)
Term | Info1 | Info2 | Freq | |
64 | 、 | 記号 | 読点 | 2302 |
63 | 記号 | 空白 | 2289 | |
203 | の | 助詞 | 連体化 | 1932 |
147 | に | 助詞 | 格助詞 | 1079 |
142 | で | 助詞 | 格助詞 | 948 |
59 | 」 | 記号 | 括弧閉 | 868 |
53 | 「 | 記号 | 括弧開 | 843 |
139 | が | 助詞 | 格助詞 | 780 |
162 | を | 助詞 | 格助詞 | 633 |
167 | は | 助詞 | 係助詞 | 565 |
6823 | 円 | 名詞 | 接尾 | 535 |
62 | 。 | 記号 | 句点 | 481 |
208 | た | 助動詞 | - | 367 |
6403 | 米 | 名詞 | 固有名詞 | 355 |
6345 | 日経 | 名詞 | 固有名詞 | 348 |
2243 | 平均 | 名詞 | サ変接続 | 332 |
329 | する | 動詞 | 自立 | 323 |
168 | も | 助詞 | 係助詞 | 311 |
217 | ます | 助動詞 | - | 272 |
6776 | 万 | 名詞 | 数 | 268 |
句読点や空白などの記号、「の」「に」「で」などの助詞が上位に来ています。
一般名詞のみを抽出
記号や助詞からは特徴が見い出しづらいので、一般名詞のみを抽出して棒グラフを出力したいと思います。以下では、頻度が50より多い単語のみを可視化しました。
result <- result[result[, 2] == "名詞" & result[, 3] == "一般" & result[, 4] > 50, ] k.col <- rainbow(nrow(result)) matplot(1:nrow(result), result[,4], type = "n", xlab="", ylab = "Frequancy") for(i in 1:nrow(result)){ matlines(i, result[i,4], type = "h", col = k.col[i], lwd =5) } legend(8, max(result$Freq), legend = result$Term, col = k.col, lwd = 5)
日経新聞らしく「株」「終値」「企業」「高値」といった単語が上位に来ています。「首相」(安倍首相)や「トランプ」(トランプ大統領)からは、報道機関らしさを感じます。「履歴」は、日経新聞朝刊最終面に掲載されている連載読み物「私の履歴書」*4が要因です。データセットの該当期間が2カ月弱だったので、50回程度登場したのだと推察されます。
*1:石田基広 (2017) 『Rによるテキストマイニング入門第2版』森北出版(東京) 183頁