我正在尝试使用Apache Spark(使用Scala)中的一组正面和负面词来对某些评论数据进行一些情绪分析。我是Scala的新手,所以需要一些帮助。该计划如下:
读取RDD中的正/负。
val pos_words = sc.textFile("D:/spark4/mydata/pos-words.txt")
val neg_words = sc.textFile("D:/spark4/mydata/neg-words.txt")
将评论读入RDD
val dataFile = sc.textFile("D:/spark4/mydata/review_data.txt")
val reviews = dataFile.map(_.replaceAll("[^a-zA-Z\\s]", "").trim().toLowerCase())
将评论平面化为单个单词
val words = reviews.flatMap(_.split(" "))
现在有一种方法可以在单词RDD的Map函数中使用pos_words和neg_words,并为Review RDD的每条记录分配所有正面单词和负面单词的计数。
所需的输出将是
<Review Text 1>,<#PosWordCount>,<#NegWordCount>
xxxxxxxxxxxxxx,20,10
yyyyyyyyyyyyyy,5,30
非常感谢任何帮助。
答案 0 :(得分:0)
为此,您需要将正面和负面词典分发给群集中的所有执行程序。想要小而且适合记忆。我假设您的评论可能是一个更大的RDD,您想要分发。所以:
pos_words.collect().asSet
将您的词典提取到一个集合。 reviews.map(f)