gensim word2vec: найти количество слов в словаре

После обучения модели word2vec с использованием gensim python, как определить количество слов в словарный запас модели?


person hlin117    schedule 24.02.2016    source источник


Ответы (3)


Словарь находится в поле vocab свойства wv модели Word2Vec в качестве словаря, причем каждый из ключей представляет собой токен (слово). Так что это обычный Python для получения длины словаря:

len(w2v_model.wv.vocab)

(В более старых версиях gensim до 0.13, vocab отображалось непосредственно на модели. Таким образом, вы должны использовать w2v_model.vocab вместо w2v_model.wv.vocab.)

person gojomo    schedule 26.02.2016
comment
Кажется, не подходит для версии 4 - person 001001; 28.01.2021
comment
См. Примечания по миграции Gensim 4: github.com/RaRe-Technologies/ gensim / wiki / - person gojomo; 28.01.2021

Еще один способ узнать размер словаря - это использовать саму матрицу вложения, как показано ниже:

In [33]: from gensim.models import Word2Vec

# load the pretrained model
In [34]: model = Word2Vec.load(pretrained_model)

# get the shape of embedding matrix    
In [35]: model.wv.vectors.shape
Out[35]: (662109, 300)

# `vocabulary_size` is just the number of rows (i.e. axis 0)
In [36]: model.wv.vectors.shape[0]
Out[36]: 662109
person kmario23    schedule 26.02.2019

Ответ Gojomo поднимает AttributeError для Gensim 4.0.0+.

Для этих версий вы можете получить длину словаря следующим образом:

len(w2v_model.wv.index_to_key)

(что немного быстрее, чем: len(w2v_model.wv.key_to_index))

person Emil    schedule 22.06.2021