对于自然语言处理(NLP)任务,人们经常使用word2vec向量作为单词的嵌入。但是我仍然不明白word2vec模型如何与lstm模型集成?
在使用长期短期(LSTM)网络建模NLP任务(如情绪预测)时,如何处理此类未知单词?
答案 0 :(得分:1)
要使用文本数据作为神经网络的输入,您需要将其转换为数字,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
然后你需要预处理输入,用字典中的索引替换每个单词,结果如下:
[2, 1, 1, 3, 4, 5, 2, 6, 7]
请注意,由于quick
和brown
不在字典中,因此这些都是未知单词。
最后要在网络中使用它,您需要使用嵌入替换索引。
[[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]]