我在 pyspark 中有一個預訓練的 word2vec 模型,我想知道它的詞匯量有多大(也許會得到詞匯表中的單詞串列)。這可能嗎?我猜它必須存盤在某個地方,因為它可以預測新資料,但我在檔案中找不到明確的答案。
我試過w2v_model.getVectors().count()了,但結果(970)對于我的用例來說似乎太小了。如果它可能相關,我使用的是短文本資料,我的資料集有數千萬條訊息,每條訊息都有 10 到 30/40 個單詞。我正在使用min_count=50.
uj5u.com熱心網友回復:
不太清楚為什么您懷疑 的結果.getVectors().count(),這確實給出了預期的結果,如您自己提供的檔案鏈接中所示。
這是那里發布的示例,詞匯表只有三 (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 次的每個單詞都不會被表示;減少這個數字將導致更多的向量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/416633.html
標籤:
下一篇:編碼分類資料問題
