« 9/7 | トップページ | 9/14 »

Rでネットワークマップ。

2012年8月24日加筆

高価なソフトを使わずにMacで英文のテキストマイニングをするには,以下のようにRが有効です。ですが,Rで英文の品詞を解析し,下のような共起語のリストを作るのは,実は少々やっかいです。Mac App Storeで,英文を品詞解析し,頻出語のリストや共起語のリストを作るソフトがリリースされました。

iText Analyzer

このiText Analyzerを使って,wordやテキスト形式のファイルからクリック1つで共起語のリストを作ることができるようになりました。あとは,以下のようにRを使ってグラフ化してやれば,簡単なテキストマイニングの完成です。

- - - 加筆ここまで

質問を受けたので,ここで書いておきます。昨日の記事に載っけた,Rを使ったネットワークグラフの書き方。

まず,Excelでcsv形式の共起語の頻度が並んだデータを用意。以下のようなもの。ファイル名は,仮にsample.csvとする。
Cohelist1
これをc:¥に保存。ルートフォルダですな。以下はその前提で書きます。

次に,Rを起動。パッケージはiGraphをインストールしておく。
で,Rのコマンドラインから,

>library(igraph)

でigraphパッケージを読み込む。次いで,先ほど用意したcsvのデータも読み込む。ちなみにこのデータ,列見出し1行にデータ29行が並んでいる。これも仮にcsvdataという名前の変数に格納する。コマンドラインから,

>csvdata<-read.csv("/sample.csv", head = T)

上の画像のデータには列見出しが付いているので,head =Tも忘れずに。ちなみに,sample.csvの前に付いている / は,¥の意味。この場合はルートフォルダを意味する。別の場所にファイルを保存した場合には,適当なパスを指定して下さい。

続けて,csvdataをiGraphで使える形式のデータに変換。graph.data.frame関数を使う。変換後のデータは,仮にgraphdataという名前にする。この時,いくつか注意点がある。それは,

>graphdata<-graph.data.frame(csvdata)

としてしまうと,1行目の列見出しまでデータとして変換されてしまうこと。なので,graph.data.frame関数を使う際には[]でデータ範囲も指定してやる必要がある。以下。

>graphdata<-graph.data.frame(csvdata[1:29,])

また,この関数はデフォルトで有向グラフ用のデータを作るので,無向グラフ用のデータを作りたい場合には,コンマで区切って directed = F のオプションを追加する必要がある。以下。

>graphdata<-graph.data.frame(csvdata[1:29,], directed = F)

これで,ネットワークマップ用のデータは完成。
次に,これを描画。tkplot関数を使う。

>tkplot(graphdata, vertex.label=V(graphdata)$name)

オプションのvertex.labelは頂点に名前を付けるためのもの。名前は,V関数でgraphdataから取得している。これで有向もしくは無向のネットワークグラフが書けるはず。

ただ,この場合,昨日の記事のように頂点の大きさや辺の太さはいじれない。それはどうしたかと言うと,出力されたグラフウィンドウ上で,辺や頂点を一つ一つ右クリックし,太さや大きさを設定したのです。これが手間のかかる作業。各頂点の大きさ,矢印の太さはがんばってExcelで計算しましょう。最後は根性勝負。

完成図は以下。

Network32

もっと効率的な方法もあると思うので,親切なご存じの方はご一報宜しくお願い致します。

« 9/7 | トップページ | 9/14 »

テキストマイニング入門」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 9/7 | トップページ | 9/14 »

2016年4月
          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 27 28 29 30
無料ブログはココログ