畳み込みニューラルネットワークを使用したドキュメント分類


11

CNN(畳み込みニューラルネットワーク)を使用してドキュメントを分類しようとしています。短いテキスト/文のCNNは多くの論文で研究されています。ただし、長いテキストやドキュメントにCNNを使用した論文はないようです。
私の問題は、ドキュメントの機能が多すぎることです。私のデータセットでは、各ドキュメントに1000を超えるトークン/単語があります。各例をCNNに送るために、word2vecまたはgloveを使用して各ドキュメントをマトリックスに変換し、大きなマトリックスを作成します。各行列の高さはドキュメントの長さで、幅は単語埋め込みベクトルのサイズです。私のデータセットには9000を超える例があり、ネットワークのトレーニングに長い時間がかかり(1週間)、パラメーターの微調整が難しくなっています。
別の特徴抽出方法は、単語ごとにワンホットベクトルを使用することですが、これにより非常にスパース行列が作成されます。そしてもちろん、この方法では、以前の方法よりもトレーニングに時間がかかります。
それで、大きな入力行列を作成せずに特徴を抽出するためのより良い方法はありますか?
また、可変長のドキュメントをどのように処理する必要がありますか?現在、ドキュメントを同じ長さにするために特別な文字列を追加していますが、これは良い解決策ではないと思います。


2
TfIdfベクトライザーの使用は適切と思われますか?たぶん、word2vecと組み合わせて、各ドキュメントの上位xワードのみを残しますか?
ディエゴ

まあ、私はTfldfが​​何であるかわかりません。動作するかどうかを確認します。ありがとう
lenhhoxung

scikit-learn.org/stable/modules/…ここに例を示します
Diego

確認しただけでは役に立たないと思います。基本的に、そのヘルパークラスは一連のドキュメントのマトリックスを作成します。行列の各行ベクトル(バイナリまたはワードカウント)はドキュメントに対応しますが、CNNの場合、各ドキュメントの行列が必要です。
lenhhoxung 2016

ポイントは、TfIdfでランク付けされたドキュメントごとに、重要な単語をx個だけ残すことでした。次に、元のエンコーディングを使用してドキュメントマトリックスを作成します。この2つのステップのアプローチのアイデアが出てきたかどうかはわかりません。
ディエゴ

回答:


8

ドキュメントをより長い一連の単語ベクトルではなく、一連の文ベクトルとして表すことにより、入力データの長さを減らすことができます。Doc2vecはこれを行う1つの方法です(各文は「ドキュメント」になります)。

Doc2vecを使用しない場合、センテンスベクトルを作成する1つの方法は、各センテンスの単語ベクトルを平均化して、各センテンスに同じ幅の単一のベクトルを与えることです。これはDoc2Vecを通じて利用できるいくつかの方法ほど正確ではないかもしれませんが、トピックモデリングでかなり成功して使用しました。

どちらの方法でも、センテンスベクトルを取得したら、ワードベクトルに対して既に行っているように、ドキュメントごとに順番に並べて、モデルを実行します。各ドキュメントのシーケンス長が短いため、モデルは単語ベクトルよりも速くトレーニングする必要があります。

ちなみに、この方法は、精度と速度のニーズを満たすために拡大または縮小するときに機能します。(たとえば、CNNがまだセンテンスベクトルでのトレーニングが遅すぎる場合は、代わりに段落ベクトルを作成できます)。

異なる長さのドキュメントを処理する1つの方法は、パディングを使用することです。ドキュメントのシーケンスはすべて、最長のドキュメントと同じ長さにする必要があります。したがって、最長のドキュメントが400文の場合、すべてのドキュメントシーケンスは400ベクトル長になります。最大長より短いドキュメントは、ゼロで埋められたベクトルで埋められます。


面白いアイデア。私はそれを試してみます:)
lenhhoxung

質問していいですか?長さが大きく異なるドキュメント(5文/ドキュメント、500文/ドキュメント)を、ドキュメントベクトルで表現したとしても、どうすれば処理できますか?ここのパディングは奇妙なようです...
stackunderflow 2017

1
音声処理では、長さに基づいてシーケンスを並べ替え、同じ長さのシーケンスが同じバッチに含まれるようにします。これはテキストシーケンスで機能する場合があります。
suthee

4

リージョン埋め込みを使用できます。個々の「トークン」をベクトルに変換するのではなく、テキストの領域をベクトルに変換する戦略を使用できます。このアプローチはここで使用されます:https : //arxiv.org/abs/1504.01255

:あなたがCNNに制限されていない場合、あなたは、このようなこの一つとして、階層的注意モデルを使用することができhttps://www.cs.cmu.edu/~diyiy/docs/naacl16.pdfあなたがこの種のパイプラインを持っています: word vectors (combined into) sentence vectors (combined into) final document vector

この方法では、すべての単語ベクトルを埋め込みに変換する必要がありますが、一度にすべて変換する必要はありません。

異なる長さのドキュメントを処理するには、今のところパディング/カットが唯一のソリューションです。

最後に、速度を上げるために、重要なセクションのみを含めることにより、テキストの寸法を小さくすることができます(おそらく、ドキュメントの先頭のみで十分な分類精度が得られます)。


1
参照リンクをありがとう。地域埋め込みは面白いです。可変サイズのドキュメントに関しては、この記事arxiv.org/abs/1412.1058(同じ作者)で述べたように、パディング/カットの代わりに複数のプーリングユニットを使用できます。
lenhhoxung 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.