2017-06-05 6 views
0

sparkのドキュメントページの例に従って、word2vec、linkを使用しました。それは機能しましたが、私はそれが何を計算しようとしているのかよく分かりませんでした。spark word2vecの例の説明と文字列の類似性を取得する方法

出力ベクトルは出力文字列表現ですか?

「はい」の場合は、それらの間のコサインの類似度を計算しようとしましたが、ベクトルが正ではないため、負の値があります。

word2vecをスパークさせると、陽性のみのベクターができますか?

Spark word2vecを使用して文字列のリスト間の類似度を計算する方法はありますか?

答えて

1

(出力データセットを使用して)出力ベクトルは、モデルに供給される文書(おそらくは文または文)の表現です。本質的には、この出力は、与えられた文書内の各単語のベクトル表現(おそらく単純なベクトル和)のすべてのベクトル表現の組み合わせです。

findSynonymsを使用すると、指定された単語と類似している単語の「num」を取得できます。 findSynonymsはコサイン類似度にのみ基づいています。 現在、私は別のモデルへの入力として使用しているフィーチャベクタを生成するためにこれを使用しています。

2つの文字列間の類似度を何らかの「いいえ」として計算するために、 findSynonymsメソッドのバリエーションを実装する必要があります。現在の実装では、入力文字列に対応するcosVecを生成し、このvecに最も近い単語Vecsを検索しようとします。

正のベクトルのみを生成できるかどうか、正のベクトルのみを生成する必要があるかどうかはわかりません。

+0

'' 'transform()' '' 'は単語のベクトル表現を平均した文のベクトル表現を返します。センテンス間の類似度を計算するコサインの類似度の平均化は意味がありますか?あるいは、密ベクトル表現を使用する別の類似性測度を見つけるのがより理にかなっていますか? – LonsomeHell

+0

平均はコサイン類似点ではありません。本質的にSentenceVector =その文を構成するすべての単語のベクトル表現の平均...ベクトルとしての単語の表現は、モデルが学習するものです。文の類似性モデルによって出力されたベクトルの間に余弦を見つける必要があります。 – sourabh

関連する問題