我正在尝试doc2vec处理600000行句子,我的代码如下:
model = gensim.models.doc2vec.Doc2Vec(size= 100, min_count = 5,window=4, iter = 50, workers=cores)
model.build_vocab(res)
model.train(res, total_examples=model.corpus_count, epochs=model.iter)
#len(res) = 663406
#length of unique words 15581
print(len(model.wv.vocab))
#length of doc vectors is 10
len(model.docvecs)
# each of length 100
len(model.docvecs[1])
我如何解释这个结果?为什么向量的长度只有10,每个向量的大小是100?当'res'的长度为663406时,它没有意义。我知道这里出了点问题。在
在Understanding the output of Doc2Vec from Gensim package中,他们提到docvec的长度是由不清楚的‘size’决定的。在
TaggedDocument
的tags
应该是一个标记列表。如果您改为提供字符串,如tags='73215'
,那么它将被视为与字符列表相同:最后,你的整个训练集中只有10个标签,只有10个不同组合的数字。在
你的
len(model.docvec[1])
是100,这意味着你在构造你的TaggedDocument
训练数据时并没有犯这个错误,但可能是类似的错误。在查看
res
中的第一项,看看它的tags
属性是否有意义,以及model.docvecs
中的每一项,看看使用了什么而不是您想要的。在相关问题 更多 >
编程相关推荐