テキストマイニングを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は「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位のディスクリプションからは健康、ビタミン、ミネラルの栄養素そして栄養、豊富などの出現数が多いことが示されました。
twitterデータを利用したテキストマイニングの例
RでTwitter操作:「twitterR」パッケージ!バージョン1.1.9の紹介
https://www.karada-good.net/analyticsr/r-170/
参考図書
紹介するコードでもある程度のことができますが、更に学習したい人向けの参考図書です。
少しでも、あなたのウェブ解析が楽になりますように!!