word2vec实现训练自己的词向量及其参数详解

代码实现

from gensim.models import Word2Vec

# 准备训练数据
sentences = [['I', 'love', 'coding'],
             ['Python', 'is', 'great'],
             ['Machine', 'learning', 'is', 'fascinating']]

# 将数据传入Word2Vec中,训练Word2Vec模型
model = Word2Vec(sentences, vector_size=10, window=5, min_count=1, workers=4)

# 获取词向量
word_vectors = model.wv

# 获取单个单词的词向量,比如'Python'
python_vector = word_vectors['Python']
print("词向量维度:", len(python_vector))
print("词向量Python表示:", python_vector)

#获取训练后的词表
print("模型训练后的词表:",word_vectors.index_to_key)

#获取模型训练后的每个词对应的下标
print("词表中每个词及其位置:",word_vectors.key_to_index)

# 获取每个词和其对应的词向量
print("每个词和其对应的词向量:")
for word, index in word_vectors.key_to_index.items():
    print(word,":" ,word_vectors.vectors[index])

参数详解

  • sentences:训练数据,一个包含多个句子的列表,每个句子是一个包含多个单词的列表。

  • vector_size:词向量的维度,即每个单词表示为一个多少维的向量。较大的值通常会导致更丰富的语义表示,但也需要更多的计算资源。一般来说,可以尝试使用100到300之间的值。

  • window:窗口大小,用于指定当前单词与预测单词之间的最大距离。窗口大小决定了模型将考虑多少上下文信息。较大的窗口大小可以捕捉更远的上下文关系,但可能导致模型更加稀疏。通常,窗口大小的选择取决于训练数据的特性。

  • min_count:最小词频,用于指定在训练过程中忽略频率低于此值的单词。较小的值可以过滤掉噪声单词,但也可能会过滤掉一些有用的信息。通常建议将其设置为一个合理的值,比如1或5。

  • workers:用于训练的线程数。可以利用多线程来加速训练过程。一般来说,设置为CPU核心数的值是一个合理的选择。

  • sg:模型的训练算法选择。默认值为0,表示使用CBOW(Continuous Bag of Words)算法;设为1表示使用Skip-gram算法。Skip-gram算法通常对罕见单词效果更好,而CBOW算法对常见单词和整体训练速度更快。

  • hs:层次softmax(Hierarchical Softmax)设置。默认值为0,表示使用负采样(negative sampling)。当设置为1时,模型将使用层次softmax来加速训练过程,特别适用于大型语料库。

  • negative:负采样(Negative Sampling)的数量。默认值为5-20。负采样用于近似训练中的Softmax损失函数,减少计算复杂度。较大的值可以提高训练速度,但也可能会导致模型性能下降。

  • alpha:学习率的初始值。默认值为0.025。学习率控制模型在每个训练样本上进行权重更新的速度。较大的学习率可以加快模型收敛速度,但如果设置得太大,模型可能会发散。在训练过程中,学习率会逐渐减小。

你可能感兴趣的:(人工智能,word2vec,python,人工智能)