始める無料で始める

ELIZA I: 質問への対応

質問を使うことは、会話を弾ませる効果的な方法です。ここでは、ELIZAらしい個性の第一歩として、文には質問で返し、質問には答えで返す仕組みを作りましょう。

"question""statement" をキーとして、それぞれに適切な返答のリストを持つ辞書 responses がすでに定義されています。シェルで responses.keys()responses["question"] を実行して確認してみましょう。

この演習はコースの一部です

Python でチャットボットを作る

コースを見る

演習の手順

  • message を引数として受け取る respond() 関数を定義し、文字列の .endswith() メソッドを使って message が疑問符で終わるかどうかを確認します。
  • message が疑問符で終わる場合は、responses 辞書からランダムに "question" を選びます。そうでない場合は、responses からランダムに "statement" を選びます。
  • 疑問符ありとなしの複数のメッセージをボットに送信します。これらはあらかじめ用意されています。シェルでさらに試してみたい場合は、先に「コードを実行する」をクリックしてください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

import random

def respond(message):
    # Check for a question mark
    if ____:
        # Return a random question
        return ____(____["____"])
    # Return a random statement
    return ____(____["____"])


# Send messages ending in a question mark
send_message("what's today's weather?")
send_message("what's today's weather?")

# Send messages which don't end with a question mark
send_message("I love building chatbots")
send_message("I love building chatbots")
コードを編集して実行