在预训练模型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属性添加新的词向量。最后保存新的模型。

注意: 在添加新的词向量时,需要确保与预训练模型的词向量维度一致。

使用Gensim添加新的词向量到预训练模型

原文地址: https://www.cveoy.top/t/topic/oojJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录