2013-03-24 5 views
1

У меня есть карта [String, String], в которой последняя пара ключей, это значение «Текст» -> Текст документов. Я хочу рассчитать количество каждого слова в документе, и я думал о наличии другой карты с количеством слов в каждом документе. У меня есть карта, подобная Map («id» -> 12, «text» -> «Собака любит кошку»), и я пытаюсь получить другую карту, которая является Map («The» -> 2, «dog» -> 1, «любит» -> 1, «кошки» -> 1) у меня есть следующий код:Scala количество слов на карте

val Counts = mutable.Map[String, Int]().withDefault(x=>0) 
var tfCounts:Map[String,Int]() 
for(i<-1 to newsMap.size){ 
    val tfMap = newsMap.get("newsText").slice(i-1,i).map(x => x.split("\\s+")).toList 
    for(token<-tfMap) 
     counts(token) +=1 
    tfCounts = tfCounts++ counts 
} 

Я не знаю, как сбросить отсчеты карту, потому что я хочу, отдельные счетчики слов для каждого документа.

ответ

3
scala> val document = Map("id"->12,"text"->"The dog likes the cat") 
document: scala.collection.immutable.Map[String,Any] = Map(id -> 12, text -> The dog likes the cat) 

scala> document("text").asInstanceOf[String].split(" ").groupBy(_.toLowerCase).mapValues(_.size) 
res3: scala.collection.immutable.Map[String,Int] = Map(cat -> 1, dog -> 1, likes -> 1, the -> 2) 
Смежные вопросы