python で形態素解析。Janome が簡単。pip 一発でインストール

形態素解析といえば MeCab が定番ですが、python から使うには関連パッケージのインストールが結構大変だったりします。
そこで、Janome を使ってみました。

Janome について詳しくは こちら

内部では MeCab の辞書を使うらしいので MeCab のインストールが前提ですが、Janome の解析結果は基本的に MeCab と同等で、インストールはいたって簡単です。
(辞書は janome に同梱されているので MeCab は不要。作者ご本人様から情報提供していただきました)

- 目次 -

スポンサーリンク

インストール

1 行

pip install janome

で入ります。

使ってみる

日本語を解析

日本語を解析して結果を表示してみます。

情報を取り出し

表層形、品詞、活用形 等の情報を個々に取り出してみます。

– 注意 –
上の並びは 0.2.8 以降のものです。
0.2.7 までは infl_type と infl_form が逆になっています。

 
0.2.7
0.2.8
活用型(五段・ワ行促音便・・・)
infl_form
infl_type
活用形(未然形、連用形、終止形・・・)
infl_type
infl_form


品詞を判定

特定の品詞(たとえば 名詞)を取り出してみます。上のソースにあるとおり、token.part_of_speech.split(‘,’)[0] に品詞が入っているので == u’名詞’ で判定します。

バージョン 0.2.7 以降

バージョン 0.2.6 まで

バージョンが 0.2.6(およびそれ以前)は文字コードに注意が必要です。
python 2系の場合、janome から返ってくる各情報の文字コードは str型と unicode型が混在します。
(0.2.7 で改善。作者ご本人様から情報提供していただきました)

この問題を回避するため、判定前に文字コードを確認、統一します。

確認しないと UnicodeDecodeError ないし UnicodeWarning になります。

ユーザー定義辞書

単語を独自に追加する場合はユーザー定義辞書を作成して引数に指定します。
辞書の形式は複数あるようですが(くわしくは 本家サイト で)MeCab 辞書フォーマットの CSV ファイルが使えるようです。

userdict.csv

スポンサーリンク
その他の記事
  1. 通りすがりの janome 作者です。紹介ありがとうございます。2点、訂正させてください。

    > 内部では MeCab の辞書を使うらしいので MeCab のインストールが前提ですが、

    辞書はjanomeに同梱しているのでMeCabは不要です。

    > python 2系の場合、janome から返ってくる各情報の文字コードは str型と unicode型が混在するようです。

    バージョン 0.2.6 まで、strとunicodeが混在する不具合がありました。
    0.2.7 で unicode に統一されたので、アップデートしてみてください。
    http://mocobeta-backup.tumblr.com/post/140503222592/janome-027

    • なんと、作者ご本人に見て頂けるとは。
      嬉しい驚きです。

      > 辞書はjanomeに同梱しているのでMeCabは不要です。

      かん違いしていました。
      MeCab の辞書を更新しても反映されないので不思議だったのですが
      疑問が解消しました。

      > 0.2.7 で unicode に統一されたので、アップデートしてみてください。

      最新の 0.2.8 で確認しました。問題なく動きました。

      ありがとうございました。

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

    • Lienさん、こんにちわ

      print の箇所をファイル出力に置き換えてください。
      python でファイル出力する方法は、詳しいサイトがたくさんあるので、そちらで確認してください。

    • 時系列全てが動くコードに感謝 says:

      from janome.tokenizer import Tokenizer
      import codecs

      t = Tokenizer()
      tokens = t.tokenize(u'pythonの本を読んだ')

      f = codecs.open('after_janome.txt','w','utf-8')

      for token in tokens:
      f.write (token.surface) # 表層形
      f.write (token.part_of_speech.split(',')[0]) # 品詞
      f.write (token.part_of_speech.split(',')[1]) # 品詞細分類1
      f.write (token.part_of_speech.split(',')[2]) # 品詞細分類2
      f.write (token.part_of_speech.split(',')[3]) # 品詞細分類3
      f.write (token.infl_type) # 活用型
      f.write (token.infl_form) # 活用形
      f.write (token.base_form) # 原形
      f.write (token.reading) # 読み
      f.write (token.phonetic) # 発音

      f.write (token.node_type) # node_type

      f.close()

      #Google Colaboratory ランタイムPython3 で動作確認済み
      #管理人さんのコードの置き換えです。

  3. pypi から janome をダウンロードしました。
    pip コマンドでコマンドプロントにインストールしようとしているのですができません。
    コマンドプロントではできないのでしょうか。

    • pip install https://pypi.python.org/packages/b4/7b/6f4fa5243a235cd682693b448f05afacedb2b10fc2efea3369d6336ab83b/Janome-0.3.6.tar.gz#md5=8f9955be6b1d70333dbc46b90db9c346

To_ru へ返信する コメントをキャンセル