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

时间:2018-03-29 11:30:25

标签: keras nlp word2vec word-embedding

我有一个单词嵌入文件,如下所示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 

2 个答案:

答案 0 :(得分:0)

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

  
      
  1. 最初用唯一整数
  2. 表示字典中的每个单词   
  3. 逐个取每个整数并执行数组([[integer]])并在下面的代码中将其作为输入数组提供
  4.   
  5. 然后可以将对应于整数和相应输出向量的单词存储到json文件中(我使用output_array.tolist()来存储json格式的向量)
  6.   
{{1}}

<强>参考

How does Keras 'Embedding' layer work?

答案 1 :(得分:0)

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

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

  1. 创建术语 - 文档矩阵。即作为行的术语和作为列出现的文档。
  2. 执行SVD
  3. 将术语的输出向量截断为n维。在上面的示例中,n = 5。
  4. 您可以使用word2vec的skipgram模型查看此链接以获取更详细的说明,以生成嵌入。 Word2Vec Tutorial - The Skip-Gram Model

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