Hatena::ブログ(Diary)

lolloo-htnの日記 このページをアンテナに追加 RSSフィード

2009-01-15

python+kakasi で分かち書き

kakasiは"日本語"→"ローマ字"をやってくれる定番プログラム。ローマ字変換の他に、分かち書きの機能を備えている。単純にコマンドとして呼び出すこともできるが、ライブラリを直接叩くAPIも用意されている。ソースコードのdoc/README.libを見るとどのように使用するかかかれている。

じゃあ、pythonから使用したい!と思ったが、kakasiを利用するライブラリが見つからなかった。なので、「pythonからCのライブラリを使用する」という観点で、pythonからkakasiを使ってみたので、そのメモ。

ポイントはpythonのctypesモジュール。全然触ったこともないが、チュートリアルを読みながら何とか動作完了。

注意事項としては、kakasiはUTF8に対応していなさそうなので、ライブラリへの出入力にはeucjpを使う。マルチバイトの文字の扱いってpythonは慣れが必要だよなあ…

kakasi.py

#!/usr/bin/env/python 
# coding:utf8
from ctypes import *
def wakachi(ustr):
    kakasi = CDLL("libkakasi.so")

    argArray = c_char_p * 3
    args =  argArray( c_char_p("kakasi"), c_char_p("-w"), c_char_p("-ieuc"))
    kakasi.kakasi_getopt_argv(3, args)

    kakasi_do = kakasi.kakasi_do
    kakasi_do.restype = c_char_p

    cstr = c_char_p(ustr.encode("eucjp"))
    return kakasi_do(cstr).decode("eucjp")

print wakachi(u"明日は明日の風が吹く")

使ってみる

$python kakasi.py 
明日 は 明日 の 風 が 吹く

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/lolloo-htn/20090115/1231971761