Fire Engine

消防士→ITエンジニア→研究者

形態素解析エンジンMecabの辞書を更新する(mecab-ipadic-NEologdの導入)

 先日、Rubyで2つの文章間の類似度を計算するモジュールについての記事を書きました。

hirotsuru.hatenablog.com

 形態素解析、すなわち文章を単語に分割することは、文章を解析する上で、最初のステップとなります。この単語分割の際に用いる辞書は、日々生み出される新しい単語に対応するために更新すべきです。今回は、『mecab-ipadic-NEologd』という非常に優れたカスタム辞書を用いると、最近のホットなキーワードにもしっかり対応できるよ、というお話です。

 MeCabには、標準的な辞書として「ipadic」というものが提供されていますが、現在は継続的に更新されていないので、急に流行ったような言葉には対応できません。新しい言葉への対応の一つとして、Wikipedia 日本語版やはてなキーワードなどを取り込み、独自に辞書を定義するということをやっている方もいるみたいですが、少々手間がかかります。そこで、『mecab-ipadic-NEologd』を導入すると、新語への対応に絶大な力を発揮します。

github.com

 mecab-ipadic-NEologdには日本語のREADMEもあるので、インストール方法、使い方については、READMEを見るのがわかりやすいと思います。

 mecab-ipadic-NEologdの優れている点の一つは、その更新頻度です。下のようにかなりの頻度でcommitされています。

f:id:hirotsuru314:20160714130342p:plain

 MeCabの標準辞書を用いて解析した際に、うまく分割できない語や読み仮名の付与ができない語をなるべく追加するようにしてくれているみたいで、本当に助かります。それでは、実際にmecab-ipadic-NEologdを導入することでの変化を見てみましょう。

mecab-ipadic-NEologd導入前

 以下の文章を形態素解析してみます。

機械学習とは、人工知能における研究課題の一つであり、様々な分野への応用が期待される。その一つがビッグデータを用いたデータマイニングである。

$ mecab
機械学習とは、人工知能における研究課題の一つであり、様々な分野への応用が期待される。その一つがビッグデータを用いたデータマイニングである。

機械 名詞,一般,*,*,*,*,機械,キカイ,キカイ
学習 名詞,サ変接続,*,*,*,*,学習,ガクシュウ,ガクシュー 
と 助詞,格助詞,引用,*,*,*,と,ト,ト
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
、 記号,読点,*,*,*,*,、,、,、
人工 名詞,一般,*,*,*,*,人工,ジンコウ,ジンコー
知能 名詞,一般,*,*,*,*,知能,チノウ,チノー 
における 助詞,格助詞,連語,*,*,*,における,ニオケル,ニオケル
研究 名詞,サ変接続,*,*,*,*,研究,ケンキュウ,ケンキュー
課題 名詞,一般,*,*,*,*,課題,カダイ,カダイ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
一つ 名詞,一般,*,*,*,*,一つ,ヒトツ,ヒトツ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
あり 助動詞,*,*,*,五段・ラ行アル,連用形,ある,アリ,アリ
、 記号,読点,*,*,*,*,、,、,、
様々 名詞,形容動詞語幹,*,*,*,*,様々,サマザマ,サマザマ
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
分野 名詞,一般,*,*,*,*,分野,ブンヤ,ブンヤ
へ 助詞,格助詞,一般,*,*,*,へ,ヘ,エ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
応用 名詞,サ変接続,*,*,*,*,応用,オウヨウ,オーヨー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
期待 名詞,サ変接続,*,*,*,*,期待,キタイ,キタイ
さ 動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れる 動詞,接尾,*,*,一段,基本形,れる,レル,レル
。 記号,句点,*,*,*,*,。,。,。
その 連体詞,*,*,*,*,*,その,ソノ,ソノ
一つ 名詞,一般,*,*,*,*,一つ,ヒトツ,ヒトツ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
ビッグ 名詞,一般,*,*,*,*,ビッグ,ビッグ,ビッグ
データ 名詞,一般,*,*,*,*,データ,データ,データ 
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
用い 動詞,自立,*,*,一段,連用形,用いる,モチイ,モチイ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
データ 名詞,一般,*,*,*,*,データ,データ,データ
マイニング 名詞,サ変接続,*,*,*,*,マイニング,マイニング,マイニング
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。 記号,句点,*,*,*,*,。,。,。
EOS

 上を見てわかるように、最近のホットトピックである、「機械学習」「人工知能」「ビッグデータ」「データマイニング」がそれぞれ2つの単語に分割されています。「機械学習」を「機械」と「学習」に分けられると意味が全然変わってきますよね。

mecab-ipadic-NEologd導入後

 mecab-ipadic-NEologdを導入した場合の結果を以下に示します。(コマンドのmecab-ipadic-neologdのパスは個人により異なります)

$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
機械学習とは、人工知能における研究課題の一つであり、様々な分野への応用が期待される。その一つがビッグデータを用いたデータマイニングである。

機械学習 名詞,固有名詞,一般,*,*,*,機械学習,キカイガクシュウ,キカイガクシュー 
と 助詞,格助詞,引用,*,*,*,と,ト,ト
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
、 記号,読点,*,*,*,*,、,、,、
人工知能 名詞,固有名詞,一般,*,*,*,人工知能,ジンコウチノウ,ジンコーチノー 
における 助詞,格助詞,連語,*,*,*,における,ニオケル,ニオケル
研究 名詞,サ変接続,*,*,*,*,研究,ケンキュウ,ケンキュー
課題 名詞,一般,*,*,*,*,課題,カダイ,カダイ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
一つ 名詞,一般,*,*,*,*,一つ,ヒトツ,ヒトツ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
あり 助動詞,*,*,*,五段・ラ行アル,連用形,ある,アリ,アリ
、 記号,読点,*,*,*,*,、,、,、
様々 名詞,形容動詞語幹,*,*,*,*,様々,サマザマ,サマザマ
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
分野 名詞,一般,*,*,*,*,分野,ブンヤ,ブンヤ
へ 助詞,格助詞,一般,*,*,*,へ,ヘ,エ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
応用 名詞,サ変接続,*,*,*,*,応用,オウヨウ,オーヨー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
期待 名詞,サ変接続,*,*,*,*,期待,キタイ,キタイ
さ 動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れる 動詞,接尾,*,*,一段,基本形,れる,レル,レル
。 記号,句点,*,*,*,*,。,。,。
その 連体詞,*,*,*,*,*,その,ソノ,ソノ
一つ 名詞,一般,*,*,*,*,一つ,ヒトツ,ヒトツ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
ビッグデータ 名詞,固有名詞,一般,*,*,*,ビッグデータ,ビッグデータ,ビッグデータ
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
用い 動詞,自立,*,*,一段,連用形,用いる,モチイ,モチイ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
データマイニング 名詞,固有名詞,一般,*,*,*,データマイニング,データマイニング,データマイニング
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。 記号,句点,*,*,*,*,。,。,。
EOS

 「機械学習」「人工知能」「ビッグデータ」「データマイニング」がそれぞれ一つの言葉として認識されているのがわかると思います。文章の特徴語を抽出する際や特徴ベクトルを生成したい場合には、このようにキーワードをしっかり認識できていることは非常に大事だと思います。

 あとは、mecab-ipadic-NEologdを適宜更新していくだけで、最小限の労力で新語に対応した形態素解析に取り組むことができます。