概要
前回までのあらすじ: kagome を GAE で動かしたいという話があり,kagome.ipadic という IPA 辞書だけを収めたコンパクト版を用意して,GAE 上で動作させることに成功したわけですが,メモリの消費量が多くて B4インスタンス(メモリ 512MB)以上じゃないと動作しなかったわけです.正直,kagome を GAE で動かしたいという話をチラホラ聞くものの,それは「動くかどうか試してみたい」的なやつで,実際使ってらっしゃるという話は聞こえてこなかったわけです.
ところが・・・
Javaだとgomoku使えばB1/F1でも余裕で動いたんだけど、中々上手くいかんなぁ。
— かず@GAE/Goやってます (@Kazzz) 2017年5月22日
kagome はちと動作に敷居が高いとのご指摘を受け,
不幸にも黒塗りの高級車に追突してしまう後輩をかばいすべての責任を負った三浦に対し,車の主,暴力団員谷岡に言い渡された示談の条件とは…。
参考:
Instance Class | Memory Limit | CPU Limit |
---|---|---|
B1 | 128 MB | 600 Mhz |
B2 | 256 MB | 1.2 Ghz |
B4 | 512 MB | 2.4 Ghz |
B4_1G | 1024 MB | 2.4 Ghz |
B8 | 1024 MB | 4.8 Ghz |
F1 | 128 MB | 600 Mhz |
F2 | 256 MB | 1.2 Ghz |
F4 | 512 MB | 2.4 Ghz |
F4_1G | 1024 MB | 2.4 Ghz |
何が問題か
メモリ使用量です.Java 実装の gomoku (Igo の派生) では動くとのことなので,ここにヒントがありそうです.
gomoku の特徴にはこうあります
- Igo( http://igo.sourceforge.jp/ )から派生した形態素解析器
- 辞書データがあらかじめjarファイルに含まれていることが特徴
- デフォルトではIPADIC(mecab-ipadic-2.7.0-20070801)を使用している
- common lispで書かれた辞書構築コマンドを使うことでカスタマイズは可能
- 現状ではIPADIC以外に対応しようとする場合は(おそらく)ソースコードの修正が必要
- 素性としては品詞情報のみを保持
- 原型や読みの情報などの情報は破棄している
- その他、形態素解析器としての特徴は、おおむねIgoと同様
なるほど.たしかに辞書の付加項目をなくせば使用メモリが減らせそうです.
品詞 品詞細分類1 品詞細分類2 品詞細分類3 ↑ ここまでは保持 活用型 ↓ ここから先は別管理にして必要なときだけロードする 活用形 基本形 読み 発音
削減結果
変更前
実は F2 インスタンスでもぎりぎり動いたらしい.253 MB 必要.
変更後
97.5 MB まで削減され,B1/F1 インスタンスで動くようになりました 🙌 ヤター
実際に動作確認してくださったり報告してくださった Kazzz さん,ありがとうございました!
ぜひ GAE/Go で形態素解析してみてください.Happy Hacking ! github.com