如何将Python字典形式的预训练Word2Vec嵌入加载到Gensim?
把自定义词向量字典加载到Gensim中计算距离
别担心,这种场景完全能轻松解决!你已经有了{词: 向量}格式的字典,只需要把它转换成Gensim的KeyedVectors格式,就能直接用Gensim的内置工具计算欧氏距离(或者其他向量相似度指标)了。以下是具体步骤:
步骤1:导入必要的模块
首先确保你已经安装了Gensim,然后导入KeyedVectors类:
from gensim.models import KeyedVectors
步骤2:初始化KeyedVectors实例
先从你的字典里获取向量的维度(随便取一个向量的长度就行),然后创建KeyedVectors对象:
# 获取向量维度(假设字典非空) vector_dim = len(next(iter(w2v_dict.values()))) # 初始化KeyedVectors kv_model = KeyedVectors(vector_size=vector_dim)
步骤3:加载字典中的词向量
用add_vectors方法把字典里的词和向量批量添加到模型中:
# 提取所有词和对应的向量列表 words = list(w2v_dict.keys()) vectors = list(w2v_dict.values()) # 添加到KeyedVectors kv_model.add_vectors(words, vectors)
步骤4:计算欧氏距离
现在你就可以用Gensim的方法来计算词向量之间的欧氏距离了:
- 计算两个词的欧氏距离:
# 计算"house"和"home"的欧氏距离 euclidean_distance = kv_model.distance("house", "home") print(f"欧氏距离:{euclidean_distance}") - 计算一个词和多个词的距离:
# 计算"house"与"home"、"apartment"的距离 distances = kv_model.distances("house", ["home", "apartment"]) print(f"距离列表:{distances}")
额外:保存模型方便后续使用
如果之后还需要用到这个模型,可以把它保存成Gensim的专属格式:
kv_model.save("my_custom_word2vec.kv") # 下次加载时直接用 # kv_model = KeyedVectors.load("my_custom_word2vec.kv")
小提示
KeyedVectors是Gensim专门用来存储和操作词向量的核心类,不管是从预训练的.bin/.txt文件加载,还是像你这样自定义构建,都能支持各种向量运算——除了欧氏距离,还能算余弦相似度、找相似词等等,完全满足你的需求。
内容的提问来源于stack exchange,提问作者James Dorfman
相关产品推荐
相关产品推荐

