如何获得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) 个标记 - a
、b
和 c
:
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 次的每个词都不会被代表;减少这个数字会产生更多的向量。
我在 pyspark 中有一个预训练的 word2vec 模型,我想知道它的词汇量有多大(也许可以得到词汇表中的单词列表)。 这可能吗?我猜它必须存储在某个地方,因为它可以预测新数据,但我在 documentation.
中找不到明确的答案我尝试了 w2v_model.getVectors().count()
,但结果 (970) 对于我的用例来说似乎太小了。如果它可能相关,我使用的是短文本数据,我的数据集有数千万条消息,每条消息有 10 到 30/40 个单词。我正在使用 min_count=50
.
不太清楚为什么你怀疑 .getVectors().count()
的结果,它确实给出了你想要的结果,如你自己提供的 documentation link 所示。
这是那里发布的示例,词汇表只有三 (3) 个标记 - a
、b
和 c
:
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 次的每个词都不会被代表;减少这个数字会产生更多的向量。