Node.jsでmecab-unidic-NEologdを使う

最近、ボットに漢字を含む日本語の「読み」を解析させて遊んでいます。

前回の記事でmecab-ipadic-NEologdを使いましたが、今回は元となる辞書にipadicではなくunidicを利用しているmecab-unidic-NEologdを使ってみたので、その際のメモです。

まだ触ってみた感触だけですが、unidic版のNEologdのほうが「読み」を正しく解析できる場合が多いように思います。

mecab-unidic-NEologdの導入

mecab-unidic-NEologdを導入するために、まずはmecabとmecab-unidicをシステムに導入します。

手順については、mecab-unidic-NEologdのREADMEに詳しく書いてありますので、ここでは、OSXの場合の手順を抜粋しておきます。

以上で導入が完了です。

コマンドラインから使ってみる

まずはmecabをコマンドラインから使ってみます。
コマンドに引数でmecab-unidic-NEologdのパスを渡すことで利用する辞書を変更できます。

Node.jsから利用

次に、Node.jsから辞書を指定してmecabを使うためにmecab-asyncをnpmでカレントディレクトリに導入します。

次に、同じディレクトリに以下のunidic-neologd-test.coffeeを作ります。

hubotでの利用を見据えて、CoffeeScriptで実装してみました。
コマンド引数で形態素解析したい文字列を指定できます。
7行目で形態素解析の結果を、12行目で解析結果をもとに文字列の読みを出力します。

実行

前記のソースをCoffeeScriptで実行すればmecab-unidic-NEologdによる形態素解析の結果を確認できます。

NEologdの問題ではなく、mecab-ipadicとmecab-unidicの違いかと思いますが、例えば「神々」という漢字の読みが、ipadicではただしく読めていないですが、unidicの場合は読めています。

mecab-ipadic-NEologdの場合

神々の”がみ”が読めていません。

mecab-unidic-NEologdの場合

こちらは正しく読めています。

slackでボットを使って漢字混じりのメッセージの読みを取得する実験をしているのですが、
しばらくこのunidic版NEologdを使って試してみようと思っています。