Doc2VecおよびPySpark:DeepDist上のGensim Doc2vec

五月

私はDeepDistlink)モジュールを見て、それをGensimDoc2VecAPIと組み合わせて、で段落ベクトルをトレーニングすることを考えていますPySparkリンクは実際に、GensimWord2Vecモデルに対してそれを行う方法について、次のクリーンな例を提供します

from deepdist import DeepDist
from gensim.models.word2vec import Word2Vec
from pyspark import SparkContext

sc = SparkContext()
corpus = sc.textFile('enwiki').map(lambda s: s.split())

def gradient(model, sentences):  # executes on workers
    syn0, syn1 = model.syn0.copy(), model.syn1.copy()   # previous weights
    model.train(sentences)
    return {'syn0': model.syn0 - syn0, 'syn1': model.syn1 - syn1}

def descent(model, update):      # executes on master
    model.syn0 += update['syn0']
    model.syn1 += update['syn1']

with DeepDist(Word2Vec(corpus.collect()) as dd:
    dd.train(corpus, gradient, descent)
    print dd.model.most_similar(positive=['woman', 'king'], negative=['man']) 

私の理解でDeepDistは、最急降下法の作業をバッチでワーカーに分散し、それらを再結合してマスターで更新しています。に置き換えるWord2VecDoc2Vec、単語ベクトルでトレーニングされているドキュメントベクトルがあるはずです。

そこで、gensim.models.doc2veclink)のソースコードを調べましたDoc2Vecモデルインスタンスには、次のフィールドがあります。

  1. model.syn0
  2. model.syn0_lockf
  3. model.docvecs.doctag_syn0
  4. model.docvecs.doctag_syn0_lockf

gensim.models.word2veclink)のソースコードと比較すると、Doc2Vecモデルに次のフィールドがありませんでした

  1. model.syn1
  2. model.syn1neg

lockfトレーニングが終わった後、新しいデータポイントが入ってくるときに使用されるように見えるのでベクトルには触れないと思います。したがって、私のコードは次のようになります。

from deepdist import DeepDist
from gensim.models.doc2vec import Doc2Vec, LabeledSentence
from pyspark import SparkContext

sc = SparkContext()

# assume my dataset is in format 10-char-id followed by doc content
# 1 line per doc
corpus = sc.textFile('data_set').map(
    lambda s: LabeledSentence(words=s[10:].split(),labels=s[:10])
)

def gradient(model, sentence):  # executes on workers
    syn0, doctag_syn0 = model.syn0.copy(), model.docvecs.doctag_syn0.copy()   # previous weights
    model.train(sentence)
    return {'syn0': model.syn0 - syn0, 'doctag_syn0': model.docvecs.doctag_syn0 - doctag_syn0}

def descent(model, update):      # executes on master
    model.syn0 += update['syn0']
    model.docvecs.doctag_syn0 += update['doctag_syn0']

with DeepDist(Doc2Vec(corpus.collect()) as dd:
    dd.train(corpus, gradient, descent)
    print dd.model.most_similar(positive=['woman', 'king'], negative=['man']) 

ここで重要なものが欠けていますか?例えば:

  1. 気にする必要がありmodel.syn1ますか?結局、どういう意味ですか?
  2. model.*_lockfトレーニング後のロックされた行列は正しいですか?
  3. lambda s: LabeledSentence(words=s[10:].split(),labels=s[:10]各ドキュメントが1行にあり、接頭辞が0で埋められた10桁のIDであると仮定して、データセットの解析に使用しても問題ありませんか?

任意の提案/貢献は非常に高く評価されています。結果を要約するブログ投稿を作成し、ここで貢献者に言及します。これは、現在解決していることを解決するために多くの開発時間を費やすことなく、他の人がスケーリングされた分散システムでDoc2Vecモデルをトレーニングするのに役立つ可能性があります。

ありがとう


2018年6月13日更新

これを実装できなかったので、お詫びします。しかし、今日はより良いオプションがありDeepDist、しばらくの間維持されていません。以下のコメントをお読みください。

現時点で私のアイデアを試すことを主張する場合は、自己責任で進めていることを忘れないでください。また、DeepDistそれでも機能することがわかっている場合は、コメントで報告してください。それは他の読者を助けるでしょう。

デニス・ジャヘルディン

この質問が未解決のまま表示されないようにするために、質問者が状況を解決した方法は次のとおりです。

手遅れになるまで、これを実装することはできませんでした。DeepDistは、バックエンドでFlaskアプリを使用して、SparkWebインターフェイスと対話します。それはもう維持されていないので、Sparkのアップデートはおそらくすでにそれを壊しました。SparkでDoc2Vecトレーニングを探している場合は、Deeplearning4J(deeplearning4j.org/doc2vec#)にアクセスしてください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Doc2vec MemoryError

分類Dev

Gensim Doc2vec結果の改善

分類Dev

doc2vecの精度の評価

分類Dev

Doc2Vecとの類似性

分類Dev

gensim doc2vec "intersect_word2vec_format"コマンド

分類Dev

alphaおよびmin_alphaのdoc2vecのデフォルト値

分類Dev

How does Pyspark Calculate Doc2Vec from word2vec word embeddings?

分類Dev

gensim Doc2Vec:txtファイルからTaggedDocumentsへの取得

分類Dev

doc2vec: measurement of performance and 'workers' parameter

分類Dev

Default values of doc2vec for alpha and min_alpha

分類Dev

How to use doc2vec model in production?

分類Dev

How to measure the accuracy of a Doc2vec model?

分類Dev

負のサンプリングを使用したDoc2vecおよびword2vec

分類Dev

Gensim doc2vec most_similar equivalent to get full documents

分類Dev

Is there a way to save a Gensim doc2vec model as plain text (.txt)?

分類Dev

Finding the distance between 'Doctag' and 'infer_vector' with Gensim Doc2Vec?

分類Dev

best training methods for binary text classification using doc2vec gensim

分類Dev

Doc2vecモデルのセマンティックおよび構文パフォーマンス

分類Dev

doc2vecとのドキュメントの類似性

分類Dev

Doc2VecのパイプラインとGridSearch

分類Dev

TensorflowでDoc2Vecのベクターを使用する方法

分類Dev

Doc2vecモデルの精度を測定する方法は?

分類Dev

gensimライブラリを使用したdoc2vecによる不正確な類似性の結果

分類Dev

Gensim doc2vecで効率的なクエリを実行する方法は?

分類Dev

doc2vec-Pythonでのdoc2vecトレーニングとinfer_vector()の入力形式

分類Dev

gensim word2vecまたはdoc2vecを使用してvocaburayを2回ビルドできますか?

分類Dev

Doc2Vecと分類-非常に悪い結果

分類Dev

doc2vecに最大語彙頻度を入れる方法

分類Dev

Doc2Vecを使用した感情分類

Related 関連記事

  1. 1

    Doc2vec MemoryError

  2. 2

    Gensim Doc2vec結果の改善

  3. 3

    doc2vecの精度の評価

  4. 4

    Doc2Vecとの類似性

  5. 5

    gensim doc2vec "intersect_word2vec_format"コマンド

  6. 6

    alphaおよびmin_alphaのdoc2vecのデフォルト値

  7. 7

    How does Pyspark Calculate Doc2Vec from word2vec word embeddings?

  8. 8

    gensim Doc2Vec:txtファイルからTaggedDocumentsへの取得

  9. 9

    doc2vec: measurement of performance and 'workers' parameter

  10. 10

    Default values of doc2vec for alpha and min_alpha

  11. 11

    How to use doc2vec model in production?

  12. 12

    How to measure the accuracy of a Doc2vec model?

  13. 13

    負のサンプリングを使用したDoc2vecおよびword2vec

  14. 14

    Gensim doc2vec most_similar equivalent to get full documents

  15. 15

    Is there a way to save a Gensim doc2vec model as plain text (.txt)?

  16. 16

    Finding the distance between 'Doctag' and 'infer_vector' with Gensim Doc2Vec?

  17. 17

    best training methods for binary text classification using doc2vec gensim

  18. 18

    Doc2vecモデルのセマンティックおよび構文パフォーマンス

  19. 19

    doc2vecとのドキュメントの類似性

  20. 20

    Doc2VecのパイプラインとGridSearch

  21. 21

    TensorflowでDoc2Vecのベクターを使用する方法

  22. 22

    Doc2vecモデルの精度を測定する方法は?

  23. 23

    gensimライブラリを使用したdoc2vecによる不正確な類似性の結果

  24. 24

    Gensim doc2vecで効率的なクエリを実行する方法は?

  25. 25

    doc2vec-Pythonでのdoc2vecトレーニングとinfer_vector()の入力形式

  26. 26

    gensim word2vecまたはdoc2vecを使用してvocaburayを2回ビルドできますか?

  27. 27

    Doc2Vecと分類-非常に悪い結果

  28. 28

    doc2vecに最大語彙頻度を入れる方法

  29. 29

    Doc2Vecを使用した感情分類

ホットタグ

アーカイブ