Python で人工無能
詳細については、各日記を参照のこと。 Python のインストール (2002-11-17) 1) ダウンロード 日本Pythonユーザ会(PyJUG)のPython 2.2.2 日本語環境用インストーラ(Win32)のページに行って、Python 2.2.2 日本語環境用インストーラ(Win32)をダウンロード(しばらくたったら古くなってしまうので、PyJUG で一応最新のものかどうか確かめてくらはい)。 2) インストール 保存した python222jp-20021016.exe をダブルクリックしてインストール。インストールは普通の Windows のプログラムと同じなので、どんどん「はい」と「次へ」をクリックしていけばインストールできる(なんていい加減なんだ)。 IDLE を起動する (2002-11-18) 1) IDLE の起動 IDLE は Python のプログラミングを行うための統合環境で、[スタート]-[すべてのプログラム]-[Python for Win32 jp]-[IDLE (Python GUI)] を選択すると起動できる (デフォルトのインストールだと C:python22jpToolsidleidle.bat を直接実行してもよい。ちなみに、これは Windows XP なので、Windows 9x なら[すべてのプログラム]ではなくて、[プログラム]とかだったかな)。 2) print による文字列の表示 print "文字列" で、好みの文字を表示してみる。
3) IDLE の終了 IDLEを終了するには、[File]メニューの[Exit]を選択してもいいし、右上の×をクリックしてもいいし、[Alt]キー+[F4]キーでもいい。 鸚鵡返しの術 (2002-11-19) 1) IDLE で日本語はちょっと問題あるので対処する
2) プロンプトを作る
3) おまけ付き鸚鵡返し
4) リターンで終了 おみくじを無能に組み込む(2002-12-18)
シングルクォートやダブルクォートは半角にすること。 ロボット的鸚鵡返しの術(2003-01-06)
#!/usr/bin/env python import sys import whrandom from popen2 import popen2 def raw_input(prompt=’’): """プロンプトを表示して、入力を得て、末尾の1文字(改行)を削除して返す。 @prompt 入力を促すためのプロンプト文字列 """ sys.stdout.write(prompt) return sys.stdin.readline()[:-1] def keitaiso_kaiseki(s): """MeCab で形態素解析した結果を返す。 解析結果は、形態素ごとにディクショナリ形式で格納したリスト。 @s 解析する文字列 """ fi, fo = popen2(’"c:¥¥program files¥¥mecab¥¥bin¥¥mecab"’) fo.write(s) fo.close() klist = fi.read() fi.close() sentence = [] for gyou in klist.split(’¥n’): keitaiso = gyou.split(’¥t’) dic = {} if len(keitaiso) == 2: dic[’表層形’]= keitaiso[0] n = keitaiso[1].split(’,’) dic[’品詞’]=n[0] dic[’品詞細分類1’]=n[1] dic[’品詞細分類2’]=n[2] dic[’品詞細分類3’]=n[3] dic[’活用形’]=n[4] dic[’活用型’]=n[5] dic[’原形’]=n[6] dic[’読み’]=n[7] dic[’発音’]=n[8] sentence.append(dic) return sentence def get_hatsuon(klist): """形態素解析結果から「発音」を取得し文字列として返す。 getHatsuon を klist の各要素に適用し、 「発音」を取得して、1つの文字列に結合して返す。 @klist 形態素解析結果リスト """ # 各形態素の情報から「発音」を取り出してリストにする hatsuon_list = map(getHatsuon, klist) # 発音リストの要素をスペースを間にいれてつなげる return " ".join(hatsuon_list) def getHatsuon(kinfo): """形態素解析情報から「発音」を取り出して返す。 @kinfo 形態素解析の結果 """ return kinfo[’発音’] def get_random_answer(rlist): "リストの中からランダムに一つ選択して返す。" return whrandom.choice(rlist) # メインのプログラムとして読み込まれたときには以下を実行 if __name__ == ’__main__’: # ランダム回答用のリスト # この中から、ランダムに後で人工無能が選択して答える。 # おみくじと同じ。 random_list =[’平和’, ’幸せ’, ’平凡’, ’悲壮’, ’不幸’, ’純粋’, ’間抜け’] # 名前を入力させてプロンプトにする。 name = raw_input(’あなたの名前は? ’) prompt = name + ’ > ’ # 繰り返しに入る while 1: answer=raw_input(prompt) # リターンだけなら終了 if not answer: break else: # 入力を形態素解析する klist = keitaiso_kaiseki(answer) # ロボット返答用の発音を取得する robot_answer = get_hatsuon(klist) # おみくじ的返答をランダムに発生させる。 random_anser = get_random_answer(random_list) print "¥n「%s」 なんて、%s だね。¥n" % (robot_answer, random_anser) # 終わりだよん print "バイバイ" ジャンル別一覧
人気のクチコミテーマ
|