2016年7月16日土曜日

RMeCabで形容詞の形態素解析をやってみた。

 最近、テキストマイニングがマイブームです。
普段は「kh coder」や「TTM(Tiny Text Mininer)」か、弊社のテキストマイニングツールを使っているのですが、R言語のエントリーでRMeCabを使ったものがあったので、妙に触りたくなりました。

 今回は、クチコミサイトにあったクレジットカードのレビューをサンプルデータにグラフ化までやってみます。

・OS:Windows7
・R version:R version 3.3.0 (2016-05-03)
・IDE:RStudio ver0.99.902
・データ件数:1,575件

「RMeCab」とは?


オープンソースの形態素解析エンジンである「MeCab(めかぶ)」をR環境から直接利用できるパッケージです。

RMeCabのインストールはR環境からコマンドコピペ一発で出来ますが、MeCabのインストールはやや苦戦するかもしれません。ご利用になるRのバージョンに合致するMeCabをご確認の上、インストールしてください(・・・って、言うほど難しくないです)。

(参考ページ)RMeCab
http://rmecab.jp/wiki/index.php?FrontPage

ソースコード


# パッケージのロード
library(RMeCab)

# read.csvとか使わずに、RMeCabから直接読み込めるのは便利ですね。
card.res <- RMeCabFreq("card.txt")

# str()でデータフレーム構造を確かめておきましょう。

> str(card.res)
'data.frame':    9798 obs. of  4 variables:
 $ Term : chr  "あ" "あー" "あの" "え" ...
 $ Info1: chr  "フィラー" "フィラー" "フィラー" "フィラー" ...
 $ Info2: chr  "*" "*" "*" "*" ...
 $ Freq : int  3 1 3 8 7 8 6 3 2 1 ...


# Info1には品詞情報が入っています。今回は「50回以上頻出」した「形容詞」を抽出します。
card_adj_50over <- card.res[(card.res$Info1=="形容詞"&card.res$Freq > 50),]

# とりあえず、頻出回数順に降順でソートをかけておきます。
card_adj_de <- card_adj_50over[order(card_adj_50over$Freq,decreasing = T),]

# もう一回データフレーム構造を見ておきましょう。
str(card_adj_dec)

> str(card_adj_dec)
'data.frame':    20 obs. of  4 variables:
 $ Term : chr  "ない" "良い" "やすい" "多い" ...
 $ Info1: chr  "形容詞" "形容詞" "形容詞" "形容詞" ...
 $ Info2: chr  "自立" "自立" "非自立" "自立" ...
 $ Freq : int  989 676 487 456 431 358 277 247 142 140 ...


# 都度データフレーム名を入力するのは面倒なので、「attach」しておきます。
attach(card_adj_dec)

# グラフを作りたいのでggplot2をロードしておきます。
library(ggplot2)

# 描画レイヤーを一枚ずつ重ねあわせる
g <- ggplot(
  card_adj_dec,          # ggplot 用データフレーム
  aes (                     # ggplot オプション設定
    x = Term,            # x軸:Term
    y = Freq,             # y軸:Freq
  )
)
g <- g + geom_bar(   # 縦棒グラフの指定
  width = 0.8,           # 棒の幅
  stat = "identity"
)
g <- g + xlab("形容詞")           # x 軸名
g <- g + ylab("頻出回数")       # y 軸名
g <- g + ggtitle("クレジットカードレビューにおける形容詞ランキング")   # グラフ名

# グラフ描画。うーん、せっかく元データを降順にしたのに、反映されていない。。^^;
# 次回までに勉強しておきます。
plot(g)


R言語関連のエントリー


【R言語】leafletで札幌市内のサツドラをプロットしてみた。
http://sapporomkt.blogspot.jp/2016/01/rleaflet_4.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

【R言語】factor型で数値を集計するときの注意点
http://sapporomkt.blogspot.jp/2016/01/rfactor.html

【R言語】ベクトルにおける関数の使い方
http://sapporomkt.blogspot.jp/2015/12/r_80.html 

【R言語】「rpivotTable」パッケージが高機能過ぎて泣ける件
http://sapporomkt.blogspot.jp/2015/11/rrpivottable.html

【R言語】どうしても「ディープインパクト」全産駒の内訳を集計したくなったの<前処理編>。
http://sapporomkt.blogspot.jp/2015/10/r.html 

AEIが優秀な種牡馬を調べてみたら・・・やっぱりディープ(略)
http://sapporomkt.blogspot.jp/2015/10/aei.html

過去5年間のリーディングサイアー成績を眺めてみた~ディープインパクトって実際・・・
http://sapporomkt.blogspot.jp/2015/10/5.html

(R言語)readHTMLTable関数でJ2の順位を音速で抜き出す。
http://sapporomkt.blogspot.jp/2015/07/rreadhtmltablej2.htm



0 件のコメント:

コメントを投稿