形態素解析器(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

まとめ

圧縮にかな〜りの時間がかかっても構わないのであれば,形態素解析結果を圧縮して保存するというのはアリなようです.