gensim.similities.Sdentifity.save () и load () не работает и дает странные результаты после сохранения и загрузки как модели, так и индекса - PullRequest
0 голосов
/ 05 февраля 2019

Следуя инструкции на веб-сайте 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])

Оба приведенных выше оператора печати дают очень разныеРезультаты.Пожалуйста, помогите мне.

...