自然言語処理(NLP)タスクでは、単語の埋め込みとしてword2vecベクトルを使用することがよくあります。私はまだword2vecモデルとlstmモデルの統合方法を理解していませんか?word2vecモデルとlstmモデルの統合方法は?
長い短期(LSTM)ネットワークを使用した感情予測など、NLPタスクをモデリングするときに、このような未知語をどのように扱うべきですか?
自然言語処理(NLP)タスクでは、単語の埋め込みとしてword2vecベクトルを使用することがよくあります。私はまだword2vecモデルとlstmモデルの統合方法を理解していませんか?word2vecモデルとlstmモデルの統合方法は?
長い短期(LSTM)ネットワークを使用した感情予測など、NLPタスクをモデリングするときに、このような未知語をどのように扱うべきですか?
ニューラルネットワークの入力としてテキストデータを使用するには、数字に変換する必要があります。word2vec
は、ワンホットエンコードの大きいベクターを使用する代わりに、簡単に言います。
しかし、それを使用できるようにするには、あなたの埋め込み行列(生成されたword2vec)にマップされる既知の単語のセットである辞書も必要です。その行列は、辞書のサイズと埋め込みのサイズ(あなたの特徴ベクトルのサイズ)を持っています。
この辞書は、埋め込みマトリックスにもエントリがある特別なトークン(例:<UNK>
)で未知語を処理します。
編集:追加例
これはあなたの入力テキストであると言うことができます:The quick brown fox jumps over the lazy dog
そして、これはあなたの辞書(サイズ8)である:
<EOF> 0
<UNK> 1
the 2
fox 3
jumps 4
over 5
lazy 6
dog 7
埋め込みと埋め込み行列サイズ2:
0 | -0.88930951349 -1.62185932033
1 | -0.11004085279 0.552127884563
2 | 0.689740990506 0.834548005211
3 | -0.7228834693 0.633890390277
4 | -1.47636106953 -0.20830548073
5 | 1.08289425079 0.211504860598
6 | -0.626065160814 0.505306007423
7 | 1.91239085331 -0.102223754095
と
brown
が辞書にないとして、それらがあることを
[2, 1, 1, 3, 4, 5, 2, 6, 7]
は予告:10
次に、あなたが辞書にインデックスを持つすべての単語を置き換え、前処理への入力が必要になります、結果はこのようになります。知らない言葉。
最後にネットワークで使用するには、インデックスを埋め込みに置き換える必要があります。
[[0.689740990506, 0.834548005211], [-0.11004085279, 0.552127884563],
[-0.11004085279, 0.552127884563], [-0.7228834693, 0.633890390277],
[-1.47636106953, -0.20830548073], [1.08289425079, 0.211504860598],
[0.689740990506, 0.834548005211], [-0.626065160814, 0.505306007423],
[1.91239085331, -0.102223754095]]
しかし、lstmと彼のゲートとアクティベーション機能がどのように考慮されていますか?あなたが言ったすべてのものは、最初の層で起こった?? – dan
私はChristoper Olahのブログを読むことをお勧めします。彼はlstms http://colah.github.io/posts/2015-08-Understanding-LSTMs/を含むニューラルネットワークの深い説明を本当によくしています。 –
あなたは、ニューラルネットワーク層を、目的関数にもっと適した、別の表現へのベクトルの変換と考えることができます。ネットワークが非常に深い場合は、ネットワークの大部分が特徴抽出を行い、最後の部分だけが実際の目的(分類、回帰など)を行います。 'word2vec'は、ネットワークが同じ効果を達成するために必要なトレーニング/容量の量を減らすために、フィーチャーエンジニアリングの一部をあらかじめ行うだけです。 –