MacにMeCabをインストールして、Python(3.9.1)での実行方法を紹介します。
MeCabの辞書をインストールするためにbrewコマンドを実行する必要があります。
Homebrewのインストール方法は参考情報にある記事を参考にしてください。
今回unidic-liteを辞書としてインストールしましたがchasenが上手く動作しなかったので
その対処方法も併せて紹介していきます。
また、UbuntuにMeCabをインストールして日本語のWordCloudを作成した投稿もあるので興味があればアクセスしてみてください。
参考情報
環境情報
MeCabのインストール
まずはbrewコマンドでMeCabの辞書をインストールします。
以下を実行します。
brew install mecab-ipadic
次にvenvを使用して仮想環境を作成します。
python3 -m venv mecab-test
作成した仮想環境を有効にします。
pipコマンドでmecab-pythonライブラリをインストールします。
pip3 install mecab-python3
MeCabの辞書をインストールします。
pip3 install unidic-lite
MeCabの動作確認
MeCabを正常にインストールできているか確認します。
mecab
すもももももももものうち
※mecabから抜けるときは[Ctrl]+[C]でおこないます。
オプションを指定して実行もできます。
echo 東京特許許可局 | mecab -Oyomi
Pythonの方でも試してみます。
import MeCab
wakati = MeCab.Tagger()
result = wakati.parse(“すもももももももものうち”)
print(result)
MeCab.Tagger()で[-Owakati]を指定し、分かち書きを試してみます。
import MeCab
wakati = MeCab.Tagger(“-Owakati”)
result = wakati.parse(“すもももももももものうち”).split()
print(result)
MeCab.Taggerに-Ochasenを指定したらエラーになった
MeCab.Tagger(-Ochasen)と指定したら以下のエラーが発生。
——————- ERROR DETAILS ————————
arguments: -Ochasen
[ifs] no such file or directory: /Users/<USERNAME>/PyDev/mecab-test/lib/python3.9/site-packages/unidic/dicdir/mecabrc
———————————————————-
公式ページには以下の情報がありました。
Chasen output is not a built-in feature of MeCab, you must specify it in your
https://github.com/SamuraiT/mecab-python3#using-unsupported-output-modes-like–ochasendicrc
ormecabrc
. Notably, Unidic does not include Chasen output format. Please see the MeCab documentation.
chasenはdicrcまたはmecabrcで指定が必要とのことです。
私の環境では以下のフォルダにdicrc、mecabrcは存在しました。
/Users/<USERNAME>/PyDev/mecab-test/lib/python3.9/site-packages/unidic_lite/dicdir
今回はchasenを動作させられるようにdicrcにchasenのフォーマットを書き込みます。
上記フォーマットは以下から引用させていただきました。
それではエラーが発生しないか試してみます。
import MeCab
cha = MeCab.Tagger(“-Ochasen”)
text = “すもももももももものうち”
result = cha.parse(text)
print(result)
-Oyomiはフリガナを出力してくれる
yomiもchasen同様にdicrcにフォーマットを入れてあげないとエラーで動作しません。
chasenと同じようにdicrcにyomiのフォーマットを指定します。
; yomi
node-format-yomi = %pS%f[6]
unk-format-yomi = %M
eos-format-yomi = \n
上記で参照としたURLだと「node-format-yomi = %pS%f[7]」となっているが「node-format-yomi = %pS%f[6]」としないと期待する結果とならないので注意してください。
import MeCab
yomi = MeCab.Tagger(“-Oyomi”)
text = “東京特許許可局”
result = yomi.parse(text)
print(text)
print(‘——————————‘)
print(result)
コメント