我是星火基础设施的新手,所以这个问题可能很傻。我使用mllib进行文本分类。我有一组带有标签的句子,我将这些句子提供给MultinomialNaiveBayes分类器进行训练。我找到了一个例子。
我的意见如下:
星期三12月31日23:13:30 +0000 2014,1,除夕,0 周三12月31日23:14:37 +0000 2014,1,大胆天使,0 星期三12月31日23:14:53 +0000 2014,1,loren good give,0
var htf = new HashingTF(2000000)
val parsedData = data.map { line =>
val parts = line.split(',')
LabeledPoint(parts(1).toDouble, htf.transform(parts(2).split(' ')))
}
val model = NaiveBayes.train(parsedData, lambda = 1.0, modelType = "multinomial")因此,我使用文本,并使用散列函数将这些术语映射到标签{0,1}。培训结束后,我希望预测未标记数据集的标签。这里开始我的实际问题。
我没有文本文档的标签,所以我无法创建LabeledPoints。我尝试将“随机”值(双)作为这样的标签(未标记的数据存储在不同的结构中,第(7)部分是这里的文本):
val testing = sc.textFile("neutralSegment.txt")
val parsedData = testing.map { line =>
val parts = line.split(',')
htf.transform(parts(7).split(' '))
}
val predictionAndLabel = parsedData.map(p => (model.predict(p)))如何将处理过的数据提取为其原始形式,包括标签?分类器产生标签,并将术语转换为双数。我只想将原始字符串与分类器产生的标签连接起来。鉴于这一投入:
16800,Wed 12月31日23:03:23 +0000 2014年,零,DJVINCE1现在到8点和你的除夕倒计时组合!!,0,中性,零,现在到新年前夜倒计时混合。
如何将所产生的标签映射到此输入以获得如下输出:
16800,Wed 12月31日23:03:23 +0000 2014年,空,DJVINCE1现在到8点和你的除夕倒计时组合!!,0,中性,空,现在到新年前夜倒计时混合,标签{0,1}
发布于 2016-09-20 14:56:29
好的,我所要做的就是创建元组,包括原始文本和哈希函数中的VectorDouble:
val parsedData = testing.map { line =>
val parts = line.split(',')
val text = parts(7).split(' ')
(line, htf.transform(text))
} 然后将它们提供给分类器,并再次创建结果的元组加上文本。现在我可以使用包含我想要的两个字段的结构。
val predictionAndLabel2 = parsedData.map(p =>
(p._1 , model.predict(p._2))
)https://stackoverflow.com/questions/39593106
复制相似问题