首先安装gensim, 训练或者下载别人训练好的word2vec模型
# coding=utf-8
from gensim.models import Word2Vec
from gensim.models import KeyedVectors
#model = Word2Vec.load('./model/wiki.zh.text.model') #用模型
model = KeyedVectors.load_word2vec_format('./model/wiki.zh.text.vector') # 用转换成txt的词向量文件
testwords = ['孩子', '数学', '学术', '白痴', '篮球']
for i in range(5):
res = model.most_similar(testwords[i])
print(testwords[i])
print(res)
结果如下图
对于添加新词向量并更新或修改的问题,可以按以下步骤进行:
1.首先,需要将新词转换成向量形式。可以使用word2vec提供的方法或者其他预训练好的模型进行转换,也可以使用其他方法如one-hot encoding等。比如可以使用gensim库提供的方法,示例代码如下:
from gensim.models import Word2Vec
model = Word2Vec.load("path/to/your/trained/model")
new_word = "new_word" new_vec = model.wv[new_word] # 获取新词的向量表示
2.然后,需要更新模型中的权重参数,以将新词的向量加入训练。一种简单直接的方法是直接修改模型中的权重参数,将新词的向量加入。示例代码如下:
model.wv.vectors = np.vstack((model.wv.vectors, new_vec)) model.wv.index2entity.append(new_word)
model.wv.init_sims(replace=True)
这里,将新词的向量依次加入模型的参数矩阵中,并更新模型的索引和层次结构。需要注意的是,修改后需要重新初始化模型的参数,以保证参数向量的单位长度,以及更准确地进行近似期望的计算。
3.最后,可以重新进行模型的训练,以更新所有参数矩阵,包括加入的新词向量。可以使用之前的训练数据,或者更多的数据继续训练。示例代码如下:
model.train(sentences=new_train_data, total_examples=model.corpus_count, epochs=model.iter)
这里,重新调用model.train()方法,传入新的训练数据并指定训练轮数,以更新模型的所有参数矩阵。
如果出现错误提示,可以根据具体的错误信息进行调试,如是否加载了正确的模型,是否正确获取了新词的向量等等。