技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

形態素解析したものを字句っぽくする

前回の実行結果を読み取ると、面白そうな事に気づく。

  • 連続した名詞は繋げて一つの固有名詞ではないか?

で、こんな感じに書いた

import net.reduls.igo.Tagger

object Token {
  def toToken(morpheme:String, original:String) = {
    val elements = morpheme.split(",")
    Token(elements(0), original, elements(7))
  }

  def compare(lists:List[Token], token:Token):List[Token] = {
    if (lists.isEmpty) {
      List(token)
    } else {
      (lists(lists.size - 1), token) match {
        case (l, r) if l.tokenType == r.tokenType && l.tokenType == "名詞" => lists.take(lists.size - 1) :+ Token("名詞", l.currentToken + r.currentToken, l.sound + r.sound)
        case o => lists :+ token
      }
    }
  }
}

case class Token(tokenType:String, currentToken:String, sound:String)

object IgoSample extends App {
  val tagger = new Tagger("ipadic")
  val parsedList = tagger.parse("田村憲久厚生労働相は22日、2階の飲食店を予約した作家の乙武洋匡さんが、" +
    " 車いすを理由に入店拒否されたとネットで明らかにしていることに対し" +
    " 「店員が協力して連れて行く努力をすべきだと思うが、店の状況や対応が分からず、" +
    " これ以上のコメントは差し控えたい」と述べた。")

  import scala.collection.JavaConversions._
  parsedList.map(v => Token.toToken(v.feature, v.surface)).foldLeft(List.empty[Token]) {
    case (lists, token) => Token.compare(lists, token)
  } foreach(println)
}

結果が下記。何かいい感じ。

[info] Running IgoSample
Token(名詞,田村憲久厚生労働相,タムラケンヒサコウセイロウドウショウ)
Token(助詞,は,ハ)
Token(名詞,22日,ニニニチ)
Token(記号,、,、)
Token(名詞,2階,ニカイ)
Token(助詞,の,ノ)
Token(名詞,飲食店,インショクテン)
Token(助詞,を,ヲ)
Token(名詞,予約,ヨヤク)
Token(動詞,し,シ)
Token(助動詞,た,タ)
Token(名詞,作家,サッカ)
Token(助詞,の,ノ)
Token(名詞,乙武洋匡さん,オツタケヒロタダシサン)
Token(助詞,が,ガ)
Token(記号,、,、)
Token(名詞,車いす,クルマイス)
Token(助詞,を,ヲ)
Token(名詞,理由,リユウ)
Token(助詞,に,ニ)
Token(接頭詞,入,ニュウ)
Token(名詞,店拒否,ミセキョヒ)
Token(動詞,さ,サ)
Token(動詞,れ,レ)
Token(助動詞,た,タ)
Token(助詞,と,ト)
Token(名詞,ネット,ネット)
Token(助詞,で,デ)
Token(名詞,明らか,アキラカ)
Token(助詞,に,ニ)
Token(動詞,し,シ)
Token(助詞,て,テ)
Token(動詞,いる,イル)
Token(名詞,こと,コト)
Token(助詞,に対し,ニタイシ)
Token(記号,「,「)
Token(名詞,店員,テンイン)
Token(助詞,が,ガ)
Token(名詞,協力,キョウリョク)
Token(動詞,し,シ)
Token(助詞,て,テ)
Token(動詞,連れ,ツレ)
Token(助詞,て,テ)
Token(動詞,行く,イク)
Token(名詞,努力,ドリョク)
Token(助詞,を,ヲ)
Token(動詞,す,ス)
Token(助動詞,べき,ベキ)
Token(助動詞,だ,ダ)
Token(助詞,と,ト)
Token(動詞,思う,オモウ)
Token(助詞,が,ガ)
Token(記号,、,、)
Token(名詞,店,ミセ)
Token(助詞,の,ノ)
Token(名詞,状況,ジョウキョウ)
Token(助詞,や,ヤ)
Token(名詞,対応,タイオウ)
Token(助詞,が,ガ)
Token(動詞,分から,ワカラ)
Token(助動詞,ず,ズ)
Token(記号,、,、)
Token(名詞,これ以上,コレイジョウ)
Token(助詞,の,ノ)
Token(名詞,コメント,コメント)
Token(助詞,は,ハ)
Token(動詞,差し控え,サシヒカエ)
Token(助動詞,たい,タイ)
Token(記号,」,」)
Token(助詞,と,ト)
Token(動詞,述べ,ノベ)
Token(助動詞,た,タ)
Token(記号,。,。)

同様に

  • 接頭詞 + 名詞 = 名詞
  • 動詞 + 動詞 = 動詞
  • 動詞 + 助動詞 = 動詞
  • 動詞 + 助詞 = 動詞

とすると

Token(名詞,田村憲久厚生労働相,タムラケンヒサコウセイロウドウショウ)
Token(助詞,は,ハ)
Token(名詞,22日,ニニニチ)
Token(記号,、,、)
Token(名詞,2階,ニカイ)
Token(助詞,の,ノ)
Token(名詞,飲食店,インショクテン)
Token(助詞,を,ヲ)
Token(名詞,予約,ヨヤク)
Token(動詞,した,シタ)
Token(名詞,作家,サッカ)
Token(助詞,の,ノ)
Token(名詞,乙武洋匡さん,オツタケヒロタダシサン)
Token(助詞,が,ガ)
Token(記号,、,、)
Token(名詞,車いす,クルマイス)
Token(助詞,を,ヲ)
Token(名詞,理由,リユウ)
Token(助詞,に,ニ)
Token(名詞,入店拒否,ニュウミセキョヒ)
Token(動詞,されたと,サレタト)
Token(名詞,ネット,ネット)
Token(助詞,で,デ)
Token(名詞,明らか,アキラカ)
Token(助詞,に,ニ)
Token(動詞,している,シテイル)
Token(名詞,こと,コト)
Token(助詞,に対し,ニタイシ)
Token(記号,「,「)
Token(名詞,店員,テンイン)
Token(助詞,が,ガ)
Token(名詞,協力,キョウリョク)
Token(動詞,して連れて行く,シテツレテイク)
Token(名詞,努力,ドリョク)
Token(助詞,を,ヲ)
Token(動詞,すべきだと思うが,スベキダトオモウガ)
Token(記号,、,、)
Token(名詞,店,ミセ)
Token(助詞,の,ノ)
Token(名詞,状況,ジョウキョウ)
Token(助詞,や,ヤ)
Token(名詞,対応,タイオウ)
Token(助詞,が,ガ)
Token(動詞,分からず,ワカラズ)
Token(記号,、,、)
Token(名詞,これ以上,コレイジョウ)
Token(助詞,の,ノ)
Token(名詞,コメント,コメント)
Token(助詞,は,ハ)
Token(動詞,差し控えたい,サシヒカエタイ)
Token(記号,」,」)
Token(助詞,と,ト)
Token(動詞,述べた,ノベタ)
Token(記号,。,。)

大分トークンらしくなってきた?