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(その他諸々)の知識はお粗末…。

scもtcも中国語だよ。
mecab_sparse_tonode2はどう?
mecab_new2するときの引数は?
コメント by hide-t — 2010/09/02 @ 16:26
>hide-tさん
ありがとうございます!
中国はchじゃないんですか?
mecab_new2は使っていません。
mecab_newを使っていて、–dicdir=/hoge/hoge/ を渡しています。
辞書がUTF16-LEということは入力もUTF-16LEですかね…?
mecab_sparse_tonode2など他の関数も呼んでみます。
コメント by kaiba — 2010/09/02 @ 21:38
traditional chinese, simplified chinese。
環境がないから分からないけど、
http://chasen.org/~taku/blog/archives/2008/07/mac_os_x_leropa.html
みるとUTF16LEにしてからやってるみたいだね。
im/tokの違いが分からないけど、imはinput methodっぽいんだよね。
ダメなら形態素解析サーバでも作ったらどうかな?
コメント by hide-t — 2010/09/03 @ 10:41
うおお!! わかち出来てる!!
僕はiconvでUTF16LEにするのに不安があったので、テキストファイルにUTF16LEの文字列を用意して、それを読み込んでいます。
このブログのエントリーは、一歩前進できそうです。
今日はへべれけなうなので、できません…
コメント by kaiba — 2010/09/03 @ 23:09