web-dev-qa-db-ja.com

事前計算されたベクトルGensimの読み込み

Gensim Pythonパッケージを使用して神経言語モデルを学習しています。モデルを学習するためのトレーニングコーパスを提供できることは承知しています。しかし、テキストで利用可能な事前計算されたWordのベクトルが多数存在します形式(例 http://www-nlp.stanford.edu/projects/glove/ )。GensimWord2Vecモデルを初期化する方法はありますか。ベクトルを一から学ぶには?

ありがとう!

19
MEric

ここから事前トレーニング済みのWordベクターをダウンロードできます(ファイル 'GoogleNews-vectors-negative300.bin'を取得します): Word2vec

ファイルを抽出して、pythonに読み込むことができます:

model = gensim.models.Word2vec.Word2Vec.load_Word2vec_format(os.path.join(os.path.dirname(__file__), 'GoogleNews-vectors-negative300.bin'), binary=True)

model.most_similar('dog')

編集(2017年5月):上記のコードは廃止されたため、次のようにしてベクターをロードします。

model = gensim.models.KeyedVectors.load_Word2vec_format(os.path.join(os.path.dirname(__file__), 'GoogleNews-vectors-negative300.bin'), binary=True)
22
Stergios

StanfordサイトからのGloVeダンプは、Word2vec形式とは少し異なる形式です。以下を使用して、GloVeファイルをWord2vec形式に変換できます。

python -m gensim.scripts.glove2Word2vec --input  glove.840B.300d.txt --output glove.840B.300d.w2vformat.txt
36

私の知る限り、Gensimは2つのバイナリ形式、Word2vecとfastText、およびほとんどのWord埋め込みツールで作成できる一般的なプレーンテキスト形式をロードできます。一般的なプレーンテキスト形式は次のようになります(この例では、20000は語彙のサイズ、100はベクトルの長さです)。

20000 100
the 0.476841 -0.620207 -0.002157 0.359706 -0.591816 [98 more numbers...]
and 0.223408  0.231993 -0.231131 -0.900311 -0.225111 [98 more numbers..]
[19998 more lines...]

Chaitanya Shivadeは彼の回答で、Gensimが提供するスクリプトを使用して、Glove形式(各行:Word +ベクトル)を一般的な形式に変換する方法を説明しました。

さまざまな形式の読み込みは簡単ですが、それらを混同することも簡単です。

import gensim
model_file = path/to/model/file

1)バイナリWord2vecの読み込み

model = gensim.models.Word2vec.Word2Vec.load_Word2vec_format(model_file)

2)バイナリfastTextの読み込み

model = gensim.models.fasttext.FastText.load_fasttext_format(model_file)

3)汎用プレーンテキスト形式の読み込み(Word2vecで導入されました)

model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_Word2vec_format(model_file)

Wordの埋め込みのみを使用し、Gensimでのトレーニングを継続しない場合は、KeyedVectorクラスを使用できます。これにより、ベクターをロードするために必要なメモリの量が大幅に削減されます( 詳細な説明 )。

以下は、バイナリWord2vec形式をkeyedvectorsとしてロードします。

model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_Word2vec_format(model_file, binary=True)
0
fotis j