「単純ベイズ分類器」を簡単に組み込める gem を作ってみました!!
BabyFace
https://github.com/yoshiori/baby_face
簡単な使い方
判定したいクラスで BabyFace を include してちょっと設定書くだけです。
1 2 3 4 5 |
|
こんな形で指定します
- features
- 学習対象にする値
- categories
- カテゴリ分け
が最小の設定になります。
これだけで、Entry
のインスタンスに baby_face
というのが生えます。
で、categories
を元に学習用と判定用のメソッドが生えます。
1 2 3 4 5 |
|
こんな感じで特に難しいこと考えないで使えます。
もうちょっとカスタマイズ
学習データの保存
学習データはそのままだとメモリ上にあり保存されないので保存できるようにしてあります。
1 2 |
|
文字列の分解方法
デフォルトでは String#split
していますが、カスタマイズできます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
みたいな感じで渡せます。 MeCab とか使って日本語を分かち書きする処理などを渡したり出来ます。
ネストしたオブジェクト
ActiveRecord の関連みたいなのも学習対象にすることが出来ます。
関連先でも include
して features
だけ書いていたらそれも使われます。
1 2 3 4 5 6 7 8 9 10 11 |
|
学習データ詳細
BabyFace はフィールドごとに単語を別扱いしています。
なので、上記の例で言えば title
に入っている「殺す」と body
に入っている「殺す」は別扱いしています。
まとめ
機械学習とかその辺のことは全然分かってないのですが、覚えるためにとりあえず自分で触ってみました。 さくっと組み込めるので投稿系のサービス作ってみるときとかに気軽に導入したり出来ると思います。 あと、自分のブログとはてブ数とか学習させて今から投稿する記事がはてブ稼げるかどうかとか見てみるのも楽しいかも。
まだ作ったばかりで色々足りないと思いますが、使ってみてください><
https://rubygems.org/gems/baby_face
そして名前の由来
突然だけどスタンド使いとプログラマは似ていると思う。 自分から生み出したものが動作し世の中に影響を与える…… スタンドとはプログラムのことかもしれない。 そしてそんなプログラムを書ける人間はスタンド使いなのかもしれない。
だからプログラマ同士は惹かれ合うのかもしれない……
僕の大好きな第五部に「ベイビィ・フェイス」というちょっと変わったスタンドが出てきます。
追跡するターゲットの遺伝子情報をノートパソコン型のスタンドへ入力、それを母体となる女性に受胎させることで、遠隔パワー型のスタンドを生み出す能力。
という能力。
さらに作品中ではドンドン色々なことを学習させていくという感じです。
コレって完全に教師あり学習だなぁと思ってたので今回の gem にこの名前をつけました。
実は人生初の ruby-gem です。
そして調べてたら「しかし、このディ・モールトの使い方はイタリア語としてはディ・モールト間違っている。」とかでてきてちょっとショックでしたが僕は元気です。
と、いうわけで実は「ジョジョの奇妙な冒険 Advent Calendar 2013」の参加エントリでした。
やっぱりプログラマなんだからプログラムで語らないとね!!
と言うとかっこいいけど、実は普通に便乗して自分の gem の宣伝しただけですねww