iOSのmecabを試してみた その2

iOSのmecabを試してみた - おかひろの雑記では、iOS内蔵版の辞書を使って形態素解析を試してみましたが、
今回はCocoa Static Library版https://github.com/FLCLjp/iPhone-libmecabのサンプルを動かしてみました。

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

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

Mecab.mファイルの23行目に「Homebrew mecab path」とあるので、Homebrewでmecabをインストールします。
Redirecting...

ターミナルで下記コマンドを実行します。

brew install mecab
brew install mecab-ipadic

インストールされたら、バージョンを確認して、正しいパスに修正します。(私が試したときは0.994でした。)

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

NSString *path = @"/usr/local/Cellar/mecab/0.98/lib/mecab/dic/ipadic";
 ↓
NSString *path = @"/usr/local/Cellar/mecab/0.994/lib/mecab/dic/ipadic";


ちなみにMecab.mでは、シミュレーターではHomebrewでインストールしたMecabの辞書を使い、実機ではXcodeプロジェクトに組み込んでいる辞書を使うようになっているみたいですが、インストールしたMecabのバージョンによっては挙動に違いが出てしまうのでは・・・と疑問に思ってしまいます。

シミュレーターで実行する場合もプロジェクトに同梱された辞書ファイルを使うようにしたほうが良いのかもしれません。

NSString *path = @"/Users/okahiro/Downloads/FLCLjp-iPhone-libmecab-2f7edca/LibMecabSample/ipadic"


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

iOS内蔵版と同様に結果はNodeクラスのリストに格納されますが、こちらのほうが情報が充実しています。

@interface Node : NSObject {
	NSString *surface;
	NSString *feature;
	NSArray *features;
}

...

// 品詞
- (NSString *)partOfSpeech;
// 品詞細分類1
- (NSString *)partOfSpeechSubtype1;
// 品詞細分類2
- (NSString *)partOfSpeechSubtype2;
// 品詞細分類3
- (NSString *)partOfSpeechSubtype3;
// 活用形
- (NSString *)inflection;
// 活用型
- (NSString *)useOfType;
// 原形
- (NSString *)originalForm;
// 読み
- (NSString *)reading;
// 発音
- (NSString *)pronunciation;
	
@end


いくつかの文章を形態素解析してみました。

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

surface feature 品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用形 活用型 原形 読み 発音
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー 名詞 副詞可能 * * * * 今日 キョウ キョー
助詞,係助詞,*,*,*,*,も,モ,モ 助詞 係助詞 * * * *
相変わらず 副詞,助詞類接続,*,*,*,*,相変わらず,アイカワラズ,アイカワラズ 副詞 助詞類接続 * * * * 相変わらず イカワラズ イカワラズ
暑い 形容詞,自立,*,*,形容詞・アウオ段,基本形,暑い,アツイ,アツイ 形容詞 自立 * * 形容詞・アウオ段 基本形 暑い アツイ アツイ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 助動詞 * * * 特殊・デス 基本形 です デス デス

私の名前はおかひろです

surface feature 品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用形 活用型 原形 読み 発音
名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ 名詞 代名詞 一般 * * * ワタシ ワタシ
助詞,連体化,*,*,*,*,の,ノ,ノ 助詞 連体化 * * * *
名前 名詞,一般,*,*,*,*,名前,ナマエ,ナマエ 名詞 一般 * * * * 名前 ナマエ ナマエ
助詞,係助詞,*,*,*,*,は,ハ,ワ 助詞 係助詞 * * * *
おか 動詞,自立,*,*,五段・カ行イ音便,未然形,おく,オカ,オカ 動詞 自立 * * 五段・カ行イ音便 未然形 おく オカ オカ
ひろ 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,ひろい,ヒロ,ヒロ 形容詞 自立 * * 形容詞・アウオ段 ガル接続 ひろい ヒロ ヒロ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 助動詞 * * * 特殊・デス 基本形 です デス デス

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

surface feature 品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用形 活用型 原形 読み 発音
名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ 名詞 代名詞 一般 * * * ワタシ ワタシ
助詞,連体化,*,*,*,*,の,ノ,ノ 助詞 連体化 * * * *
名前 名詞,一般,*,*,*,*,名前,ナマエ,ナマエ 名詞 一般 * * * * 名前 ナマエ ナマエ
助詞,係助詞,*,*,*,*,は,ハ,ワ 助詞 係助詞 * * * *
記号,読点,*,*,*,*,、,、,、 記号 読点 * * * *
おか 動詞,自立,*,*,五段・カ行イ音便,未然形,おく,オカ,オカ 動詞 自立 * * 五段・カ行イ音便 未然形 おく オカ オカ
ひろ 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,ひろい,ヒロ,ヒロ 形容詞 自立 * * 形容詞・アウオ段 ガル接続 ひろい ヒロ ヒロ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 助動詞 * * * 特殊・デス 基本形 です デス デス
記号,句点,*,*,*,*,。,。,。 記号 句点 * * * *

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

surface feature 品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用形 活用型 原形 読み 発音
こんにちは 感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ 感動詞 * * * * * こんにちは コンニチハ コンニチワ
記号,句点,*,*,*,*,。,。,。 記号 句点 * * * *
接頭詞,名詞接続,*,*,*,*,お,オ,オ 接頭詞 名詞接続 * * * *
元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキ 名詞 形容動詞語幹 * * * * 元気 ゲンキ ゲンキ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 助動詞 * * * 特殊・デス 基本形 です デス デス
助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ 助詞 副助詞/並立助詞/終助詞 * * * *
記号,一般,*,*,*,*,?,?,? 記号 一般 * * * *

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

surface feature 品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用形 活用型 原形 読み 発音
こんばんわ 感動詞,*,*,*,*,*,こんばんわ,コンバンワ,コンバンワ 感動詞 * * * * * こんばんわ コンバンワ コンバンワ
記号,読点,*,*,*,*,、,、,、 記号 読点 * * * *
接頭詞,名詞接続,*,*,*,*,お,オ,オ 接頭詞 名詞接続 * * * *
忙し 形容詞,自立,*,*,形容詞・イ段,ガル接続,忙しい,イソガシ,イソガシ 形容詞 自立 * * 形容詞・イ段 ガル接続 忙しい イソガシ イソガシ
そう 名詞,接尾,助動詞語幹,*,*,*,そう,ソウ,ソー 名詞 接尾 助動詞語幹 * * * そう ソウ ソー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 助動詞 * * * 特殊・デス 基本形 です デス デス
助詞,終助詞,*,*,*,*,ね,ネ,ネ 助詞 終助詞 * * * *

iOS内蔵版と比べても形態素の区切りの精度が高く、細かい情報が取得できます。
ただし、辞書をアプリ内に持つことになるので容量の問題が出てきます。

アプリの容量を見ると・・・

でか・・・ 3G回線でアプリをダウンロードできる上限値も超えてしまっています。
これはちょっとつらいですね・・・。

辞書ファイルを軽量化することができればよいのですが・・・その辺はまだ勉強していないのでわかりません。