読者です 読者をやめる 読者になる 読者になる

基本的に怠Diary

学習ログを残したい

ScalaでKuromoji使う

Scala Kuromoji

イミュータブルには勝てなかったよ・・・

RSS取得してからTitleとDescription別で3文字以上の単語が何個でたか集計してくれる大したことないやつ

var使ったら負けだと思ってたけど普通に負けた。

package TextMining

import java.net.URL

import org.atilika.kuromoji._

import scala.collection.mutable
import scala.xml.{NodeSeq, XML}

class AnalRSS(u:String) {
  val baseXML = XML.load(new URL(u))
  val items = (baseXML \\ "item")
  def saveXML(filepath:String): Unit ={
    XML.save(filepath,baseXML,"UTF-8",true,null)
  }
  def analStr(target:String):Seq[(String,Int)] = {
    val tokenizer = Tokenizer.builder().build().tokenize(target)
    var wordMap = mutable.TreeMap.empty[String,Int]
    tokenizer.stream()
      .filter(x => x.getSurfaceForm.length > 3)
      .forEach({x =>
        if(!wordMap.contains(x.getSurfaceForm))
          wordMap(x.getSurfaceForm) = 1
        else
          wordMap(x.getSurfaceForm) += 1
      })
    return wordMap.toSeq
  }
  def getRSSSelfTag(items:NodeSeq = this.items,tagName:String): List[(String,Int)] ={
    var allWords = List.empty[(String,Int)]
    items.foreach(x=>analStr((x \\ tagName).text).foreach(y =>{
      val removeFind = allWords.find(z=>z._1==y._1)
      if(removeFind != None)
        allWords = allWords.filterNot(z=>z._1==y._1) :+ (y._1,y._2 + removeFind.get._2)
      else
        allWords = allWords :+ y
    }))
    return allWords
  }
  def getRSSTitleAndDesc(url:String = u,items:NodeSeq = this.items): (List[(String,Int)],List[(String,Int)] ) = {
    return (getRSSSelfTag(items,"title"),getRSSSelfTag(items,"description"))
  }
}

ひどい名前(2つの意味で

フィルタは結局かけなかった。まだその域ではない。

これJarファイルとかにしてcronあたりで回してデータ集めるのもよかったけど

なんかもういいやってなったのでやめた。今はWordPressに集中したい。

わけねーだろすぐにやめても大学やめてRailから外れてRails始めるやつの二の舞いじゃボケ。

以上Scalaの練習第一弾でした。

Scala全然わからないので特にやりたいことないからCop見ながら探します。

さっき投稿したやつでも書きましたが、小ネタとかローカルブログ(笑)に蓄積していつか放流します。

Goも再開したいし、Rubyもやりたいのん。

国家試験あるけど受けないかもしれない。Twitterアカウントなくても困らないしな。

当分はEmacsとWordPress(PHPはわからない)がメインです。

Rubyは悲しいけど休憩かな(´・ω・`)