如何遍历Doc2Vec模型并导出测试集全部176个向量?
批量获取Doc2Vec测试集文档向量并保存的方法
问题核心是model.infer_vector()仅支持单文档输入,直接传入列表无法批量生成向量,以下是两种高效的批量处理方案:
方案一:列表推导式快速生成所有向量
用列表推导式遍历测试集的每个文档,一次性生成全部176个向量:
from gensim.models.doc2vec import Doc2Vec model = Doc2Vec.load("d2v.model") # 提取测试集所有文档的向量 test_vectors = [model.infer_vector(doc) for doc in clean_corpus[404:]] # 验证向量数量是否符合预期 print(f"生成的测试集向量总数:{len(test_vectors)}")
方案二:循环遍历并持久化保存
如果需要直接将向量保存到文件(方便后续复用),可以用循环结合numpy或文件操作实现:
import numpy as np from gensim.models.doc2vec import Doc2Vec model = Doc2Vec.load("d2v.model") test_corpus = clean_corpus[404:] test_vectors = [] # 遍历测试集生成向量 for doc in test_corpus: # 可根据需求调整epochs参数提升向量稳定性,默认epochs=5 vec = model.infer_vector(doc, epochs=20) test_vectors.append(vec) # 保存为numpy数组(推荐,便于后续机器学习任务直接调用) np.save("test_vectors.npy", test_vectors) # 或保存为文本格式(方便查看) with open("test_vectors.txt", "w", encoding="utf-8") as f: for vec in test_vectors: f.write(" ".join(map(str, vec)) + "\n")
注意事项
- 确保测试集文档的预处理逻辑(分词、清洗、停用词过滤等)和训练集完全一致,否则会严重影响向量质量。
infer_vector()的alpha(学习率)和epochs(迭代次数)可根据实际情况调整,迭代次数越高,向量生成越稳定,但耗时也会增加。
内容的提问来源于stack exchange,提问作者user472543984
相关产品推荐
相关产品推荐

