Doc2Vec-段落にラベルを付ける方法(gensim)


17

gensimでdoc2vecを使用して文/段落/文書にラベルを付ける(タグ付けする)方法を考えています-実際的な観点から。

各文/段落/文書に固有のラベル(「Sent_123」など)を付ける必要がありますか?これは、「 "Sent_123"というラベルの付いた特定の1つの文に最も似ている単語や文を言いたい場合に便利です。

内容に基づいてラベルを繰り返すことはできますか?たとえば、各文/段落/ドキュメントが特定の製品アイテムに関するものである場合(および特定の製品アイテムに複数の文/段落/ドキュメントがある場合)、アイテムに基づいて文にラベルを付けてから、単語または単語間の類似性を計算できます文とこのラベル(製品アイテムに関係するすべての文の平均に似ていると思います)?

回答:


10

両方が可能です。すべてのドキュメントに一意のID(連続したシリアル番号など)をdoctag、または他の何かを表す共有文字列doctag、またはその両方を同時に与えることができます。

TaggedDocumentコンストラクターはタグのリストを受け取ります。(たまたま0から昇順のプレーンintに制限する場合、Doc2Vecモデルはそれらをバッキング配列への直接インデックスとして使用します。そうしないと、文字列->インデックスルックアップに充てられる多くのメモリを節約できます。 、これは大規模なデータセットで重要になる可能性がありますが、文字列のdoctag、またはintと文字列のdoctagを組み合わせて使用​​することもできます。

ニーズに最適なものを試す必要があります。

いくつかの分類タスクでは、予想よりもうまく機能することがあるアプローチとして、テキストごとのIDを完全にスキップし、目的のクラスをdoctagsとして、既知のクラスの例でDoc2Vecモデルをトレーニングするだけです。次に、すべてのドキュメントではなく、クラスのdoctagだけの「ドキュメントベクトル」を取得します。後で新しいテキストのベクトルを推測すると、関連するクラスdocベクトルに有意に近いベクトルが生成されます。


本当にありがとうございます!余談ですが、genimをいじり始めています-ドキュメント(一意のタグまたは共有タグが使用されているかどうかに関係なく)と単語との類似性を計算できるかどうか、私は興味がありますか?
B_Miner

1
一部のトレーニングモードでは、「同じ空間」内に単語とドキュメントのベクトルが作成されるため、類似性が意味を持つ場合があります。たとえば、このペーパー– arxiv.org/abs/1507.07998 –を参照してください。これは、doc-vector(Wikipediaの記事)とword-vectorに関係する一種の「アナロジー算術」でもあります。その論文のトレーニングは、gengenのDBOWモードに似ており、スキップグラムワードトレーニングを同時に実行しますdm=0, dbow_words=1
gojomo

ありがとう@gojomo!gensimリストにこれを行う方法に関するクエリを追加しました:groups.google.com/forum
#!

間違っている場合は修正してください。最後の段落では、このサイトで質問にタグを付けるように、各ドキュメントにタグを付けることを提案しています。そして、トレーニングの後、各タグのベクトル表現を取得します。新しいドキュメントが到着したら、新しいドキュメントのタグを提案するために類似性メトリックを使用できます。
ユーザー

@user-はい、必須ではありませんが、そうすることは可能であり、時には有益です。
gojomo

9

doc2vecモデルはからアルゴリズムを取得しますword2vec

ではword2vecすべての単語が語彙で自分のセマンティックな意味を持っているので、単語をラベル付けする必要はありません。ただし、の場合doc2vec、アルゴリズムが単一のエンティティとして識別するために、セマンティックな意味を伝える単語または文の数を指定する必要があります。このような理由から、我々は指定されているlabelsか、tags意味論的な意味のレベルに応じて搬送さ文や段落へ。

段落内の複数の文に単一のラベルを指定する場合、意味を伝えるには段落内のすべての文が必要であることを意味します。一方、段落内のすべての文に変数ラベルを指定する場合、それぞれが意味的な意味を伝え、それらの文に類似性がある場合とない場合があります。

簡単に言えば、a labelは何かの意味的な意味を意味します。


If we specify a single label to multiple sentences in a paragraph, it means that all the sentences in the paragraph are required to convey the meaning.これを正しく理解しているかどうかはわかりません。アルゴリズムPOVから、セマンティック定義に同じタグを持つすべての文が必要ですか、それとも同じタグを持つすべての文が同じものを記述していますか?最初のケースでは、それ自体で十分な単一の文はありません。2番目のケースでは、単一の文で十分です。
ユーザー

@user:これは2番目のケースです。アルゴリズムPOVから、タグはエンティティとして定義され、単一の文で使用されると、すべての単語の意味をキャプチャします。同様に、複数の文で使用される場合、他のすべての文の単語もキャプチャします。
-yazhi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.