【问题标题】:Linking the resulting TFIDF sparse vectors to the original documents in Spark将生成的 TFIDF 稀疏向量链接到 Spark 中的原始文档
【发布时间】:2016-06-12 08:42:39
【问题描述】:

我正在使用 Spark 和 Python 使用以下代码计算 TFIDF:

    hashingTF = HashingTF()
    tf = hashingTF.transform(documents)
    idf = IDF().fit(tf)
    tfidf = idf.transform(tf)
    for k in tfidf.collect(): 
      print(k)

我得到了三个文档的以下结果:

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

假设我有数千个文档,如何将生成的 TFIDF 稀疏向量链接到原始文档,因为我不关心将哈希键反转为原始术语。

【问题讨论】:

    标签: python apache-spark pyspark tf-idf apache-spark-mllib


    【解决方案1】:

    由于documentstfidf 具有相同的形状(分区数、每个分区的元素数)并且没有需要随机播放的操作,您可以简单地zip 两个RDD:

    documents.zip(tfidf)
    

    无法反转 HashingTF for an obvious reason

    【讨论】:

    • 我可以控制分区的数量,但如何控制每个分区的元素数量?
    • 你不能。嗯...您可以应用不同的低级转换,但没有办法直接做到这一点。这就是为什么zip 仅适用于像这样的一些有限情况。否则,您需要唯一标识符并加入。
    • 啊,标识符和加入,对我来说非常好,我的文档中有一个标识符。但是如何强制执行上面的代码将其包含在 tfidf RDD 中?
    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 2011-12-21
    • 2016-06-16
    • 2015-11-19
    • 2017-08-30
    • 2017-03-26
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多