日本語ウェブコーパス用ツールキット

Abstract: nwc-toolkit は日本語ウェブコーパスを扱うために開発されたソフトウェアです.日本語で記述された HTML 文書からテキストを抽出したり,Unicode 正規化や簡単なフィルタリングを施したりできるほか,分かち書きしたテキストから N-gram コーパスを作成することが可能です.

はじめに

nwc-toolkit日本語ウェブコーパスを作成するために開発されたソフトウェアです.HTML アーカイブからテキストアーカイブを作成するツールと,分かち書きしたテキストから N-gram コーパスを作成するツールで構成されています.サイズが 1TiB を超える HTML アーカイブを想定して C++ で開発されたツールなので,正規表現を多用する HTML パーサなどと比べれば,かなり高速に動作します.

以下,nwc-toolkit をインストールする方法とツールの簡単な説明になっています.

インストール

必要なライブラリ

nwc-toolkit をビルドするには,文字コードの操作や圧縮・復元のために,いくつかのライブラリをインストールしておく必要があります.代表的な環境におけるインストールの方法を説明するので参考にしてください.

aptitude による libiconv 以外のインストール

$ sudo aptitude install g++ patch subversion
$ sudo aptitude install libicu-dev
$ sudo aptitude install zlib1g-dev libbz2-dev liblzma-dev
$ sudo aptitude install xz-utils

KNOPPIX や Ubuntu などの環境であれば,libiconv 以外は aptitude を使って簡単にインストールできます.まずは開発環境として g++ が必要です.環境によっては,libiconv にパッチを適用するために patch のインストールが必要になります.また,Subversion のリポジトリをチェックアウトするのであれば subversion を使うことになります.

開発用のパッケージは,libicu-dev, zlib1g-dev, libbz2-dev, liblzma-dev の 4 種類です.xz 形式のファイルを操作するコマンドが必要であれば,xz-utils もインストールするようにしてください.

yum による libiconv 以外のインストール

$ sudo yum install gcc-c++ patch subversion
$ sudo yum install libicu-devel
$ sudo yum install zlib-devel bzip2-devel xz-devel
$ sudo yum install xz

Red Hat や CentOS などの環境であれば,libiconv 以外は yum を使って簡単にインストールできます.まずは開発環境として gcc-c++ が必要です.環境によっては,libiconv にパッチを適用するために patch のインストールが必要になります.また,Subversion のリポジトリをチェックアウトするのであれば subversion を使うことになります.

開発用のパッケージは,libicu-devel, zlib-devel, bzip2-devel, xz-devel の 4 種類です.xz 形式のファイルを操作するコマンドが必要であれば,xz もインストールするようにしてください.

zypper による libiconv 以外のインストール

$ zypper install gcc-c++ make wget patch subversion
$ zypper install libicu-devel
$ zypper install zlib-devel libbz2-devel xz-devel
$ zypper install xz

openSUSE であれば,libiconv 以外は zypper を使ってインストールできるようです.開発環境としては,gcc-c++, make が必要になります.後は,必要に応じて wget, patch, subversion をインストールしてください.

開発用のパッケージは,libicu-devel, zlib-devel, libbz2-devel, xz-devel の 4 種類です.xz 形式のファイルを操作するコマンドが必要であれば,xz もインストールするようにしてください.

libiconv のインストール

$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
$ wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.13-ja-1.patch.gz
$ tar zxf libiconv-1.13.1.tar.gz
$ cd libiconv-1.13.1
$ gzip -cd ../libiconv-1.13-ja-1.patch.gz | patch -p1
$ ./configure
$ make
$ make check
$ sudo make install

libiconv については,パッチを適用するために,ソースコードからインストールしています.環境によっては日本語文字コードの問題に対処したパッケージが用意されているかもしれないので確認してみてください.

公式サイトからダウンロードしたソースコードのアーカイブにパッチを適用した後で,ビルド・インストールするという手順になります.環境によっては,パッチを適用するコマンドである patch のインストールが必要になるかもしれません.ビルド・インストールについては,configure, make, make check, make install という一般的な手順で問題ありません.

nwc-toolkit のインストール

$ svn checkout http://nwc-toolkit.googlecode.com/svn/trunk/ nwc-toolkit
$ cd nwc-toolkit
$ ./configure
$ make
$ make check
$ sudo make install

ソースコードのアーカイブをダウンロードするには,Subversion のリポジトリをチェックアウトするか,プロジェクトのダウンロードページを利用してください.ソースコードをダウンロードした後は,configure, make, make check という手順でビルドできます.ツールは tools/ 内に配置されるので,インストールしなくても利用できます.必要に応じて make install でインストールしてください.

$ make check
./test-xxx: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
$ sudo vi /etc/ld.so.conf
... # 最終行に /usr/local/lib を追加します.
/usr/local/lib
$ sudo ldconfig

make check において libiconv が見つからないというエラーが表示される場合,ライブラリを検索するディレクトリの設定,もしくは libiconv をインストールするディレクトリの変更が必要になります.デフォルトの設定では /usr/local/lib にインストールされるので,/etc/ld.so.conf を確認・編集してから ldconfig を実行するか,libiconv の configure に適切な引数を与えて再インストールするかを選択してください.

ツール

テキストアーカイブの作成

テキストアーカイブの作成については,HTML アーカイブを入力として,文字コードの判別,UTF-8 への統一,HTML の解析,テキストの抽出,Unicode 正規化,句点や疑問符による区切り,文字数や文字種によるフィルタリングを順番に適用するようになっています.

  • nwc-toolkit-text-extractor
    • 文字コードの判別・変換からテキストの抽出,Unicode 正規化,フィルタリングまでを一度におこなうツールです.Unicode 正規化と文字種によるフィルタリングについては,オプションにより制御できるようになっています.HTML アーカイブ,もしくは単体の HTML 文書を入力として扱うことができます.
  • nwc-toolkit-html-parser
    • nwc-toolkit に含まれる HTML パーサの動作を確認するためのツールです.
  • nwc-toolkit-unicode-normalizer
    • テキストに Unicode 正規化を適用するツールです.
  • nwc-toolkit-text-filter
    • 句点・感嘆符・疑問符を手がかりとしてテキストを区切り,さらに文字数や文字種によるフィルタリングを適用するツールです.

N-gram コーパスの作成

N-gram コーパスの作成については,茶筌(ChaSen)MeCab による形態素解析の結果を入力として,単語 N-gram の出現頻度を求めるようになっています.改行コードを文の区切り,空白を単語の区切りとする単純なフォーマットのテキストからでも N-gram コーパスを作成できるので,単語分割に使うツールは形態素解析器でなくても問題ありません.

  • nwc-toolkit-ngram-counter
    • 分かち書きされたテキストを入力として単語 N-gram の頻度を求めるツールです.割り当てられたメモリにすべての N-gram を展開できないときは,出力が複数のファイルに分割されるので,nwc-toolkit-ngram-merger によるマージが必要になります.
  • nwc-toolkit-ngram-merger
    • N-gram コーパスをマージするツールです.

その他

HTML アーカイブから重複する HTML 文書を見つけるためのツールがあります.

おわりに

nwc-toolkit のインストール方法とツールの概要を説明しました.これらのツールを使うことにより,収集したウェブページからテキストを抽出したり,N-gram コーパスを作成したりすることができます.日本語ウェブコーパス以外に使うこともできるので,お気軽にご利用ください.