2017-09-16 5 views
0

を使用している間、私は、リスト内の文字列の数が多い:リストの内容の 小さな例は次のとおりです。必要性Word2Vec

[「機械学習」、「アップル」、「金融」、 "AI"、 "Funding"]

私はこれをベクトルに変換し、クラスタリング目的で使用したいと考えています。 それぞれのベクトルを見つけている間に、文中のこれらの文字列のコンテキストが考慮されていますか?私は文字列を含むだけでこのリストを持っている場合

は、どのように私はこれらの文字列のベクトルを取得し、約行くべき?

私は..

from gensim.models import Word2Vec 
    vec = Word2Vec(mylist) 

P.S.これまでのところ、このコードを行っていますまた、私はWord2Vecで良いリファレンス/チュートリアルを入手できますか?

答えて

0

Word2Vecは、人工ニューラルネットワークの方法です。 Word2Vecは実際に単語間の関係を反映した埋め込みを作成します。以下のリンクは、Word2Vecを実装するための完全なコードを手に入れるのに役立ちます。

いいリンクはthisthisです。 2番目のリンクについては、詳細コードのgithub repoを試してください。彼はブログの主要な部分だけを説明している。主な記事はthisです。

次のコードを使用して、単語を対応する数値に変換することができます。

word_counts = Counter(words) 
sorted_vocab = sorted(word_counts, key=word_counts.get, reverse=True) 
int_to_vocab = {ii: word for ii, word in enumerate(sorted_vocab)} 
vocab_to_int = {word: ii for ii, word in int_to_vocab.items()} 
0

あなたは文章のリストではない文字列のリストを必要とするword2vec使用して単語ベクトルを見つけることができます。

word2vecは文中のすべての単語を通り抜けようとしますが、単語ごとに、指定したウィンドウ(主に約5個)内の単語を予測してその単語に関連付けられたベクトルを調整しますエラーは最小限に抑えられています。

明らかに、これは単語ベクトルを求める際の言葉の順序が重要であることを意味します。意味のある順序のない文字列のリストを提供すれば、良い埋め込みを得ることはできません。

私は確信していませんが、LDAがこの場合に適していると思います。文字列のリストに固有の順序がないためです。あなたの2つの質問に

0

回答:

  1. 文章でこれらの文字列の文脈がそれぞれのベクトルを見つけるしながら、考えられていますか?
    はい、word2vecは単語ごとに1つのベクトルを作成します(または複数の単語の表現を一意の単語として考えることができるため、たとえばNew York)。このベクトルはその文脈によって単語を記述する。同様の文脈で類似の単語が現れることを前提としています。文脈は周囲の単語から構成されています(窓の中に、単語の袋やスキップグラムの仮定があります)。

  2. 文字列を含むリストがあれば、これらの文字列のベクトルを取得するにはどうすればよいですか?
    あなたはもっと言葉が必要です。 Word2Vecの出力品質はトレーニングセットのサイズに依存します。あなたのデータにWord2Vecをトレーニングすることは意味がありません。

@Betaによって提供されるリンクは、良い紹介/説明です。

0
word2vec + context = doc2vec 

あなたが持っているテキストの文章を作成し、ラベルでタグ付けします。

列車doc2vecは、単語と同じスペースに埋め込まれた各ラベルのベクトルを取得するために、タグ付きの文章に列記します。

次に、ベクトルの推論を行い、任意のテキストのラベルを取得できます。

関連する問題