2013-03-24 66 views
1

我有一个地图[字符串,字符串]其中最后一个键,值对是“文本” - >文档的文本。我希望计算文档中每个单词的计数,并且我正在考虑让每个文档中有单词数量的另一个映射。 我有一张地图,如地图(“id” - > 12,“文字” - >“狗喜欢猫”),我试图得到另一个地图是地图(“The” - > 2,“狗” - > 1,“喜欢” - > 1,“猫” - > 1) 我有以下代码:斯卡拉在地图中的字数

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)