1
/
5

WindowsにMeCabを入れてPHPで動かしてみる

はじめに

新卒1年目エンジニアのkasuke18と申します。
先月に開催された社内の技術交流会ビアバッシュの発表の中でMeCabについて触れた発表がありました。
ビアバッシュ...?という方はこちらをご参照ください。

続いて3年!月1開催の社内有志イベント「ビアバッシュ」の紹介 - RAKUS Developers Blog | ラクス エンジニアブログ
はじめまして。エンジニアのnorthmkyです。 ラク スに新卒で入社し、今年で2年目になります。 他エントリが技術の内容だったので少し趣向を変えて ラクスが行っている技術交流会、 ビアバッシュ を紹介したいと思います。 "ビア"とついている通り 「ビールなどのアルコールを片手に(+軽食)フランクに技術内容について発表したり語り合う交流会」 のことを指します。 だいたい月に一度くらいの頻度で有志が集まって開催しています。 参加費は...なんと無料です。 というのも技術交流会を会社が応援してくれていましてが
http://tech-blog.rakus.co.jp/entry/2017/08/10/095024
そのMeCabに興味をもちましたので、今回の記事ではMeCabWindowsに導入して使ってみます。以下は私の環境でインストールしたときのものなので、ディレクトリなどを随時読み替えてください。

まずはサンプル

形態素解析とはどのようなものかを確認するサンプルを作成、HEROKUにデプロイして公開しています。まずは触って動かしてみましょう!

MeCabとは

MeCabオープンソースの日本語の形態素解析エンジンです。(公式ページ
OSはUnix系でもWindowsでも使用可能ですが、私用のPCがWindowsのため、今回はWindowsMeCabを導入しました。

MeCabの導入…の前に

WindowsMeCabを導入するといっても、単純に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の導入です。
といっても特段難しい手順ではありません。以下のコマンドを実行すれば導入できると思います。

導入したので動作確認を行います。以下のコマンドでMeCabが実行できます。

正しく実行されると入力モードになりますので、何かを入力し、改行してみましょう。改行で形態素解析が行われ、結果が表示されます。

                 図1. MeCabコマンドを実行

新語対応の辞書(mecab-ipadic-NEologd)を使う

前述のとおり、標準の辞書は古いので新語に対応していません。新語に対応した辞書が必要で、その辞書の一つにmecab-ipadic-NEologdというものがあります。mecab-ipadic-NEologdははてなキーワード
のダンプデータなどをもとに毎週月曜日と木曜日に更新されます。はてなキーワード
の単語の豊富さを考えると、業界用語などの特化した単語を除き、基本的にはmecab-ipadic-NEologdで事足りるでしょう。

mecab-ipadic-NEologdの導入

GitHubのREADMEに丁寧に手順が記載されています。さらに英語だけでなく、日本語で書かれたREADMEも用意されているので、至れり尽くせりです。 以下にコマンドのみ記載しておきます。

導入したので動作確認を行います。以下のようにMeCabコマンドの-dオプションを使用することでmecab-ipadic-NEologdを辞書とした形態素解析を実行できます。

正しく実行されると入力モードになりますので、何かを入力し、改行してみましょう。改行で形態素解析が行われ、結果が表示されます。

       図2. mecab-ipadic-NEologdを使ったMeCabコマンドの実行

MeCabPHPから使用する

上記の手順でMeCabを用いた形態素解析が可能になりましたが、PHPなどの各種スクリプト言語からの使用するには面倒です。そこで各種スクリプト言語向けにバインディングされたものがありますので、それを利用します。今回はPHPを使用しますが、公式には用意されていないので、このphp-mecabを利用します。

php-mecab導入のため、以下のコマンドを実行しましょう。

導入後、PHPで使用するためにextentionファイルを作成します。

これでPHPからMeCabを使用するための準備が整いました。サンプルコードを以下に示しますので実際に動かしてみましょう。

エラーなく実行できると以下のような結果が得られます。

          図3. mecab-phpを用いたサンプルコードの実行

おわりに

この記事ではWindowsMeCabを入れてPHPで動かすまでの手順を紹介しました。私が試してみたときはphp-mecabを入れるときに詰まりましたが、MeCab本体を入れるところまでは全く詰まらずに進められました。PHPなどで使うことを考えず気軽に形態素解析を行うという点では、MeCabはちょうどいいのかなと感じました。

株式会社ラクス's job postings

Weekly ranking

Show other rankings
Invitation from 株式会社ラクス
If this story triggered your interest, have a chat with the team?