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

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

この手間をなくすために単語分散表現のダウンローダを作ってみました。名前は 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

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


『 Python 』Article List