u++の備忘録

日経新聞のツイッター(@nikkei)で出現頻度の高い単語を抽出してみた

 今回の記事では、自然言語処理の勉強(の手始め)として、日経新聞ツイッター(@nikkei)において出現頻度の高い単語を抽出します。

データセット

  • 日経新聞ツイッター(@nikkei)の投稿文
    • 期間:2017年6月7日~2017年7月26日
    • 当該期間の3200件の投稿から、RTを除いた3047件を利用

データ収集

 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)

f:id:upura:20170801152139p:plain
 日経新聞らしく「株」「終値」「企業」「高値」といった単語が上位に来ています。「首相」(安倍首相)や「トランプ」(トランプ大統領)からは、報道機関らしさを感じます。「履歴」は、日経新聞朝刊最終面に掲載されている連載読み物「私の履歴書*4が要因です。データセットの該当期間が2カ月弱だったので、50回程度登場したのだと推察されます。