本文へ移動
カテゴリ

Webマーケ

Webマーケの記事すべてSEOサイト運営データマネジメントビジネス・マーケ概論広告

インタビュー

インタビューの記事すべて

おすすめサービス

おすすめサービスの記事すべて

おすすめ勉強法

おすすめ勉強法の記事すべて

おすすめ書籍

おすすめ書籍の記事すべて

データサイエンス

データサイエンスの記事すべてデータ解析品質工学多変量解析機械学習生成AI統計学

プログラミング

プログラミングの記事すべてPythonRSQLプログラミングスクール

スタビジについて

記事一覧運営者情報

【サンプルコード付き】Pythonを使ったチャットボットの作り方を解説!

目次
ウマたんウマたん

当サイト【スタビジ】の本記事では、Pythonを使ったチャットボットの作り方をコードによる実装も含めて解説していきます!ChatGPTにより、高度な回答が可能なチャットボットが簡単に作れるようになりました。本記事を読んで自分なりのチャットボットを作っていきましょう!

こんにちは!スタビジ編集部です!

近年ChatGPTの登場によりチャットボットへの注目度が高くなっています。

今回はそんなチャットボットをPythonで作る方法を解説していきます!

ちなみに、Pythonで色んなチャットボットを作る方法を知りたい方は以下のUdemyコースで僕が講師として教えていますので参考にしてみてください!

チャットボットとは

まずは「チャットボットとは?」について簡単に見ていきます。

チャットボットとはユーザーの言葉や文章に対して自動で応答してくれるコンピュータプログラムを指します。

最初はユーザーの文章をそのまま返答したり、特定の単語が当てはまったら用意したテンプレート文を出力する簡単なものでした。

自然言語処理技術や機械学習などのAI技術が発展したことにより、自然で人間らしい会話が出来るようになりました。

このようにチャットボットには大きく以下の2種類があります。

それぞれの特徴について見ていきましょう。

ウマたんウマたん

チャットボットは自動的に会話行うことが出来るプログラム!いろんな場面で活躍しているね!

ルールベースモデル

「ルールベースモデル」のチャットボットはあらかじめ設定されたルールやパターンに基づいて会話を行います。

ルールベースモデルはチャットボットの原型となるモデルで特徴は以下です。

想定された会話に対しては適切な回答が出来るため、利用者の質問に回答する”カスタマーサポート“や指示された行動をする”タスク指向型“のチャットボットによく利用されます。

AIベースモデル

「AIベースモデル」のチャットボットは機械学習やディープラーニングを用いて大量のテキストデータを学習し、自然言語処理技術によって、人間のような会話を行います。

AIベースモデルは以下の特徴があります。

文脈や状況に応じて柔軟に回答できるため”エンターテイメント型“のチャットボットや”AIアシスタント“など様々な分野で活用されています。

特にLLMの登場により”ChatGPT“のような高性能な会話が出来るボットも実現しています。

ウマたんウマたん

ルールベースとAIベースを組み合わせた、ハイブリット型もある!

ルールに基づく処理と機械学習を組み合わせて、柔軟性と正確性を向上させているよ!

自然言語処理で出来ることについて、以下の記事で詳しく解説しています!

【入門】自然言語処理でできることをいくつかPythonで実装してみる!当サイト【スタビジ】の本記事では、自然言語処理についてPythonでの実装と合わせてまとめていきたいと思います。実際にテキスト情報を形態素解析で分解してテキスト類似度を計算したり、空欄を予測したりすることができるんです!

ちなみに、機械の受け答えが人間と見分けられるかを確かめる「チューリングテスト」という有名な試験もあります。また、チャットボットに心があるように感じてしまう「イライザ効果」については、以下の記事で解説しています。

イライザ効果とは?AIに心があると感じてしまう理由を分かりやすく解説!イライザ効果とは、コンピューターの受け答えに、人間のような心や理解があると思い込んでしまう心の働きのことです。本記事では、由来になったプログラム「ELIZA」、心を感じてしまう理由、AIとの上手なつきあい方を図解で分かりやすく解説します!

Pythonでチャットボットを作ってみよう!

ではPythonでチャットボットを作っていきましょう。

ルールベースのあいさつチャットボット

ここではルールベースモデルで条件に当てはまったら定義した応答を返すチャットボットを作っていきます。

開発環境にはGoogle Colaboratoryを使っていきます。

まず必要なライブラリをインストールします。

!pip install janome

「janome」はPythonで利用できるオープンソースの形態素解析ツールです。

テキストデータのトークン化や解析、単語の分類など、多くの自然言語処理タスクで利用されていて、日本語に対応しているのが特徴です。

では最初に応答のルールを作成していきます

from janome.tokenizer import Tokenizer

# Janomeのインスタンスを作成
tokenizer = Tokenizer()

# ユーザー入力の処理
def get_response(user_input):
    greetings=["こんにちは","おはよう","こんばんは"]
    #メッセージをトークンに分割
    tokens = tokenizer.tokenize(user_input)
    # トークンごとにルールをチェック
    for token in tokens:
      if token.surface in greetings:# 定義した挨拶用語が含まれる場合は同じ言葉を返すルール
        return token.surface
      elif token.part_of_speech.split(",")[1] == "固有名詞":# 固有名詞が含まれる場合はその固有名詞を質問するルール
        return f"{token.surface}はどういう意味ですか?" 
                
    return "わかりませんでした。もう一度お願いします。"

今回は簡単に形態素解析を活かしたルールにしました、形態素解析にはjanomeのtokenize関数を使っています。

文章を単語単位で分割し、単語ごとにルールと照らし合わせて、当てはまったら回答を返すというやり方です。

続いてチャットボットと会話をする部分を作成します。

# メインの対話ループ
while True:
    user_input = input("ユーザー: ")
    if user_input.lower() == "終了":
        print("チャットを終了します。")
        break

    response = get_response(user_input)
    print(f"ボット: {response}")

作ったチャットボットの結果を見ていきます。

chatbot

すこしかみ合わない所はありますが、チャットボットとやり取りが出来ていますね。

ルールの部分を追加・修正していくことで、自分の期待するチャットボットを構築することが出来ます。

Pythonで利用できる自然言語処理のオープンソースライブラリに「NLTK(Natural Language Toolkit)」もあります。

NLTKは主に英語対応ですが、自然言語の解析や処理を簡単に行えるように様々な機能やデータセット、学習済みのモデルを提供していてかなり便利なので参考にしてみて下さい。

ウマたんウマたん

ルールに応じた回答をするチャットボット!ルールの工夫次第で面白いものが作れそう!

AIとルールを組み合わせた”応援チャットボット”

次に機械学習を組み合わせてユーザーがネガティブな発言をしたら、応援してくれるチャットボットを作ってみます。

AIモデルを使って文章を判定し、判定結果をルールに基づいて応答するといった流れになります。

入力された文章から感情を予測することを”センチメント分析“と呼び、Pythonではtransformerライブラリで感情判定をすることが出来ます。

!pip install transformers
!pip install fugashi
!pip install unidic_lite

実際に作ったチャットボットはこちらになります。

from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
import random

# 事前学習済みモデルの読み込み
def load_sentiment_analysis_model(model_name):
  model = AutoModelForSequenceClassification.from_pretrained(model_name)
  tokenizer = AutoTokenizer.from_pretrained(model_name)
  sentiment_analysis_pipeline = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
  return sentiment_analysis_pipeline

# 感情分析
def detect_negative_sentiment(text, sentiment_analysis_pipeline):
  result = sentiment_analysis_pipeline(text)
  sentiment = result[0]["label"]
  score = result[0]["score"]
  return sentiment , score

# 応答ルール
def comfort_bot(input_text, sent_analysis_model):
  sentiment, score = detect_negative_sentiment(input_text, sent_analysis_model)
  if sentiment == "negative":
    return random.choice(encouragement_messages)
  return "この調子で頑張りましょう!"

sentiment_analysis_model_name = "jarvisx17/japanese-sentiment-analysis"
sentiment_analysis_model = load_sentiment_analysis_model(sentiment_analysis_model_name)

encouragement_messages = [
    "よく頑張りました!",
    "辛い時期もありますが、きっと乗り越えられます!",
    "自分を信じてください!",
    "前向きな気持ちでいきましょう!"
]

# チャットボットの利用
while True:
    user_input = input("ユーザー: ")
    if user_input.lower() == "終了":
        print("チャットを終了します。")
        break

    response = comfort_bot(user_input, sentiment_analysis_model)
    print(f"ボット: {response}")

transformerライブラリで用意されている事前学習済みのモデルを使って感情分析を行いました。

入力された文章がネガティブと判定されたら、励ます言葉が返ってくるという仕組みになってます。

ネガティブな発言に対して励ましの言葉が返ってきてますね!

ウマたんウマたん

AIとルールベースを組み合わせるとより高度なチャットボットが作れそう!

今回使ったTransformerについては詳しく知りたい方は、以下の記事をチェックしてください。

Transformer(トランスフォーマー)をAI進化の流れと共にわかりやすく解説!Attention層に至るまで当サイト【スタビジ】の本記事では、昨今のAIブームのベースとなっているTransformer(トランスフォーマー)について簡単に解説していきたいと思います!Transformerはディープラーニングの進化をブレークスルーさせた技術なんです

AIベースモデルの雑談チャットボット

最後にユーザーの入力文に対してAIが自動で考えて回答してくれるチャットボットを作っていきましょう。

今回はOpenAIの”gpt-6-luna”を利用していきます。

!pip install --upgrade openai

OpenAIのAPIは各自で取得します、APIを呼び出すたびに数円程度かかるので注意してください。

from openai import OpenAI
client = OpenAI(
    api_key = "API Key",
)
# ChatGPTからレスポンスを取得する

def communicate(user_input):
    user_message = [{"role": "user", "content": user_input}]
    response = client.responses.create(
      input = user_message,
      model = "gpt-6-luna",
      # 推論(じっくり考える処理)をオフにすると「temperature」を設定できる
      reasoning = {"effort": "none"},
      # 乱雑さ「temperature」を設定
      temperature =  0.8
    )

    bot_response = response.output_text
    return bot_response

#レスポンスの表示
# メインの対話ループ
while True:
    user_input = input("ユーザー: ")
    if user_input.lower() == "終了":
        print("チャットを終了します。")
        break

    # ユーザーの入力をもとにチャットボットに質問
    bot_response = communicate(user_input)
    print(f"ボット: {bot_response}")

単純にGPTのモデルを呼び出して会話する仕組みになります。

chatbot

ルールを設定しなくてもユーザーの入力に対して回答が返ってきました。

ウマたんウマたん

APIを活用することでPythonでも雑談が出来るチャットボットが作れるんだね!

チャットボット Python まとめ

ここまでご覧いただきありがとうございました!

本記事ではPythonを使ったチャットボットの作り方を見ていきました。

チャットボットには大きく以下の2種類があります。

今回試したようにPythonでは自然言語処理やディープラーニングのライブラリが多く用意されています。

ウマたんウマたん

それぞれの特徴を理解して、自分が作りたいチャットボットを作っていこう!

今回お伝えした内容からもう少し踏み込んだ内容で、Pythonで色んなチャットボットを作る方法を知りたい方は以下のUdemyコースで僕が講師として教えていますので参考にしてみてください!

また、LINEといったメッセージアプリとチャットボットの実装を組み合わせることでより便利なサービスを作ることも出来ます。

以下の記事でLINEを使ったアプリの開発を紹介しているのでぜほ参考にしてみて下さい。

Python×LINEで実践!自動返信アプリを作ってみよう!当サイト【スタビジ】の本記事では、Pythonを使って、LINEにメッセージを送ったら返信してくれるアプリを作っていきます!この機能を応用することでいろんなサービスの開発が可能になるのでぜひマスターしましょう!

さらに、本記事を通してLLMや自然言語処理をもっと勉強したいと思った方は、当メディアが運営する教育サービス「スタアカ(スタビジアカデミー)」の講座をチェックしてみてください。

【価格】 ライトプラン:1,280円/月(全コースが受講し放題)
プレミアムプラン:129,800円(通常149,800円・買い切り)
【オススメ度】
【サポート体制】
【受講形式】 オンライン形式
【学習範囲】 統計学・機械学習・ディープラーニングを網羅的に学ぶ
生成AI(LLM・RAG・プロンプトエンジニアリング)を学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
実践的なビジネスフレームワークを学ぶ
マーケティングの実行プラン策定

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です!

プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1(30分×4回)を実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます!

スポンサーリンク

ウマたんスタビジ編集長

大学院は理系の統計科学研究室で、ベイズ統計学・時系列分析・異常検知を研究。日系・外資の消費財メーカーのデータサイエンティストを経て、現在は会社を経営しながらデータサイエンティストとして働いています。

スタビジアカデミー

読んだ内容を、スタアカの「Pythonでチャットボットを作ってみよう!」コースで身につける

データサイエンス・AIを、動画と課題で体系的に学べるオンラインスクール。最初のレッスンは無料で見られます。