# MeCab の実行確認 library(RMeCab) txt <- "「田舎の祖父母の家」のような懐かしさが感じられた。" res <- RMeCabC(txt) unlist(res)
# # R スクリプト # mkmat <- function(wg){ # 0 - 1 行列を作成する関数の定義 n <- length(wg) # ベクトルの長さ(画像数) maxg <- max(wg) # グループ最大値 ming <- min(wg) # グループ最小値(普通は1) if(!ming){ # 最小値が 0 のときの処置 ming <- 1; maxg <- maxg+1; wg <- wg+1 # グループ数を 1 つ増やす } # gmat <- matrix(0, nrow=n, ncol=maxg) # n × maxg 行列(値は 0) for(i in ming:maxg){ # グループごとの処理 ng <- (1:n)[wg == i] # グループ i に所属する行番号(画像番号) gmat[ng, i] <- 1 # 上の行番号と i 列の値を 1 にする } # return(gmat) # } # # # 夏学期グルーピングデータの読み込み tg <- read.csv("kaiwaigr.csv", header=TRUE, row.names=1); tg #### n <- ncol(tg) # 画像の数 m <- nrow(tg) # 学生の数 S <- matrix(0, nrow=n, ncol=n) # 類似度行列の定義 for(i in 1:m){ # w <- mkmat(tg[i, ]) # 学生ごとのグルーピング行列 S <- S + w %*% t(w) # 学生ごとの類似度行列を加える } # D <- max(S) - S # 非類似度行列への変換 #### tcmd <- cmdscale(D, k=4, eig=TRUE, add=TRUE) # 多次元尺度法(MDS) tcmd$eig[1:5] # MDS の固有値 x <- tcmd$points # MDS の座標を x に格納 dimnames(x) <- list(as.character(1:n), paste("MDS", 1:4, sep="")) plot(x[,1:2], type="n") # 1軸と2軸 text(x[,1:2], rownames(x), cex=0.8) title(main="MDS of around hongo landscapes") #
# # クラスター分析によるグルーピング例 dd <- dist(D) dd.clus <- hclust(dd) # hclust(dd, method="complete") と同じ plot(dd.clus, cex=0.7) abline(h=40, col="red") clclass <- cutree(dd.clus, h=40) # h=40 でグループ分け # クラスメンバーの表示 g1 <- which(clclass==1); g1 g2 <- which(clclass==2); g2 g3 <- which(clclass==3); g3 g4 <- which(clclass==4); g4 g5 <- which(clclass==5); g5 g6 <- which(clclass==6); g6 g7 <- which(clclass==7); g7 # グループ名の表示 text(10, -12, "G2") text(22, -13, "G1") text(29, -12, "G4") text(40, -13, "G5") text(50, -10, "G6") text(58, -13, "G3") text(66, -10, "G7") # gn <- max(clclass) xgname <- paste("G", 1:gn, sep="") # MDS マップ上でのグループ平均座標 xg1 <- tapply(x[,1], clclass, mean) xg2 <- tapply(x[,2], clclass, mean) xg3 <- tapply(x[,3], clclass, mean) xg4 <- tapply(x[,4], clclass, mean) op <- par(mfrow = c(1, 2)) plot(x[,1:2], type="n") # 1軸と2軸 text(x[,1:2], rownames(x), col=clclass+1, cex=0.8) text(xg1, xg2, xgname) plot(x[,3:4], type="n") # 3軸と4軸 text(x[,3:4], rownames(x), col=clclass+1, cex=0.8) text(xg3, xg4, xgname) par(op) title(main="MDS of around hongo landscapes") #
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_01.jpg | kaiwai_24.jpg | kaiwai_43.jpg | kaiwai_50.jpg | kaiwai_58.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_02.jpg | kaiwai_05.jpg | kaiwai_11.jpg | kaiwai_13.jpg | kaiwai_14.jpg | kaiwai_19.jpg | kaiwai_26.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_28.jpg | kaiwai_32.jpg | kaiwai_34.jpg | kaiwai_38.jpg | kaiwai_39.jpg | kaiwai_45.jpg | kaiwai_47.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
||
kaiwai_51.jpg | kaiwai_55.jpg | kaiwai_56.jpg | kaiwai_59.jpg | kaiwai_65.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_03.jpg | kaiwai_27.jpg | kaiwai_33.jpg | kaiwai_42.jpg | kaiwai_44.jpg | kaiwai_48.jpg | kaiwai_52.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_04.jpg | kaiwai_07.jpg | kaiwai_09.jpg | kaiwai_16.jpg | kaiwai_20.jpg | kaiwai_22.jpg | kaiwai_23.jpg |
![]() |
![]() |
![]() |
||||
kaiwai_29.jpg | kaiwai_54.jpg | kaiwai_63.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_06.jpg | kaiwai_17.jpg | kaiwai_25.jpg | kaiwai_36.jpg | kaiwai_41.jpg | kaiwai_60.jpg | kaiwai_61.jpg |
![]() |
![]() |
![]() |
![]() |
|||
kaiwai_62.jpg | kaiwai_64.jpg | kaiwai_68.jpg | kaiwai_69.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_08.jpg | kaiwai_12.jpg | kaiwai_18.jpg | kaiwai_21.jpg | kaiwai_30.jpg | kaiwai_35.jpg | kaiwai_37.jpg |
![]() |
![]() |
|||||
kaiwai_57.jpg | kaiwai_66.jpg |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
kaiwai_10.jpg | kaiwai_15.jpg | kaiwai_31.jpg | kaiwai_40.jpg | kaiwai_46.jpg | kaiwai_49.jpg | kaiwai_53.jpg |
![]() |
||||||
kaiwai_67.jpg |
> library(RMeCab) > txt <- "「田舎の祖父母の家」のような懐かしさが感じられた。" > res <- RMeCabC(txt) > unlist(res) 記号 名詞 助詞 名詞 助詞 名詞 記号 助詞 "「" "田舎" "の" "祖父母" "の" "家" "」" "の" 名詞 助動詞 形容詞 名詞 助詞 動詞 動詞 助動詞 "よう" "な" "懐かし" "さ" "が" "感じ" "られ" "た" 記号 "。" |
# 形態素文書行列表示の R スクリプト radj <- docMatrix2("doc", pos=c("名詞", "形容詞", "動詞")) rownames(radj) dim(radj) radj[101:105,1:12]
# 形態素カット行列作成の R スクリプト cut0 <- data.frame(cbind(rownames(radj), rep(0,nrow(radj)))) names(cut0) <- c("word", "cut") write.csv(cut0, file="kaiwaicut.csv") # # 形態素カット行列読み込みの R スクリプト #cut <- read.csv("kaiwaiword.csv", row.names=1, header=T) cut <- read.csv("kaiwaicut.csv", row.names=1, header=T) use <- which(cut$cut == 0) radj3 <- radj[use,] rownames(radj3) dim(radj3)
# 形態素文章行列の対応分析の R スクリプト library(MASS) res3 <- corresp(radj3, nf=5) colnames(res3$cscore) <- paste("Corresp", 1:5, sep="") radname0 <- as.character(1:n) res3$cor biplot(res3, cex=0.5) # # op <- par(mfrow = c(1, 2)) plot(res3$cscore[,1:2], type="n") text(res3$cscore[,1:2], radname0, col=clclass+1, cex=0.8) title(main="形態素文章行列の対応分析") plot(res3$cscore[,1:2], type="n", xlim=c(-1.5,1.5), ylim=c(-1.5,1.5)) text(res3$cscore[,1:2], radname0, col=clclass+1, cex=0.7) title(main="形態素文章行列の対応分析(中心部拡大)") par(op)
# はじかれた文章の形態素 # 19 wn <- which(radj3[,19] > 0) rownames(radj3)[wn] # 21 wn <- which(radj3[,21] > 0) rownames(radj3)[wn] # 42 wn <- which(radj3[,42] > 0) rownames(radj3)[wn]
# 形態素文章行列の景観グループの対応分析の R スクリプト wg1 <- apply(radj3[,g1],1,sum) wg2 <- apply(radj3[,g2],1,sum) wg3 <- apply(radj3[,g3],1,sum) wg4 <- apply(radj3[,g4],1,sum) wg5 <- apply(radj3[,g5],1,sum) wg6 <- apply(radj3[,g6],1,sum) wg7 <- apply(radj3[,g7],1,sum) # wonlyg1 <- which( (wg2+wg3+wg4+wg5+wg6+wg7)==0 ) wonlyg2 <- which( (wg1+wg3+wg4+wg5+wg6+wg7)==0 ) wonlyg3 <- which( (wg2+wg1+wg4+wg5+wg6+wg7)==0 ) wonlyg4 <- which( (wg2+wg3+wg1+wg5+wg6+wg7)==0 ) wonlyg5 <- which( (wg2+wg3+wg4+wg1+wg6+wg7)==0 ) wonlyg6 <- which( (wg2+wg3+wg4+wg5+wg1+wg7)==0 ) wonlyg7 <- which( (wg2+wg3+wg4+wg5+wg6+wg1)==0 ) # radj4 <- cbind(radj3, wg1,wg2,wg3,wg4,wg5,wg6,wg7) res4 <- corresp(radj4, nf=5) colnames(res4$cscore) <- paste("Corresp", 1:5, sep="") colnames(res4$rscore) <- paste("Corresp", 1:5, sep="") biplot(res4, cex=0.5) groupname <- paste("wg", 1:7, sep="") op <- par(mfrow = c(1, 2)) com <- c(1,2) plot(res4$cscore[,com], type="n") text(res4$cscore[1:n,com], radname0, col=clclass+1, cex=0.7) text(res4$cscore[(n+1):ncol(radj4), com], groupname) com <- c(3,4) plot(res4$cscore[,com], type="n") text(res4$cscore[1:n,com], radname0, col=clclass+1, cex=0.7) text(res4$cscore[(n+1):ncol(radj4), com], groupname) par(op) title(main="本郷界隈景観コメントの対応分析")
# グループ4を詳しくみる R スクリプト op <- par(mfrow = c(1, 2)) com <- c(1,2) # 文章の配置 plot(res4$cscore[,com], type="n", xlim=c(-2, 0), ylim=c(-1, 1)) text(res4$cscore[1:n,com], radname0, col=clclass+1, cex=0.8) text(res4$cscore[(n+1):ncol(radj4), com], groupname) # 形態素の配置 plot(res4$rscore[,com], type="n", xlim=c(-2, 0), ylim=c(-1, 1)) text(res4$rscore[,com], rownames(res4$rscore), cex=0.6) par(op) title(main="拡大図によるグループ4の文章番号と形態素")
# 景観グループごとの使用形態素の R スクリプト # # group1 # wn1 <- which(wg1>0) wl1 <- which(wn1 %in% wonlyg1) length(wn1) length(wl1) # グループ1で使用された形態素 wall1 <- sort(wg1[wn1], decreasing=T); wall1 # グループ1のみで使用された形態素 wuni1 <- sort(wg1[wn1[wl1]], decreasing=T); wuni1 # # group2 # wn2 <- which(wg2>0) wl2 <- which(wn2 %in% wonlyg2) length(wn2) length(wl2) # グループ2で使用された形態素 wall2 <- sort(wg2[wn2], decreasing=T); wall2 # グループ2のみで使用された形態素 wuni2 <- sort(wg2[wn2[wl2]], decreasing=T); wuni2