以前に、毎度おなじみジャストシステムのインターンの選考について書きましたが、今回はコーディング課題に通ったので行ってきました。
「人工無脳バトル」は、2日でTwitterのbotをつくり、これをWWWに公開してフォロワー数、会話数、会話内容についてスコアをつけて競うというものです。
1. ルールとシステム
開発では、ジャストのUXデザインチーム書き下ろしの10種類のキャラの中から好きなキャラを選び、キャラに応じた仕様を満たしながら発話を実装します。キャラは会話やフォローに応じて3段階に変化し、この変化の回数でバトルをします。
システムは、キャラの変化、採点機能の他に、自然言語処理のAPIが提供されていて、形態素解析、形態素の書き換え、マルコフ連鎖、シナリオなどによって発話をさせることができるようになっています。書いたプログラムは1分ごとに起動されます。
2. チームの方針
チームに福岡の方がいたこともあり、博多弁のキャラクターを選択しました。このキャラクタは、つぼ(チーム共通)、おばあさん、女の子の3段階に変化します。つぼの状態では、言葉はですます調で語尾が「つぼ」、おばあさんと女の子の状態では博多弁でしゃべります。
最低限動くものが提供されていたのと、開発期間が2日であることから、「常に動くものを作る」方針で開発しました。
チームは6人で、役割はそれぞれ、語尾の書き換えルールを書く人が2人、シナリオを書く人が1人、コーディングが1人、設計、テスト、開発環境のサポートが2人です。
プログラムは1分ごとに起動され、リプライがきていればリプライを返し、条件を満たせば発言をするようにしました。
3. 自身の活動
開発でGitHubを使っていたことと、Gitが使える人が複数いたので、ブランチで開発してマスターブランチには動くものを置くようにしました。言語はRubyです。
自身は、コーディングの人に「こんなことがしたいのでこんなプログラムを書いて欲しい」、という要望を出し、できあがったプログラムを自分の環境でテストしてブランチをマージするという作業を行っていました。
正直、出しゃばって申し訳ありません…という感じでしたが、自分が思ったことが速攻で実装されて実現するので非常に楽しかったです。
要望の例はこんな感じです。
- ランダムにツイートしたい(乱数を発生させて基準値以下ならつぶやく機能)
- 実行速度が遅いんだけど(形態素書き換え済みの発話候補から発話を選ぶのではなく、発話を選んでから形態素を書き換えるように変更)
- トレンドをネタにつぶやきたい
その他、自分が出した意見ではありませんが、よるほー/ひるほーやおみくじ機能がついています。
4. 成果物
最初のキャラが「つぼ」であることと、おばあさん/女の子の背景画像につぼみが描かれていることから、名前は「つぼ美」になりました。
https://twitter.com/js_tsubot03
女の子の状態では、かなりガチガチな(エセ)博多弁をしゃべります。
会話数が勝敗を分けるので、是非遊んでみてください。
5. 成果発表
1/15日に成果発表があります。一般にも公開されているので、お時間ある方は是非お越しください。
https://justsystems.doorkeeper.jp/events/36158
終わりに
自然言語処理についてはまだまだ駆け出しですが、開発でRuby、Linuxサーバ、Gitを使う機会があり、やっておいてよかったと思いました。言語処理も勉強し、いずれ自分で作ってみたいと思います。
チーム開発が楽しかったです。場を提供してくれたジャストシステムのみなさん、またチームのみなさん、ありがとうございました。また1月にお会いしましょう。
夜行バスからの1限疲れました。