なんでも説明したがる twitter bot 「なのであ〜る」を作りました。


何かの文章を読んでいて分からない言葉があると、辞書で意味を調べます。調べた意味も文章で書かれているので、また分からない言葉があるかもしれません。そうしたら、その言葉の意味をまた辞書で調べます。その意味も文章で書かれているので、、、


という具合に、どんどん意味を調べていったらどうなるのだろう?と思って作ってみました。


なのであ〜る


なんなの?

このプログラムは何か適当な言葉を探してきて、その言葉の意味を再帰的に辞書で調べることで回りくどい説明文を作成して twitter でつぶやきます。詳しく説明すればするほど、分かりにくくなっていく文章に人に何かを伝えることの難しさを感じることができます。

説明しよう!ねことは食肉目ネコ科の哺乳類、つまり哺乳類の動物界の同じ家系、または、同じ夫婦とその血縁関係者を中心に構成され、共同生活の単位となる人や動物、また、ものが集まってひとかたまりになることの名人。なのであ〜る!!

おおまかなしくみ

辞書から言葉の意味を説明する文章を取得し、それを形態素解析という技をつかって分かち書きします。その分かち書きした単語の中からさらに調べる単語を探して、意味を調べて元の文章にくっつけます。この行程を何度か繰り返すことで、どんどんと分かりにくくなる文章を作成していきます。

最初の言葉が「説明」の場合。

説明: ある事柄が、よくわかるように述べること。


この文章の中から「事柄」をさらに調べます。

事柄: 物事の内容・ようす。


さらに「内容」についても調べてみます。

内容: 容器や包みなどの、中にはいっているもの。


これらの文章を結合して1つの文章を生成します。結合のしかたは”すなわち”なんかで接続する方法と、単語そのものを意味で置き換えする2パターンを用意して、あまりにくどくなり過ぎないように、また、意味不明になりすぎないようにしています。

説明: ある事柄、すなわち物事の容器や包みなどの、中に入っているもの・ようすが、よくわかるように述べること。

処理の流れ

  1. twitter の @nanodeal 宛てのメッセージからよさそうな名詞を探す
  2. 選ばれた名詞の意味を Yahoo!辞書 を使って調べます。具体的には、直接 Yahoo!辞書にクエリを投げて返ってきた HTML を解析します。
  3. 調べた意味を MeCab形態素解析して、その中から適当な名詞を選び出す。
  4. また Yahoo!辞書 で調べる。
  5. 3 と 4 を繰り返す。
  6. もし、@nanodeal 宛てのメッセージがなかったり、よい文章が作れなかったら、public_timeline から日本人の発言と思われるステータスを取得して同じように文章を作成する。
  7. できたら twitter にポストする。無理ならあきらめる。