如何对多个文件使用infer_vector?
How to use infer_vector for more than one document?
我有一个训练有素的 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
迭代不起作用。还有其他方法吗?
由于它一次只能推断一个向量,因此您将不得不在循环中多次调用它。但是您应该能够预先分配 numpy 数组,并将每个结果分配到其正确的行中。例如:
vec_df = np.array(5,50)
...然后在你的循环中...
vec_df[i] = model.infer_vector(list_of_words)
...没有进一步重新分配给 vec_df
或索引-vec_df
.
注意:
infer_vector()
需要一个词表,应该和模型的训练文本一样pre-processed/tokenized,让token最大程度匹配. (不在模型中的单词将被默默地忽略。因此,如果模型是用所有小写标记训练的,但随后您尝试 .infer_vector(['Mikey', 'REALLY', 'LIKES', 'McDonalds'])
,模型中将丢失所有那些大写单词,所有这些都将被忽略,并且生成的向量将是一个随机初始化的向量,没有执行有效的推理。)
infer_vector()
通常比默认 epochs
受益更多,尤其是对于较短的文本
我有一个训练有素的 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
迭代不起作用。还有其他方法吗?
由于它一次只能推断一个向量,因此您将不得不在循环中多次调用它。但是您应该能够预先分配 numpy 数组,并将每个结果分配到其正确的行中。例如:
vec_df = np.array(5,50)
...然后在你的循环中...
vec_df[i] = model.infer_vector(list_of_words)
...没有进一步重新分配给 vec_df
或索引-vec_df
.
注意:
infer_vector()
需要一个词表,应该和模型的训练文本一样pre-processed/tokenized,让token最大程度匹配. (不在模型中的单词将被默默地忽略。因此,如果模型是用所有小写标记训练的,但随后您尝试.infer_vector(['Mikey', 'REALLY', 'LIKES', 'McDonalds'])
,模型中将丢失所有那些大写单词,所有这些都将被忽略,并且生成的向量将是一个随机初始化的向量,没有执行有效的推理。)infer_vector()
通常比默认epochs
受益更多,尤其是对于较短的文本