使用Gensim添加新的词向量到预训练模型
在预训练模型model_cn中,没有'设施服务'和'舒适度'这两个词的词向量,想要使用相近的词进行词向量平均,然后添加到这个模型中便于下次使用。
KeyedVectors是用来获取词向量的,而添加新词向量需要使用KeyedVectors的父类Word2Vec。修改后的代码如下:
import numpy as np
from gensim.models import KeyedVectors, Word2Vec
# 加载预训练模型
model_cn = KeyedVectors.load_word2vec_format(r'sgns.target.word-word.dynwin5.thr10.neg5.dim300.iter5', binary=False, unicode_errors='ignore')
# 相似的词
similar_words = ['服务设施', '设施设备', '舒适性', '舒适度量表']
# 计算相似词的平均向量
similar_vectors = [model_cn[word] for word in similar_words if word in model_cn]
avg_vector = np.mean(similar_vectors, axis=0)
# 将新的词向量添加到预训练模型中
model_w2v = Word2Vec.load(r'sgns.target.word-word.dynwin5.thr10.neg5.dim300.iter5')
model_w2v.wv.add('设施服务', avg_vector)
model_w2v.wv.add('舒适度', avg_vector)
# 保存新的模型
model_w2v.save('new_model_cn.bin')
代码中,首先使用KeyedVectors加载预训练模型,然后计算相似词的平均向量。接着使用Word2Vec.load加载预训练模型,并使用其wv属性添加新的词向量。最后保存新的模型。
注意: 在添加新的词向量时,需要确保与预训练模型的词向量维度一致。
原文地址: https://www.cveoy.top/t/topic/oojJ 著作权归作者所有。请勿转载和采集!