2016年5月14日土曜日

共起関係の表示

前回まで、N-gramで隣接する文字の間、あるいは隣接する単語の間の共起関係を求めました。でも、例えば、「風の又三郎」でbi-gramを求めると、その数は「名詞」と「形容詞」だけでも4千組近くあります。これがたとえ100組くらいに減ったとしても、これ全体を確認するのは骨が折れます。で、この共起関係を図にできれば、状況を一望できるでしょう。Rは図の表示に関しても、便利な関数を備えています。
igraphというパッケージを使って、「風の又三郎」のbi-gramを図にしてみましょう。例によって、「風の又三郎」のテキストファイルがフォルダNORUBYの中にあるものとします。ない、という方は、前回までの「Rあれこれ」を参照して下さい。
で、まず、「風の又三郎」を読み込んで、bi-gramを求めます。ただし、今回は形容詞も含めることにします。
> library(RMeCab)
> ngr2 <- NgramDF("NORUBY/kazeno_matasaburo2.txt", type = 1, pos = c("名詞","形容詞") )
file = NORUBY/kazeno_matasaburo2.txt Ngram = 2
> head(ngr2)
  Ngram1     Ngram2 Freq
1   あい     あいだ    1
2   あい       そこ    1
3   あい       づあ    1
4   あい づやっぱり    1
5   あい       一郎    1
6   あい       嘉助    1
>
次に、igraphパッケージを読み込みます。igraphは、インタラクティブにグラフを操作する機能を持つ関数群です。グラフに表示するとき、数が多いとゴチャゴチャするので、まず、bi-gramの頻度が3以上のものを抽出します。で、データフレーム形式をネットワークグラフを扱う形式に変換します。
> library(igraph)
> ngr2limit <- ngr2[ngr2[,3] > 2 , ]
> bigraph<-graph_from_data_frame(ngr2limit)
> tkplot(bigraph, vertex.color = "Yellow", vertex.size = 20)
[1] 4
>
このtkplotというのを実行すると、別画面にグラフが表示されるでしょう。表示が偏っている場合は、ポップアップした別画面のメニューでView > Fit to screenとやると、画面全体に表示されます。このグラフでは、名詞や形容詞の関係を矢印で示しています。

0 件のコメント:

コメントを投稿