我有一个文本文件,我想将其转换为共现矩阵。我已经将文件拆分为标记,并使用组合来获取单词对及其计数的列表。我是这样的:
val logData = sc.textFile(input_file, 2).cache()
val tokens = logData.map(_.split(" ").toList)
val coo = tokens.flatMap(_.combinations(2)).map((_, 1)).reduceByKey(_ + _)
我得到以下输出:
(List(garb, personae),1)
(List(chasm, dream),3)
(List(grandfathers, adulthood),1)
(List(dr, till),2)
(List(those, winds),1)
现在,我想将其转换为稀疏矩阵,所有唯一的单词都作为行和列,而计数作为值。像这样:
garb personae chasm dream ...
garb 0 1 0 0
personae 1 0 0 0
chasm 0 0 0 3
dream 0 0 3 0
...
据我了解,我可以先将字符串转换为索引,然后使用Spark的mllib创建坐标矩阵。但是,在研究了文档之后,我陷入了困境,对此一无所获。