今回は大好きな形態素解析モジュール、「janome」を紹介します!
日本語を自然言語処理したい場合、
形態素解析は切っても切れない存在です。
もちろんMeCabとmecab-pythonを入れれれば、
可能なのですが、
出来る限りpure pythonでやりたい、という時もあります。
そんなときにはjanomeというモジュールを使用します。
導入
pip install janome
一瞬です。
使い方
importしてtokenizerに文字列を渡してあげるとtokenにしてくれます。
from janome.tokenizer import Tokenizer t = Tokenizer() # ユニコード文字列を渡す必要がある tokens = t.tokenize(u"janomeが好きすぎて辛い") for token in tokens: print token.surface
tokensはjanome.tokenizer.Tokenクラスのインスタンスが格納されています。
このトークンには以下の方法でアクセスの仕方を整理すると以下のようになります。
ほしい情報 | アクセスの仕方 |
---|---|
全て | トークンインスタンス |
単語 | .surface |
原型 | .base_form |
読み | .reading |
品詞 | .part_of_speech |
などなど
辞書を変える
形態素解析をする際、重要なのは分割のための辞書です。
janomeはデフォルトではMeCabのものを使用しているようですが、
追加したい場合は以下の様にすれば大丈夫です。
from janome.tokenizer import Tokenizer t = Tokenizer(udic="辞書.csv", udic_enc="utf8")
辞書の形式はMeCabと同様のcsvです。
左から順に以下の情報を持ったcsvにします。
- 表層形
- 左文脈ID
- 右文脈ID
- コスト
- 品詞
- 品詞細分類1
- 品詞細分類2
- 品詞細分類3
- 活用形
- 活用型
- 原形
- 読み
- 発音
各要素はMeCabのページを確認して欲しいのですが、
[表層系、品詞と再分類、読み、原型、読み、発音]など
自分に必要な情報を埋めてください。
http://mecab.googlecode.com/svn/trunk/mecab/doc/dic.html
余談:アルゴリズム
あまり詳しくはないのですが、
辞書引きに関しては
MeCabやChaSenで使われているダブル配列ではなく、
FSTというアルゴリズムで作らているようです。
最後になってしまいましたが、
作成者さんのブログです。
http://mocobeta-backup.tumblr.com/post/115843098157/pure-python-janome
素敵なツールをありがとうございます!