形態素解析ツールの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を使えるようになりました。実際にプログラムを組む場合は、環境変数の扱いを気にしないといけなそうですね。
コメント
[…] 【Python】形態素解析ツールMeCabインストール形態素解析ツールのMeCabをConoHa… […]