27
Go to list of users who liked
22
Share on X(Twitter)
Share on Facebook
More than 5 years have passed since last update.
Python の MeCab バインディング natto-py を使う
Last updated atPosted at 2015-05-02
natto-py とは?
natto-py は Python - MeCab のForeign Function Interface (FFI) によるバインディングを提供する Python パッケージです。 Python 2 および 3 に対応し、コンパイラーが必要としない利点があります。*nix、OS X および Windows 上で利用可能です。
対応する Python バージョン
natto-py は下記の Python 2 および 3 を利用できます。下記のバージョンは実証済みです。
MeCab をインストール
まずはMeCab 0.996 をインストールします。
- mecab-ipadic または mecab-jumandic のMeCab 用辞書も忘れずにインストールしましょう。
- Windows なら、コンパイル済みの IPADIC 辞書が含まれています。
- natto-py は mecab-config を通して libmecab.so (OS X の場合は libmecab.dylib)のインストール先を取得するので、必要に応じて mecab-config もインストールしておいてください。
natto-py をインストール
通常の Python パッケージと同様に pip 経由で natto-py インストールします。
$ pip install natto-pycffi パッケージも必要ですが、上記のコマンドで cffi は必要に応じて自動的にインストールされます。
とりあえず使ってみよう
import 文
natto から MeCab クラスをインポートしてインスタンスを取得します。
from natto import MeCabnm = MeCab()print(nm)<natto.mecab.MeCab model=<cdata 'mecab_model_t *' 0x802016640>, tagger=<cdata 'mecab_t *' 0x8020a44c0>, lattice=<cdata 'mecab_lattice_t *' 0x802079600>, libpath="/opt/mecab/lib/libmecab.so", options={}, dicts=[<natto.dictionary.DictionaryInfo dictionary=<cdata 'mecab_dictionary_info_t *' 0x802079480>, filepath="/opt/mecab/lib/mecab/dic/ipadic/sys.dic", charset=utf-8, type=0>], version=0.996>解析を標準出力に
文をとりあえず解析して結果を文字列として標準出力に送ります。
text = "ピンチの時には必ずヒーローが現れる。"print(nm.parse(text))ピンチ名詞,一般,*,*,*,*,ピンチ,ピンチ,ピンチの助詞,連体化,*,*,*,*,の,ノ,ノ時名詞,非自立,副詞可能,*,*,*,時,トキ,トキに助詞,格助詞,一般,*,*,*,に,ニ,ニは助詞,係助詞,*,*,*,*,は,ハ,ワ必ず副詞,助詞類接続,*,*,*,*,必ず,カナラズ,カナラズヒーロー名詞,一般,*,*,*,*,ヒーロー,ヒーロー,ヒーローが助詞,格助詞,一般,*,*,*,が,ガ,ガ現れる動詞,自立,*,*,一段,基本形,現れる,アラワレル,アラワレル。記号,句点,*,*,*,*,。,。,。EOSMeCabNode 出力
解析結果をMeCabNode で取得して各形態素に関するより詳しい情報を出力します。
# -F / --node-format オプションでノードの出力フォーマットを指定する## %m ... 形態素の表層文# %f[0] ... 品詞# %h ... 品詞 ID (IPADIC)# %f[8] ... 発音# with MeCab('-F%m,%f[0],%h,%f[8]') as nm: for n in nm.parse(text, as_nodes=True): print(n.feature)ピンチ,名詞,38,ピンチの,助詞,24,ノ時,名詞,66,トキに,助詞,13,ニは,助詞,16,ワ必ず,副詞,35,カナラズヒーロー,名詞,38,ヒーローが,助詞,13,ガ現れる,動詞,31,アラワレル。,記号,7,。EOSPython with 文を使用すれば、コンテキストが正常に終了しても例外が起きてもMeCab ライブラリーの参照が自動的に破棄されるので、勧めます。
以上
参考
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme