日本語 WordNet を使って文章を非可逆圧縮してみた

先日、Deflate を JS で実装したライブラリを使って、文字列を可逆圧縮してみた。

今回は、日本語 WordNet という辞書データを利用し、文字列を非可逆圧縮してみた。


日本語 WordNet は、単語の「意味」をまとめた辞書データで、SQLite3 データベースの形式で配布されている。

↑ コレがそれ。コレをダウンロードすると、圧縮された状態で 58MB 程度のファイルであり、gunzip で解凍してやると 194MB 程度のファイルが出てくる。

SQLite3 DB 形式なので、何らかの DB ビューアソフトで開いてやれば中身を見られる。例えば「ドラゴン」という単語は、意味としては「龍」というデータが入っていたりする。

コレを利用して、冗長な単語を簡素な単語に変換してやれば、非可逆圧縮できるのでは、というワケ。実装してみたコードは以下のとおり。Node.js でコーディングした。

SQLite3 DB から SELECT するには、普通に npm の sqlite3 パッケージを使用。

引数で与えた文章を単語に分割するため、以前にも使ったことがある形態素解析ライブラリの kuromoji.js を使って、単語と品詞を確認できるようにした。

精度はまぁまぁw。お遊びとしてはこんなモンか。