黄昏より暗きもの、血の流れより赤きもの

読者です 読者をやめる 読者になる 読者になる

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

【自然言語処理】さくらVPS(CentOS)上でmecabとmecab_phpをインストールし、文章に出現する単語の出現回数をカウントしてみた

自然言語処理 mecab PHP

自然言語処理について

自然言語処理とは、普段我々が使っている言葉をコンピューターに認識させる方法の1つです。まず英語、日本語のように人間言語を自然言語といいます。これに対し、プログラミング言語等の規則に基づく人工言語形式言語と呼んで区別しています。

形態素解析について

ここで例えば「今日の空は青い」と言う簡単な文章を文節に区切るとき、「今日/の/空/は/青い」と言うように文章を短い単位に分けて切る流れとなります。こうして文章を区切れるだけ区切った最小単位を形態素と呼びます。ここでコンピュータに国語辞典のようなものを覚えさせておき、それと照らし合わせて行きながら言語を認識させていきます。こういった解析の方法の事を一般に形態素解析と言います。今回はmecabと言うツールを使い、形態素解析をする手法について触れます。

Mecabをインストールする前に準備するもの

mecabを準備するまえに準備するものは以下のようになります。

Mecabをインストール

以下mecabのインストールの方法について説明します。まずrpmコマンドやyumなどパッケージ管理のコマンドを使ってインストールします。rpmyumなどの意味の違いを把握したい人は、「初心者の頃に知っておきたかった rpm と yum の違いと使い分け:彼女からは、おいちゃんと呼ばれています」を参考にして下さい。


$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm

$ sudo yum install -y mecab mecab-ipadic mecab-devel

php_mecabインストール

次にphp_mecabをインストールします。pearを使い、以下のように打ち込んで下さい。


$ sudo pear channel-discover pecl.opendogs.org

$ sudo pear install opendogs/mecab-0.5.0

万一mecab-develをインストールし忘れて「mecab-configがないエラーがでた」と言う場合は、yumで再度mecab-develをインストールし、「which mecab-config」と入力し、でて来たパスを打ち込んで下さい。

vi/emacsmecab.soを追加する

次はphp.iniに追加設定を書き込んでいきます。自分の場合は/etc/php.iniのファイルを以下のように変更しましたが、皆さんの環境に依っては違う恐れがあります。php.iniのファイルの位置を確認して下さいますようお願いします。


; Enable mecab extension module
extension=mecab.so

設定ができたら、httpdのgracefulリスタートで反映します。


$ sudo service httpd graceful

反映されない場合はrestart(apachectl restart)すると良いです。

試しに使ってみよう

ここまで設定ができたら、とりあえず「Hello World」のような基本的なスクリプトを動かしてみましょう。以下のソースコードはどこかのブログの拾い物です。まずmecabで文章を形態素に区切り、形態素毎に配列に格納してくれる関数mecab_splitを使ってみましょう。

サンプルソースコード(phpの部分は省略)


$result = mecab_split("テスト用の文字列だよ");
print_r($result);

結果

以下のように配列に区切られていれば大丈夫です。

Array
(
[0] => テスト
[1] => 用
[2] => の
[3] => 文字
[4] => 列
[5] => だ
[6] => よ
)

ブログ記事に出現する単語の頻度を調べる

mecabの使い道の1つに、Web上の文献に出現する単語の頻度を調べるのがあります。検索エンジンに引っかかる為にどのような単語を多く使えば良いか?単語から物事の注目度を推測するなどに応用できます。

そんな訳で、Web上の文章:(ラブライブの聖地巡礼!神田明神の絵馬を見てきた!:パワースポット.jp)よりから「穂乃果」「希」「ラブライブ」が何個出現するか試してみました。

実験用の文章


神田明神がなぜラブライブの聖地と言われているのでしょうか?
それは、ラブライブのアニメに神田明神が何回も登場しているからです。
ラブライブ1期では東條希ちゃんの実家という設定で、希ちゃんは巫女さんをしています。
ラブライブ2期1話では、高坂穂乃果ちゃんがラブライブに出る決心をする場所です。それまで雨が降っていたのに一気に陽がさしてすごく印象的なシーンでしたね。
(ラブライブの聖地巡礼!神田明神の絵馬を見てきた!:パワースポット.jp)より

ソースコード

各部分の説明はコメントを参照して下さい。

結果

やってみた結果、穂乃果の出現回数は0回、希は2回、ラブライブは0回と言う結果です。これは穂乃果とラブライブmecabの辞書に登録されていないことが原因です。

例えばアニメ用の形態素解析マシンと言うように、特定の状況に特化させるなどと言った工夫が必要に感じました。

Array
(
[0] => Array
(
[word] => 穂乃果
[count] => 0
)

[1] => Array
(
[word] => 希
[count] => 2
)

[2] => Array
(
[word] => ラブライブ
[count] => 0
)
)


最後に

mecabの辞書登録のやり方も試してみたのですが、いまいち上手く行かなかったです。最後になりますが、面白そうなツールなので色々と分かり次第追って報告致します。

参考記事