Pythonで形態素解析

 授業で,日本語文書を単語に切り分け索引語リストを作りtf-idfを求めよという課題が出たので,Pythonで取り組んでみることにしました.基本的には初心者なので,誤りなどあればご指摘いただければ幸いです.

 まずは日本語文書を形態素解析するために,オープンソース形態素解析エンジンMeCabをインストールします.形態素解析とは文を形態素という言語で意味を持つ最小単位に分割し,それぞれの品詞を判別する技術です.自然言語処理の基礎技術でかな漢字変換や機械翻訳などに使われたりします.形態素解析 - Wikipedia国立国会図書館の前館長である長尾真先生は自然言語処理における第一人者で,形態素解析エンジンには長尾先生の研究室で作成され現在も開発が続けられているJumanというシステムもあります.*1

Try JUMAN

MeCabのインストール

 公式のページからPythonバインディングも提供されていますが,Macのパッケージ管理ソフトの一つであるMacPortsでインストールする方がより簡単そうだったので,そちらを利用します.

The MacPorts Project -- Home
Xcodeのコマンドラインツールを別途インストールする必要があり,そちらで少し迷いました.
Xcode 4.3はコマンドラインツールが別に配布されるようになったらしい - 作業ログとかをメモする場所。 - mkdirグループ

MacPortsからMeCab関連のパッケージを探し,Python2.7で利用できるものをインストールします.

port search MeCab
sudo port install py27-mecab @0.994 

その後,Pythonを起動し,無事importできたので終了です.

MeCabを利用する

#coding:utf-8
import MeCab

test="授業で日本語文書を単語に切り分けて,索引語リストを作りtf-idfを求めよという課題が出たので"

def pyMecab(s):
    tagger = MeCab.Tagger('-Ochasen')
    result = tagger.parse(s)
    print(result)

pyMecab(test)

と入力すると,以下のようなリストを得ることが出来ます.

授業	ジュギョウ	授業	名詞-サ変接続		
で	デ	で	助詞-格助詞-一般		
日本語	ニホンゴ	日本語	名詞-一般		
文書	ブンショ	文書	名詞-一般		
を	ヲ	を	助詞-格助詞-一般		
単語	タンゴ	単語	名詞-一般		
に	ニ	に	助詞-格助詞-一般		
切り分け	キリワケ	切り分ける	動詞-自立	一段	連用形
て	テ	て	助詞-接続助詞	

*1:Jumanの最後のNは長尾先生のイニシャルから取っているという話も聞いたのですが,Web上にソースは見当たらず…