単語分散表現のためのダウンローダを作りました

  • 29
    いいね
  • 0
    コメント

単語の分散表現は現在の自然言語処理で当たり前のように使われています。最近は学習済みのモデルが数多く公開されており、自分で時間とお金をかけて学習させる必要性が少なくなってきました。しかし、公開されているとはいえ自分で探してきてダウンロードするのはなかなか手間がかかります。

この手間をなくすために単語分散表現のダウンローダを作ってみました。名前は chakin です。
chakki-works/chakin

(スターつけていただけるとやる気がでますm(__)m)

chakinの特徴としては、Pythonで書かれておりpipでインストールできる、検索からダウンロードまでワンストップでできる、23のベクトルをサポートしている(2017/5/29時点)と言ったことが挙げられます。サポートするベクトルについては今後増やしていく予定です。

では使い方をご紹介します。

chakinの使い方

インストールは簡単です。pip を使って以下のコマンドを叩きます:

$ pip install chakin

インストールが終わると使用できます。データセットのダウンロードのためには3行のコードを書く必要があります。今回は試しに日本語の分散表現のデータセットをダウンロードしてみましょう。まずは Python を立ち上げます:

$ python

Pythonを立ち上げたらインストールした chakin をインポートします。インポートした後、searchメソッドに言語(今回の場合Japanese)を指定することで事前学習済みのモデルを検索することができます:

>>> import chakin
>>> chakin.search(lang='Japanese')
                         Name  Dimension     Corpus VocabularySize               Method  Language
6                fastText(ja)        300  Wikipedia           580K             fastText  Japanese
22  word2vec.Wiki-NEologd.50d         50  Wikipedia           335K   word2vec + NEologd  Japanese

現在は対象言語のみの検索に対応しています。この辺は今後使い勝手をよくしていきたいところの一つです。

ダウンロードしたいデータセットを見つけたら、そのインデックスをdownloadメソッドに指定してダウンロードします。今回は「word2vec.Wiki-NEologd.50d」のインデックスである 22 を指定しました:

>>> chakin.download(number=22, save_dir='./')
Test: 100% ||               | Time: 0:00:02  60.7 MiB/s
'./latest-ja-word2vec-gensim-model.zip'

使い方は以上です。

サポートしているベクトル

現在は以下に挙げるベクトルをサポートしています。今後対応するベクトルもどんどん追加していくので、ぜひ使ってみてください。

Name Dimension Corpus VocabularySize Method Language
fastText(ar) 300 Wikipedia 610K fastText Arabic
fastText(de) 300 Wikipedia 2.3M fastText German
fastText(en) 300 Wikipedia 2.5M fastText English
fastText(es) 300 Wikipedia 985K fastText Spanish
fastText(fr) 300 Wikipedia 1.2M fastText French
fastText(it) 300 Wikipedia 871K fastText Italian
fastText(ja) 300 Wikipedia 580K fastText Japanese
fastText(ko) 300 Wikipedia 880K fastText Korean
fastText(pt) 300 Wikipedia 592K fastText Portuguese
fastText(ru) 300 Wikipedia 1.9M fastText Russian
fastText(zh) 300 Wikipedia 330K fastText Chinese
GloVe.6B.50d 50 Wikipedia+Gigaword 5 (6B) 400K GloVe English
GloVe.6B.100d 100 Wikipedia+Gigaword 5 (6B) 400K GloVe English
GloVe.6B.200d 200 Wikipedia+Gigaword 5 (6B) 400K GloVe English
GloVe.6B.300d 300 Wikipedia+Gigaword 5 (6B) 400K GloVe English
GloVe.42B.300d 300 Common Crawl(42B) 1.9M GloVe English
GloVe.840B.300d 300 Common Crawl(840B) 2.2M GloVe English
GloVe.Twitter.25d 25 Twitter(27B) 1.2M GloVe English
GloVe.Twitter.50d 50 Twitter(27B) 1.2M GloVe English
GloVe.Twitter.100d 100 Twitter(27B) 1.2M GloVe English
GloVe.Twitter.200d 200 Twitter(27B) 1.2M GloVe English
word2vec.GoogleNews 300 Google News(100B) 3.0M word2vec English
word2vec.Wiki-NEologd.50d 50 Wikipedia 335K word2vec + NEologd Japanese

おわりに

事前学習済みの単語の分散表現は自然言語処理でよく使われており重要です。しかし、それらを自分で探してくるのは意外と手間です。本記事ではその手間を解消するために作ったダウンローダを紹介しました。この記事が皆様のお役に立てば幸いです。

私のTwitterアカウントでも機械学習や自然言語処理に関する情報をつぶやいています。
@Hironsan

この分野にご興味のある方のフォローをお待ちしています。