我有一个训练有素的doc2vec模型。现在,我必须使用infer_vector为5个文档创建向量。但是infer_vector可以一次为一个文档创建向量。我如何发送所有5个句子并附加结果以获得(5,50)数据?
def InferVector(prop,log,New_std_nested_list):
Vec_df = np.array([])
fname = (prop.get("Filepaths","Model_Saving_Path")+'model_July12_doc2vec_ELA.bin')
model = Doc2Vec.load(fname)
for i in range( 0, len(New_std_nested_list) ):
temp = New_std_nested_list[i]
vec = model.infer_vector([temp])
Vec_df = np.append(Vec_df,vec)
return Vec_df迭代不是有用的。还有别的办法吗?
发布于 2019-08-09 17:46:11
因为它一次只能推断一个向量,所以必须在一个循环中多次调用它。但是您应该能够预先分配numpy数组,并将每个结果分配到其正确的行中。例如:
vec_df = np.array(5,50)...then在你的循环里.
vec_df[i] = model.infer_vector(list_of_words)...with不再重新分配给vec_df或索引of-vec_df.
请注意:
infer_vector()需要一个单词列表,应该以与模型的训练文本相同的方式对其进行预处理/标记,以便标记在最大程度上匹配。(模型中没有的词将被默默地忽略。因此,如果模型使用所有小写标记进行了训练,但随后尝试使用.infer_vector(['Mikey', 'REALLY', 'LIKES', 'McDonalds']),那么模型中的所有大写单词都将被忽略,得到的向量将是一个未执行有效推理的随机初始化向量)。infer_vector()通常比默认的epochs更有好处,特别是对于较短的文本。https://stackoverflow.com/questions/57427459
复制相似问题