形態素解析器(MeCab)の出力データを圧縮するとどのくらいのサイズになるか?
MeCab の出力データを圧縮するとどのくらい小さくなるのかを調べてみました.
テキストの圧縮結果
まず,形態素解析する前のテキスト(UTF-8)を圧縮してみたところ,圧縮率(※)は 20 - 30% 程度になりました.やはり,xz の圧縮率は魅力的です.bzip2 は伸長が遅いという欠点があるので,圧縮率は良いものの,コーパスの圧縮には向いていないかもしれません.
※ 圧縮率:100.0 ×(圧縮後のサイズ)÷(圧縮前のサイズ)[%]
保存方法 | サイズ [bytes] | 圧縮率 |
---|---|---|
無圧縮 | 207,497,518 | - |
gzip | 64,590,026 | 31.13% |
bzip2 | 48,640,591 | 23.44% |
xz | 44,101,304 | 21.25% |
xz -9e | 41,443,560 | 19.97% |
MeCab 出力の圧縮結果
次に,上記のテキストを MeCab に入力し,出力結果を圧縮してみたところ,圧縮率は 3 - 12% 程度になりました.テキストを圧縮したものとサイズを比べると,無圧縮では約 11 倍になっていますが,圧縮後では 1.6 - 4.1 倍程度に収まっています.
保存方法 | サイズ [bytes] | 圧縮率 | 圧縮テキスト比 | 無圧縮テキスト比 |
---|---|---|---|---|
無圧縮 | 2,262,895,144 | - | - | 1,090.56% |
gzip | 262,502,157 | 11.60% | 406.41% | 126.51% |
bzip2 | 142,388,079 | 6.29% | 292.74% | 68.62% |
xz | 97,571,360 | 4.31% | 221.24% | 47.02% |
xz -9e | 68,142,360 | 3.01% | 164.42% | 32.84% |
比べてみると xz -9e の圧縮率は驚異的です.さらに,伸長速度(※)を調べてみたところ,ここでも圧倒的な性能を見せました.
※ 伸長速度:(伸長後のサイズ [bytes])÷(伸長に要した時間 [s])
保存方法 | 伸長速度 [bytes/s] |
---|---|
gzip | 121,189,390 |
bzip2 | 21,372,061 |
xz | 129,597,110 |
xz -9e | 160,979,949 |
まとめ
圧縮にかな〜りの時間がかかっても構わないのであれば,形態素解析結果を圧縮して保存するというのはアリなようです.