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

Just $ A sandbox

プログラミングと計算機科学とかわいさ

0.pythonで対話型AI制作

python AI

昔作っていたpythonによる対話型AI*1が出てきたこともあり、せっかくなのでここにまとめることにしました。
ソースコードは私のgithubからダウンロード可能です(https://github.com/myuon/AI)。
ほしい方は右の真ん中より少し上にあるDownloadボタンからお持ち帰りください。

AIには何が不必要なのか

対話型AIには何が必要でしょうか。
もちろん対話ができないと話になりません。また、会話を続けるためにこちらの言葉を覚えてほしいですね。何か訊いたら反応が返ってきてほしいとも考えます。正しい文章を出力できたかどうかを評価できるだけの賢さも備えてくれていると嬉しいですね。

等々、ほしい機能はいくらでも出てくると思います。しかしいきなりこのような機能をたくさん持ったものを作るのは非常に大変です。

なので逆転の発想として、ここでは何が不必要かを考えましょう。不必要なもの、AIにとって本質的ではない機能はばっさり切り捨ててあきらめることにしましょう。
そもそも私はAIを作ることによって、「AIはどんなふうに言葉を学んでいくのか?」「単純な学習機能はどこまで効果的か」ということに主眼を置いて開発していたので、この際「ちゃんとしゃべれる*2」は諦めて、必要最小限の機能で最大限賢くなることを目指すという目標を定めて作ることにしました。

というわけでこのようにしてどんどんAIを発展させていきたいと思います。

テンプレート

AIで使うpythonのプログラムのテンプレートは以下の通りです。以下は「ふ〜ん、それで?」をひたすら繰り返す(生意気な)プログラムです。

#! /usr/bin/python
#-*- coding:utf-8 -*-
print "アリーチェ:いらっしゃいませ〜。メッセージをどうぞ〜"

s = ''
while True :
    s = raw_input("あなた:")
    print "アリーチェ:ふ〜ん、それで?"

print "アリーチェ:ばいば〜い"

これをどんどん改造してプログラムを作っていくことにします。

参考

私がこのプロジェクトで説明するAIの前半部分はほぼ以下の本に準拠しています。
Amazon.co.jp: はじめてのAIプログラミング―C言語で作る人工知能と人工無能: 小高 知宏: 本
この本ではCで記述されていますがそれをpythonで書き換えたものを使って制作しています。
初学者の方は上の本をご覧になるとよいかと思います。

備考

アリーチェというAIの名前に関して。
アリーチェとは英語読みすると「アリス(Alice)」、プログラム界(特に暗号業界)では一躍ボブと並んでよく通信をしている通信マニアの女性を指します(違

*1:ここでは便宜上AIと呼ぶことにしますが、中身はほとんど人工無能の域を出ないものです。あしからず

*2:文法的に正しく、意味の通る文章を生成すること