Я использую Gensim LDA для моделирования тем, чтобы найти темы для каждого документа и проверить сходство между документами, сравнивая полученные векторы тем.Каждому документу присваивается различное количество подходящих тем, поэтому сравнение вектора (по косинусному сходству) является неправильным, поскольку требуются векторы одинаковой длины.
Это связанный код:
lda_model_bow = models.LdaModel(corpus=bow_corpus, id2word=dictionary, num_topics=3, passes=1, random_state=47)
#---------------Calculating and Viewing the topics----------------------------
vec_bows = [dictionary.doc2bow(filtered_text.split()) for filtered_text in filtered_texts]
vec_lda_topics=[lda_model_bow[vec_bow] for vec_bow in vec_bows]
for id,vec_lda_topic in enumerate(vec_lda_topics):
print ('document ' ,id, 'topics: ', vec_lda_topic)
Выходные векторы:
document 0 topics: [(1, 0.25697246), (2, 0.08026043), (3, 0.65391296)]
document 1 topics: [(2, 0.93666667)]
document 2 topics: [(2, 0.07910537), (3, 0.20132676)]
.....
Как видите, каждый вектор имеет разную длину, поэтому невозможно выполнить косинусное сходство между ними.
Я бынапример, вывод:
document 0 topics: [(1, 0.25697246), (2, 0.08026043), (3, 0.65391296)]
document 1 topics: [(1, 0.0), (2, 0.93666667), (3, 0.0)]
document 2 topics: [(1, 0.0), (2, 0.07910537), (3, 0.20132676)]
.....
Есть идеи, как это сделать?Тпй