如何使用Keras中的嵌入层将Word转换为矢量

问题描述 投票:1回答:2

我有一个单词嵌入文件,如下所示click here to see the complete file in github。我想知道生成单词嵌入的过程这样我就可以为我的个人数据集生成单词嵌入

in -0.051625 -0.063918 -0.132715 -0.122302 -0.265347 
to 0.052796 0.076153 0.014475 0.096910 -0.045046 
for 0.051237 -0.102637 0.049363 0.096058 -0.010658 
of 0.073245 -0.061590 -0.079189 -0.095731 -0.026899 
the -0.063727 -0.070157 -0.014622 -0.022271 -0.078383 
on -0.035222 0.008236 -0.044824 0.075308 0.076621 
and 0.038209 0.012271 0.063058 0.042883 -0.124830 
a -0.060385 -0.018999 -0.034195 -0.086732 -0.025636 
The 0.007047 -0.091152 -0.042944 -0.068369 -0.072737 
after -0.015879 0.062852 0.015722 0.061325 -0.099242 
as 0.009263 0.037517 0.028697 -0.010072 -0.013621 
Google -0.028538 0.055254 -0.005006 -0.052552 -0.045671 
New 0.002533 0.063183 0.070852 0.042174 0.077393 
with 0.087201 -0.038249 -0.041059 0.086816 0.068579 
at 0.082778 0.043505 -0.087001 0.044570 0.037580 
over 0.022163 -0.033666 0.039190 0.053745 -0.035787 
new 0.043216 0.015423 -0.062604 0.080569 -0.048067 
keras nlp word2vec word-embedding
2个回答
0
投票

我可以按照以下步骤将字典中的每个单词转换为上述格式:

  1. 最初用唯一整数表示字典中的每个单词
  2. 逐个取整数并执行数组([[integer]])并在下面的代码中将其作为输入数组
  3. 那么对应于整数和相应输出向量的单词可以存储到json文件中(我使用output_array.tolist()来存储json格式的向量)
import numpy as np
from keras.models import Sequential
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(dictionary_size_here, sizeof_embedding_vector, input_length= input_length_here))
input_array = array([[integer]]) #each integer is fed one by one using a loop
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)

参考

How does Keras 'Embedding' layer work?


0
投票

重要的是要了解有多种方法可以为单词生成嵌入。例如,流行的word2vec可以使用CBOW或Skip-gram生成单词嵌入。

因此,可以有多个“过程”来生成单词嵌入。生成嵌入的一种更容易理解的方法(尽管有其缺点)是使用奇异值分解(SVD)。以下简要描述这些步骤。

  1. 创建术语 - 文档矩阵。即作为行的术语和作为列出现的文档。
  2. 执行SVD
  3. 将术语的输出向量截断为n维。在上面的示例中,n = 5。

您可以使用word2vec的skipgram模型查看此链接以获取更详细的描述,以生成嵌入。 Word2Vec Tutorial - The Skip-Gram Model

有关SVD的更多信息,您可以查看thisthis

© www.soinside.com 2019 - 2024. All rights reserved.