自然言語処理のため形態素解析エンジンのmecabを導入したため、選定理由とインストール手順を記載します。
Why Mecab?
- 昔から利用されている実績十分の形態素解析エンジン
- mecab-ipadic-NEologdにより豊富な語彙を利用できる
- 比較的資料が多く構築・運用が容易
つまるところ2021年現在"迷った時はこれにしておけばOK"な鉄板の形態素解析エンジンです。試用の際の結果も良好であったため、そのまま採用しました。
Install
mecab本体、IPADIC、mecab-ipadic-NEologdをインストールします。OSはAWS上で利用することを踏まえてAmazon Linux2です。
Mecabと辞書のインストール
公式ドキュメントはこちら。
$ cd
$ sudo yum update -y
$ sudo yum groupinstall -y "Development Tools"
$ wget 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE' -O mecab-0.996.tar.gz
$ tar xzf mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure --with-charset=utf8
$ make
$ make check
$ sudo make install
バージョンを確認できればOK。
$ mecab --version
mecab of 0.996
ただし、この時点でmecabを起動しても動作しません。辞書がないためです。
$ mecab
param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc
続いて辞書をインストールします。
$ cd
$ wget 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM' -O mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801/
$ ./configure --with-charset=utf8
$ make
$ sudo make install
これで形態素解析ができます。
$ echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」" | mecab
8 名詞,数,*,*,*,*,*
月 名詞,一般,*,*,*,*,月,ツキ,ツキ
3 名詞,数,*,*,*,*,*
日 名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
放送 名詞,サ変接続,*,*,*,*,放送,ホウソウ,ホーソー
さ 動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
「 記号,括弧開,*,*,*,*,「,「,「
中居 名詞,固有名詞,人名,姓,*,*,中居,ナカイ,ナカイ
正広 名詞,固有名詞,人名,名,*,*,正広,マサヒロ,マサヒロ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
金曜日 名詞,副詞可能,*,*,*,*,金曜日,キンヨウビ,キンヨービ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
スマイル 名詞,一般,*,*,*,*,スマイル,スマイル,スマイル
たち 名詞,接尾,一般,*,*,*,たち,タチ,タチ
へ 助詞,格助詞,一般,*,*,*,へ,ヘ,エ
」 記号,括弧閉,*,*,*,*,」,」,」
EOS
が、固有名詞が必要以上に分解されている感があります。
mecab-ipadic-NEologdのインストール
そこでmecab-ipadic-NEologdをインストールします。公式ドキュメントはこちら。
cd
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd -n -a -y
終わったら辞書の場所を取得して
$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
/usr/local/lib/mecab/dic/mecab-ipadic-neologd
起動時にその場所を指定しつつ起動すればこの通り。
$ echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」" | mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
8月3日 名詞,固有名詞,一般,*,*,*,8月3日,ハチガツミッカ,ハチガツミッカ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
放送 名詞,サ変接続,*,*,*,*,放送,ホウソウ,ホーソー
さ 動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
「 記号,括弧開,*,*,*,*,「,「,「
中居正広の金曜日のスマイルたちへ 名詞,固有名詞,一般,*,*,*,中居正広の金曜日のスマイルたちへ,ナカイマサヒロノキンヨウビノスマイルタチヘ,ナカイマサヒロノキンヨービノスマイルタチヘ
」 記号,括弧閉,*,*,*,*,」,」,」
EOS
都度指定するのが面倒な時はデフォルトのシステム辞書を変更します。
$ sudo cp /usr/local/etc/mecabrc /usr/local/etc/mecabrc.back
$ sudo vi /usr/local/etc/mecabrc
; dicdir = /usr/local/lib/mecab/dic/ipadic <-- comment out
dicdir = /usr/local/lib/mecab/dic/mecab-ipadic-neologd
辞書指定をしなくてもmecab-ipadic-neologdが利用されるようになります。
$ echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」" | mecab
8月3日 名詞,固有名詞,一般,*,*,*,8月3日,ハチガツミッカ,ハチガツミッカ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
放送 名詞,サ変接続,*,*,*,*,放送,ホウソウ,ホーソー
さ 動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
「 記号,括弧開,*,*,*,*,「,「,「
中居正広の金曜日のスマイルたちへ 名詞,固有名詞,一般,*,*,*,中居正広の金曜日のスマイルたちへ,ナカイマサヒロノキンヨウビノスマイルタチヘ,ナカイマサヒロノキンヨービノスマイルタチヘ
」 記号,括弧閉,*,*,*,*,」,」,」
EOS
以上。