文書全体に単語の埋め込みを適用して、特徴ベクトルを取得します


38

ワード埋め込みを使用して、教師あり学習での使用に適した特徴ベクトルにドキュメントをマッピングするにはどうすればよいですか?

ワード埋め込みは各ワードをマップベクターにここで、一部ではない余りに多数(例えば、500)です。人気のある単語の埋め込みには、word2vecGloveが含まれます。V Rの Dの DwvRdd

教師あり学習を適用してドキュメントを分類したい。現在、bag-of-words表現を使用して各ドキュメントを特徴ベクトルにマッピングし、市販の分類器を適用しています。単語の埋め込みに含まれるセマンティック知識を活用するために、単語の特徴ベクトルを既存の事前学習済みの単語の埋め込みに基づくものに置き換えたいと思います。それを行う標準的な方法はありますか?

いくつかの可能性を想像できますが、最も意味のあるものがあるかどうかはわかりません。私が検討した候補アプローチ:

  • ドキュメント内の各単語のベクトルを計算し、それらすべてを平均化することができました。ただし、これは多くの情報を失う可能性があるようです。たとえば、word-of-words表現では、分類タスクに非常に関連性のある単語がいくつかあり、ほとんどの単語が無関係である場合、分類子はそれを簡単に学習できます。文書内のすべての単語のベクトルを平均すると、分類子にはチャンスがありません。

  • すべての単語のベクトルを連結しても機能しません。これは、固定サイズの特徴ベクトルにならないためです。また、単語の特定の配置に過度に敏感になるため、悪い考えのように思えます。

  • 単語の埋め込みを使用して、すべての単語の語彙をクラスタの固定セット、たとえば1000個のクラスタにクラスタ化できます。この場合、ベクトルのコサイン類似度を単語の類似度の尺度として使用します。次に、バッグオブワードの代わりに、バッグオブクラスターを使用することができます。分類器に提供する特徴ベクトルは、1000 番目のベクトルにすることができ、番目のコンポーネントはドキュメント内の単語の数をカウントしますクラスター一部です。

  • 単語与えられると、これらの単語の埋め込みにより、上位20個の最も類似した単語とそれらの類似度スコアセットを計算できます。これを使用して、単語のような特徴ベクトルを適応させることができました。私は単語を見たとき、単語に対応する要素インクリメントに加えて、により、Iはまた、単語に対応する要素増分ができによって、単語に対応する要素増分により、というように。w 1w 20 s 1s 20 w w 1 w 1 s 1 w 2 s 2ww1w20s1s20ww1w1s1w2s2

文書の分類に適した特定のアプローチはありますか?


パラグラフ2vecまたはdoc2vecを探していません。それらは大規模なデータコーパスのトレーニングを必要とし、私は大規模なデータコーパスを持っていません。代わりに、既存の単語埋め込みを使用したいと思います。


1
事前に訓練された埋め込みを使用してドキュメントを表す特定の方法を決めましたか?おそらくこれは少し助けになるでしょうか?
turdus-merula

1
@ user115202、すてき!それは私が抱えていた問題を完全に解決するものではありませんが、それは知っておく価値のある賢いアイデアです-それを指摘してくれてありがとう!私は、この問題に対する非常に良い解決策を見つけることはできませんでした。これは、単にバッグオブワードを使用するよりもはるかに優れています。たぶん、これは単語の埋め込みが得意なことではありません。ありがとう!
DW

これはあなたの問題にも関連しており、おそらく以前のものよりも少し大きいでしょう:重み付き単語埋め込み集約を使用した非常に短いテキストの表現学習
つぐみ-merula


1
RNNを使用しないのはなぜですか?可変長ドキュメントは、RNNの問題ではありません。 wildml.com/2015/09/...
カル

回答:


23

短いテキスト(文やツイートなど)で適切に機能すると思われる簡単な手法の1つは、ドキュメント内の各単語のベクトルを計算し、座標ごとの平均、最小、または最大を使用してそれらを集計することです。

最近のある論文の結果に基づいて、最小値と最大値を使用することは合理的にうまくいくようです。最適ではありませんが、シンプルであり、他のシンプルなテクニックと同等かそれ以上です。特に、ドキュメント内の単語のベクトルが場合、を計算します。および。ここでは、座標単位の最小値を取ります。つまり、最小値はようなベクトルであり、同様に最大値についても同様です。特徴ベクトルはこれら2つのベクトルの連結であるため、特徴ベクトルを取得しますnv1v2vnRdv1vn最大v1vnあなたはあなたは=v1vnR2d。これがワードオブワード表現より良いか悪いかはわかりませんが、短いドキュメントの場合、バッグオブワードよりもパフォーマンスが向上する可能性があり、事前にトレーニングされたワード埋め込みを使用できます。

TL; DR:驚くべきことに、最小値と最大値の連結はかなりうまく機能しています。

参照:

重み付き単語埋め込み集計を使用した非常に短いテキストの表現学習。セドリック・デ・ブーム、スティーブン・ヴァン・カニー、トーマス・デミースター、バート・ドート。パターン認識文字; arxiv:1607.00570。 要約pdf。特に表1および2を参照してください。

謝辞:この論文を私の注目を集めてくれた@ user115202に感謝します。


4
短いテキストの場合、avg / min / maxはうまくいくかもしれませんが、ニュース記事などの長いテキストの場合はどうでしょうか?
アボカド

1
その論文を読んで、私と同じくらい混乱している人にとって:この論文は@DWが言及したアプローチに焦点を合わせておらず、ベースラインアプローチとして「5.1。ベースライン」の下で簡単に言及しているだけです。論文の本文では、埋め込みを使用した分類器のトレーニングを含む独自の手法に焦点を当てています。これは、ここで説明したアプローチよりもはるかに複雑です。
ミグウェル

16

word2vecと同様のdoc2vecを使用し、大規模なコーパスから事前にトレーニングされたモデルを使用できます。次に.infer_vector()、gensimのようなものを使用してドキュメントベクトルを構築します。doc2vecトレーニングは、トレーニングセットから取得する必要はありません。

別の方法は、RNN、CNN、またはフィードフォワードネットワークを使用して分類することです。これにより、ワードベクトルがドキュメントベクトルに効果的に結合されます。

まばらな特徴(単語)を密な(単語ベクトル)特徴と組み合わせて、互いに補完することもできます。したがって、特徴マトリックスは、スパースバッグオブワードマトリックスとワードベクトルの平均の連結になります。https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html

別の興味深い方法は、word2vecと同様のアルゴリズムを使用することですが、ターゲットワードを予測する代わりに、ターゲットラベルを予測できます。これにより、単語ベクトルが分類タスクに直接調整されます。http://arxiv.org/pdf/1607.01759v2.pdf

よりアドホックな方法では、構文に応じて単語の重み付けを変えてみてください。たとえば、決定詞よりも動詞の重みを強くすることができます。


6

英語のテキストを使用していて、事前に訓練された単語の埋め込みを開始したい場合は、https//code.google.com/archive/p/word2vec/をご覧ください。

これは、word2vecの元のCバージョンです。このリリースに加えて、Googleニュースの記事から取得した1,000億語に基づいてトレーニングされたモデルもリリースしました(「トレーニング済みの単語およびフレーズベクトル」というタイトルのサブセクションを参照)。

私の意見と単語の埋め込み作業の経験では、文書分類のために、doc2vec(with CBOW)のようなモデルは単語の袋よりもはるかにうまく機能します。

あなたは小さなコーパスを持っているので、前述の事前に訓練された埋め込みによって単語埋め込みマトリックスを初期化することをお勧めします。次に、doc2vecコードで段落ベクトルのトレーニングを行います。Pythonに慣れている場合は、gensimバージョンのpythonをチェックアウトできます。これは非常に簡単に変更できます。

また、word2vec / doc2vecの内部動作の詳細については、http://arxiv.org/abs/1411.2738をご覧ください。これにより、gensimコードの理解が非常に簡単になります。


1
提案をありがとう。私は単語の埋め込みを求めていません。事前に訓練された単語を埋め込む方法をすでに知っています(質問でword2vecについて言及しました)。私の質問は、事前に訓練された単語の埋め込みから特徴ベクトルを構築する方法です。doc2vecへの参照に感謝しますが、私のコーパスは非常に小さいため、doc2vecコードをトレーニングしようとするとオーバーフィットし、パフォーマンスが低下するのではないかと思います(事前トレーニング済みの埋め込みでマトリックスを初期化しても)。
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.