如何将旧版gensim word embeddings保存为兼容新版Python的格式?
将旧版Word Embeddings转换为现代格式的步骤
假设你已经在Python 2.7.15中成功加载了词向量,以下是几种简单的转换方法,适配新版Python环境:
1. 先确认你的词向量对象类型
在Python 2.7的终端里执行以下代码,明确当前加载的是完整模型还是仅词向量:
print(type(your_embedding_object))
常见结果:
gensim.models.word2vec.Word2Vec:完整的Word2Vec模型(包含训练参数)gensim.models.keyedvectors.KeyedVectors:仅包含词和对应向量的集合
2. 选择适合的保存方法
方法一:用gensim原生格式保存(推荐,新版Python直接兼容)
如果你的对象是完整Word2Vec模型:
# 保存为gensim现代格式 your_embedding_object.save("modern_word2vec_model.gensim")
如果是仅词向量集合(KeyedVectors):
your_embedding_object.save("modern_keyed_vectors.gensim")
新版Python中加载:
安装gensim后,直接用对应方法读取:
# 加载完整模型 from gensim.models import Word2Vec model = Word2Vec.load("modern_word2vec_model.gensim") # 加载词向量集合 from gensim.models import KeyedVectors wv = KeyedVectors.load("modern_keyed_vectors.gensim")
方法二:保存为Numpy数组+词汇表(通用无依赖)
适合不需要gensim的场景,任何Python版本都能读取:
import numpy as np # 提取词汇列表和向量数组 words = list(your_embedding_object.vocab.keys()) vectors = your_embedding_object.vectors # 保存向量为npy格式(二进制,高效) np.save("word_vectors.npy", vectors) # 保存词汇表为txt文件(每行一个词) with open("vocabulary.txt", "w") as f: for word in words: f.write(word + "\n")
新版Python中加载:
import numpy as np # 读取向量和词汇表 vectors = np.load("word_vectors.npy") with open("vocabulary.txt", "r") as f: words = [line.strip() for line in f] # 转换成词-向量字典方便使用 word_to_vec = dict(zip(words, vectors))
方法三:保存为纯文本格式(跨工具兼容)
适合需要用其他语言或工具读取的场景,格式为词 向量分量1 向量分量2 ...:
import codecs # 用codecs处理编码,避免Python2.7的中文乱码问题 with codecs.open("word_embeddings.txt", "w", encoding="utf-8") as f: # 第一行写入词汇总数和向量维度 f.write(f"{len(your_embedding_object.vocab)} {your_embedding_object.vector_size}\n") # 逐行写入词和对应向量 for word in words: vec = your_embedding_object[word] vec_str = " ".join(map(str, vec)) f.write(f"{word} {vec_str}\n")
新版Python中加载:
可以用gensim快速读取,或者自己解析:
from gensim.models import KeyedVectors wv = KeyedVectors.load_word2vec_format("word_embeddings.txt", encoding="utf-8")
内容的提问来源于stack exchange,提问作者Violet
相关产品推荐
相关产品推荐

