iPhoneからMeCabを呼びたい
iPhoneから形態素解析エンジン、MeCabを呼びたいのです。
MacOSやiPhoneではMeCabを使用しているので、呼べないものだろうか?
ここ数週間、会社の休み時間や帰ってから調べているんだけどわからない!
誰かヒント下さい!
やりたいこと
- iPhoneで形態素解析をしたい。
- できればiPhoneに入っているものを使用したい(辞書が結構なサイズなので)。
わかったこと
- それっぽいライブラリは、libmecab_em.dylibとlibmecabra.dylibがある
- 辞書は /Developer/Platforms/iPhoneXXX.platform/Developer/SDKs/iPhoneXXX.sdk/usr/lib/dic/ja/im/dicrc がある。
imの他にもtokというディレクトリがある。jaの他にも sc(セーシェル共和国?) や tc (タークス諸島・カイコス諸島?) などがある。 - フレームワークの追加から上記dylibを追加、—-dicdirを指定すれば、Cサンプルはビルド、動作できる(一部警告がでるが初歩的な問題なので割愛)。
- (文字コードのことは考えずに)とりあえず実行してみると何かしら結果が得られるが内容は不明(ファイル出力した物)。
- mecab_dictionary_info_tを取得して、辞書情報を見ると、文字コードはUTF-16LE、単語数は171884。
- 入力をUTF-16LEにしてみると、mecab_sparse_tostrで落ちて結果は取得できない。
これからやること
- gdbを使って、なぜ落ちているのか探る。
- mecab_sparse_tostr2など他に使用できないか試してみる。 => mecab_sparse_tonode2でも落ちる。mecab_sparse_tostr2でも落ちる。
- 自前でビルドしたmecab、辞書で試してみる。
- SWIGを使ってObjective-Cにしてみる。
- /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/include/mecab.h を見ると、#if 1 /* MECAB_APPLE_ENHANCEMENT */
でmecab_path_tの定義で宣言されないようになっている変数がある。
備考
- 僕のCとMac(その他諸々)の知識はお粗末…。