Убедитесь, что gensim генерирует одну и ту же модель Word2Vec для разных прогонов с одними и теми же данными.
ВМодель LDA генерирует разные темы каждый раз, когда я тренируюсь в одном корпусе. , установивnp.random.seed(0)
модель LDA всегда будет инициализироваться и обучаться одинаково.
То же самое для моделей Word2Vec изgensim
? Если установить случайное начальное число на постоянное, будет ли другой прогон одного и того же набора данных производить одну и ту же модель?
Но как ни странно, он уже дает мне один и тот же вектор в разных случаях.
>>> from nltk.corpus import brown
>>> from gensim.models import Word2Vec
>>> sentences = brown.sents()[:100]
>>> model = Word2Vec(sentences, size=10, window=5, min_count=5, workers=4)
>>> model[word0]
array([ 0.04985042, 0.02882229, -0.03625415, -0.03165979, 0.06049283,
0.01207791, 0.04722737, 0.01984878, -0.03026265, 0.04485954], dtype=float32)
>>> model = Word2Vec(sentences, size=10, window=5, min_count=5, workers=4)
>>> model[word0]
array([ 0.04985042, 0.02882229, -0.03625415, -0.03165979, 0.06049283,
0.01207791, 0.04722737, 0.01984878, -0.03026265, 0.04485954], dtype=float32)
>>> model = Word2Vec(sentences, size=20, window=5, min_count=5, workers=4)
>>> model[word0]
array([ 0.02596745, 0.01475067, -0.01839622, -0.01587902, 0.03079717,
0.00586761, 0.02367715, 0.00930568, -0.01521437, 0.02213679,
0.01043982, -0.00625582, 0.00173071, -0.00235749, 0.01309298,
0.00710233, -0.02270884, -0.01477827, 0.01166443, 0.00283862], dtype=float32)
>>> model = Word2Vec(sentences, size=20, window=5, min_count=5, workers=4)
>>> model[word0]
array([ 0.02596745, 0.01475067, -0.01839622, -0.01587902, 0.03079717,
0.00586761, 0.02367715, 0.00930568, -0.01521437, 0.02213679,
0.01043982, -0.00625582, 0.00173071, -0.00235749, 0.01309298,
0.00710233, -0.02270884, -0.01477827, 0.01166443, 0.00283862], dtype=float32)
>>> exit()
alvas@ubi:~$ python
Python 2.7.11 (default, Dec 15 2015, 16:46:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from nltk.corpus import brown
>>> from gensim.models import Word2Vec
>>> sentences = brown.sents()[:100]
>>> model = Word2Vec(sentences, size=10, window=5, min_count=5, workers=4)
>>> word0 = sentences[0][0]
>>> model[word0]
array([ 0.04985042, 0.02882229, -0.03625415, -0.03165979, 0.06049283,
0.01207791, 0.04722737, 0.01984878, -0.03026265, 0.04485954], dtype=float32)
>>> model = Word2Vec(sentences, size=20, window=5, min_count=5, workers=4)
>>> model[word0]
array([ 0.02596745, 0.01475067, -0.01839622, -0.01587902, 0.03079717,
0.00586761, 0.02367715, 0.00930568, -0.01521437, 0.02213679,
0.01043982, -0.00625582, 0.00173071, -0.00235749, 0.01309298,
0.00710233, -0.02270884, -0.01477827, 0.01166443, 0.00283862], dtype=float32)
Правда ли, что случайное начальное число по умолчанию фиксировано? Если да, то каково число случайных семян по умолчанию? Или это потому, что я тестирую небольшой набор данных?
Если это правда, что случайное начальное число является фиксированным, и различные прогоны с одними и теми же данными возвращают одни и те же векторы, ссылка на канонический код или документацию будет очень полезна.