Linux上のPythonでMeCabを使用するための設定手順を紹介します。
最終的には、Pythonを使用して「マルコフ連鎖」を使用して自動文章作成ツールを作成したいと思います。
Pythonのインストール手順は以下になります。
MeCabをLinuxにインストール手順は以下になります。
MeCabとは?なぜPythonで使用する?
MeCabはオープンソースの形態素解析エンジンで、奈良先端科学技術大学院大学出身、現GoogleソフトウェアエンジニアでGoogle 日本語入力開発者の一人である工藤拓(さん)によって開発されている。名称は開発者の好物「和布蕪(めかぶ)」から取られた。
開発開始当初はChaSenを基にし、ChaSenTNGという名前で開発されていたが、現在はChaSenとは独立にスクラッチから開発されている。ChaSenに比べて解析精度は同程度で、解析速度は平均3-4倍速い。Wikipediaより
すごいざっくり説明すると「文章を意味単位で単語にぶつ切りにする」ライブラリです。
なぜPythonでMeCabを利用する理由は
- Python特有の統計ライブラリと組み合わせることが出来る
- 将来的には機械学習に利用できる
です。これは一個人の意見です。
インストール環境
今回のインストール環境は以下になります。
- CentOS:CentOS Linux release 7.4.1708 (Core)
- Python:Python 3.6.3
- MeCab:MeCab 0.996
- IPA 辞書:ipadic-2.7.0-20070801
MeCabには辞書が必要になります。
例えば、「私は朝にご飯を食べます。」という言葉は、 「私」、「は」、「朝」、「に」、「ご飯」、「を」、「食べる」、「ます」という単語に分けることが出来ます。
文章を分割するために、どこで分割するか?それが動詞か?名詞か?などを識別するために必要になります。
設定手順
インストールの流れは以下になります。
- Pythonバインディングのインストール
- 共有ライブラリの依存関係を更新
今回の手順は以下の手順を実施していることを前提に行っています。
まずはPythonバインディングである、「mecab-python3」をインストールします。
pip install mecab-python3
次に共有ライブライの依存関係を更新します。
まず、システム全体でライブラリパスを設定します。「/etc/ld.so.conf」にユーザライブライパスを指定します。
vi /etc/ld.so.conf
以下を追記する /usr/local/lib ファイルの更新が終了したら、「ldconfig」コマンドで依存関係を更新しましょう。
ldconfig
仮に共有ライブラリが設定されていないと以下のエラーが出ますので注意してください。
[root@centos7-local ~]$ python
Python 3.6.3 (default, Nov 19 2017, 07:26:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python/lib/python3.6/site-packages/MeCab.py", line 26, in <module>
_MeCab = swig_import_helper()
File "/usr/local/python/lib/python3.6/site-packages/MeCab.py", line 22, in swig_import_helper
_mod = imp.load_module('_MeCab', fp, pathname, description)
File "/usr/local/python/lib/python3.6/imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "/usr/local/python/lib/python3.6/imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: libmecab.so.2: cannot open shared object file: No such file or directory
>>> exot
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'exot' is not defined
>>>
「ImportError: libmecab.so.2: cannot open shared object file: No such file or directory」が出ている場合の解消方法になります。
設定確認
インストールの確認をしてみたいと思います。
インタプリタモードでPyhtonを使用して実行してみます。
$ python
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("<文字列>"))
↓が実行ログです。
[root@centos7-local python]$ python
Python 3.6.3 (default, Nov 19 2017, 07:26:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import MeCab
m = MeCab.Tagger ("-Ochasen")
>>> m = MeCab.Tagger ("-Ochasen")
>>> print(m.parse ("これはPythonでMeCabを使用するためのテストです。"))
これ コレ これ 名詞-代名詞-一般
は ハ は 助詞-係助詞
Python Python Python 名詞-一般
で デ で 助詞-格助詞-一般
MeCab MeCab MeCab 名詞-一般
を ヲ を 助詞-格助詞-一般
使用 シヨウ 使用 名詞-サ変接続
する スル する 動詞-自立 サ変・スル 基本形
ため タメ ため 名詞-非自立-副詞可能
の ノ の 助詞-連体化
テスト テスト テスト 名詞-サ変接続
です デス です 助動詞 特殊・デス 基本形
。 。 。 記号-句点
EOS
以上でPythonでMeCabを使用するための設定順はです。お疲れ様です。
参考:Python3で形態素解析エンジンMeCabを使えるようにする(2016年3月版)
自然言語処理の基本と技術 (仕組みが見えるゼロからわかる)posted with カエレバ
奥野 陽,グラム・ニュービッグ,萩原 正人 翔泳社 2016-03-05