PythonでMeCabを使うと

MeCabをWindows上のPythonから使いたいと思い、cygwinPythonを使ったりmingwを使ったりといろいろ試してみたのですが結局Pythonバインディングをコンパイルすることができませんでした。参考にしたリンク。


しょうがないのでPythonからCのライブラリにリンクできるctypesを使ってやってみました。
Python2.4.4, MeCab0.93

# -*- coding: sjis -*-

from ctypes import *

# ライブラリの場所を指定
libpath = r'c:/application/mecab/bin/libmecab.dll'

# ライブラリを ctypes を使って読み込み
lib = cdll.LoadLibrary(libpath)

def sparse(tagger, s):
  """ 指定された文字列をカタカナに直して返す。 """
  s = lib.mecab_sparse_tostr(tagger, s)
  return c_char_p(s).value

def main():
  # 解析器のオブジェクトを作る
  tagger = lib.mecab_new2("-Oyomi")

  # 歌詞の各行を処理していく
  for line in file("君だけの旅路.txt","r"):
    print sparse(tagger, line).strip()
  
  # 終わったら解放 
  lib.mecab_destroy(tagger)

if __name__ == '__main__':
  main()

君だけの旅路.txtにこんな歌詞を入れておくと

遠い記憶を辿れば 夕暮れ走る 小さな君
抱えきれない不安を 募らせて 家路を急ぐ

出力結果はこんな感じになります。

トオイキオクヲタドレバ ユウグレハシル チイサナキミ
カカエキレナイフアンヲ ツノラセテ イエジヲイソグ

とまあMeCabというのは漢字交じりの日本語を扱うには非常に便利なツールなので、唐子ちゃんにも組み込みたいなと思うのですが、これを使うには非常に大きな辞書ファイル(圧縮して10MB解凍して50MB)が必要なので配布を考えると少し面倒です。でも、日本語の歌詞を手作業でかなに直さなくていいというのはかなり魅力的ですし、他の用途にも使うことを考えるととても実用的です。


あ、そういや唐子ちゃんがVectorに登録されました。結構早かったですね。
詩の打つ人 唐子ちゃんの詳細情報 : Vector ソフトを探す!