PythonでJanomeを使って形態素解析

JanomeはPythonで書かれた形態素解析のライブラリです。
インストールが簡単で、Mecabをインストールできない環境でも使用できる点が魅力です。

Janomeのインストール

次のコマンドでインストールできます。

pip install janome

Janomeの使い方

Tokenizerをインポートします。

>>> from janome.tokenizer import Tokenizer

Tokenizerオブジェクトを作ります。

>>> tokenizer = Tokenizer()

Tokenizerオブジェクトのtokenize()メソッドに解析する文字列を渡します。
返り値はTokenオブジェクトのlistです。

>>> for token in tokenizer.tokenize("すもももももももものうち"):
...     print(token)
...
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

tokenize()メソッドの引数streamにTrueを指定すると、返り値がgeneratorになります。

tokenize()メソッドの引数wakatiにTrueを指定すると、返り値が表層形(surface)のみになります。

>>> for token in tokenizer.tokenize("すもももももももものうち", wakati=True):
...     print(token)
...
すもも
も
もも
も
もも
の
うち

Tokenオブジェクトは、次のインスタンス変数を持ちます。

surface (表層形)
part_of_speech (品詞)
infl_type (活用型)
infl_form (活用形)
base_form (基本形)
reading (読み)
phonetic (発音)
node_type

実行例

>>> tokens = tokenizer.tokenize("吾輩は猫である")
>>> print(tokens[0])
吾輩    名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
>>> tokens[0].surface
'吾輩'
>>> tokens[0].part_of_speech
'名詞,代名詞,一般,*'
>>> tokens[0].infl_type
'*'
>>> tokens[0].infl_form
'*'
>>> tokens[0].base_form
'吾輩'
>>> tokens[0].reading
'ワガハイ'
>>> tokens[0].phonetic
'ワガハイ'

part_of_speechはカンマ区切りなので、次のようにして値を取得できます。

>>> tokens[0].part_of_speech.split(',')[0]
'名詞'
>>> tokens[0].part_of_speech.split(',')[1]
'代名詞'
>>> tokens[0].part_of_speech.split(',')[2]
'一般'
>>> tokens[0].part_of_speech.split(',')[3]
'*'

最後に

実行環境

  • Linux Mint
  • Python バージョン3.5.2
  • Janome バージョン0.3.5

コメント

  1. 形態素解析の結果をtxtファイルに書き込んで、保存したい場合はどうすればよいですか?教えていただけませんか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください