gensim word2vec:查找词汇表中的单词数
gensim word2vec: Find number of words in vocabulary
使用 python gensim 训练 word2vec 模型后,如何找到模型词汇表中的单词数?
在最近的版本中,model.wv
属性 包含单词和向量,并且本身可以报告长度 - 它包含的单词数。因此,如果 w2v_model
是您的 Word2Vec
(或 Doc2Vec
或 FastText
)模型,只需执行以下操作就足够了:
vocab_len = len(w2v_model.wv)
如果您的模型只是一组原始词向量,例如 KeyedVectors
实例而不是完整的 Word2Vec
/etc 模型,它只是:
vocab_len = len(kv_model)
Gensim 4.0+ 中其他有用的内部结构包括 model.wv.index_to_key
,每个索引位置的键(词)的简单列表,以及 model.wv.key_to_index
,一个简单的字典映射键(词)到它们的索引位置。
在pre-4.0版本中,词汇在Word2Vec模型的wv
属性的vocab
字段中,作为字典,key是每个token(单词) .所以这只是通常的 Python 来获取字典的长度:
len(w2v_model.wv.vocab)
在 0.13 之前的非常古老的 gensim 版本中 vocab
直接出现在模型上。所以回到那时你会使用 w2v_model.vocab
而不是 w2v_model.wv.vocab
.
但是如果你还在使用 Gensim 4.0 之前的任何东西,你一定要升级!有很大的内存和性能改进,并且调用代码所需的更改相对较小 – 一些重命名和移动,涵盖在 4.0 Migration Notes.
另一种获取词汇表大小的方法是从嵌入矩阵本身,如:
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
Gojomo 的回答对 Gensim 4.0.0+ 提出了 AttributeError
。
对于这些版本,您可以通过以下方式获取词汇表的长度:
len(w2v_model.wv.index_to_key)
(略快于:len(w2v_model.wv.key_to_index)
)
使用 python gensim 训练 word2vec 模型后,如何找到模型词汇表中的单词数?
在最近的版本中,model.wv
属性 包含单词和向量,并且本身可以报告长度 - 它包含的单词数。因此,如果 w2v_model
是您的 Word2Vec
(或 Doc2Vec
或 FastText
)模型,只需执行以下操作就足够了:
vocab_len = len(w2v_model.wv)
如果您的模型只是一组原始词向量,例如 KeyedVectors
实例而不是完整的 Word2Vec
/etc 模型,它只是:
vocab_len = len(kv_model)
Gensim 4.0+ 中其他有用的内部结构包括 model.wv.index_to_key
,每个索引位置的键(词)的简单列表,以及 model.wv.key_to_index
,一个简单的字典映射键(词)到它们的索引位置。
在pre-4.0版本中,词汇在Word2Vec模型的wv
属性的vocab
字段中,作为字典,key是每个token(单词) .所以这只是通常的 Python 来获取字典的长度:
len(w2v_model.wv.vocab)
在 0.13 之前的非常古老的 gensim 版本中 vocab
直接出现在模型上。所以回到那时你会使用 w2v_model.vocab
而不是 w2v_model.wv.vocab
.
但是如果你还在使用 Gensim 4.0 之前的任何东西,你一定要升级!有很大的内存和性能改进,并且调用代码所需的更改相对较小 – 一些重命名和移动,涵盖在 4.0 Migration Notes.
另一种获取词汇表大小的方法是从嵌入矩阵本身,如:
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
Gojomo 的回答对 Gensim 4.0.0+ 提出了 AttributeError
。
对于这些版本,您可以通过以下方式获取词汇表的长度:
len(w2v_model.wv.index_to_key)
(略快于:len(w2v_model.wv.key_to_index)
)