単語-文書行列の作成(不要語を取り除く)

[R]単語-文書行列の作成の続き。

よく考えたら、「する」とかは不要語なので、不要語を取り除いたバージョンを考えてみた。

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)	#形態素解析ののち、単語ごとの頻度解析を行う
res <- t(res) #(1)

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

#dataFrame型に変換
resFrame <- as.data.frame(res) #(2)

#「する」は不要語として扱う。
del <- "する"

#dataFrame型から列を取り除く
resFrame[,del] <- NULL

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

#-- RDataの保存
save.image(LSIMatrix2.RData)

すると、次のようなcsvファイル(ankt_matrix2.csv)が得られる。

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

ポイントは2つ。

  • #(1)得られた行列は転置する(dataFrame型への変換の前振り)
  • #(2)列の削除を単語指定で行うため、dataFrame型に変換する

dataFrameの列の削除はNULLを代入すればよいので、あとは「不要語リスト」とかを別途テキストファイルとかで作成しておいて読み込んでおいて、for文とかで回せば取れるかも。