Movatterモバイル変換


[0]ホーム

URL:


LoginSignup
27

Go to list of users who liked

22

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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-py

cffi パッケージも必要ですが、上記のコマンドで 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))ピンチ名詞,一般,*,*,*,*,ピンチ,ピンチ,ピンチの助詞,連体化,*,*,*,*,の,ノ,ノ時名詞,非自立,副詞可能,*,*,*,時,トキ,トキに助詞,格助詞,一般,*,*,*,に,ニ,ニは助詞,係助詞,*,*,*,*,は,ハ,ワ必ず副詞,助詞類接続,*,*,*,*,必ず,カナラズ,カナラズヒーロー名詞,一般,*,*,*,*,ヒーロー,ヒーロー,ヒーローが助詞,格助詞,一般,*,*,*,が,ガ,ガ現れる動詞,自立,*,*,一段,基本形,現れる,アラワレル,アラワレル。記号,句点,*,*,*,*,。,。,。EOS

MeCabNode 出力

解析結果を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,。EOS

Python with 文を使用すれば、コンテキストが正常に終了しても例外が起きてもMeCab ライブラリーの参照が自動的に破棄されるので、勧めます。

以上

参考

27

Go to list of users who liked

22
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27

Go to list of users who liked

22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?


[8]ページ先頭

©2009-2025 Movatter.jp