Doc2Vecの最も類似したベクトルが入力ベクトルと一致しません

ニコD

約40000レコードの求人情報のデータセットがあります。辞書に約30000のスキルを持つNERを使用して、説明からスキルを抽出しました。すべてのスキルは、一意の識別子として表されます。

投稿のスキル番号の分布は次のようになります。

平均15.12 | std 11.22 | 最小1.00 | 25%7.00 | 50%13.00 | 75%20.00 |

スキルIDのみを使用してword2vecモデルをトレーニングしましたが、多かれ少なかれうまく機能します。特定のスキルに最も類似したスキルを見つけることができ、結果は問題ないように見えます。

しかし、doc2vecモデルに関しては、私は結果に満足していません。

私は約3200のユニークな役職を持っていますが、それらのほとんどにはエントリがほとんどなく、同じ分野(「フロントエンド開発者」、「シニアJavaScript開発者」、「フロントエンドエンジニア」)からのものがかなりあります。doc2vec.TaggedDocument()でタグとして使用するさまざまな役職を意図的に探しました。私の目標は、スキルのベクトルをdocvecs.most_similar()に入力したときに、関連するいくつかの役職を確認することです。

モデルをトレーニングした後(さまざまなエポック数(100,500,1000)とベクトルサイズ(40と100)を試しました)、正しく機能する場合もありますが、ほとんどの場合は機能しません。たとえば、[numpy、postgresql、pandas、xgboost、python、pytorch]のようなスキルセットの場合、[家庭裁判所、演技、アドバイス、ソーシャルワーク]のようなスキルセットで最も類似した役職になります。

データセットのサイズに問題がありますか?またはドキュメントのサイズ(私は短いテキストがあると思います)?また、doc2vecメカニズムについて何か誤解していて、無視していると思います。また、スキルセットから関連する役職を取得し、2つのスキルセットベクトルが近いか遠いかを比較する方法について、他の、おそらくより高度なアイデアを知っているかどうかを尋ねたいと思います。

UPD:

私のデータの役職は「タグ」であり、スキルは「単語」です。各テキストには1つのタグがあります。3200の繰り返しタグを持つ40000のドキュメントがあります。7881の一意のスキルIDがドキュメントに表示されます。ドキュメントあたりのスキルワードの平均数は15です。

私のデータ例:

         job_titles                                             skills
1  business manager                 12 13 873 4811 482 2384 48 293 48
2    java developer      48 2838 291 37 484 192 92 485 17 23 299 23...
3    data scientist      383 48 587 475 2394 5716 293 585 1923 494 3

私のコードの例:

def tagged_document(df):
    #tagging documents
    for index, row in df.iterrows():
        yield gensim.models.doc2vec.TaggedDocument(row['skills'].split(), [row['job_title']])


data_for_training = list(tagged_document(job_data[['job_titles', 'skills']])

model_d2v = gensim.models.doc2vec.Doc2Vec(vector_size=50, min_count=2, epochs=100)

model_d2v.train(data_for_training, total_examples=model_d2v.corpus_count, epochs=model_d2v.epochs)

#the skill set contains close skills which represent a front end developer
skillset_ids = '12 34 556 453 1934'.split()                                                  
new_vector = model_d2v.infer_vector(skillset_ids, epochs=100)
model_d2v.docvecs.most_similar(positive=[new_vector], topn=30)

最近実験を行っていますが、スキルが10未満のドキュメントを除外すると、パフォーマンスが少し向上することに気付きました。それでも、いくつかの無関係な役職が出てきています。

ゴジョモ

あなたのコード(または少なくともその主要な選択のスケッチ)を見ずに、おそらく一般的な「alpha不器用なオンラインの例に従って自分自身を管理する」問題のように、自分で撮影する間違いを犯している可能性があるかどうかを判断するのは難しいです私のDoc2Vecコードは、トレーニングを何度も繰り返した後、良い結果をもたらしていません。何が悪いのでしょうか?

(テストされた最小数epochsが100であるということは疑わしいようです。データセットのサイズと各ドキュメントのサイズの両方が豊富な場合、公開された作業では10〜20エポックが一般的な値ですが、パスが多いほどデータが薄くなることがあります。)

同様に、あなたの説明からあなたのトレーニングドキュメントがどのようなものであるかは完全には明らかではありません。例えば:

  • あるtagsタイトルとwordsスキルは?
  • 各テキストには単一のものがありtagますか?
  • ユニーク数が3,200、ユニーク数がtags30,000の場合、タイトルが繰り返されるのはwords3,200TaggedDocuments以上ですか?
  • 1人あたりのスキルワードの平均数はいくつTaggedDocumentですか?

また、クエリベクトルとして(スキル用の)単語ベクトルを使用している場合は、それらを実際にトレーニングするトレーニングモードを使用する必要があります。Doc2VecプレーンPV-DBOW(dm=0などの一部のモードは、単語ベクトルをまったくトレーニングしませんが、ランダムに初期化されたジャンクとして存在します。(デフォルト以外dbow_words=1を追加してスキップグラム単語トレーニングを追加するか、PV-DMdm=1モードに切り替えると、単語ベクトルが共同トレーニングされ、同等の座標空間に配置されます。)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

類似の文字列ベクトルを一致させ、一致しない要素を返します

分類Dev

類似の文字列ベクトルを一致させ、一致しない要素を返します

分類Dev

ベクトル計算が出力と一致しません

分類Dev

Gensim doc2vec 300次元ベクトルがkerasに入力され、lstmモデルが機能していません。損失は減少していません。

分類Dev

Gensimベクトルに最も類似した単語

分類Dev

stdベクトルが演算子に一致しません==

分類Dev

numpyのeighとsvdで計算された固有ベクトルが一致しません

分類Dev

数値ベクトルの各要素を因子ベクトルの「最も類似した」レベルに関連付けます

分類Dev

Doc2Vec最も類似したドキュメントを入手する

分類Dev

Doc2Vec:ラベルのテキストを取得します

分類Dev

MVCリクエストがどのルートにも一致しませんでした

分類Dev

Javaはベクトルから最も一致する要素を選択しました

分類Dev

Rで2つの類似した関数をベクトル化すると、1つで機能します

分類Dev

Pythonシェルの「IndentationError:unindentはどの外部インデントレベルとも一致しません」

分類Dev

Python 3クエストコマンド、IndentationError:unindentはどの外部インデントレベルとも一致しません

分類Dev

Doc2Vec文を段落ベクトルに結合する

分類Dev

unindentは、FaceAppのどの外側のインデントレベルとも一致しません

分類Dev

onChange()は、毎回行全体ではなく、最後に入力したアルファベットと一致する必要があります

分類Dev

doc2vecでドキュメントの最も類似した用語/単語を見つける方法は?

分類Dev

単語ベクトルは、doc2vec DBOWの段落ベクトルとどのように共同トレーニングされますか?

分類Dev

IndentationError:unindentはどの外側のインデントレベルとも一致しません

分類Dev

IndentationErrorの処理方法:unindentはどの外部インデントレベルとも一致しません

分類Dev

KeyError: '要求されたレベル(日付)がインデックス名と一致しません(なし)'

分類Dev

ベクトル要素を出力しようとすると、「演算子<<」に一致しません

分類Dev

PYTHON ERROR:IndentationError:unindentはどの外部インデントレベルとも一致しません

分類Dev

Yii2select2データベースのバインドされた変数の例外数がトークンの数と一致しません

分類Dev

ランダム フォレストのモデルと入力の機能が一致しません

分類Dev

関数バリアントのベクトルを作成するときに「呼び出しに一致する関数がありません」エラー

分類Dev

日付の入力中-リテラルがフォーマット文字列と一致しません

Related 関連記事

  1. 1

    類似の文字列ベクトルを一致させ、一致しない要素を返します

  2. 2

    類似の文字列ベクトルを一致させ、一致しない要素を返します

  3. 3

    ベクトル計算が出力と一致しません

  4. 4

    Gensim doc2vec 300次元ベクトルがkerasに入力され、lstmモデルが機能していません。損失は減少していません。

  5. 5

    Gensimベクトルに最も類似した単語

  6. 6

    stdベクトルが演算子に一致しません==

  7. 7

    numpyのeighとsvdで計算された固有ベクトルが一致しません

  8. 8

    数値ベクトルの各要素を因子ベクトルの「最も類似した」レベルに関連付けます

  9. 9

    Doc2Vec最も類似したドキュメントを入手する

  10. 10

    Doc2Vec:ラベルのテキストを取得します

  11. 11

    MVCリクエストがどのルートにも一致しませんでした

  12. 12

    Javaはベクトルから最も一致する要素を選択しました

  13. 13

    Rで2つの類似した関数をベクトル化すると、1つで機能します

  14. 14

    Pythonシェルの「IndentationError:unindentはどの外部インデントレベルとも一致しません」

  15. 15

    Python 3クエストコマンド、IndentationError:unindentはどの外部インデントレベルとも一致しません

  16. 16

    Doc2Vec文を段落ベクトルに結合する

  17. 17

    unindentは、FaceAppのどの外側のインデントレベルとも一致しません

  18. 18

    onChange()は、毎回行全体ではなく、最後に入力したアルファベットと一致する必要があります

  19. 19

    doc2vecでドキュメントの最も類似した用語/単語を見つける方法は?

  20. 20

    単語ベクトルは、doc2vec DBOWの段落ベクトルとどのように共同トレーニングされますか?

  21. 21

    IndentationError:unindentはどの外側のインデントレベルとも一致しません

  22. 22

    IndentationErrorの処理方法:unindentはどの外部インデントレベルとも一致しません

  23. 23

    KeyError: '要求されたレベル(日付)がインデックス名と一致しません(なし)'

  24. 24

    ベクトル要素を出力しようとすると、「演算子<<」に一致しません

  25. 25

    PYTHON ERROR:IndentationError:unindentはどの外部インデントレベルとも一致しません

  26. 26

    Yii2select2データベースのバインドされた変数の例外数がトークンの数と一致しません

  27. 27

    ランダム フォレストのモデルと入力の機能が一致しません

  28. 28

    関数バリアントのベクトルを作成するときに「呼び出しに一致する関数がありません」エラー

  29. 29

    日付の入力中-リテラルがフォーマット文字列と一致しません

ホットタグ

アーカイブ