1. TOPTOP
  2. Webサービス
  3. textminig
  4. RMeCab(R-3.1.2 for Windows)のdocMatrix関数Hack4選。川端康成「雪国」の序文を形態素解析してみた!

RMeCab(R-3.1.2 for Windows)のdocMatrix関数Hack4選。川端康成「雪国」の序文を形態素解析してみた!

|

editor

日本語テキスト解析を行うRMeCabには、docMatrix関数という便利な関数があります。これは、docMatrixは、第1引数で指定されたフォルダ内のすべてのファイルを読み込んで、ターム・文書行列を作成する、いかにも形態素解析っぽいナイスガイな関数です。

今回の記事は、Rによるテキストマイニング入門のP62をもとに書いていますが、本にものっていないdocMatrix関数の使い方について書き残しておきます。

1.日本語文章を2つのファイルに

そもそも、docMatrix関数はフォルダ内の複数のファイルをまとめて行列を作成してくれます。なので、docsフォルダに2つのテキストファイル(doc1.txtとdoc2.txt)を格納します。

ちなみに今回使用するネタは、川端康成の「雪国」の序文です。

序文その1(doc1.txt)

国境の長いトンネルを抜けると雪国であった。夜の底が白くなった。信号所に汽車が止まった。
向側の座席から娘が立って来て、島村の前のガラス窓を落した。雪の冷気が流れこんだ。娘は窓いっぱいに乗り出して、遠くへ呼ぶように、
「駅長さあん、駅長さあん」
明りをさげてゆっくり雪を踏んで来た男は、襟巻で鼻の上まで包み、耳に帽子の毛皮を垂れていた。

序文その2(doc2.txt)

もうそんな寒さかと島村は外を眺めると、鉄道の官舎らしいバラックが山裾に寒々と散らばっているだけで、雪の色はそこまで行かぬうちに闇に呑まれていた。
「駅長さん、私です、御機嫌よろしゅうございます」
「ああ、葉子さんじゃないか。お帰りかい。また寒くなったよ」
「弟が今度こちらに勤めさせていただいておりますのですってね。お世話さまですわ」

2.最初にRMeCabを読み込む

rmecab_6

docMatrixは、RMeCabパッケージ内にある関数です。docMatrix関数を使うためには、Rのコンソール画面を立ち上げたときに、まずパッケージの読み込みをしなければなりません。

予め、[パッケージ]→[パッケージの読み込み]→[RMeCab]を選択しておきましょう。

3.文字化けのときはUTF-8を使用

docmatrix1

res <- docMatrix("C:\\Program Files/R/R-3.1.2/r_lessons/doc")

一番最初にテキストファイルを読みこみ、行列の結果を返すと、なぜか文字化けを起こしています。

そういうときは、読み込みに使用しているテキストエディタ(TeraPad)の文字コードをUTF-8にしましょう。

docmatrix2

自分は最初、UTF-8Nでしたが、UTF-8に変更すると、正しく日本語表示されるようになりました。

なお、1度文字化けを矯正すると文字コードをUTF-8Nに戻しても、なぜかちゃんと日本語表示されました。理由は謎(汗

4.機能語は第2引数で明記

docmatrix3

res <- docMatrix("C:\\Program Files/R/R-3.1.2/r_lessons/doc")

docMatrixは第2引数で、行列で表示する品詞を指定します。品詞の指定がない場合、内容語(名詞・動詞・形容詞など)は、形態素を返してくれますが、機能語(助詞・助動詞)の反応は、いまいちな感じがします。

res <- docMatrix("C:\\Program Files/R/R-3.1.2/r_lessons/doc", pos = c("名詞", "形容詞, 助詞"))

助詞、助動詞の結果も確認したい場合は、第2引数に明記する必要があります。

ちなみに…

docs
terms              doc1.txt doc2.txt
  [[LESS-THAN-1]]         0        0
  [[TOTAL-TOKENS]]      100       86
  長い                    1        0
  白い                    1        0
  よろしい                0        1
  寒い                    0        2

第2引数に”形容詞”を設定した場合、上記の行列が返ります。これらを見ていると、”トンネル“とか”“に関係ありそうな形容詞が返ってきますね。

〔参考サイト〕