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
リンク元
- 20 http://nicowiki.com/
- 10 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/lolloo-htn/20090115/1231971761
- 10 http://d.hatena.ne.jp
- 10 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=python+kakasi
- 8 http://straitmouth.jp/blog/setomits/1797
- 7 http://www.google.co.jp/search?q=python+kakasi&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP:official&client=firefox-a
- 6 http://74.125.153.132/search?q=cache:mXxKARXN9k0J:d.hatena.ne.jp/lolloo-htn/20090114/1231886695+res+動画保存&cd=3&hl=ja&ct=clnk&gl=jp
- 6 http://www.google.co.jp/search?q=kakasi+python&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 5 http://nicowiki.com/niconews.html
- 5 http://www.google.co.jp/search?q=分かち書き&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
