我正在尝试创建一种算法,该算法能够显示类似于特定文档的前 n 个文档。为此,我使用了 gensim doc2vec。代码如下:
model = gensim.models.doc2vec.Doc2Vec(size=400, window=8, min_count=5, workers = 11,
dm=0,alpha = 0.025, min_alpha = 0.025, dbow_words = 1)
model.build_vocab(train_corpus)
for x in xrange(10):
model.train(train_corpus)
model.alpha -= 0.002
model.min_alpha = model.alpha
model.train(train_corpus)
model.save('model_EN_BigTrain')
sims = model.docvecs.most_similar([408], topn=10)
sims var 应该给我 10 个元组,第一个元素是文档的 id,第二个元素是分数。问题是某些 id 与我的训练数据中的任何文档都不对应。
一段时间以来,我一直在尝试从我的训练数据中没有的 id 中理解,但我没有看到任何逻辑。
Ps:这是我用来创建我的 train_corpus 的代码
def readData(train_corpus, jData):
print("The response contains {0} properties".format(len(jData)))
print("\n")
for i in xrange(len(jData)):
print "> Reading offers from Aux array"
if i % 10 == 0:
print ">>", i, "offers processed..."
train_corpus.append(gensim.models.doc2vec.TaggedDocument(gensim.utils.simple_preprocess(jData[i][1]), tags=[jData[i][0]]))
print "> Finished processing offers"
作为辅助数组的每个位置,位置 0 是一个数组,位置 0 是一个 int(我想成为 id),位置 1 是一个描述
提前致谢。