日本語 WordNet を使って文章を非可逆圧縮してみた
先日、Deflate を JS で実装したライブラリを使って、文字列を可逆圧縮してみた。
今回は、日本語 WordNet という辞書データを利用し、文字列を非可逆圧縮してみた。
日本語 WordNet は、単語の「意味」をまとめた辞書データで、SQLite3 データベースの形式で配布されている。
↑ コレがそれ。コレをダウンロードすると、圧縮された状態で 58MB 程度のファイルであり、gunzip
で解凍してやると 194MB 程度のファイルが出てくる。
SQLite3 DB 形式なので、何らかの DB ビューアソフトで開いてやれば中身を見られる。例えば「ドラゴン」という単語は、意味としては「龍」というデータが入っていたりする。
コレを利用して、冗長な単語を簡素な単語に変換してやれば、非可逆圧縮できるのでは、というワケ。実装してみたコードは以下のとおり。Node.js でコーディングした。
SQLite3 DB から SELECT するには、普通に npm の sqlite3
パッケージを使用。
引数で与えた文章を単語に分割するため、以前にも使ったことがある形態素解析ライブラリの kuromoji.js
を使って、単語と品詞を確認できるようにした。
精度はまぁまぁw。お遊びとしてはこんなモンか。