Python 的 Spark 中每个文档的 TFIDF 稀疏向量值的总和

Summation of TFIDF sparse vector values for each document in Spark with Python

我使用 Pyspark 的 HashingTF 和 IDF 计算了 3 个示例文本文档的 TFIDF,得到了以下 SparseVector 结果:

(1048576,[558379],[1.43841036226])
(1048576,[181911,558379,959994],  [0.287682072452,0.287682072452,0.287682072452])
(1048576,[181911,959994],[0.287682072452,0.287682072452])

如何计算文档中所有术语的 TFIDF 值之和。 例如。 (0.287682072452 + 0.287682072452) 用于 3d 文档。

IDF 的输出只是一个 PySpark SparseVector 当它暴露于 Python 并且它的值是标准 NumPy array 所以你只需要 sum 电话:

from pyspark.mllib.linalg import SparseVector

v = SparseVector(1048576,[181911,959994],[0.287682072452,0.287682072452])
v.values.sum()
## 0.57536414490400001

或超过 RDD:

rdd = sc.parallelize([
  SparseVector(1048576,[558379],[1.43841036226]),
  SparseVector(1048576, [181911,558379,959994],  
      [0.287682072452,0.287682072452,0.287682072452]),
  SparseVector(1048576,[181911,959994],[0.287682072452,0.287682072452])])

rdd.map(lambda v: v.values.sum())