Doc2Vec онлайн-обучение

Обучаю свою модель doc2vec:

data = ["Sentence 1",
        "Sentence 2",
        "Sentence 3",
        "Sentence 4"]

tagged_data = [TaggedDocument(words=word_tokenize(_d.lower()), tags[str(i)]) 
                              for i, _d in enumerate(data)]

тренировочная часть:

model = Doc2Vec(size=100, window=10, min_count=1, workers=11, alpha=0.025, 
                min_alpha=0.025, iter=20)

model.build_vocab(tagged_data, update=False)

model.train(tagged_data,epochs=model.iter,total_examples=model.corpus_count)

Сохранить модель:

model.save("d2v.model")

И это работа. Затем я хочу добавить несколько предложений к своему словарю и модели. Бывший.:

new_data = ["Sentence 5",
            "Sentence 6",
            "Sentence 7"]
new_tagged_data= 
[TaggedDocument(words=word_tokenize(_d.lower()),tags[str(i+len(data))]) 
                for i,_d in enumerate(new_data)]

И чем обновить модель:

model.build_vocab(new_tagged_data, update=True)

model.train(new_tagged_data, 
            epochs=model.iter,total_examples=model.corpus_count)

Но это не работает. Юпитер срочно отключился и ответа нет. Я использую то же самое с моделью word2vec, и она работает!

Что может быть с этим проблем?


person ctrlaltdel    schedule 04.12.2018    source источник
comment
UPD: если установить параметр hs = 0, то работает. См. radimrehurek.com/gensim/models/doc2vec.html Но как это может работать В основном?   -  person ctrlaltdel    schedule 04.12.2018


Ответы (1)


Функциональность build_vocab(..., update-True) была разработана только экспериментально в gensim для Word2Vec и не тестировалась / не отлаживалась для Doc2Vec. При попытке использовать его с Doc2Vec есть давно открытый сбой:

https://github.com/RaRe-Technologies/gensim/issues/1019

Итак, это еще не поддерживается.

Кроме того, существует множество непонятных и сложных проблем, связанных с балансом и векторной совместимостью моделей, которые постепенно обучаются таким образом, и если это вообще возможно, вам следует повторно обучите модель, используя полные старые и новые данные, смешанные вместе, вместо того, чтобы пытаться выполнять небольшие обновления.

person gojomo    schedule 04.12.2018