読者です 読者をやめる 読者になる 読者になる

CUBE SUGAR CONTAINER

技術系のこと書きます。

Python: Janome で手軽に形態素解析する

Python

Janome は Pure Python で実装された日本語の形態素解析ライブラリ。 形態素解析というのは文章から意味をもった最小の構成単位となる形態素を取り出すことをいう。 他の日本語の形態素解析ライブラリは Python から使えてもバインディングが提供されているだけでドキュメントがイマイチだったり、あるいはインストールが大変だったりということも多々あるんだけど Janome はそんなことがない。

インストール

インストールは実に簡単。 pip を使ってさっくりできる。

$ pip install janome

使ってみる

使い方も至ってシンプルで janome.tokenizer.Tokenizer さえ知っていればいい。 Tokenizer#tokenize() メソッドに日本語のユニコード文字列を渡すだけで解析ができる。 解析結果はリストで返ってくる。

>>> from janome.tokenizer import Tokenizer
>>> t = Tokenizer()
>>> tokens = t.tokenize(u'吾輩は猫である')
>>> for token in tokens:
...     print(token)
...
吾輩  名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
猫 名詞,一般,*,*,*,*,猫,ネコ,ネコ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある  助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル

リストには janome.tokenizer.Token というクラスのインスタンスが入っている。

>>> tokens
[<janome.tokenizer.Token object at 0x10b307748>, <janome.tokenizer.Token object at 0x10b307780>, <janome.tokenizer.Token object at 0x10b3077b8>, <janome.tokenizer.Token object at 0x10b3077f0>, <janome.tokenizer.Token object at 0x10b307828>]

このオブジェクトからは Token#surface で文字列表現が取得できる。

>>> [token.surface for token in tokens]
['吾輩', 'は', '猫', 'で', 'ある']

読みがほしければ Token#reading で。

>>> [token.reading for token in tokens]
['ワガハイ', 'ハ', 'ネコ', 'デ', 'アル']

あと Janome には CLI も付属しているので手軽に形態素解析の結果が確認できる。 janome コマンドで CLI を起動して、日本語の文章を入力すると解析結果が表示される。

$ janome
吾輩は猫である
吾輩  名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
猫 名詞,一般,*,*,*,*,猫,ネコ,ネコ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある  助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル

とてもべんり。