저는 Spark 인프라가 처음이므로이 질문이 어리석은 일이 될 수 있습니다. 나는 텍스트 분류를 위해 mllib을 사용한다. 트레이닝을 위해 MultinomialNaiveBayes 분류기에 제공하는 라벨이있는 일련의 문장이 있습니다. 나는 그 예를 발견했다.Spark mllib 스칼라로 분류하기
수요일 12월 31일 23시 13분 30초 0000 2014,1, 지출 새로운 년 이브, 0
수요일 12월 31일 23시 14분 :
내 입력이 양식에 있습니다 37 +0000 2014,1, 굵은 천사 0
물 십이 31 23시 14분 53초 +0000 2014,1 로렌 좋은 보내기 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, 현재 31 23시 3분 23초 0,000 2,014 수요일 년 12 널 (null)에 DJVINCE1 새해 카운트 다운 믹스하여 8까지!, 0, 중립, 널 (null), djvince
16800, 수요일 12월 31일 23 : 이제 새 해 이브 카운트 다운 믹스까지
이 같은 출력을 얻기 위해이 입력에 생산 된 라벨을 매핑 할 수있는 방법 : 03 : 23 +0000 2014, null, DJVINCE1, 새해 전야 카운트 다운 믹스로 8 시까 지!, 0, 뉴트럴, null, 새해 전날 카운트 다운 믹스, 라벨 {0,1}
val parsedData = testing.map { line => val parts = line.split(',') val text = parts(7).split(' ') (line, htf.transform(text)) }
그런 그들을 분류에 공급 다시 튜플을 만들 : 그것이 내가해야 할 일을했을 모든 보인다
'LabeledPoint'가 전혀 필요하지 않습니다. 'NaiveBayesModel.predict'는'RDD [Vector]'또는'Vector' 중 하나를 취합니다. – zero323
해시 함수는 필자가 사용하는 벡터를 생성합니다. 왜냐하면 제 경우에는 두배가 아닌 단어를 다루기 때문입니다. –
그러나 여전히 'LabeledPoint'는 필요하지 않습니다. – zero323