Python 将生成的TFIDF稀疏向量链接到Spark中的原始文档
我正在使用Spark和Python计算TFIDF,使用以下代码:Python 将生成的TFIDF稀疏向量链接到Spark中的原始文档,python,apache-spark,pyspark,tf-idf,apache-spark-mllib,Python,Apache Spark,Pyspark,Tf Idf,Apache Spark Mllib,我正在使用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.438410
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稀疏向量链接到原始文档,知道我不关心将哈希键反转为原始项。因为
文档和TFIDF
具有相同的形状(分区数、每个分区的元素数)而且没有需要洗牌的操作,您只需zip
两个RDD即可:
documents.zip(tfidf)
反转哈希是不可能的。我可以控制分区的数量,但如何控制每个分区的元素数量?您不能。好。。。您可以应用不同的低级转换,但无法直接实现。这就是为什么zip
仅适用于像这样的有限情况。否则你需要唯一的标识符和连接。啊,标识符和连接,这对我来说是一个很好的观点,我的文档中有一个标识符。但是我如何强制执行上面的代码以将其包含在tfidf RDD中?