3.教えた言葉を話せるようになる
言葉を教えて~それをしゃべらせるようにしてみようと思う。
流れとしては
言葉を教える
↓
教えた言葉を話す
という流れ
初回にやったオウム返しの流れを何度も繰り返して言葉を蓄積していく
import random
sentences=[]
while 1:
sentence = input()
if sentence not in '話して':
sentences.append(sentence)
print('覚えたよ!')
else:
print('えっとね…。')
print(random.choice(sentences))
しかしこのままでは同じ言葉を覚えてしまうため
もう 少し改良を加える
import random
sentences=[]
print(sentences)
while 1:
sentence = input()
if sentence not in '話して':
if sentence not in sentences:
sentences.append(sentence)
print('覚えたよ!')
else:
print('あ!聞いたことあるかも!')
else:
print('えっとね…。')
print(random.choice(sentences))
今日は寒い
覚えたよ!
今日は暑い
覚えたよ!
今日はお腹がすいた
覚えたよ!
お腹すいた
覚えたよ!
お腹すいた
あ!聞いたことあるかも!
話して
えっとね…。
今日は暑い
最後に覚えたことを外部出力
次回話す際にはCSVを読みこんで学習(?)させていく
import random
import csv
import os
sentences=[]
if os.path.exists("Path/learn.csv") != False:
with open("Path/learn.csv", 'r', newline='') as read:
reader = csv.reader(read)
for cow in reader:
sentences.append(cow)
print(sentences)
while 1:
sentence = input()
if sentence == 'バイバイ':
with open("Path/learn.csv", 'a', newline='') as writefile:
for cow in sentences:
writefile.write(cow + '\n')
break
elif sentence not in '話して':
if sentence not in sentences:
sentences.append(sentence)
print('覚えたよ!')
else:
print('あ!聞いたことあるかも!')
else:
print('えっとね…。')
print(random.choice(sentences))
なんだかAIっぽいね
2.特定の文字列に対して反応
わざわざチャットボットを作るのに単にオウム返しをするだけではつまらない
とりあえず特定の言葉が含まれていたら特別な反応をするようにしたい。
if文を使用してこんな風に書いてみる。
talk = input()
if '今日' == talk:
print('今日は雨だね。')
else:
print(talk)
今日と入力した際に
今日は雨だね。と出力される。
しかし今日の天気は? と入力した際に返されるのは
今日の天気は? である。
つまりこいつは融通が利かないポンコツなのである。
このままではいかん
せめて入力した文字列に「今日」が含まれていたら
雨であることを伝えたい。
なので下に変更
talk = input()
if '今日' in talk:
print('今日は雨だね。')
else:
print(talk)
これで今日の天気は?と聞いたらしっかりと
雨であることを教えてくれる子になった。
だが今日の晩御飯は?と聞いた際にも
今日は雨だね。 と返答してしまう。
大変遺憾である。 こうやって変えてみよう。
talk = input()
if '今日' in talk and '天気' in talk:
print('今日は雨だね。')
else:
print(talk)
これで入力した内容に「今日」と「天気」という文字列が含まれていた場合
雨であることを教えてくれるようになった。
このようにいろいろと条件を追加していけばいろいろな言葉に反応してくれる
チャットボットを作れるようになるんだろうね。
talk = input()
if '今日' in talk and '天気' in talk:
print('今日は雨だね。')
if '今日' in talk and '飯' in talk:
print('今日はオムライスを食べたよ。')
if 'オススメ' in talk and '漫画' in talk:
print('最近はSPY×FAMILYが人気らしいね!')
else:
print('ごめんね!なんて言ったか分からないや…。')
どうせならAPIを使って本当の天気を伝えろ?
確かに その通りである。
Pythonで AI (チャットボット)を作ります。
Qiitaでやれ?
正直ごもっともだと思う。
1.オウム返し
2.特定の文字列に対して反応