単語-文書行列の作成

RMeCabが導入できたら、単語-文書行列を作ってみる。

こんなデータ(ankt.csv)があったとする。

ユーザ,アンケート
2010-001,私はご飯を食べた。
2010-002,私は歯を磨いた。
2010-003,私は犬と散歩した。

以下が単語-文書行列の作成ソース。

setwd("C:\\RW\\LSIMatrix")
library('RMeCab')

#--csvファイルの読み込み
data <- read.csv("ankt.csv",header = T)
user <- data[,"ユーザ"]
ankt <- data[,"アンケート"] 

#-- 必要な品詞だけを残す
#-- posは、取り除く品詞を指定する引数なので、名前固定
pos <- c("名詞","形容詞","動詞")

#-- 形態素解析ののち、単語ごとの頻度解析を行う
res <- docMatrixDF(ankt,pos) 

#アンケートに答えたユーザ名を記述
colnames(res) <- user

#-- csvファイルに書き出し
write.csv(res,"ankt_matrix.csv")

save.image(LSIMatrix.RData)

で、こんな行列(ankt_matrix.csv)が得られる。

"","2010-001","2010-002","2010-003"
"ご飯",1,0,0
"する",0,0,1
"犬",0,0,1
"散歩",0,0,1
"私",1,1,1
"歯",0,1,0
"食べる",1,0,0
"磨く",0,1,0

あとは煮るなり焼くなりLSIするなり。ただ、単語-文書行列は大規模スパースになることが多いので、その後の分析にRが向いているかは、やっていないので不明。

                                                                                                    • -

2010.12.30 追記
[R]単語-文書行列の作成(不要語を取り除く) 」