読者です 読者をやめる 読者になる 読者になる

『機械はどれだけ人間に近づけるのか』 〜第2回 チームラ

TeamLabさんの
『機械はどれだけ人間に近づけるのか』 〜第2回 チームラボアルゴリズムコンテスト
勉強会におじゃましてきた。ちなみに懇親会は体調がわるかったので参加していない。

形態素解析入門

以下に今日発表されたスライドが。
http://d.hatena.ne.jp/Shimojimoji/20090128

ざっくり概要

主に形態素解析のアルゴリズムについての説明。
以下のようなアルゴリズムを紹介してくれた。

・Common Prefix Search(接頭語を探してくる)
・Trieの概要
・Double Array概要(辞書の探索をする)
・コスト最小法
・Viterbiのアルゴリズム

ルー語変換

個人的には「おまけ」で話してくれたルー語変換のお話が興味を引いた。
mecab, chasenの辞書に対してルー語を登録するようにしておく。
例えば、
 いっしょ → together
などのように辞書を書き換えてあげる事により、ルー語変換できるらしい。
今度これは試してみよう。

twitter bot の紹介

第2部では,実際にgoogle app engineで作成したtwitter botを紹介してくれた。
実際にコンテストに参加しようとしているので、非常に参考になった。

基本的な考え方

前提条件として、人口無脳の基本的な仕組みは以下のようなものらしい。

 1.解析
   形態素解析等
 2.学習
   解凍のヒントとなる単語や発言を検索できるようにする
   辞書作りだと思ってもらえるとよい。会話の中で学習していく。
 3.計画
   疑問分なのか、挨拶なのか、、、方向性を決める
 4.生成
   回答を生成。

でもこんなん真面目にやっていたら「日がくれる」という事で、
「おもしろいものができればよい」
という基本方針で作られたそうだ。

twitter bot のアルゴリズム

このtwitter botは、このbotあてにTwitterでメッセージを送る(ダイレクトメッセージじゃない)
とそのメッセージを解析して、返答してくれるというもの。
特徴としては辞書を持たずに、WebAPIを使って形態素解析などを行ってアルゴリズムを間に合わせていた。
※ちなみに、yahoo形態素解析の結果はひどいとのこと→同感

詳細

処理フローの記載がパワポ資料に書いてあったのだが、公開されてると思ったらまだ公開されていないみたい。
思い出しながら、ざっくり処理フロー。テキストで表現するって結構面倒だな。
※TODO 資料公開されたらフローは、画像に置き換える。

■形態素解析を使わないフロー
1. 質問文(botへのメッセージ)をTwitter検索APIを使用して全文検索して、同じ質問がないか確認する
2. 見つかれば、その質問に対して回答している文章を見つける。
  見つからなければ、以下に記載する形態素解析で回答を見つける
3. 回答している文章が見つかれば、それを返答として返す。
  見つからなければ、形態素解析だったっけかな?

■形態素解析を使うフロー
長い文章の場合、質問文が見つからない事が多い。
このような場合以下のような処理になる。
0.質問文をTwiiter検索しても見つからなかったとする。
1.質問文を形態素解析し、キーワードを抽出。そのキーワード達で回答を検索
2.回答が見つかれば、その回答を探す。
 見つからない場合は、オウム返し(質問文をそのまま返す.将来的にはgoogle問い合わせにするみたい)
bot ソースについて

このbotのソースgoogle app engineで作成されている事もあり、
pythonとdjangoが使われていていた。作った人のセンスを感じる。
自分が今 python, djangoで開発しているから、勝手に親近感を持つ

ソース公開

このソースは公開してくれるらしいので、公開されたらダウンロードして実行してみる。
ソース見てて思ったのだが、twitterpythonの連携は、python-twitterを使った方がよいかもと思った。

その他

ちなみにTeam Labさんではphp, javaでの開発が多いらしい。
やっぱりpythonは少ないのかねぇ。
あと、学生さんが多いような気がしたので、アラサーとしては多少アウェイ感があった。

最後に

いろいろと刺激になったので、参考にしてbot?(もしくはサイト)をつくってみる。
せっかくslice host借りてるんだから、使わなきゃだ。

時間をうまく捻出しないと。今月は忙しいな。