如何获得word2vec的词汇量?

How to get vocabulary size of word2vec?

我在 pyspark 中有一个预训练的 word2vec 模型,我想知道它的词汇量有多大(也许可以得到词汇表中的单词列表)。 这可能吗?我猜它必须存储在某个地方,因为它可以预测新数据,但我在 documentation.

中找不到明确的答案

我尝试了 w2v_model.getVectors().count(),但结果 (970) 对于我的用例来说似乎太小了。如果它可能相关,我使用的是短文本数据,我的数据集有数千万条消息,每条消息有 10 到 30/40 个单词。我正在使用 min_count=50.

不太清楚为什么你怀疑 .getVectors().count() 的结果,它确实给出了你想要的结果,如你自己提供的 documentation link 所示。

这是那里发布的示例,词汇表只有三 (3) 个标记 - abc

from pyspark.ml.feature import Word2Vec

sent = ("a b " * 100 + "a c " * 10).split(" ") # 3-token vocabulary
doc = spark.createDataFrame([(sent,), (sent,)], ["sentence"])
word2Vec = Word2Vec(vectorSize=5, seed=42, inputCol="sentence", outputCol="model")
model = word2Vec.fit(doc)

所以,毫不奇怪,它是

model.getVectors().count()
# 3

并要求向量本身

model.getVectors().show()

给予

+----+--------------------+
|word|              vector|
+----+--------------------+
|   a|[0.09511678665876...|
|   b|[-1.2028766870498...|
|   c|[0.30153277516365...|
+----+--------------------+

在你的例子中,min_count=50,在你的语料库中出现少于 50 次的每个词都不会被代表;减少这个数字会产生更多的向量。