MeCabのインストール

日本語の自然言語処理をする場合、文章を単語に分割したり、形態素解析をしたりする必要があります。そのツールがMeCabです。pythonならspacyというライブラリでもできますが、ここではMeCabのインストール、使い方を説明します。

MeCabのインストールですが、パッケージで入れることもできますが、環境によっては文字コードの設定ではまる可能性があるため、ソースからインストールすることをおすすめします。

MeCabのソースコードは、https://github.com/PROoshio/mecab にありまして、gitでdownloadできます。

# git clone https://github.com/PROoshio/mecab.git

ここにMeCabのプログラムと辞書が両方入っています。中のREADME.mdを読めばやることはわかりますが、一応書きます。まずはプログラムの方です。

# tar zxvf mecab-0.996.tar.gz
# cd mecab-0.996/  
# ./configure --with-charset=utf8
# make
# make check
# sudo make install

続いて辞書の方です。

# tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
# cd mecab-ipadic-2.7.0-20070801/  
# ./configure --with-charset=utf8
# make
# sudo make install

これで完了です。./configureのところで、–with-charset=utf8をつけるのを忘れないでください。これで明示的に文字コードをUTF-8にすると宣言しています。

辞書の方のmakeで 「libmecab.so.2がない」等のエラーがでる場合は、環境変数のLD_LIBRARY_PATHにlibmecab.soのライブラリのパスを追加すると makeできます。デフォルトだと /usr/local/bin です。cshやtcshの場合は、

# setenv LD_LIBRARY_PATH /usr/local/lib:${LD_LIBRARY_PATH}

などで、LD_LIBRARY_PATHにパスを追加できます。

mecabコマンドができているので、mecab -D で文字コードを確認してみましょう。

# mecab -D
filename:	/var/lib/mecab/dic/debian/sys.dic
version:	102
charset:	utf-8
type:	0
size:	751185
left size:	1876
right size:	1876

ここのcharset: が utf-8になっていれば大丈夫です。Shift-JISとかEUCとかになっていると後々困る可能性があります。では、何かコマンド上で入力してみましょう。mecabコマンドを実行した後、日本語を入力してEnterを押せば形態素解析の結果がでてきます。

# mecab
今日は雨です。
今日 名詞,時相名詞,*,*,今日,きょう,代表表記:今日/きょう カテゴリ:時間
は	助詞,副助詞,*,*,は,は,*
雨	名詞,普通名詞,*,*,雨,あめ,代表表記:雨/あめ 漢字読み:訓 カテゴリ:抽象物
です 判定詞,*,判定詞,デス列基本形,だ,です,*
。 特殊,句点,*,*,。,。,*
EOS

「今日は雨です。」と入力した時の例です。

次に、pythonからMeCabを使えるようにします。mecab-pythonというライブラリを pipでインストールします。

# pip install mecab-python
これでpythonからもMeCabをimportすれば、形態素解析や分かち書きができます。 形態素解析の使い方は、MeCab.Tagger(‘-o chasen’) で 形態素解析器を作れば良いです。
import MeCab
mecab = MeCab.Tagger('-o chasen')
text = "今日は雨です。"
result = mecab.parse(text)
print(result)

次に分かち書きの例ですが、MeCab.Tagger(‘-O wakati’)にするだけです。

import MeCab
mecab = MeCab.Tagger('-O wakati')
text = "今日は雨です。"
result = mecab.parse(text)
print(result)

分かち書きの方は、単語をスペースで区切った文字列として出力されます。split()関数などを使えば単語分割したリストを作れます。

NEologdのインストール

上のmecabの辞書も結構、標準的な固有名詞はちゃんと判別してくれますが、最近話題になった単語(固有名詞)はさすがに無理です。そこでWeb上から得た新語に対応したシステム辞書がNEologdです。「コロナ禍」とかちゃんとひとつの固有名詞として取得してくれます。

NEologdのインストールは、https://github.com/neologd/mecab-ipadic-neologd からダウンロードしてできます。

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

最後に辞書がインストールされたパスが表示されますので、そのパスをmecabの-dオプションで指定すれば、NEologdの辞書で形態素解析できます。

普通のmecab辞書だと、「コロナ禍で大変です。」が

# mecab
コロナ禍で大変です。
コロナ	名詞,一般,*,*,*,*,コロナ,コロナ,コロナ
禍	名詞,接尾,一般,*,*,*,禍,カ,カ
で	助詞,格助詞,一般,*,*,*,で,デ,デ
大変	名詞,形容動詞語幹,*,*,*,*,大変,タイヘン,タイヘン
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,。,。,。
EOS

「コロナ」と「禍」で切られてしまいますが、NEologdだと

# mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
コロナ禍	名詞,固有名詞,一般,*,*,*,コロナ禍,コロナカ,コロナカ
で	助詞,格助詞,一般,*,*,*,で,デ,デ
大変	名詞,形容動詞語幹,*,*,*,*,大変,タイヘン,タイヘン
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,。,。,。
EOS

と、「コロナ禍」というひとつの固有名詞として取得できました。

最近のワードを扱う場合には、NEologdの方が良いかもしれないですね。

未分類カテゴリーの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です