LoginSignup
1
0

More than 1 year has passed since last update.

簡単な対話bot作ってみた

Posted at

はじめに

この記事は、SLP KBIT AdventCalendar2021 21日目の記事です。(物凄く遅れました…)
Python学習のチュートリアルとして簡単な対話botを作りました。
(といっても会話が支離滅裂なので期待しているようなbotではありません)

目次

・環境
・コードの解説
・実行結果
・おわりに

環境

Python 3.9.7
Spyder

コードの解説

responder.pyはユーザーの入力した文字列に対して反応を示すためのプログラムです。あらかじめユーザーに返すフレーズをリストにまとめて置き、それをランダムに出力することで会話をしているように見せています。

responder.py
import random

class Responder(object):

    def __init__(self, name):
        self.name = name

    def response(self, input):
        return ''

class RepeatResponder(Responder):
    # オウム返しのためのサブクラス
    def response(self, input):
        return '{}ってなに?'.format(input)

class RandomResponder(Responder):
    #ランダムな応答のためのサブクラス
    def __init__(self, name):
        super().__init__(name)
        self.responses = ['おなかすいた', 'ねむい', 'ご飯作って',
                          '元気だねー', 'いい天気だね', 'お疲れ様ー']
    def response(self, input):
        return (random.choice(self.responses))

pityna.py
import responder

class Pityna(object):
    #本体クラス
    def __init__(self, name):
        self.name = name
        self.responder = responder.RandomResponder('Random')

    def dialogue(self, input):
        #response()を呼び出して入力した文字列を取得
        return self.responder.response(input)

    def get_responder_name(self):
        # responderに格納されているオブジェクト名を戻り値にする
        return self.responder.name

    def get_name(self):
        return self.name

実行結果

実行してみると下の様な会話をすることができました。しかし、会話をしているように見えてもリストからランダムにフレーズを取り出しているだけなのでぎこちないですね。
会話の様子.png

おわりに

作業中にエラーが大量発生したことでなかなか進みませんでした…
今回はbotとの会話が少しぎこちない状態で終わりましたが、この後も本を読み進めながら学習をして会話がちゃんと成立するぐらいのbotを作りたいと思います。
最後まで記事を見ていただきありがとうございました。

参考にした本
・金城 俊哉『Pythonプログラミングパーフェクトマスター』(秀和システム、2020)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0