如何使用Word2vec生成自变量(X)?

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

我有一个电影评论数据集,该数据集有两列Review(Sentences)和Sentiment(1或0)。

我想使用word2vec进行嵌入并使用CNN进行分类来创建分类模型。

我一直在youtube上寻找教程,但它们所做的只是为每个单词创建矢量,并向我展示相似的单词。像这样-

model= gensim.models.Word2Vec(cleaned_dataset, min_count = 2,  size = 100, window = 5)     
words= model.wv.vocab
simalar= model.wv.most_similar("bad")

我已经有了我的因变量(y),这是我的'情感'栏,我需要的是可以传递给CNN模型的自变量(X)。

[在使用word2vec之前,我使用了单词袋(BOW)模型,该模型生成了一个稀疏矩阵,这是我的自变量(X)。如何使用word2vec实现类似的功能?

如果我做错了,请纠正我。

python word2vec sentiment-analysis
1个回答
0
投票

要获取单词向量,您必须执行以下操作:

model['word_that_you_want'] 

如果您在模型中找不到给定的单词,您可能还想处理可能出现的KeyError。您可能还想读一下embedding layer是什么,它通常用作神经网络的第一层(通常用于NLP),基本上是一个单词到其对应单词矢量的查找映射。

要获取整个句子的单词向量,您首先需要将零的一个numpy数组初始化为所需的维度。

您需要其他变量,例如最长句子的长度,以便可以将所有句子填充到该长度。 Keras的pad_sequences方法的文档是here

获得单词向量的句子的简单示例是:

import numpy as np

embedding_matrix = np.zeros((vocab_len, size_of_your_word_vector))

如果遍历嵌入矩阵的索引并添加到​​它,如果在模型中找到单词向量,则添加到它。

[我使用这个resource,其中有很多示例,我从那里的代码中引用(有时我自己也使用过它:):

embedding_matrix = np.zeros((vocab_length, 100))
for word, index in word_tokenizer.word_index.items():
    embedding_vector = embeddings_dictionary.get(word)
    if embedding_vector is not None:
        embedding_matrix[index] = embedding_vector

我希望这会有所帮助。

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