2015-04-25 1 views
0

Вот мои данные:Получить слова и значения в скобках в Scala-Спарк

doc1: (Does,1) (just,-1) (what,0) (was,1) (needed,1) (to,0) (charge,1) (the,0) (Macbook,1) 
doc2: (Pro,1) (G4,-1) (13inch,0) (laptop,1) 
doc3: (Only,1) (beef,0) (was,1) (it,0) (no,-1) (longer,0) (lights,-1) (up,0) (the,-1) 
etc... 

и я хочу, чтобы извлечь слова и значения, а затем хранить их в двух отдельных матриц, матрица matrix_1 является (DocId слов) и matrix_2 (значения docID);

+2

, Что ваш подход/программа, которую вы работали до сих пор ?? –

+0

Все ли эти данные в 1 файле? или каждая строка в отдельном файле? – RaGe

ответ

0
input.txt 
========= 
doc1: (Does,1) (just,-1) (what,0) (was,1) (needed,1) (to,0) (charge,1) (the,0) (Macbook,1) 
doc2: (Pro,1) (G4,-1) (13inch,0) (laptop,1) 
doc3: (Only,1) (beef,0) (was,1) (it,0) (no,-1) (longer,0) (lights,-1) (up,0) (the,-1) 
val inputText = sc.textFile("input.txt") 
var digested = input.map(line => line.split(":")) 
     .map(row => row(0) -> row(1).trim.split(" ")) 
     .map(row => row._1 -> row._2.map(_.stripPrefix("(").stripSuffix(")").trim.split(","))) 

var matrix_1 = digested.map(row => row._1 -> row._2.map(a => a(0))) 
var matrix_2 = digested.map(row => row._1 -> row._2.map(a => a(1))) 

дает:

List(
    (doc1 -> Does,just,what,was,needed,to,charge,the,Macbook), 
    (doc2 -> Pro,G4,13inch,laptop), 
    (doc3 -> Only,beef,was,it,no,longer,lights,up,the) 
) 

List(
    (doc1 -> 1,-1,0,1,1,0,1,0,1), 
    (doc2 -> 1,-1,0,1), 
    (doc3 -> 1,0,1,0,-1,0,-1,0,-1) 
) 
+0

привет, я запускаю его на ItelliJ IDEA, но он имеет некоторые ошибки, я также импортировал (import breeze.linalg.Axis._), но он не мог работать –

+0

Похоже, ваш компилятор не любит стенографию. Обновлено. – RaGe

Смежные вопросы