词向量的定义
词向量顾名思义,就是用一个向量的形式表示一个词。
为什么这么做?机器学习任务需要把任何输入量化成数值表示,
然后通过充分利用计算机的计算能力,计算得出最终想要的结果。
词向量的一种表示方式是one-hot
步骤:
首先,统计出语料中的所有词汇,
然后,对每个词汇编号,针对每个词建立V维的向量,
向量的每个维度表示一个词,
所以,对应编号位置上的维度数值为1,其他维度全为0
这种方式存在的问题并且引发新的质疑:
1)无法衡量相关词之间的距离
2)V维表示语义空间是否有必要
#=======================================================================================================================
# 2 训练
#=======================================================================================================================
print("开始训练................ ")
model = gensim.models.Word2Vec(sentences=sentences, size=vector_size, window=5, min_count=5, workers=8, sg=0, iter=5)
print("训练完成! ")
#=======================================================================================================================
# 3 提取词汇表及vectors,并保存
#=======================================================================================================================
print(" 保存训练结果........... ")
wv = model.wv
vocab_list = wv.index2word
word_idx_dict = {}
for idx, word in enumerate(vocab_list):
word_idx_dict[word] = idx
vectors_arr = wv.vectors
vectors_arr = np.concatenate((np.zeros(vector_size)[np.newaxis, :], vectors_arr), axis=0)#第0位置的vector为'unk'的vector
f_wordidx = open(feature_path + 'word_seg_word_idx_dict.pkl', 'wb')
f_vectors = open(feature_path + 'word_seg_vectors_arr.pkl', 'wb')
pickle.dump(word_idx_dict, f_wordidx)
pickle.dump(vectors_arr, f_vectors)
f_wordidx.close()
f_vectors.close()
print("训练结果已保存到该目录下! ")
end_time = time.time()
print("耗时:{}s ".format(end_time - start_time))
---------------------
作者:大漠雄鹰科斯
来源:CSDN
原文:https://blog.csdn.net/u012914436/article/details/89132931
版权声明:本文为博主原创文章,转载请附上博文链接!