自然言語処理のためのデータセットを、一行で読み込む

piqcy
chakki
Published in
5 min readMay 12, 2017

--

自然言語処理に限らず機械学習では、データを用意するところからすべてが始まります。

画像ではMNIST、回帰ではボストンの家賃、分類ではアヤメといったデータが有名で機械学習フレームワークに付属していたりもしますが、こと自然言語処理となると何から手を付けていいかわからないことも多いのではないでしょうか。

そこで、今回は自然言語処理のためのデータセットを簡単にダウンロードするためのツールを作成しました。その名もchazutsu(茶筒)です!

自然言語処理を行うための代表的なパッケージであるNLTKにはnltk.downloadというデータをダウンロードするための仕組みが付属しているのですが、より簡単に対応するデータセットを追加でき、より「すぐに利用な形」でデータを用意するために、今回開発を行いました。

(Starを頂ければ励みになりますm(_ _)m)

chazutsuの使い方

chazutsuを利用するには、まずインストールを行います。

pip install chazutsu

一旦インストールを行えば、データのダウンロードに必要なのは(importを除けば)一行だけです。例として、Movie Review Dataをダウンロードしてみます。

import chazutsu
chazutsu.datasets.MovieReview.polarity().download()

これでダウンロードを実行できます。ログが以下のような形で出力され、最終的に「review_polarity_train.txt」と「review_polarity_test.txt」が作成されていることがわかります。

Make directory for downloading the file to /your/current/directory
Begin downloading the Moview Review Data dataset from http://www.cs.cornell.edu/people/pabo/movie-review-data/review_polarity.tar.gz.
The dataset file is saved to /your/current/directory/data/moview_review_data/review_polarity.tar.gz
...
Done all process! Make below files at /your/current/directory/data/moview_review_data
review_polarity_test.txt
review_polarity_train.txt

そう、もうあとはこのファイルを読み込むだけでモデルの学習と評価にすぐに取り掛かれます。このように、データをダウンロードするだけでなく学習データ/評価データの分割も行うようにしています(もちろん、単純にファイルをダウンロードするだけでなく、扱いやすい形式にフォーマットしています)。

chazutsu.datasets.MovieReview.polarity().download(test_size=0.3)

というのも、データセットは場合によってはとても容量が大きく、データをダウンロードしてもそれをシャッフルして分割して・・・という処理を自前で書くとなると煩雑ですしかなりの時間がかかったりします。そこで、chazutsuではその部分をあらかじめ行えるようにしています。

また、落としてきたデータセットのファイルをテキストエディタで開くとフリーズする、というのもよくあることです。数件のサンプルを見たいだけなのに・・・というときのために、元データからサンプリングを行ってファイルを作成する機能も付けています。

chazutsu.datasets.MovieReview.polarity().download(sample_count=100)

このサンプリングファイルを利用すれば簡単にデータを閲覧できます。また、ローカルではこのサンプリングファイルを利用してモデルの開発とテストを行い、データ本体を使った学習はクラウド上のGPUサーバーで行う、とすればローカルに大容量のデータを用意しておく必要もなくなります。

現在対応しているデータセットは、datasetsのページで確認できます(基礎的なモデルの力強さを示した「Baselines and Bigrams: Simple, Good Sentiment and Topic Classification」という論文に掲載されていたデータセットから着手しています)。

データセットのダウンロード、また整形に必要な処理はDatasetクラスにまとめており、簡単に追加が可能です。そのため、ぜひPullRequestもお待ちしております。

このように、chazutsuを利用すれば自然言語処理について、データの用意に手間取ることなくモデルの開発に注力できます。ぜひ、研究のお供に添えていただければと思います。

私の所属するチームchakkiのTwitterアカウントでは、こうした研究活動のアウトプットをいち早くお届けしています。よろしければフォローしていただければと思います!

--

--

piqcy
chakki
Editor for

All change is not growth, as all movement is not forward. Ellen Glasgow