人工知能(2)
<program>
class Dictionary:
def __init__(self):
self.random=
rfile=open('dics/random.txt','r',encoding='Shift-JIS')
r_lines=rfile.readlines()
rfile.close()
self.random=
for line in r_lines:
str=line.rstrip("\n")
if(str!=""):
self.random.append(str)
pfile=open('dics/pattern.txt','r',encoding='Shift-JIS')
p_lines=pfile.readlines()
pfile.close()
self.new_lines=
for line in p_lines:
str=line.rstrip("\n")
if(str!=""):
self.new_lines.append(str)
self.pattern={}
for line in self.new_lines:
ptn,prs=line.split("\t")
self.pattern.setdefault("pattern",).append(ptn)
self.pattern.setdefault("phrases",[]).append(prs)
<result>
ValueError: not enough values to unpack (expected 2, got 1)
前回の人工知能の記事での疑問点は解消し、かなり頭の悪い人工知能とのチャットを完成させることが出来た。その人工知能に感情を盛り込む勉強をしているが、エラーが出てきてしまい、解決が難しい。恐らく、プログラムの中にreturnか何かが1つ足りないことが原因だと思う。
前回の投稿からかなり期間が空いたが、その中で一つ気づいたことが。プログラムの問題は期間を空けて取り組むと解決することが多いなと思った。
人工知能
from ptna import *
"""対話ログをリストボックスに追加する関数
@str 入力文字列または応答メッセージ
"""
lb.insert(tk.END, str)
"""ピティナのプロンプトを作る関数
"""
p=ptna.name
if(action.get())==0:
p += ":" + ptna.responder.name
return p + "> "
"""対話を行う関数
・Ptnaクラスのdialogue()を実行して応答メッセージを取得
・入力文字列および応答メッセージをログに出力
"""
value = entry.get()
#入力エリアが未入力の場合
if not value:
response_area.configure(text="なに?")
#入力されていたら対話オブジェクトを実行
else:
#入力文字列を引数にしてdialogue()の結果を取得
response = ptna.dialogue(value)
#応答メッセージを表示
response_area.configure(text=response)
#入力文字列引数にしてputlog()を呼ぶ
potlog("> " + value)
#応答メッセージを引数にしてputlog()を呼ぶ
putlog(prompt() + response)
#入力エリアをクリア
entry.delete(0, tk.END)
# 画面を描写する関数
#==============================================================================
root = tk.Tk()
#ウィンドウのサイズを設定
root.geometry("880x560")
#ウィンドウのタイトルを設定
root.title("Intelligent Agent : ")
#フォントの用意
font = ("Helevetica", 14)
font_log = ("Helevetica", 11)
menubar = tk.Menu(root)
root.config(menu = menubar)
#「ファイル」メニュー
filemenu = tk.Menu(menubar)
menubar.add_cascade(label = "ファイル", menu = filemenu)
filemenu.add_command(label = "閉じる", command = root.destroy)
#「オプション」メニュー
action = tk.IntVar()
optionmenu = tk.Menu(menubar)
menubar.add_cascade(label = "オプション", menu = optionmenu)
optionmenu.add_radiobutton(
label = "Responderを表示",
variable = action,
value = 0
)
optionmenu.add_radiobutton(
label = "Responderを表示しない",
variable = action,
value = 1
)
canvas = tk.Canvas(
root,
width = 500,
height = 300,
relief = tk.RIDGE,
bd = 2
)
canvas.place(x=370, y=0)
response_area = tk.Label(
root,
width = 500,
height = 10,
bg = "yellow",
font = font,
relief = tk.RIDGE,
bd = 2
)
response_area.place(x=370, y=305)
frame = tk.Frame(
root,
relief = tk.RIDGE,
borderwidth = 4
)
entry = tk.Entry(
frame,
width = 70,
font = font
)
entry.pack(side = tk.LEFT)
entry.focus_set()
#ボタンの作成
button = tk.Button(
frame,
width = 15,
text = "話す",
command = talk
)
button.pack(side = tk.LEFT)
frame.place(x=30, y=520)
lb = tk.Listbox(
root,
width = 42,
height = 30,
font = font_log
)
sb1 = tk.Scrollbar(
root,
orient = tk.VERTICAL,
command = lb.yview
)
#横のスクロールバーを作成
sb2 = tk.Scrollbar(
root,
orient = tk.VERTICAL,
command = lb.xview
)
lb.configure(yscrollcommand = sb1.set)
lb.configure(xscrollcommand = sb2.set)
lb.grid(row = 0, column = 0)
sb1.grid(row = 0, column = 1, sticky = tk.NS)
sb2.grid(row = 1, column = 0, sticky = tk.EW)
root.mainloop()
# プログラムの起点
#==============================================================================
if _name_ == "_main_":
run()
File "ptnaForm.py", line 179, in <module>
if _name_ == "_main_":
NameError: name '_name_' is not defined
人工知能開発へ
Pythonを一通り勉強し終わったので、人工知能を開発するために、参考書の写経を始め、プロトタイプの作成を短時間で終わらせることが出来た。
<prototype.py>
"""
"""Ptnaオブジェクトの名前をnameに格納
Responderオブジェクトを生成してresponderに格納
@param name Ptnaオブジェクトの名前
"""
self.name=name
self.responder=Responder("What")
"""応答オブジェクトのresponse()を呼び出して
応答文字列を取得する
戻り値 応答文字列
"""
return self.responder.response(input)
"""応答オブジェクトの名前を返す
"""
return self.responder.name
"""Ptnaオブジェクトの名前を返す
"""
return self.name
"""応答クラス
"""
def __init__(self, name):
"""Responderオブジェクトの名前をnameに格納
"""
self.name=name
"""応答文字列を作って返す
"""
return "{}ってなに?".format(input)
#実行ブロック
#########################################################################################################################
"""ピティナのプロンプトを作る関数
戻り値 "Ptnaオブジェクト名:応答オブジェクト名 > "
"""
return obj.get_name() + ":" + obj.get_responder_name() + "> "
ptna = Ptna("ptna")
inputs = input(" > ")
if not inputs:
print("バイバイ")
break
response = ptna.dialogue(inputs) # 応答文字列を取得
print(prompt(ptna), response) # プロンプトと応答文字列をつなげて表示
"""
"""Ptnaオブジェクトの名前をnameに格納
Responderオブジェクトを生成してresponderに格納
@param name Ptnaオブジェクトの名前
"""
self.name=name
self.responder=RandomResponder("Random")
"""応答オブジェクトのresponse()を呼び出して
応答文字列を取得する
戻り値 応答文字列
"""
return self.responder.response(input)
"""応答オブジェクトの名前を返す
"""
return self.responder.name
"""Ptnaオブジェクトの名前を返す
"""
return self.name
"""
self.name=name
""" オーバーライドを前提としてresponse()メソッド
戻り値 空の文字列
"""
return " "
"""応答オブジェクトの名前を返す
"""
return self.name
"""オウム返しのための行うサブクラス
"""
def response(self, input):
""" 応答文字列を作って返す
"""
return "{}ってなに?".format(input)
""" ランダムな応答のための行うサブクラス
"""
def __init__(self, name):
""" Responderオブジェクトの名前を引数にして
スーパークラスの__init__()を呼び出す
ランダムに抽出するメッセージを格納したリストを作成
"""
super().__init__(name)
self.responses=["いい天気だね","君はパーリーピーポー","10円拾った"]
""" 応答文字列を作って返す
戻り値 リストからランダムに抽出した文字列
"""
return (random.choice(self.responses))
> こんにちは
ptna:Random> いい天気だね
> そうだね
ptna:Random> 君はパーリーピーポー
> まじで
ptna:Random> 10円拾った
> 良かったね
ptna:Random> いい天気だね
> 夜だよ
ptna:Random> いい天気だね
> そうだね
ptna:Random> 10円拾った
> 良かったね
ptna:Random> 10円拾った
>
バイバイ
ライフガード Becoming a lifesaver
東京へ引っ越し後の資金を調達するため。また、欲しかったモノを買うために、プールの監視員+トレーニングジムのトレーナーのアルバイトを始めた。
まだ、始めて3日目だけれど、プールの仕事は、ほぼほぼ覚えてしまってスムーズに仕事が出来るようになった。スタッフなので、トレーニングジムとプールがタダで使えるから、もう至れり尽くせり。
本題は、ここでは無くて、プールの監視員として働いている以上、事故を目撃する可能性がある。その為、溺者の救助、傷病者への手当て、心肺蘇生や人工呼吸、AEDなど。普通に生活していたら、経験出来ずに、身につくこともない。
しかし、僕はアルバイトと言う形ではあるが、人命救助の指導を受けている。
本当にここで仕事を始めてよかったと思う。何か起きた時に傍観者でいる自分は想像出来ないし、何か起きた時には即座に行動に移せる男になりたい。
ここまで自分は、色々な人に支えられて生きてきた。確かに、酷い事をしている人もいる。人を傷つける人もいる。
自分は、空が飛べるようなヒーローにはなれないけれども、ヒーローと呼ばれたい訳でもないけれども、ただ人を救える立場でありたい。ただそれだけ。人を傷つける事しか出来ない人間たちには出来ない、人を救うと言う事。これは、自分の使命だと肝に命じて。今ここに五体満足で生きていられる事に感謝をして、これからも全力で人命救助の指導を受けて行きます。
そして、どんな形であろうと、人を救える人を増やしていきたいです。しっかり覚えて、家族、大切な人たちをしっかり護れるように。体づくりも!
さて、プログラミング勉強しますか!!!
人は感謝を忘れてしまった途端、人ではなくなる。
健康な肉体には健康な精神が宿る
自分の理想に一歩でも近づくために
ここのサイトに書いてある記事について。
IT × 英語 × ビジネス → 最強 だと思っています。間違いありません。
この記事に書かれている人のように自由に働けるようなスキルを身につけるためにはどうしたらいいのか。IT × 海外留学 しないといけないのか?を自分の経験から分析したところ。
自分の場合、英語の習得に関して言えば、まだ完璧ではないですが、国内でも留学をしなくとも、海外の人達となんの抵抗もなく英語でのコミュニケーションが取れるまでに成長出来ました。
個人的には、留学は手段であって、絶対的に必要な条件ではないと思っています。確かに、留学にはメリットがあります。例えば、文化に触れられる、友人が増える、語学学習に浸かる事が出来る。もちろん、デメリットは金銭面。金銭面さえ克服してしまえば、すごく魅力的です。
ですが、その留学での語学学習でも熱量の違いで習得に差が出てしまうのも事実。のほほんと学んでいきたい人は、短期間集中型ではなく、長期で留学をした方がいい人だと思います。
努力すれば、国内でも英語圏出身の人達と友達になる事が出来ます。英語が学べます。
なので、今回も記事の人の様なスキルを身につける事も国内でも可能だと感じました。金銭面で迷っている暇があれば、遠くても自己投資に熱量を。
迷っているその時間を勉強に当てていこう、自己投資していこう。そのような IT × 英語 in Japan コミュニティー探しに時間をかけていこうと思います。無ければ、作ればいい。
とりあえず、東京なら何でも出来る気がします。
Something wrong with my tablet.
予期していなかった再起動または、予期していなかったエラーの発生。Windowsインストールが進まない。Windowsインストールのために”OK”を押して、インストールを再度開始させてください。”OK”を押しても同じ画面が…。PCにも繋がらないから、壊れたのか?
My tablet says that ”The computer restarted unexpectedly or encountered an unexpectedly error.Windows installation cannot proceed.To install windows,click ”OK” to restart the computer,and then restart the installation.” over and over again even though I tried to do that thousand times... Huh? I got stucked into it completely!
def restart_com(self):
print(”The computer restarted unexpectedly or encountered an unexpectedly error.Windows installation cannot proceed.To install windows,click ”OK” to restart the computer,and then restart the installation.)
if(OK==True):
return self
else:
return self
という感じですかね。昨日に引き続き謎が増えました。プログラムでギャグが言えたら面白そう、プログラミングもっと勉強しないと!