AnacondaでMeCabを使ってみた
はじめに
前回、M1MacでMeCabをインストールしました。
そこでAnaconda環境でこのMeCabを使ってみました。
前回書き忘れたのでMeCabの説明
オープンソースで使えるなんて素晴らしいですね。
今回の流れとしては、見出しのように、
1,MeCabを動かすための仮想環境の作成
2.ライブラリインストール(MeCab+Anaconda)
3.テストプログラムを実行してみる
となっています。
1,MeCabを動かすための仮想環境の作成
Anacondaで実行する場合、そのままライブラリを入れてもいいのですが、作業ごとの仮想環境で実行することがお多いと思います。
そこで仮想環境を構築します。まずターミナルを開いて
conda create -n MeCab python=3,7
などとして、仮想環境を構築します。内訳は、
○ conda コマンド
○ create 仮想環境を作成する際のオプション
○ -n 仮想環境名の設定 例MeCab(ここは任意)
○ python=3.7 パイソンのバージョンを指定
です。
では、仮想環境をスタートさせてみましょう。
conda activate MeCab
MeCabの部分は、上で設定した仮想環境名です。
これで実行するための仮想環境が構築できました。
2.ライブラリインストール(MeCab+Anaconda)
では、次にMeCabをAnacondaで使うためのライブラリをインストールします。
インストールするのは、 mecab-python3 というライブラリです。
またページによっては
pip install mecab-python3
となっているところが多いです。
しかし、Anacondaですので、Anaconda側のライブラリをインストールします。
今回参考にした
こちらでは、
conda install -c mzh mecab-python3
でした。
ですが、今回調べたところ、conda-forgeであるようです。
こちらに従って、
conda install -c conda-forge mecab-python3
でOKです。 y/nで聞かれたらY(Yes)でOkです。
無事にインストールされました。
3.テストプログラムを実行してみる
では今回はJupyter notebookを使いながら実行してみたいと思います。
まずはJupyterのインストールです。仮想環境内でターミナルから
conda -install jupyter
でOKです。
インストールされたらターミナルから
jupyter notebook
で起動します。
起動されたら、new(もしくは新規) から python3 で新しいノートブックを開きます。
開いたノートブックにスクリプトを書いていきます。
import MeCab
tagger = MeCab.Tagger()
様々なところで見るように、上のようにしてみました。
おっとエラーです。
どうも辞書が読めていないようです。
前回辞書を切り替えていたので、それが効いているのかも。
いろいろネットを検索していると、
こちらのページを見つけました。
辞書を指定すればいいようです。
import MeCab
tagger = MeCab.Tagger('-d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd')
辞書の保存場所だけ変えて実行してみます。
やった、今度は通りました。
では実際に文章を形態素解析してみましょう。
まずはお手本と同じ用に、
text = '安倍首相とトランプ大統領
print(tagger.parse(text))
として見ました。
安倍首相 名詞,固有名詞,一般,*,*,*,安倍首相,アベシュショウ,アベシュショー
と 助詞,並立助詞,*,*,*,*,と,ト,ト
トランプ大統領 名詞,固有名詞,人名,一般,*,*,ドナルド・トランプ,トランプダイトウリョウ,トランプダイトウリョー
EOS
お手本どおり、実行できました。
辞書の設定と分かち書き
いちいち辞書ファイルを書くのは面倒と思っていたら、上のページを見つけました。
辞書ファイルをdicdirとして指定しておけばいいのですね。
dicdir2 = '-d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd'
tagger2 = MeCab.Tagger(dicdir2)
通りました。辞書の設定はこれでOKです。
では次は分かち書きです。
dicdir3 = '-O wakati -d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd'
tagger3 = MeCab.Tagger(dicdir3)
MeCabのサイトの通り、分かち書きのオプション -O を使います。
print(tagger3.parse(text))
で先程のテキストを解析してみました。
安倍首相 と トランプ大統領
しっかり別れています。
せっかくなので別の形式 -O chasen を試してみました。
dicdir4 = '-O chasen -d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd'
tagger4 = MeCab.Tagger(dicdir4)
print(tagger4.parse(text))
結果は
安倍首相 アベシュショウ 安倍首相 名詞-固有名詞-一般
と ト と 助詞-並立助詞
トランプ大統領 トランプダイトウリョウ ドナルド・トランプ 名詞-固有名詞-人名-一般
EOS
こんな感じです。
ここまででも結構楽しめました。
次はさらに一歩すすんだ処理を検討しています。