Экземпляры Gensim KeyedVectors
(общий интерфейс наборов слов-векторов) содержат метод init_sims()
, который внутренне вычисляет нормализованные векторы единичной длины, используя собственную векторную операцию для скорости.
Когда определенные операции, которые обычно выполняются с единично нормализованными векторами, предпринимаются в первый раз, этот init_sims()
будет автоматически вызываться, и модель кэширует нормализованные векторы в свойстве модели (vectors_norm
), что примерно удваивает потребление ОЗУ.
После его вызова вы можете получить доступ к нормированным векторам с помощью метода .word_vec()
:
normed_wv = kv_model.word_vec(word, use_norm=True)
Если вы уверены, что вам не понадобятся необработанные, ненормированные векторы, вы также можете сами вызвать init_sim()
с необязательным параметром replace
. Затем нормированные векторы будут затирать необработанные векторы на месте, экономя дополнительную оперативную память. Например:
kv_model.init_sims(replace=True)
Обратите внимание, что хотя в таких задачах, как нахождение ближайших соседей слова, как в обычной операции most_similar()
, традиционно используются вектора, нормализованные по единице, иногда существуют приложения, в которых используются необработанные векторы. (Кроме того, в полной модели Word2Vec
, если вы собираетесь проводить дополнительное инкрементное обучение, это должно происходить на необработанных, а не на нормализованных векторах.)
person
gojomo
schedule
29.12.2018