我在使用 Gensim 的 Doc2Vec 模型中的 most_similar 方法时遇到了麻烦。当我运行 most_similar 时,我只得到前 10 个标记文档的相似性(基于它们的标签——总是从 0-9)。对于此代码,我有 topn=5,但我使用了 topn=len(documents) 并且我仍然只获得前 10 个文档的相似度
标记文件:
tokenizer = RegexpTokenizer(r'\w+')
taggeddoc=[]
for index,wod in enumerate(model_data):
wordslist=[]
tagslist=[]
tokens = tokenizer.tokenize(wod)
td = TaggedDocument(gensim.utils.to_unicode(str.encode(' '.join(tokens))).split(), str(index))
taggeddoc.append(td)
documents=taggeddoc
Run Code Online (Sandbox Code Playgroud)
实例化模型:
model=gensim.models.Doc2Vec(documents, dm=0, dbow_words=1, iter=1, alpha=0.025, min_alpha=0.025, min_count=10)
Run Code Online (Sandbox Code Playgroud)
训练模型:
for epoch in range(100):
if epoch % 10 == 0:
print("Training epoch {}".format(epoch))
model.train(documents, total_examples=model.corpus_count, epochs=model.iter)
model.alpha -= 0.002
model.min_alpha = model.alpha
Run Code Online (Sandbox Code Playgroud)
问题在这里(我认为):
new = model_data[100].split()
new_vector = model.infer_vector(new)
sims = model.docvecs.most_similar([new_vector], topn=5) …Run Code Online (Sandbox Code Playgroud)