形態素解析器 kagome のリファクタリングをしました

github.com

pure golang な辞書内包型形態素解析kagomeリファクタリングをしました.

v1.0.0 タグを振ってリリースしてあります

4月あたりからコツコツやってはいたんですが,なかなか時間が取れなくてすっかり夏も終わってしまいました.

今回のテーマは,

  • コードの整理
  • unsafe / reflect フリーにする
  • 外部辞書の利用を可能にする

でした.unsafe / reflect は,辞書を内包するために使っている go-bindata で利用されるので,すっかり割り切って kagome の FST 実装でも利用していたんですが, 実は,go-bindata でデフォルトの圧縮モードを利用していれば,unsafe / reflect は利用せずにすむことがわかったので*1, 辞書を FST 実装から Double Array 実装に戻して unsafe / reflect フリーにしました.これで GAE でも動かせるようになったのではないかなと思います(試せてないです).

それと,最近は,neologd という素晴らしい辞書があるので, これをビルドして,kagome の辞書としても利用したいなというのがありました. 今のところ,neologd の辞書をコンパイルして kagome 利用できることを試している段階ですが, それの準備として,外部辞書を指定できるようにしました.

上記の変更に伴って,

  • 辞書の内部構造が FST から Double Array に
  • インターフェースの整理
  • internal パッケージの利用

なんかをおこなっています.1.5 から導入された internal いいですね.

インターフェース変更しちゃったので,kagome を利用してくれてるレポジトリgithub で見つけて, 今年に入ってから変更があったものにはなるべく PR を送らせて頂きました. ご対応ありがとうございました.不具合などありましたら,そっと PR ください 苦情投げつけてください.

次は,neologd の辞書を拾ってきてビルドできるように,辞書ツールを整備したいなーなどととおもっております(妄想.

*1:前回のGoConの時に気づいた.http://ikawaha.hateblo.jp/entry/2015/06/21/155636