Twitter4j,kuromojiを使ってみた

Scalaの練習のためにtwitter4jとkuromojiを使ってプログラムを書いた。
指定したユーザーの直近50ツイートの中に含まれる単語の頻度を求めた。

import twitter4j._
import com.atilika.kuromoji.ipadic.Token
import com.atilika.kuromoji.ipadic.Tokenizer
import com.atilika.kuromoji.ipadic.Tokenizer.Builder
import scala.collection.JavaConverters._
import scala.collection.mutable.Buffer


object Main {
   def getTweets(twitter:Twitter,userName:String,tweetCount:Int):Buffer[Status]={
    val pageSize=20
    val pageCount=(tweetCount+pageSize-1)/pageSize
    ((for (i <- 1 to pageCount) yield twitter.getUserTimeline(userName,new Paging(i,pageSize)).asScala)).reduceLeft(_++_).take(tweetCount)
  }
  def getFrequencyOfWord(samples:List[String],map:Map[String,Int],tokenizer:Tokenizer):Map[String,Int]={
    val typeSpeech=List("名詞","動詞","副詞","形容詞")
    (for (sample<-samples) yield for (token<-tokenizer.tokenize(sample).asScala if typeSpeech.exists(_==token.getPartOfSpeechLevel1))yield token.getBaseForm).reduceLeft(_++_).foldLeft(map){(acc,e)=>acc+(e->(acc.getOrElse(e,0)+1))}
  }
  def main(args:Array[String]){
    val twitter=TwitterFactory.getSingleton
    val user=twitter.verifyCredentials
    val tokenizer=new Tokenizer
    print(getFrequencyOfWord(getTweets(twitter,"@",50).map(_.getText).toList,Map.empty[String,Int],tokenizer))
  }
}

Mavenのpom.xml(dependencies)は以下の通り。

<dependencies>
  	<dependency>
  		<groupId>org.twitter4j</groupId>
  		<artifactId>twitter4j-core</artifactId>
  		<version>4.0.6</version>
  	</dependency>
  	<dependency>
    	<groupId>com.atilika.kuromoji</groupId>
    	<artifactId>kuromoji-core</artifactId>
    	<version>0.9.0</version>
	</dependency>
	<dependency>
    	<groupId>com.atilika.kuromoji</groupId>
    	<artifactId>kuromoji-ipadic</artifactId>
    	<version>0.9.0</version>
	</dependency>
  </dependencies>

参考にさせていただいたサイトは以下の通り
Scalaでテキストマイニングしてみた | blue engineer blog
Design Recipe 別館 Blog - Scala と Ruby で単語の出現頻度を調べて多い順にソートする
Twitter4Jを使ったら10分でつぶやきJavaプログラムが作れました! ~NetBeans編~ - Challenge Java EE !