Следуя инструкции на веб-сайте Gensim, я создал индекс, используя следующую функцию: -
def get_model_index_dict(ans_list):
Corp = list(x.lower().split() for x in ans_list)
dictionary = corpora.Dictionary(Corp)
corpus = [dictionary.doc2bow(text) for text in Corp]
tfidf = models.TfidfModel(corpus)
tfidf_corpus = tfidf[corpus]
lda = models.LdaModel(tfidf_corpus)
corpus_lda_tfidf = lda[tfidf_corpus]
index_tmpfile = get_tmpfile('index')
index = Similarity(index_tmpfile,corpus_lda_tfidf,num_features=400)
return lda,index,dictionary
Я вызываю эту функцию следующим образом со списком, содержащим 40 000 документов: -
(lda, index, dictionary) = get_model_index_dict(doc_list)
Я успешно получаю все три вещи, и они также дают хорошие результаты, и я сохраняю все три из них.
index.save("index_doc")
lda.save("lda_doc")
dictionary.save("dictionary_doc")
После сохранения я пытаюсь загрузить индекс, используя: -
from gensim.similarities import Similarity
index2 = Similarity.load("index_doc")
lda2 = Similarity.load("lda_doc")
dict2 = Similarity.load("dictionary_doc")
И СЕЙЧАС РЕЗУЛЬТАТЫ ПОЛНОСТЬЮ РАЗНЫ, даже после того, как я СОХРАНИЛ МОДЕЛЬ LDA, которую я использовал для вычисления vec_lda следующим образом: -
vec_lda = lda2[dict2.doc2bow(query.lower().split())]
print(index[vec_lda][350])
print(index2[vec_lda][350])
Оба приведенных выше оператора печати дают очень разныеРезультаты.Пожалуйста, помогите мне.