こちらの記事でPHPからMecabを利用する方法を紹介しました。この方法だと、辞書が古いので最新の言葉には対応しきれません。そこで、mecab-ipadic-neologdという辞書を利用して、最新の言葉も正しく形態素解析できるようにしました。その手順を紹介します。
■mecab-ipdic-neologdとは
mecab-ipadic-neologdは、Web上のリソースから新しい言葉を登録したMecab用の辞書のことです。さらに、定期的に新しい言葉をアップデートするので、最新の言葉を正しく形態素解析をすることができます。
とても素晴らしいプロジェクトです。ありがとうございます。
■インストール方法
結構メモリ資源に制限があります。VPSの一番下のプランとかだとコンパイルができないので、気をつけてください。その場合は、ローカルでコンパイルしたあとで、辞書ディレクトリに辞書ファイルをすべてコピーすると動きます。
▼コンパイル環境の要件
メモリに対しての要求があります。
メモリ 1.5GB以上
このメモリ容量がないと、コンパイルの途中でコンパイラがメモリ不足で強制終了します。最悪OOMKillerが発動してサーバ全体が死にます。気をつけてください。
▼コンパイルとインストール手順
まずは、この記事を参考にMecabをインストールしてください。
次に、以下のコマンドでgitから辞書ファイルを取得します。
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
取得したら、以下のコマンドでコンパイルとインストールを行います。この時、メモリが推奨環境の1.5GB以上ないときは、メモリ不足でコンパイルできません。
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd
これで、インストールは完了です。デフォルトのインストール先は、以下のディレクトリとなります。もし、メモリが足らない時は、別の環境で辞書をコンパイルして、このディレクトリに辞書ファイルをすべてコピーすると動きます。
/usr/local/lib/mecab/dic/mecab-ipadic-neologd
■動作確認
動作確認をしてみます。以下のコマンドで、ユーザ辞書を指定してMecabを起動します。
mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
今日は「中居正広のミになる図書館」(テレビ朝日系)を見ました。
以下のように【中居正広のミになる図書館】などが正しく形態素解析されているのがわかります。
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
「 記号,括弧開,*,*,*,*,「,「,「
中居正広のミになる図書館 名詞,固有名詞,一般,*,*,*,中居正広のミになる図書館,ナカイマサヒロノミニナルトショカン,ナカイマサヒロノミニナルトショカン
」 記号,括弧閉,*,*,*,*,」,」,」
( 記号,括弧開,*,*,*,*,(,(,(
テレビ朝日 名詞,固有名詞,組織,*,*,*,テレビ朝日,テレビアサヒ,テレビアサヒ
系 名詞,接尾,一般,*,*,*,系,ケイ,ケイ
) 記号,括弧閉,*,*,*,*,),),)
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
まし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
これで、インストールは完了です。
■PHPから使う方法
コマンドラインでは、ユーザ辞書ファイルを指定して読み込むという形で辞書を利用していました。PHPから利用する場合も、ユーザ辞書ファイルを指定してあげる必要があります。以下のような感じで、Mecabオブジェクトを生成する際にオプションを渡すと、ユーザ辞書を指定することができます。
$options = [
'-d', '/usr/local/lib/mecab/dic/mecab-ipadic-neologd/'
];
$mecab = new Mecab_Tagger($options);
このコピペチェックツールでも、このユーザ辞書を使っています。この辞書がないとコピペチェックは実現できないです。Mecabを利用している方は導入すると飛躍的に精度があがります。では。