gpt4 book ai didi

apache-spark - 如何保留 Spark HashingTF() 函数的输入键或索引?

转载 作者:行者123 更新时间:2023-12-05 00:59:11 24 4
gpt4 key购买 nike

基于 1.4 ( https://spark.apache.org/docs/1.4.0/mllib-feature-extraction.html ) 的 Spark 文档,我正在编写一个 TF-IDF 示例,用于将文本文档转换为值向量。给出的示例显示了如何做到这一点,但输入是没有键的 token RDD。这意味着我的输出 RDD 不再包含索引或键来引用原始文档。这个例子是这样的:

documents = sc.textFile("...").map(lambda line: line.split(" "))

hashingTF = HashingTF()
tf = hashingTF.transform(documents)

我想做这样的事情:
documents = sc.textFile("...").map(lambda line: (UNIQUE_LINE_KEY, line.split(" ")))

hashingTF = HashingTF()
tf = hashingTF.transform(documents)

并得到结果 tf变量包含 UNIQUE_LINE_KEY值某处。我只是错过了一些明显的东西吗?从示例看来,没有好的方法可以链接 document RDD 与 tf RDD。

最佳答案

我也遇到了同样的问题。在文档的示例中,他们鼓励您直接在 RDD 上应用转换。

但是,您可以对向量本身应用转换,这样您就可以以任何方式保留 key 。

val input = sc.textFile("...")
val documents = input.map(doc => doc -> doc.split(" ").toSeq)

val hashingTF = new HashingTF()
val tf = documents.mapValues(hashingTF.transform(_))
tf.cache()
val idf = new IDF().fit(tf.values)
val tfidf = tf.mapValues(idf.transform(_))

请注意,此代码将产生 RDD[(String, Vector)] 而不是 RDD[Vector]

关于apache-spark - 如何保留 Spark HashingTF() 函数的输入键或索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com