为什么我使用 gensim LSI 模型得到不同长度的向量?



我正在尝试使用 LSI 对一些描述进行聚类。由于我拥有的数据集太长,我根据从模型获得的向量进行聚类,而不是使用相似性矩阵,这需要太多内存,如果我选择一个样本,生成的矩阵不对应于正方形(这排除了使用 MDS(。

但是,在运行模型并查找向量后,我在描述中得到了不同向量的长度。它们中的大多数长度为 300(模型中num_topics参数(,但少数具有相同描述的长度为 299。

为什么会这样?有没有办法纠正它?

dictionary = gensim.corpora.Dictionary(totalvocab_lemmatized)
dictionary.compactify()
corpus = [dictionary.doc2bow(text) for text in totalvocab_lemmatized]
###tfidf model
tfidf = gensim.models.TfidfModel(corpus, normalize = True)
corpus_tfidf = tfidf[corpus]
###LSI model
lsi = gensim.models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=300)
vectors =[]
for n in lemmatized[:100]:
vec_bow = dictionary.doc2bow(n)
vec_lsi = lsi[vec_bow]
print(len(vec_lsi))

省略了显式零,这就是为什么某些向量看起来更短的原因。 来源: https://github.com/RaRe-Technologies/gensim/issues/2501

最新更新