【发布时间】:2021-01-25 13:23:07
【问题描述】:
我创建了用于情感分析的词嵌入向量。但我不确定我写的代码。如果您在创建 Word2vec 或嵌入矩阵时发现我的错误,请告诉我。
EMBEDDING_DIM=100
review_lines = [sub.split() for sub in reviews]
model = gensim.models.Word2Vec(sentences=review_lines,size=EMBEDDING_DIM,window=6,workers=6,min_count=3,sg=1)
print('Words close to the given word:',model.wv.most_similar('film'))
words=list(model.wv.vocab)
print('Words:' , words)
file_name='embedding_word2vec.txt'
model.wv.save_word2vec_format(file_name,binary=False)
embeddings_index = {}
f=open(os.path.join('','embedding_word2vec.txt'),encoding="utf-8")
for line in f:
values =line.split()
word=values[0]
coefs=np.asarray(values[1:],dtype='float32')
embeddings_index[word]=coefs
f.close()
print("Number of word vectors found:",len(embeddings_index))
embedding_matrix = np.zeros((len(word_index)+1,EMBEDDING_DIM))
for word , i in word_index.items():
embedding_vector= embeddings_index.get(word)
if embedding_vector is not None:
embedding_matrix[i]=embedding_vector
OUTPUT:
array([[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0.1029947 , 0.07595579, -0.06583303, ..., 0.10382118,
-0.56950015, -0.17402627],
[ 0.13758609, 0.05489254, 0.0969701 , ..., 0.18532865,
-0.49845088, -0.23407038],
...,
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ]])
【问题讨论】:
-
什么是
word_index(您的代码中使用但从未声明的变量),为什么它的单词列表必须与之前的model中的单词列表匹配?当您可以使用 Gensim 的内置KeyedVectors.load_word2vec_format(FILENAME)时,您为什么要编写自己的代码来读取文件? -
单词索引变量是一个字典,包含我数据中最常用的 15000 个单词。在我的其余代码中有一个 word_index 实现。我试图在这里创建嵌入自己的单词,所以我阅读了文件,但我想这是不必要的。我不知道清晰的预训练词嵌入的优势。 KeyedVectors.load_word2vec_format (FILENAME) 我也不知道怎么用。
标签: nlp word2vec word-embedding python-embedding