3

私は単語の埋め込み(スキップグラム、CBOW)の意味と方法を完全に知っています。 Googleがword2vector APIを持っているということは、その言葉を得ることによってベクトルを生成できるということです。 私の問題はこれです:件名、オブジェクト、動詞を含む句があります。各単語はGoogle APIによって既に埋め込まれています。「これらのベクトルを組み合わせて、その句? 例: 句:V = "dog bites man" Googleで単語を埋め込んだ後、それぞれV1、V2、V3があり、それらのそれぞれが犬、噛む、男に対応しています。我々はそれを知っています: V = V1 + V2 + V3 私たちはどのようにVを提供できますか? 実際のベクトルを例に説明していただければ幸いです。ワード埋め込みベクトルを1つのベクトルに結合する方法は?

+0

前のヘルプありがとう。私は、GoogleNewsデータセットの単語の3倍のベクトルをPythonで見つけることに成功しました。今私の質問は、入力トリプルと他のすべてのトリプルの間の類似性を見つけるためです、どの方法が最適ですか?数十万を超える単語のトリプルがあり、類似行列を作成したいと考えています。 – Amir

答えて

3

2種類の溶液:フレーズの構成単語の

  1. 使用ベクトル加算 - この加算は、セマンティック組成物の良好な推定値であるため、一般的によく働きます。

  2. paragraph vectorsを使用してください。これは、任意の長さの単語のシーケンスを単一のベクトルとしてエンコードすることができます。

+0

素晴らしい。私は本当にあなたの助けに感謝します。あなたは私にベクトル加算のルールを教えてもらえますか?(それはどのように働くのですか?)実際のベクトルの例を私に与えて、この方法と組み合わせることができますか? – Amir

+0

ベクトルは実数の列であるので、2つのベクトルを加算するために、単純に配列の対応する各成分を加算する。 a =(1,2)とb =(3,1)が2つのベクトルである場合、a + b =(1 + 3,2 + 1)=(4,3) – Debasis

+0

コード/このベクトルの追加のためのスクリプト? – Amir

2

ベクトルは基本的に単なる数字のリストです。各リストの同じ位置に番号を追加してベクトルを追加します。ここでは例です:

a = [1, 2, 3] 
b = [4, 5, 6] 
c = a + b # vector addition 
c is [(1+4), (2+5), (3+6)], or [5, 7, 9] 

this questionに示すように、Pythonでこれを行う簡単な方法は、このようなものです:

map(sum, zip(a, b)) 

ベクトル加算は、線形代数の一部です。ベクトルや行列の演算を理解していない場合、単語ベクトルの数学は非常に理解しにくいので、一般的な線形代数についてもっと学びたいと思うかもしれません。

通常、単語ベクトルを一緒に追加すると、文章ベクトルを近似するのに適しています。なぜなら、与えられた単語セットには明らかな順序があるからです。ただし、Dog bites manMan bites dogの例では、ベクトルを追加することの弱点が示されています。結果は単語の順序に基づいて変化しないため、その意味は非常に異なりますが、これらの2つの文の結果は同じになります。

単語順の影響を受ける文章ベクトルを取得する方法については、doc2vecまたはjust-released InferSentを参照してください。

0

numpyまたはpytorchを使用します。これは、あなたが望む線形代数とニューラルネットワーク操作を提供します。 sklearnもチェックしてください(これらのさまざまな図書館をGoogleだけでも使えます)。

  • numpyの:線形代数ライブラリ、非常に成熟し、安定
  • pytorch:最近、現代のニューラルネットワークライブラリのFacebook
  • から
  • sklearn:pythonの
  • を使用して自然言語処理のための共通のかなり単純な操作は(も必要かもしれませんあなたのための単語ベクトル操作を処理するgensimをチェックアウトする)
関連する問題