Я генерирую Doc2Vec для встраивания DataFrame Pandas, следуя предоставленным инструкциям здесь
from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedDocument
from gensim.test.test_doc2vec import ConcatenatedDoc2Vec
import gensim.models.doc2vec
from collections import OrderedDict
import pandas as pd
import numpy as np
cube_embedded = # pandas cube
# convert the cube to documents
alldocs = [TaggedDocument(doc, [i]) for i, doc in enumerate(cube_embedded.values.tolist())]
# train models
simple_models = [
# PV-DBOW plain
Doc2Vec(dm=0, vector_size=100, negative=5, hs=0, min_count=2, sample=0, epochs=20, workers=cores),
# PV-DM w/ default averaging; a higher starting alpha may improve CBOW/PV-DM modes
Doc2Vec(dm=1, vector_size=100, window=10, negative=5, hs=0, min_count=2, sample=0, epochs=20, workers=cores, alpha=0.05, comment='alpha=0.05'),
# PV-DM w/ concatenation - big, slow, experimental mode window=5 (both sides) approximates paper's apparent 10-word total window size
Doc2Vec(dm=1, dm_concat=1, vector_size=100, window=5, negative=5, hs=0, min_count=2, sample=0, epochs=20, workers=cores),
]
for d2v_model in simple_models:
d2v_model.build_vocab(alldocs)
d2v_model.train(alldocs, total_examples=d2v_model.corpus_count, epochs=d2v_model.epochs)
models_by_name = OrderedDict((str(d2v_model), d2v_model) for d2v_model in simple_models)
models_by_name['dbow+dmm'] = ConcatenatedDoc2Vec([simple_models[0], simple_models[1]])
models_by_name['dbow+dmc'] = ConcatenatedDoc2Vec([simple_models[0], simple_models[2]])
Учитывая вектор документа V, если я пытаюсь вывести наиболее похожие документы на вектор документа V из модели ConcatenatedDocvecs, я получаю следующую ошибку:
V = np.random.rand(200)
models_by_name['dbow+dmc'].docvecs.most_similar([V])
AttributeError: 'ConcatenatedDocvecs' object has no attribute 'most_similar'
Конечно, я не могу использовать простые модели для вывода похожих документов, так как полученные вложения векторов имеют размер 100 (а не 200, как у конкатенированных векторов).
Как получить список наиболее похожих документов для вектора документа из модели ConcatenatedDocvecs?