2017-08-12 38 views
0

初心者の質問ですが、私は少しこれに戸惑います。この質問への答えがNLPの他の初心者にとっても有益であることを願っています。平均法を用いてword2vec単語ベクトルから文章ベクトルを計算するための具体的なステップは何ですか?

は、ここではいくつかの詳細は以下のとおりです。

私はあなたがword2vecによって生成された単語ベクトルから文ベクトルを計算することができることを知っています。しかし、これらの文章ベクトルを作るために必要な実際の手順は何ですか?誰もが直感的な例を提供し、このプロセスを説明するためにいくつかの計算を提供できますか?

例:私は3つの単語で文があるとします。今日は暑いです。そして、これらの言葉が(1,2,3)(4,5,6)(7,8,9)の仮想的なベクトル値を持つとします。これらの単語ベクトルを成分ごとに平均化することによって文ベクトルを取得できますか?ベクトルの長さが異なる場合はどうなりますか:(1,2)(4,5,6)(7,8,9,23,76)平均化プロセスはどのようになりますか?

答えて

0

たとえば、3つの単語ベクトル(3つの各次元)の平均化は、3つの次元の1つの単一のベクトルを生成します。単一のを取得する

重心VEC = 1/3 *(1 + 4 + 7,2 + 5 + 8,3 + 6 + 9)=(4、5、6)

良い方法ベクトルは、一般にdoc2vecとして知られている段落ベクトルを使用することです。

1

単語ベクトルを平均してテキストの長さ(文章/段落/文書)のベクトルを作成することは簡単なアプローチの1つです。生の単語ベクトルを使用するかどうかを

import numpy as np 
from gensim.models.keyedvectors import KeyedVectors 

wv = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz', binary=True) 
text = "the quick brown fox jumped over the lazy dog" 
text_vector = np.mean([wv[word] for word in text.split()], axis=0) 

:(。それは色合い・オブ・意味をキャプチャで素晴らしいではないですが、それを行うのは簡単だ)

gensimライブラリを使用して、のような単純なことができ、または単位正規化されているか、または単語の重要度の何らかの尺度によって重み付けされている単語ベクトルは、考慮すべき選択肢です。

お互いに互換性のあるワードベクトルは同じ次元数を持つため、異なるサイズのベクトルを平均化しようとすることは決してありません。

'Paragraph Vectors'(gensimのDoc2Vec)のような他のテクニックは、いくつかのコーパスで、いくつかの目的のために、より良いテキストベクタを与えるかもしれません。

"Word Mover's Distance"(WMD)のような単語ベクトルを利用するテキストの類似性を比較するための他のテクニックは、単一の要約ベクトルを比較するよりも良い対ごとのテキスト類似性スコアを与えるかもしれません。 (WMDは、テキストを単一のベクトルに縮小するものではなく、計算に費用がかかることがあります。)

関連する問題