お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

Rでテキストマイニングを試してみる(7)共起ネットワーク

テキストマイニング

こんにちは。まだまだテキストマイニングを続けることにします。そして、まだまだ梶井基次郎作「檸檬」を題材にします。

共起ネットワークを描いてみる

前回は、共起語を調べてみました。

その結果が表として表示されましたが、もう少し直感的に捉えられたらよいと思いました。

な・な・なんと、共起ネットワークを図示できるではないですか!

ということで描いてみることにします。

その前に、パッケージのインストールが必要になります。

install.packages("igraph",dependencies = TRUE)

それでは、共起ネットワークを描いてみることにします。表示する品詞は、名詞・動詞・形容詞に絞っています。

library(RMeCab)
library(igraph)
result<-NgramDF(file.choose(),type = 1,N = 2,pos = c("名詞","動詞","形容詞"))
g<-graph.data.frame(result,directed = FALSE)
plot(g,vertex.label=V(g)$name,vertex.color="yellow")

実行結果です。

すべての出現語について、つながりを表示してしまったので、大変なことになっています。

共起している頻度が2以上に絞ってみましょう。

library(RMeCab)
library(igraph)
result<-NgramDF(file.choose(),type = 1,N = 2,pos = c("名詞","動詞","形容詞"))
result2<-subset(result,Freq>1)
g<-graph.data.frame(result2,directed = FALSE)
plot(g,vertex.label=V(g)$name,vertex.color="yellow")

どうなったでしょうか。

かなりすっきりしました。

共起ネットワークから不要な語を取り除いてみる

そうすると、よくわからない「す」であるとか、あまり意味をもっていないと思われる「もの」「こと」のような語であるとかが気になりました。

これらの語を除去してみます。

library(RMeCab)
library(igraph)
result<-NgramDF(file.choose(),type = 1,N = 2,pos = c("名詞","動詞","形容詞"))
stopword<-c("の","こと","す","よう","する","さ","もの","れる")
result3<-subset(result,!(Ngram1 %in% stopword) & !(Ngram2 %in% stopword))
result4<-subset(result3,Freq>1)
g<-graph.data.frame(result4,directed = FALSE)
plot(g,vertex.label=V(g)$name,vertex.color="yellow")

実行結果です。

今回は短いのですが、これでおしまいにします。それではまた。

Posted by kasugai