はじめに
新卒1年目エンジニアのkasuke18と申します。
先月に開催された社内の技術交流会ビアバッシュ
の発表の中でMeCabについて触れた発表がありました。
※ビアバッシュ...?
という方はこちらをご参照ください。
そのMeCabに興味をもちましたので、今回の記事ではMeCabをWindowsに導入して使ってみます。以下は私の環境でインストールしたときのものなので、ディレクトリなどを随時読み替えてください。
- はじめに
- まずはサンプル
- MeCabとは
- MeCabの導入…の前に
- Windows Subsystem for Linuxとは
- Windows Subsystem for Linuxの導入
- MeCabの導入
- 新語対応の辞書(mecab-ipadic-NEologd)を使う
- mecab-ipadic-NEologdの導入
- MeCabをPHPから使用する
- おわりに
- 参考文献
まずはサンプル
形態素解析とはどのようなものかを確認するサンプルを作成、HEROKUにデプロイして公開しています。まずは触って動かしてみましょう!
MeCabとは
MeCabはオープンソースの日本語の形態素解析エンジンです。(公式ページ)
OSはUnix系でもWindowsでも使用可能ですが、私用のPCがWindowsのため、今回はWindowsにMeCabを導入しました。
MeCabの導入…の前に
WindowsにMeCabを導入するといっても、単純にWindowsに入れるというわけではありません。もちろん公式にはWindows用インストーラが用意されているので、単に利用するだけならそれを使用することが一番早いです。
しかしインストーラでインストールされる標準の辞書が古く、新しい単語に弱いので、より適切に形態素解析を行うなら新語に対応した辞書が必須です。その辞書の導入がインストーラからインストールした場合は難しいので、今回は別の手段を用いました。
それがWindows Subsystem for Linuxというものです。
Windows Subsystem for Linuxとは
簡単に言うと、Windows上でLinuxが動かせるよ!
といったものです。
対応するLinuxディストリビューションはUbuntu
やOpenSUSE
1などです。(公式DOC参照)
今回は使用するディストリビューションとしてUbuntuを選択しました。
Windows Subsystem for Linuxの導入
こちらのQiitaの記事が詳しいので、そちらをご確認ください。
MeCabの導入
さて、前置きが長くなってしまいましたが、いよいよMeCabの導入です。
といっても特段難しい手順ではありません。以下のコマンドを実行すれば導入できると思います。
sudo apt update sudo apt upgrade sudo apt install make automake autoconf autotools-dev m4 mecab libmecab-dev mecab-ipadic-utf8
導入したので動作確認を行います。以下のコマンドでMeCabが実行できます。
mecab
正しく実行されると入力モードになりますので、何かを入力し、改行してみましょう。改行で形態素解析が行われ、結果が表示されます。
新語対応の辞書(mecab-ipadic-NEologd)を使う
前述のとおり、標準の辞書は古いので新語に対応していません。新語に対応した辞書が必要で、その辞書の一つにmecab-ipadic-NEologdというものがあります。mecab-ipadic-NEologdははてなキーワード
のダンプデータなどをもとに毎週月曜日と木曜日に更新されます。はてなキーワード
の単語の豊富さを考えると、業界用語などの特化した単語を除き、基本的にはmecab-ipadic-NEologdで事足りるでしょう。
mecab-ipadic-NEologdの導入
GitHubのREADMEに丁寧に手順が記載されています。さらに英語だけでなく、日本語で書かれたREADMEも用意されているので、至れり尽くせりです。 以下にコマンドのみ記載しておきます。
sudo apt install git make curl xz-utils file sudo sed -i -e 's%/lib/mecab/dic%/share/mecab/dic%' /usr/bin/mecab-config git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git ./bin/install-mecab-ipadic-neologd -n -a
導入したので動作確認を行います。以下のようにMeCabコマンドの-d
オプションを使用することでmecab-ipadic-NEologdを辞書とした形態素解析を実行できます。
mecab -d /usr/share/mecab/dic/mecab-ipadic-neologd
正しく実行されると入力モードになりますので、何かを入力し、改行してみましょう。改行で形態素解析が行われ、結果が表示されます。
MeCabをPHPから使用する
上記の手順でMeCabを用いた形態素解析が可能になりましたが、PHPなどの各種スクリプト言語からの使用するには面倒です。そこで各種スクリプト言語向けにバインディングされたものがありますので、それを利用します。今回はPHPを使用しますが、公式には用意されていないので、このphp-mecabを利用します。
php-mecab導入のため、以下のコマンドを実行しましょう。
cd /usr/local/src/ git clone https://github.com/rsky/php-mecab.git cd php-mecab/mecab phpize ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/bin/mecab-config make make test make install
導入後、PHPで使用するためにextentionファイルを作成します。
echo 'extention=mecab.so' > /etc/php/7.0/cli/php.d/mecab.ini
これでPHPからMeCabを使用するための準備が整いました。サンプルコードを以下に示しますので実際に動かしてみましょう。
<?php dl('mecab.so'); $option = array('-d', '/usr/share/mecab/dic/mecab-ipadic-neologd'); $t = new \MeCab\Tagger($option); $str = 'すもももももももものうちにももはいくつあるでしょう'; echo $t->parse($str);
エラーなく実行できると以下のような結果が得られます。
おわりに
この記事ではWindowsにMeCabを入れてPHPで動かすまでの手順を紹介しました。私が試してみたときはphp-mecabを入れるときに詰まりましたが、MeCab本体を入れるところまでは全く詰まらずに進められました。PHPなどで使うことを考えず気軽に形態素解析を行うという点では、MeCabはちょうどいいのかなと感じました。
参考文献
- MeCab: Yet Another Part-of-Speech and Morphological Analyzer
- Docs: Windows Subsystem for Linux Documentation
- Windows Subsystem for Linuxをインストールしてみよう!
- mecab-ipadic-NEologd : Neologism dictionary for MeCab
- php-mecab: MeCab binding for PHP
-
よろしければこちらもご一読ください。 「openSUSE」で始める初めてのLinuxデスクトップ↩