Rで解析:テキストマイニングとタグクラウド


テキストマイニングをRで実施し、単語の出現頻度をタグクラウドとcsvで出力する方法をご紹介します。検索フレーズやアンケートの解析にも使えると思います。今回は、アニメ「アルノドア・ゼロ」でも話題となった「クロレラ」をgoogleで検索し、2014年8月の50位までのディスクリプションを解析してみました。

パッケージバージョンは0.99993。実行コマンドはR version 3.2.2で確認しています。16/01/24インストール方法を更新しました。


MeCabのインストール

(参考サイト:https://sites.google.com/site/rmecab/home/

Windowsの場合

MeCab-0.996.exe」、リンクをクリック後、該当ファイルをダウンロードしてインストールしてください。

MACの場合

アプリケーションフォルダを確認して、赤枠で囲んだ「Xcode.app」がインストールされているか確認してください。

xcode

Xcodeは「App Store」からインストールすることをお勧めします。

App Storeへのリンク:

https://itunes.apple.com/jp/app/xcode/id497799835?mt=12

Xcodeをインストール後にアプリケーションフォルダにある「ユーティリティーフォルダ」からターミナルを起動します。

ターミナル

起動後、以下を実行します。途中MACのログインパスワードを求められるので入力してください。MeCabのバージョンは0.996を対象にしています。他のバージョンをインストールする場合はコマンドのすべての数字を変更してください。

#MeCabのインストール
#バージョンは下記コマンドの数字全てを変更する
cd desktop
curl -O http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar zxf mecab-0.996.tar.gz
cd mecab-0.996
./configure --with-charset="utf8"
make
sudo make install

#辞書のインストール
cd desktop
curl -O http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset="utf-8"
make
sudo make install

RMeCabのインストール

オフィシャルページに記載のインストール方法「install.packages(“RMeCab”, repos = “http://rmecab.jp/R”)」ではリンク先にパッケージがなくインストールができません。

http://rmecab.jp/wiki/index.php?SoftArchive#p6cc66e0

で公開されているパッケージバイナリからとGithubからインストールする方法です。

Githubのソース
https://github.com/IshidaMotohiro/RMeCab

#RMeCab Windows バイナリファイル
#バージョンは0.99991
install.packages("http://web.ias.tokushima-u.ac.jp/linguistik/RMeCab/RMeCab_0.99991.zip",
                 repos = NULL, method = "libcurl")

#RMeCab - OS X 10.9 Maverick バイナリファイル
#バージョンは0.99991
install.packages("http://web.ias.tokushima-u.ac.jp/linguistik/RMeCab/RMeCab_0.99991.tgz",
                 repos = NULL, method = "libcurl")

#Githubからインストール
#バージョンは0.99993
install.packages("devtools")
devtools::install_github("IshidaMotohiro/RMeCab")

解析対象のファイル例

解析する文章が入力されたエクセルファイルは下の画像のような形式を想定しています。A行に1列毎に文章を入力します。

クロレラディスクリプション

コードの実行

###ライブラリーの読み込み#####
library("XLConnect")
library("tcltk")
library("RMeCab")
library("wordcloud")
library("RColorBrewer")
########

###データの読み込み#####
selectABook <- paste(as.character(tkgetOpenFile(title = "テキストxlsxファイルを選択",filetypes = '{"xlsxファイル" {".xlsx"}}',initialfile = "*.xlsx")), sep = "", collapse =" ")
MasterAnaData <- loadWorkbook(selectABook)
AnaData <- readWorksheet(MasterAnaData, sheet = 1)
########

###単語の出現数設定。3以上での抽出結果となります。出現数は適時調整してください。#####
WordFreq <- 3
########

###結果保存先のフォルダを設定#####
SaveDir <- as.data.frame(paste(as.character(tkchooseDirectory(title = "データ保存フォルダを選択"), sep = "", collapse =" "))) #初期dirpathの取得準備
SaveDir <- paste(SaveDir[1:(nrow(SaveDir)),], sep = " ", collapse = "/" ) #保存先pathの取得
########

###列ごとにテキストファイルを作成#####
for (i in seq(nrow(AnaData)) ){
  setwd(SaveDir)
  write(AnaData[i, 1] ,  file = paste("変換",i, ".txt", sep=""))
}
########

###テキスト内の単語解析######
res <- docMatrix(SaveDir, pos = c("名詞", "形容詞"))
res <- res[row.names(res)!= "[[LESS-THAN-1]]", ] #[[LESS-THAN-1]]の削除
resc <- res[row.names(res)!= "[[TOTAL-TOKENS]]", ] #[[TOTAL-TOKENS]]の削除
########

###単語解析結果をデータフレーム化#####
AnalyticsFileDoc <- as.data.frame(apply(resc, 1, sum)) #単語の出現率を集計
AnalyticsFileDoc <- subset(AnalyticsFileDoc, AnalyticsFileDoc[, 1] >= WordFreq) #出現数で抽出
colnames(AnalyticsFileDoc) <- "出現数" #行名の設定
########

###タグクラウドのテキストの色を設定#####
Col <- brewer.pal(9, "BuGn") #文字色の指定
Col <- Col[-(1:3)] #見やすく薄い色を削除
########

###タグクラウドのプロット#####
wordcloud(row.names(AnalyticsFileDoc), AnalyticsFileDoc[, 1], scale=c(6,.2),
          random.order = T, rot.per = .15, colors = Col)
########

###結果をcsvで出力#####
write.csv(AnalyticsFileDoc,"結果.csv")
########

実行結果の例

コードを実行すると、下記の図と共に単語の出現数がcsvファイルで出力されます。クロレラの検索結果50位のディスクリプションからは健康、ビタミン、ミネラルの栄養素そして栄養、豊富などの出現数が多いことが示されました。

Rplot

twitterデータを利用したテキストマイニングの例

RでTwitter操作:「twitterR」パッケージ!バージョン1.1.9の紹介
https://www.karada-good.net/analyticsr/r-170/


参考図書

紹介するコードでもある程度のことができますが、更に学習したい人向けの参考図書です。


少しでも、あなたのウェブ解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク