iOSのmecabを試してみた

iOSでもMecabを使って形態素解析ができるということで、試してみたことをメモ。

サンプルプログラムはこちらがわかりやすかったです。

https://github.com/FLCLjp/iPhone-Mecab

  • Cocoa Static Library版

https://github.com/FLCLjp/iPhone-libmecab

さっと試してみた感覚では、CocoaStaticLibrary版は精度が高いけど辞書ファイルの容量が大きく、
iOS内蔵版は内蔵辞書を使うため容量は小さいけど精度が低め・・・といった感じでしょうか。


とりあえず今回はiOS内蔵版で形態素解析を実行してみて、どういった結果になるのかを試してみました。

今回使用したバージョン
Xcode4.4.1


iOS内蔵版のプロジェクトをダウンロードしてXcodeから実行できますが、これだけでは形態素解析が動作しません。

Mecab.mファイルの66行目を修正します。

mecab = mecab_new2("-d /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/usr/lib/dic/ja/im/");
 ↓
mecab = mecab_new2("-d /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/usr/lib/dic/ja/im/");

シミュレーターの辞書ファイルの場所を指定しているようですが、Xcode4.2あたり(?)からパスが変わったので
それにあわせた修正みたいですね。

テキストボックスに文章を入力してparseすると、形態素解析が実行されます。


形態素解析の結果はNodeクラスのリストに格納されてきます。
Nodeクラスのメンバーはこうなっています。

	NSString *feature; // 形態素の情報(?)
	NSString *surface; // 形態素の表記
	NSNumber *posid;   // 品詞ID

とりあえず、いくつかの文章を形態素解析してみた結果を並べてみます。


今日も相変わらず暑いです

surface feature posid
今日 補助 6482
14237
相変 補助 6482
わら わら 13239
16350
補助 6482
11850
です です 4738

私の名前はおかひろです

surface feature posid
補助 6482
20000
名前 補助 6482
はお 羽尾 16415
17838
ひろ ひろ 14224
です です 4738

私の名前は、おかひろです。

surface feature posid
補助 6482
20000
名前 補助 6482
10482
名詞 18052
おか 12397
ひろ ひろ 14224
です です 9174
名詞 18052

こんにちは。お元気ですか?

surface feature posid
こんにちは こん 10442
名詞 18052
12247
元気 補助 6482
です デス 12353
10901
名詞 18052

こんばんわ、お忙しそうですね

surface feature posid
こんばん 今晩 11907
11395
名詞 18052
12247
補助 6482
しそう 思想 11160
です です 4738
5893

・・・形態素の区切りが微妙な場合があったり、featureが意味不明だったりします。
posIdもよくわかりません。(6482が名詞?)

この辺は実際にいろいろ試しながら理解していこうと思います。