Каковы ваши it
данные и как они подготовлены? (Например, что делает print(iter(it).next())
, особенно если вы вызываете его дважды подряд?)
Вызвав train()
100 раз, а также сохранив значение по умолчанию model.iter
из 5, вы фактически делаете 500 проходов по данным. И первые 5 проходов будут использовать train()
s, внутреннее, эффективное alpha
-управление, чтобы постепенно снижать скорость обучения до заявленного вами min_alpha
значения. Тогда ваши следующие 495 проходов будут проходить по вашим собственным неуклюже управляемым альфа-скоростям, сначала возвращайтесь к отметке 0.025
, а затем понижайте каждую партию из 5, пока не достигнете 0.005
.
Ничего из этого не является хорошей идеей. Вы можете просто позвонить train()
один раз, передав ему желаемый номер epochs
. Типичное количество эпох в опубликованных работах - 10-20. (Немного больше может помочь с небольшим набором данных, но если вы считаете, что вам нужны сотни, возможно, что-то еще не так с данными или настройкой.)
Если это небольшой объем данных, вы не получите очень интересных Word2Vec
/ Doc2Vec
результатов, поскольку эти алгоритмы зависят от множества различных примеров. В опубликованных результатах, как правило, используются обучающие наборы с документами от десятков тысяч до миллионов, а каждый документ содержит не менее десятков, но предпочтительно сотен слов. С меньшими наборами данных иногда вы можете получить адекватные результаты, используя больше тренировочных проходов и меньшие векторы. Также использование более простого режима PV-DBOW (dm=0
) может помочь с небольшими корпусами / документами.
Значения, сообщаемые most_similar()
, не являются «процентами» подобия. Это значения косинусоподобия от -1,0 до 1,0, и их абсолютные значения менее важны, чем относительные ранги различных результатов. Так что не должно иметь значения, если будет много результатов с> 0,9 сходствами - если эти документы больше похожи на документ запроса, чем те, которые находятся ниже в рейтинге.
Таким образом, проверка на отдельные документы, предложенные как наиболее похожие, является настоящим испытанием. Если они кажутся бессмыслицей, скорее всего, есть проблемы с вашими данными, их подготовкой или параметрами обучения.
Для наборов данных с достаточным количеством реального текста на естественном языке обычно более высокие значения min_count
дают лучшие результаты. В реальном тексте, как правило, много низкочастотных слов, которые не подразумевают сильных вещей без множества других примеров, и, следовательно, сохранение их во время обучения служит шумом, делающим модель менее сильной.