word2Vec 中的 VectorSize 与 TF-IDF 中的 numFeatures 的区别

Difference between VectorSize in word2Vec and numFeatures in TF-IDF

Word2Vec中的vectorSize和[=18=中的numFeatures有什么区别]HashingTF?我指的是 class Word2VecHashingTF 在 pyspark:

WORD2VEC: class pyspark.ml.feature.Word2Vec(*, vectorSize=100, minCount=5, numPartitions=1, stepSize=0.025, maxIter=1, seed=None, inputCol=None, outputCol=None, windowSize=5, maxSentenceLength=1000)

HashingTF: class pyspark.ml.feature.HashingTF(*, numFeatures=262144, binary=False, inputCol=None, outputCol=None)

它们都是表示的维度,但值将在不同的范围内并以不同的方式发挥作用。

Word2Vec 中,每个单词都有一个 vectorSize 维度的向量 - 其中每个维度都是一个浮点数(而不是整数)。这些值将是正的和负的,并且基本上从不为零。因此,所有单词的坐标都在原点周围 space 的模糊 'cloud' 中。

因此,word2vec 向量被认为是单词的 'dense embedding':它将单词表示为更小的向量 space('embeds' 它),每个维度都在变化并且保存一些信息 ('dense')。结果,所有(在您的示例中为 100)维度将用于表示任何一个项目(单词)。

HashingTF(可能代表 'hashing term frequency' 或 'hashing trick frequency')中,许多单词的文本文档得到一个 numFeatures 维度的向量 - 其中每个维度是特定单词在文档中出现的次数的非负整数计数。

通过使用一种称为 'hashing trick' 的技术,它可以确保将任何单词(无论以前是否见过)分配(通过哈希值)到一组固定的计数桶中的一个。向量中每个维度的值是分配给一个桶的单词数。在典型情况下,许多(如果不是几乎所有)桶都是空的——因此相应维度的值为零。

因此,HashingTF 向量被视为文档的 'sparse embedding':它以大多数维度通常保持不变的方式将文档表示为较小的向量空间('embeds')零,但一小部分相关的维度子集变为非零 ('sparse')。因此,(在您的示例中为 262,144)维度可能仅由一个简短的列表表示,其中包含哪些维度非零及其值。