Я хотел посмотреть, смогу ли я просто установить новые веса для Word2Vec от gensim без обучения. Я получил набор данных 20 News Group из scikit-learn (из sklearn.datasets import fetch_20newsgroups) и обучил его экземпляру Word2Vec:
model_w2v = models.Word2Vec(sg = 1, size=300)
model_w2v.build_vocab(all_tokens)
model_w2v.train(all_tokens, total_examples=model_w2v.corpus_count, epochs = 30)
Здесь all_tokens - это токенизированный набор данных.
Затем я создал новый экземпляр Word2Vec без обучения
model_w2v_new = models.Word2Vec(sg = 1, size=300)
model_w2v_new.build_vocab(all_tokens)
и установите вложения нового Word2Vec равным первому
model_w2v_new.wv.vectors = model_w2v.wv.vectors
Большинство функций работают должным образом, например,
model_w2v.wv.similarity( w1='religion', w2 = 'religions')
> 0.4796233
model_w2v_new.wv.similarity( w1='religion', w2 = 'religions')
> 0.4796233
и
model_w2v.wv.words_closer_than(w1='religion', w2 = 'judaism')
> ['religions']
model_w2v_new.wv.words_closer_than(w1='religion', w2 = 'judaism')
> ['religions']
и
entities_list = list(model_w2v.wv.vocab.keys()).remove('religion')
model_w2v.wv.most_similar_to_given(entity1='religion',entities_list = entities_list)
> 'religions'
model_w2v_new.wv.most_similar_to_given(entity1='religion',entities_list = entities_list)
> 'religions'
Однако, Most_s Similar не работает:
model_w2v.wv.most_similar(positive=['religion'], topn=3)
[('religions', 0.4796232581138611),
('judaism', 0.4426296651363373),
('theists', 0.43141329288482666)]
model_w2v_new.wv.most_similar(positive=['religion'], topn=3)
>[('roderick', 0.22643062472343445),
> ('nci', 0.21744996309280396),
> ('soviet', 0.20012077689170837)]
Что мне не хватает?
Отказ от ответственности. Я разместил этот вопрос на datascience.stackexchange , но не получил ответа, надеясь получить здесь удачу.