Если все tags
, которые вы предоставляете, являются простыми Python целыми числами, эти целые числа используются как прямые индексы в массиве векторов.
Это экономит накладные расходы на поддержание сопоставления произвольных тегов с индексами.
Но это также может привести к перераспределению массива векторов, которое будет достаточно большим для самого большого тега int вы предоставили, даже если другие нижние целые числа никогда не используются. (То есть: если вы предоставили один документ с tags=[1000000]
, он выделит массив, достаточный для тегов от 0 до 1000000, даже если большинство из них никогда не появляется в ваших обучающих данных.)
Если вы хотите, чтобы model.docvecs.doctags
собирал список всех ваших тегов, используйте строковые теги, а не простые целые числа.
Отдельно: не вызывайте train()
несколько раз в вашем собственном l oop или управляйте скоростью обучения alpha
в своем собственном коде, если у вас нет очень веских причин для этого. Это неэффективно и подвержено ошибкам. (Ваш код, например, на самом деле выполняет 200 тренировочных эпох, и если бы вы увеличили счет l oop без тщательной регулировки приращения alpha
, вы могли бы получить бессмысленные отрицательные значения alpha
- очень распространенная ошибка в коде, следующая за этой плохой практикой. Вызовите .train()
один раз с желаемым количеством эпох. Установите alpha
и min_alpha
на разумные начальные и почти нулевые значения - возможно, только значения по умолчанию, если вы не уверены в своем изменении помогает - а потом оставьте их в покое.