著者:中央大学 教授 飯尾淳
今回のテーマは、前回に引き続き、自然言語処理を応用したデータ分析です。サンプルデータの距離 | x | を利用してクラスタリングを行います。近い距離にあるデータを樹形図でまとめ、デンドログラムに表します。
さて、前回の記事では、インターネットのコラム記事をまとめてダウンロードし、各記事のファイル名を扱いやすい形式に変更するところまで説明しました。
今回は、そのデータから必要な部分を切り出してテキストファイルに変換、変換したデータを形態素解析で分析します。形態素解析の結果から単語を抽出し、出現頻度ベクトルを求めてデータ間の距離を計算します。最終的な成果物はその距離に基づいたデンドログラムです。そのデンドログラム上で最後にスパッとバーティカルバーを引くことで、データのクラスタリングが完成します。
はてさて、適切に分類することはできたでしょうか。
前回記事掲載コードもご参照ください(編集部)
記事本文掲載のシェルスクリプトマガジンvol.50は以下リンク先でご購入できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/usr/bin/ruby # encoding: utf-8 wordTable = {} label = ARGV[0] print label.sub(/WRD\//, "") .sub(/.dat/,"") .sub(/^[0-9][0-9]_/, "").gsub(/_/, " ") open("freq_5.csv").each {|word| word.chomp! wordTable[word] = 0 } open(ARGV[0]).each {|line| line.chomp! if wordTable.key?(line) then wordTable[line] = wordTable[line] + 1 end } wordTable.each {|key,val| print ",#{val}" } print "\n" |
1 2 3 4 5 6 7 |
x <- read.csv("all.csv", header=F, row.names=1) d <- dist(x) clst <- hclust(d, method="ward.D") png("cluster.png", width=6000, height=3000) par(ps=64, lwd=5) plot (clst, main="", sub="", xlab="", ylab="", axes=F) dev.off() |