1Click飲みRomoCartTempescope色色[:iroiro]Other Projects

2012年5月13日日曜日

第三回 クックパッド開発コンテスト投稿作品『俺新聞』 その2(開発編)

『俺新聞』 その1(アイディア出し編)の続き


さあ作ろう

どんなセンサを使うか?
今回は過去のデータがしっかり無いとアルゴリズムの開発のしようがないので、
(1) たまたま私がライフログ的に装着しているGPSロガーのデータ
(2) 2年ぐらい前からやってるtwitter
(3) 撮影した写真のログ
の3種類を想定する。
センサを限定すると自ずと、判別出来る一日の特徴は限られてくる:
・家→会社→遊びなどの大まかな遷移
・どこに行ったか(飲食店とかも分かるか?)
・・ぐらい?
今回は時間の制約上、twitterの文章解析してあーするとか、画像解析してどーするとかはやめておく。

で、いきなり、作る最終成果物のイメージ図を作ってみた(Pagesでお絵描き):
河本の呉旅行の日が新聞になったよ!
ポイントとしては:
・大まかにどこでなにしたかは正確
・どこでなにして何言ったか(大和ミュージアムを2時間見て「すげー」って言った)はGPSとtwitterから複合的に判断
・「はしゃぐ」とか「舌鼓を打つ」とかは適当でいい
・ちょっと早くホテルに帰った(9時)から疲れてるんじゃない?っていう洞察ぐらいは入れても楽しさの範疇。
・とにかく終始「お偉いさん」ぽさを出す。なんか小っ恥ずかしくて楽しい。

作らないと行けない部品は大きく分けて5つ:
(1) GPSデータから滞在を判別する方法
(2) 滞在を更に「家」「会社」「飲食店」などに大きく分ける方法
(3) 「特徴的な日」と「平凡な日」の分類(上記例は特徴的な日)
(4) それぞれの滞在の遷移や、twitter・撮影の有無などから文章をうまく構成
(5) アプリとして適当にまとめる(スマホでセンシングしてiPadで見るのとか素敵だよね。)

だんだん眠くなってきたのでかいつまみながら説明する。

(1) GPSデータから滞在判別
GPSデータを細かく見てみると、電波強度が悪いところで飛んだりはねたりしてた。
なので適当に移動平均とって平滑化して、
適当に時速4m以上で動いたところでズバズバ切って、それ以外を「静止」セグメントとして確保して、
隣り合った静止セグメント同士を、構成点の平均とか分散が適当に同じぐらいの時は結合して、
細かい静止セグメント(10分以下とか)は捨てる。
みたいな超適当な方法でもそれなりに見た目よくなった。
時間ないし、論文書く訳じゃないし、いいよね?
きっと調べたらちゃんとしたやり方があるんでしょう。
#実際にはこのへんのパラメータ調整が結構てまどった。

(2) 滞在を「家」「会社」「飲食店」などに判別
「家」「会社」→めんどいので、ユーザに家と会社の場所入力させて、それらに近い点は「家」「会社」に居る、と判定。
もっと時間あったら、滞在点をクラスタリングして時間帯の偏りみて自動識別とかするかも。
「飲食店」は、ググってたらぐるなび様の超素敵APIを発見したのでこれを使いました。
「家」「会社」に判別されていない静止セグメントを飲食店検索して、100m以内に見つかったら飲食店、無かったら「放浪」に判別。

(3) 「特徴的な日」「平凡な日」の判別
これもまた超無責任に、仕事に行った日は「平凡な日」、そうじゃない日は全部「特徴的な日」とする。
だって、そうじゃん。

(4) それぞれの滞在の遷移や、twitter・撮影の有無などから文章をうまく構成
ここはこだわればいくらでもこだわれるところ。
今回は「特徴的な日」と「平凡な日」それぞれで別に文章のテンプレを作って、
朝・昼・晩の滞在の有無やtwitter/画像の有無によって、文章内の変化形を色々定義した。
恥ずかしいので全部は見せないが、時間的制約のため、以下のような恐ろしいコーディングをするはめになった。
目を覆いたくなるようなコード。ジーザス。


(5) アプリとしてまとめる
ごめん、出来なかった。みなさんが美麗なウェブサービスを投稿していくなかで、多分唯一のコンソールプログラム・・・

出力例
プログラムの起動(あーそうさ、デスクトップアプリさ)
目を覆いたくなるようなUI
2012年2月3日、この日はちょっと早めに会社に行った日だ。
この日の出力:
お気づきだろうか?最初に作ったデザインとあまりに違うことに。
早く出社したことをちゃんと褒めてくれてるね。
早々と家帰ったのか、やっぱそう見られるのか。家でWiiやりたかっただけだなんだけどな。
でも更なる成長を予感させてるならいいか。

続いて2012年2月2日:
褒めるべきところが無くてもなんとか見つけてくれる
この日は10時に出社するという酷い日、さすがに新聞でも「ようやく現れた」とか書かれてしまっている。
でもなんとか褒めるところを探そうとしてくれたのだろう、出社したこと自体を喜んでくれている。
退社後吉祥寺にご飯食べにいったこともちゃんと認識してくれている。そして更なる成長を予感させているらしい。


最後に2011年9月19日:
旅行に行ったよ
この日は会社の同期に誘われてテニス合宿なるものに行ってきた。
ちゃんといつもと違うところに行ったことを認識して、ヘッドラインになっている。
いい写真も選んでくれた。

まとめ
・このシステムで一日の終わりが楽しくなるだろうか? →数日は、なる。きっと。
・飽きない? →すぐ飽きると思う。でも文章のパターンを増やしていけば、可能性は無限大。
むしろ、「センサがこういう特徴を示しているときにはこういうこと言う」みたいなルールを簡単に記述できるようにして、クラウドソーシングに任せたらいいんではないかと思う。
・他に時間の制約上やらなかったことは?
ー加速度情報: 本当は行動の中身まで踏み込みたかった
ーテンプレ増やす: 「特徴的な日」と「平凡な日」だけじゃないよね。
ー家、会社、その他自分が大事に思うところを自動認識
ーWebサービス化
ーtwitterの内容解析: 本当は宝の山
ー画像情報: 画像のキャプションとか本当はちゃんと付けたい。「微笑む河本氏と市長」
など。
・その他コメントなど:
ー今回作ったの結構面白いと思うので、UIの酷さによって選考してもらえなかったりしたらもったいない(と同時に、初っぱなから蹴られても仕方が無いとも思う)
ーなのでこういう時間制約のあるコンテストはアルゴリズム開発と見た目(ガワ)の開発のバランスが難しいなぁ。
ーデザインとWeb開発が得意な人とチーム組みたい。
ー久しぶりに徹夜した。意外と平気。
ー久しぶりにここまで長時間プログラミングした。楽しかった。

『俺新聞』使いたい、改造したい、など要望・意見ある方はお願いします。
ken 12/05/13 8:02(あと1時間で締め切り!)


0 件のコメント:

コメントを投稿