首页 文章

来自RDD的PySpark LDA模型密集向量

提问于
浏览
0

我将我的数据设置为Apache Spark LDA模型 . 我正在进行的一个挂机是将列表转换为密集向量,因为我的RDD中有一些字母数字值 . 我在尝试运行示例代码时收到的错误是将字符串转换为float .

我知道这个错误,知道我对密集向量和浮点数的了解,但必须有一种方法将这些字符串值加载到LDA模型中,因为这是一个主题模型 .

我应该先说明我是Python和Spark的新手,所以如果我误解了某些东西,我会道歉 . 我将在下面添加我的代码 . 先感谢您!

Example

https://spark.apache.org/docs/latest/mllib-clustering.html#latent-dirichlet-allocation-lda

Code:

>>> rdd = rdd5.take(3)
[[u'11394071', u'11052103', u'11052101'], [u'11847272', u'11847272', 
u'11847272', u'11847272', u'11847272', u'11847272', u'11847272', 
u'11847272', u'11847272', u'11847272', u'999999', u'11847272', 
u'11847272', u'11847272', u'11847272', u'11847272', u'11847272', 
u'11847272', u'11847272', u'11847272', u'11847272'], [u'af1lowprm1704', 
u'af1lowprm1704', u'af1lowprm1704', u'af1lowprm1704', u'af1lowprm1704', 
u'am1prm17', u'am1prm17', u'af1highprm1704', u'af1highprm1704']]

>>> parsedData = rdd.map(lambda line: Vectors.dense([float(x) for x in 
line]))
ValueError: could not convert string to float: af1lowprm1704

Next Steps in Code Once Fixed:

# Index Document with Unique ID's
corpus = parsedData.zipWithIndex().map(lambda x: [x[1], x[0]]).cache()

# Cluster the documents into three topics using LDA
ldaModel = LDA.train(corpus, k=3)

1 回答

  • 1

    您确实误解了该示例:文件 sample_lda_data.txt 不包含文本(check it),但是已经从语料库中提取的字数矢量 . 这在示例前面的文本中指出:

    在下面的示例中,我们加载表示文档语料库的单词计数向量 .

    因此,您需要先从自己的语料库中获取这些单词计数向量,然后再继续尝试 .

相关问题