Word2vec はGoogleによるオープンソースツールです:
各単語に対して、float値のベクトルを提供しますが、それらは正確に何を表していますか?
段落ベクトル に関する論文もあります。段落の固定長ベクトルを取得するためにWord2vecをどのように使用しているかを誰かが説明できますか。
[〜#〜] tldr [〜#〜]:Word2Vecは潜在空間にWordプロジェクション(embeddings)を構築しています N次元(N得られたWordベクトルのサイズです)。 float値は、このN次元空間内の単語の座標を表します。
オブジェクトを異なる連続次元空間に配置する潜在空間投影の背後にある主なアイデアは、オブジェクトが基本的なオブジェクトよりも興味深い微積分特性を持つ表現(ベクトル)を持つことです。
つまり、有用なのは、類似性をエンコードする密なベクトル空間があることです(つまり、木にはダンスよりも木に似たベクトルがあります)。これは、古典的なスパースワンホットまたは「bag-of-Word」エンコーディングとは対照的です。これは、各ワードを1つの次元として扱い、設計により直交しますそれら)
Word2Vecアルゴリズムはこれを行います:
あなたが文を持っていると想像してください:
犬は公園を散歩するために___行かなければなりません。
明らかに「outside」という単語で空白を埋めたいと思いますが、「out」にすることもできます。 w2vアルゴリズムは、このアイデアに触発されています。近くの空白を埋めるすべての単語が一緒に属しているため、これが分布仮説と呼ばれます-したがって、「out」と「outside」という単語は互いに近くなりますが、「carrot」のような単語は遠くになります。
これは、Word2vecの背後にある一種の「直感」です。何が起こっているのかについてのより理論的な説明については、以下を読むことをお勧めします。
段落ベクトルの場合、考え方はw2vと同じです。各段落は、その単語で表すことができます。この論文では、2つのモデルが提示されています。
記事の一部 :
段落ベクトルと単語ベクトルは、コンテキスト内の次の単語を予測するために平均化または連結されます。 [...]段落トークンは別の単語と考えることができます。これは、現在のコンテキストから欠落しているもの、または段落のトピックを記憶するメモリとして機能します。
これらのベクトルがどのように構築されるかを完全に理解するには、ニューラルネットがどのように構築されるか、およびバックプロパゲーションアルゴリズムがどのように機能するかを学ぶ必要があります。 (私は このビデオ とAndrew NGのCourseraクラスから始めることをお勧めします)
注: Softmaxは分類を表すための空想的な方法であり、w2vアルゴリズムの各Wordはクラスと見なされます。階層的なソフトマックス/負のサンプリングは、ソフトマックスを高速化し、多くのクラスを処理するためのトリックです。
各単語の固定幅コンテキストは、ニューラルネットワークへの入力として使用されます。ネットワークの出力は、特定の次元(通常は50または100)のfloat値のベクトル(別名、Wordの埋め込み)です。ネットワークは、トレーニング/テストコーパスが与えられたときに適切な単語の埋め込みを提供するようにトレーニングされています。
任意の単語に対して固定サイズの入力を簡単に思い付くことができます。たとえば、左側にM単語、右側にN単語を入力します。サイズが異なる文や段落に対してこれを行う方法は、それほど明白ではないか、少なくとも最初はそうではありませんでした。最初に論文を読まなくても、文/段落内のすべての単語の固定幅の埋め込みを組み合わせて、文/段落の固定長のベクトル埋め込みを思い付くことができると思います。