[Python]形態素解析ツールMeCabインストール

Python

形態素解析ツールのMeCabをConoHa Wing上のPythonで動作させるところまで纏めました。文字コード関連で何点かハマったので、その部分も書いておきます。

MeCabとは

MeCabはオープンソース形態素解析エンジンです。何ができるのかというと「すもももももももものうち」といった日本語文章を品詞毎に分けて出力してくれます。

% mecab
すもももももももものうち
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

何が嬉しいのかというと、例えば、ある日本語記事の文章について、その記事の特徴を掴む名詞を特定したい場合などに役立ちます。応用すれば、Twitter記事を分析してトレンドとなる用語を分析してみたり、ニュース記事を分析してみたり、色々なところで活用できそうです。

MeCabインストール

ソースファイル(*.tar.gz)はこちらから入手できます。MeCab本体(mecab-0.996.tar.gz)と、IPA辞書(mecab-ipadic-2.7.0-20070801.tar.gz)をダウンロードして、ConoHa Wingのサーバ上にアップロードしてください。

ConoHa Wingでは当然のことながら、rootユーザは解放されていません。このため、インストール先のディレクトリとして、ユーザ配下のディレクトリを指定する必要があります。

まずはMeCab本体(mecab-0.996.tar.gz)をインストールします。

$ tar fvzx mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure --prefix=/home/<ユーザID>/.local --with-charset=utf8
$ make 
$ make check
$ make install

configure時の–prefixでインストール先ディレクトリを指定します。

–with-charset=utf8はMeCabで解析する文字コードとしてUTF-8を指定しています。指定がないと、デフォルトでは文字コードがEUCになり、ConoHa Wingでは見事に文字化けして正しく解析できませんでした。

次にIPA辞書(mecab-ipadic-2.7.0-20070801.tar.gz)をインストールします。

$ tar fvzx mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --prefix=/home/<ユーザID>/.local --with-charset=utf8
$ make 
$ make install

こちらもMeCab本体のインストール時と同様に–prefixおよび–with-charsetを指定します。

エラーなくインストールが完了すると /home/<ユーザID>/.local/bin/mecab が作成されますので、実行してみます。

$ cd /home/<ユーザID>/.local/bin
$ ./mecab
今日もいい天気ですね ※日本語の文章を入力してEnter
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
も      助詞,係助詞,*,*,*,*,も,モ,モ
いい    形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気    名詞,一般,*,*,*,*,天気,テンキ,テンキ
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね      助詞,終助詞,*,*,*,*,ね,ネ,ネ
EOS
※Ctrl-Dで終了
$

きちんと解析できていることを確認できれば、MeCabのインストールは完了です。

mecab-python3インストール

PythonでMeCabを利用するためにライブラリをインストールします。ConoHa Wingでインストールするのは簡単です。

$ pip install --user mecab-python3
Collecting mecab-python3
  Downloading mecab_python3-1.0.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (488 kB)
     |################################| 488 kB 45.8 MB/s 
Installing collected packages: mecab-python3
Successfully installed mecab-python3-1.0.4
$

「pip install –user mecab-python3」のみでインストールできます。–userオプションを付けることで、ユーザディレクトリ配下にインストールされます。

PythonでMeCabを使ってみる

PythonからMeCabを使ってみるのですが、デフォルトだと「/usr/local/etc/mecabrc」がないと怒られるので、環境変数MECABRCを指定しておきます。また、Pythonの標準入出力のエンコーディングをUTF-8に指定するため、環境変数PYTHONIOENCODINGも指定します。

$ export MECABRC=/home/<ユーザID>/.local/etc/mecabrc
$ export PYTHONIOENCODING=UTF-8

実際にPythonでコーディングしてみます。

$ python
Python 3.6.11 (default, Aug 11 2020, 06:48:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> str = 'すもももももももものうち'
>>> import MeCab
>>> mecab = MeCab.Tagger('-Ochasen')
>>> print(mecab.parse(str))
すもも  スモモ  すもも  名詞-一般
も      モ      も      助詞-係助詞
もも    モモ    もも    名詞-一般
も      モ      も      助詞-係助詞
もも    モモ    もも    名詞-一般
の      ノ      の      助詞-連体化
うち    ウチ    うち    名詞-非自立-副詞可能
EOS

>>>

ファイルから日本語を読み込んで分析させる場合、open時にencoding=’utf-8’を明示設定しないと「UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe3 in position 0: ordinal not in range(128)」のようなエラーで怒られました。

>>> f = open('jp.txt', 'r', encoding='utf-8')
>>> str = f.readline()[:-1]
>>> str
'すもももももももものうち'
>>>
>>> import MeCab
>>> mecab = MeCab.Tagger('-Ochasen')
>>> print(mecab.parse(str))
すもも  スモモ  すもも  名詞-一般
も      モ      も      助詞-係助詞
もも    モモ    もも    名詞-一般
も      モ      も      助詞-係助詞
もも    モモ    もも    名詞-一般
の      ノ      の      助詞-連体化
うち    ウチ    うち    名詞-非自立-副詞可能
EOS

>>>

これでPythonでMeCabを使えるようになりました。実際にプログラムを組む場合は、環境変数の扱いを気にしないといけなそうですね。

コメント

  1. […] 【Python】形態素解析ツールMeCabインストール形態素解析ツールのMeCabをConoHa… […]

タイトルとURLをコピーしました