我正在尝试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的长度由“大小”决定,这一点并不清楚。
答案 0 :(得分:2)
tags
的{{1}}应该是一个标记列表。如果您改为提供字符串,例如TaggedDocument
,则会将其视为与字符列表相同:
tags='73215'
最后,您的整个训练集中只有10个标签,只有10个不同组合的数字。
您的tags=['7', '3', '2', '1', '5']
为100表示您在构建len(model.docvec[1])
训练数据时没有完全出现此错误,但可能类似。
查看TaggedDocument
中的第一项,查看其res
属性是否合理,以及tags
中的每一项,以查看正在使用的内容而不是您想要的内容。< / p>