Top / 自然言語処理 / 形態素解析エンジンMecab

MeCab?はオープンソースの日本語の形態素解析ソフトウェア。ちょっと自然言語処理を勉強しようと思って、、そのときの作業メモ。 Ubuntu Server 16.04.2 LTS に構築していきます。

インストール

$ sudo apt install mecab
$ sudo apt install libmecab-dev
$ sudo apt install mecab-ipadic-utf8

 ...
done!
update-alternatives: /var/lib/mecab/dic/debian (mecab-dictionary) を提供するために自動モードで /var/lib/mecab/dic/ipadic-utf8 を使います

インストール完了です。インストール時、足りないライブラリがあったらエラーになるっぽいですが、適宜エラーを見ながらやっていけばOKかと。

稼働確認

定番の文章で分かち書きできるか確認。

$ mecab
すもももももももものうち    ← 入力してReturn
すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

分かち書きできましたねー。。

辞書をmecab-ipadic-NEologdを使うようにする

Mecabなどの形態素解析ソフトウェアは分かち書きに使うための辞書を切り替える事が出来ます。どうやら、 新語・固有表現に強い「mecab-ipadic-NEologd」の効果を調べてみた : LINE Engineering Blog この辞書がよいっぽいので、その辞書を使用するように変更してみます。

$ git clone  https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd/
$ sudo ./bin/install-mecab-ipadic-neologd

...
[install-mecab-ipadic-NEologd] : Do you want to install mecab-ipadic-NEologd? Type yes or no.
yes   ← こたえる

...
[install-mecab-ipadic-NEologd] : Install completed.
[install-mecab-ipadic-NEologd] : When you use MeCab, you can set '/usr/lib/mecab/dic/mecab-ipadic-neologd' as a value of '-d' option of MeCab.
[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.
Usage:
    $ mecab -d /usr/lib/mecab/dic/mecab-ipadic-neologd ...

$

インストールできました。

確認

辞書を切り替えた効果を試してみます。先のサイトの例で「恋ダンス」を入れてみます。

通常だと、

$ mecab
恋ダンス
恋	名詞,一般,*,*,*,*,恋,コイ,コイ
ダンス	名詞,サ変接続,*,*,*,*,ダンス,ダンス,ダンス

と別の単語扱いになってしまいますが、

$ mecab -d /usr/lib/mecab/dic/mecab-ipadic-neologd
恋ダンス
恋ダンス	名詞,固有名詞,一般,*,*,*,恋ダンス,コイダンス,コイダンス
EOS

固有名詞扱いしてくれました。使用する辞書を変えると結果が変わるという事ですね。

デフォルトの辞書を切り替え

というわけで、辞書をオプションで指定しなくてもよいように、デフォルトの辞書を切り替えます。下記の設定ファイルを修正します。

$ sudo cp -pfr /etc/mecabrc /etc/mecabrc20180617
$ sudo vi /etc/mecabrc
$ diff /etc/mecabrc /etc/mecabrc20180617
6,7c6
< ;dicdir = /var/lib/mecab/dic/debian
< dicdir = /usr/lib/mecab/dic/mecab-ipadic-neologd
---
> dicdir = /var/lib/mecab/dic/debian

修正しました。では試してみます。

$ mecab
恋ダンス
恋ダンス	名詞,固有名詞,一般,*,*,*,恋ダンス,コイダンス,コイダンス
EOS

切り替わってそうですね。

ちなみに

$ mecab-config --dicdir
/usr/lib/mecab/dic

などで、切り替えた辞書の場所などが確認出来ます。

Pythonから呼び出す

自然言語処理/形態素解析エンジンMecab/Pythonから呼び出す に整理しました。

Macでつかう

HomeBrew?が入っていれば、すぐ。

$ brew install mecab
$ brew install mecab-ipadic
$ brew install swig    <- pythonからつかおう(mecab-python3 のインストール時)としたときエラーになったので、、。

2018/11/18追記。 たまたまMacでMecabを再構築していたら、二つの障害が同時に。。。

1.Pyenvとなどを入れててAnacondaが入ってると mecab-ipadic-NEologd のインストールに失敗します。

$ pyenv versions
  system
* 3.7.1 (set by /Users/masatomix/.pyenv/version)
  anaconda3-5.3.0

とかになっててもダメっぽく

The `iconv' command exists in these Python versions:

とかでてる。ググるとどうもAnacondaがpyenvで入っているからっぽく、インストールするディレクトリ上で、

$ pyenv local system

などしておかないと、ダメなようです。

2.mecab-python3 が、2018/11/13にバージョンアップしています。 https://pypi.org/project/mecab-python3/#history

このバージョンからswigというモジュールが必要になったようで、

brew install swig

しましょうってのは既に書いてますが、どうもparseToNode?の node.surfaceの戻り値がバグってるように見えます。printしてみると、

$ python sample2.py 
Pythonから形態素解析エンジンMecabを呼び出してみました。 
Pythonから形態素解析エンジンMecabを呼び出してみました。 
から形態素解析エンジンMecabを呼び出してみました。       
形態素解析エンジンMecabを呼び出してみました。   
エンジンMecabを呼び出してみました。     
Mecabを呼び出してみました。     
を呼び出してみました。  
呼び出してみました。    
てみました。    
みました。      
ました。        
た。    
。      

とかになっちゃう。。素性の方はあってるっぽいんですけどね。

とりあえず

pip install mecab-python3==0.7

で前バージョンにもどしました :-)

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / 自然言語処理 / 形態素解析エンジンMecab

現在のアクセス:1541


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-11-18 (日) 22:28:24 (1979d)