如何用训练好的Word2Vec模型处理目标文本并保存指定格式词向量?
没问题,我来帮你搞定这个需求!下面是具体的实现方法,包含完整代码和关键细节说明:
实现方法
我们可以分步骤完成词向量的提取与格式转换,以下是详细的解决方案:
核心步骤
- 加载你已训练好的Word2Vec模型
- 读取包含5333个词汇的目标TXT文件(默认按每行一个词汇处理,可根据实际格式调整)
- 遍历每个词汇,获取对应的词向量
- 按照你指定的字典式格式拼接内容,最终写入新的TXT文件
完整代码实现
from gensim.models import Word2Vec import numpy as np # 1. 加载已训练好的Word2Vec模型 model = Word2Vec.load('model.bin') # 2. 读取词汇文件(替换成你的词汇文件路径,假设每行一个词汇) vocab_path = "your_vocab_file.txt" with open(vocab_path, mode="r", encoding="utf-8") as f: # 过滤空行,得到干净的词汇列表 vocab_list = [line.strip() for line in f.readlines() if line.strip()] # 3. 提取词向量并按格式整理 output_items = [] for word in vocab_list: # 检查词汇是否在模型词表中,避免报错 if word in model.wv: # 将词向量转为和示例一致的array字符串格式 vec_str = str(np.array(model.wv[word])) output_items.append(f"'{word}' : {vec_str}") # 4. 拼接成目标格式的字符串 final_content = "{ " + ", ".join(output_items) + " }" # 5. 写入到输出文件(替换成你想要的保存路径) output_path = "word_vectors_result.txt" with open(output_path, mode="w", encoding="utf-8") as f: f.write(final_content) print(f"所有词向量已按要求保存到 {output_path}")
关键细节说明
- 词汇文件适配:如果你的词汇文件不是每行一个词,而是用空格/逗号分隔,可以把读取部分改成
vocab_list = f.read().split()来适配。 - 异常处理:代码里加入了
if word in model.wv的判断,防止因词汇不在训练模型中导致报错;如果你确定所有词汇都在模型词表里,可以去掉这部分。 - 格式匹配:严格按照你给出的示例格式生成内容,包括单引号包裹词汇、保留
array(...)和dtype=float32的完整标注,最终拼接成字典样式的字符串。
内容的提问来源于stack exchange,提问作者Senu Gebremichael
相关产品推荐
相关产品推荐

