首页 文章

生成由word2vec训练的单词嵌入

提问于
浏览
1

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

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

    最初用唯一整数表示字典中的每个单词逐个取每个整数并执行数组([[integer]])并在下面的代码中将其作为输入数组给出,然后可以存储对应于整数和相应输出向量的单词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)
    

    Reference

    How does Keras 'Embedding' layer work?

  • 0

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

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

    • 创建术语 - 文档矩阵 . 即作为行的术语和作为列出现的文档 .

    • 执行SVD

    • 将术语的输出向量截断为n维 . 在上面的示例中,n = 5 .

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

    有关SVD的更多信息,请查看thisthis .

相关问题