本が出版されたし
KuromojiをKotlinで動かす
Kotlinスタートブック出版記念meetup
2016-07-19 @yy_yank
Kotlinスタートブック発売
おめでとうございます!
(と言っておけば丸く収まると思っている)
          こいつです
          ・小物SIer
          ・JavaとKotlinが好き
          ・viキーバインド好き
          サクラエディタアイコン
ヤンク(@yy_yank)
自己紹介
・逆引きKotlin
http://kotlin-rev-solution.herokuapp.com
・Kebab(Selenium WebDriverラッパー)
https://github.com/yyYank/Kebab
・json4k
https://github.com/skrap-json4k/skrap-json4k
※全部作りかけ
雑に宣伝
LTですよね
LTといえば
形態素解析ですよね
形態素解析とは、文法的な情報の注記の無い自然言
語のテキストデータ(文)から、対象言語の文法や、辞
書と呼ばれる単語の品詞等の情報にもとづき、形態素
(Morpheme, おおまかにいえば、言語で意味を持つ
最小単位)の列に分割し、それぞれの形態素の品詞
等を判別する作業である。
Wikipediaより
形態素解析とは
・OSS
・日本語の形態素解析が出来る
・Javaで動く
・つまりKotlinで動く(?)
・kuromoji.jsというものもある(完全に別物)
・はじめはkuromoji.jsをKotlinで動かそうかと
思ったけどしんどそうだったのでやめた
Kuromojiとは
・OSS
・日本語の形態素解析が出来る
・Javaで動く
・つまりKotlinで動く(?)
・kuromoji.jsというものもある(完全に別物)
・はじめはkuromoji.jsをKotlinで動かそうかと
思ったけどしんどそうだったのでやめた
Kuromojiとは
安心してください
うごきますよ
https://github.com/yyYank/kuromoji-sample
fun tokenize(message : String) {
val tokenizer = Tokenizer.builder().build()
val tokens = tokenizer.tokenize(message)
tokens.forEach {
println(it.surfaceForm)
println(it. allFeatures)
}
}
Kuromojiを動かしてみる
fun tokenize(message : String) {
val tokenizer = Tokenizer.builder().build()
val tokens = tokenizer.tokenize(message)
tokens.forEach {
println(it.surfaceForm)
println(it. allFeatures)
}
}
Kuromojiを動かしてみる
Kuromojiのクラス。自分
のインスタンス生成のビ
ルダーとtokenizeメソッド
を持つクラスです。
fun tokenize(message : String) {
val tokenizer = Tokenizer.builder().build()
val tokens = tokenizer.tokenize(message)
tokens.forEach {
println(it.surfaceForm)
println(it. allFeatures)
}
}
Kuromojiを動かしてみる
List<Token>が返されま
す
簡単。
解析してみましょう
解析してみましょう
@Test
fun `Kotlinスタートブック`(){
tokenize("Kotlinスタートブック 新しいAndroidプログラミング")
}
Kotlin
名詞,固有名詞,組織,*,*,*,*
スタート
名詞,サ変接続,*,*,*,*,スタート,スタート,スタート
ブック
名詞,一般,*,*,*,*,ブック,ブック,ブック
新しい
形容詞,自立,*,*,形容詞・イ段,基本形,新しい,アタラシイ,アタラシイ
Android
名詞,一般,*,*,*,*,*
プログラミング
名詞,サ変接続,*,*,*,*,プログラミング,プログラミング,プログラミング
成功
ちょっと長いのを突っ込む
@Test
fun `Kotlinスタートブックの説明 `(){
tokenize(
"""Kotlinは、まさにJavaの代替言語として登場しました。
静的型付け、オブジェクト指向、ラムダ式や高階関数、
さらに拡張関数やNull安全といった特徴を保持。
最も注目すべきJVM言語として2016年2月、
いよいよ正式版がリリースされました。
本書では日本Kotlinユーザグループ代表を務める著者が
Kotlinの文法と機能を幅広く、かつ詳しく解説し
Androidアプリの作例を示します。
この1冊で、Androidプログラミングにおける
Kotlinの活用術が身につくだけでなく、
Webアプリやツールの開発にも応用できるようになるでしょう。 """
)
Kotlin
名詞,固有名詞,組織,*,*,*,*
は
助詞,係助詞,*,*,*,*,は,ハ,ワ
、
記号,読点,*,*,*,*,、,、,、
まさに
副詞,一般,*,*,*,*,まさに,マサニ,マサニ
Java
名詞,一般,*,*,*,*,*
の
助詞,連体化,*,*,*,*,の,ノ,ノ
代替
名詞,サ変接続,*,*,*,*,代替,ダイタイ,ダイタイ
言語
名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
として
助詞,格助詞,連語,*,*,*,として,トシテ,トシテ
登場
名詞,サ変接続,*,*,*,*,登場,トウジョウ,トージョー
し
動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
まし
助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た
助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。
記号,句点,*,*,*,*,。,。,。
記号,空白,*,*,*,*,*
静的
名詞,形容動詞語幹,*,*,*,*,静的,セイテキ,セイテキ
型付け
名詞,一般,*,*,*,*,型付け,カタツケ,カタツケ
、
↑
結果の8分の1ぐらい
成功
ん??
高階
名詞,固有名詞,人名,姓,*,*,高階,
タカシナ,タカシナ
関数
名詞,一般,*,*,*,*,関数,カンスウ,カ
ンスー
_人人人人人人人人人人_
> タカシナカンスー  <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
まとめ
・KotlinでKuromojiは動きます!
・高階関数はタカシナさんが作った関数ではない
・Kotlinスタートブックは良い本です

KuromojiをKotlinで動かす