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

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

- URL: https://toukei-lab.com/chatbot_python
- 公開: 2024.02.01 / 更新: 2026.10.28
- サイト: スタビジ（https://toukei-lab.com）

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

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

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

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

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

:::box
**【初心者向け】Pythonで感情分析AIや大規模言語モデル（LLM）を使った様々な種類のチャットボットを作ろう！**

[![Udemy_チャットボット](/wp-content/uploads/2024/09/c5f92e2fe6bed19825e480da025c3d9e.jpg)](https://www.udemy.com/course/python-chatbot/?referralCode=16AFD92422F1BC24FF0B)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

Pythonで色々なチャットボットを作ってみたいならこれ！今なら購入時に「FLSHDGEJURXF」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-chatbot/?referralCode=16AFD92422F1BC24FF0B" note="＼30日以内なら返金無料／"}
:::

## チャットボットとは

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

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

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

[自然言語処理技術](/natural-language-python)や[機械学習](/machine-deeplearning)などのAI技術が発展したことにより、<mark>自然で人間らしい会話が出来るようになりました。</mark>

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

:::box
**・ルールベースモデル**\
**・AIベースモデル**
:::

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

:::talk{who="umatan"}
チャットボットは自動的に会話行うことが出来るプログラム！いろんな場面で活躍しているね！
:::

### ルールベースモデル

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

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

:::box{title="ルールベースモデルの特徴"}
・事前に設定されたルールに従って動作\
・具体的なキーワードやフレーズに対してルールを設定することが多い\
・開発が比較的簡単で**ルールに従った質問に対して正確な応答が出来る**\
・状況や文脈に応じた返答が難しく**ルール外の質問に対応できない**\
・新しい会話パターンに対応するために&#x306F;**、新しくルールを追加・更新する必要がある**
:::

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

### AIベースモデル

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

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

:::box{title="AIベースモデルの特徴"}
・AI技術を使って、大量のテキストデータを学習⇒文脈や状況に応じて会話を行う\
・事前にルールを設定しなくて**幅広い質問や会話パターンに対応できる**\
・学習データを追加していくことで、回答の精度が向上し、より人間らしい会話が出来るようになる\
・膨大な学習データと演算マシンが必要なため、**開発や学習に時間がかかり、コストも大きい**
:::

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

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

:::talk{who="umatan"}
ルールベースとAIベースを組み合わせた、ハイブリット型もある！

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

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

<https://toukei-lab.com/natural-language-python>

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

<https://toukei-lab.com/eliza-effect>

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

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

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

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

開発環境には[Google Colaboratory](/google-colaboratory)を使っていきます。

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

```python
!pip install janome
```

「[janome](https://mocobeta.github.io/janome/)」はPythonで利用できるオープンソースの形態素解析ツールです。

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

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

```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 "わかりませんでした。もう一度お願いします。"
```

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

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

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

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

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

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

![chatbot](/wp-content/uploads/2024/01/chatbot1-min.jpg)

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

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

Pythonで利用できる自然言語処理のオープンソースライブラリに「[NLTK（Natural Language Toolkit）](https://www.nltk.org/)」もあります。

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

:::talk{who="umatan"}
ルールに応じた回答をするチャットボット！ルールの工夫次第で面白いものが作れそう！
:::

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

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

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

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

```python
!pip install transformers
!pip install fugashi
!pip install unidic_lite
```

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

```python
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ライブラリで用意されている事前学習済みのモデルを使って感情分析を行いました。

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

![](/wp-content/uploads/2024/01/chatbot2-min.jpg)

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

:::talk{who="umatan"}
AIとルールベースを組み合わせるとより高度なチャットボットが作れそう！
:::

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

<https://toukei-lab.com/transformer>

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

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

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

```python
!pip install --upgrade openai
```

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

```python
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](/wp-content/uploads/2024/02/chatbot3-min.jpg)

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

:::talk{who="umatan"}
APIを活用することでPythonでも雑談が出来るチャットボットが作れるんだね！
:::

## チャットボット Python まとめ

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

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

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

:::box
**・ルールベースモデル**\
**・AIベースモデル**
:::

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

:::talk{who="umatan"}
それぞれの特徴を理解して、自分が作りたいチャットボットを作っていこう！
:::

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

:::box
**【初心者向け】Pythonで感情分析AIや大規模言語モデル（LLM）を使った様々な種類のチャットボットを作ろう！**

[![Udemy_チャットボット](/wp-content/uploads/2024/09/c5f92e2fe6bed19825e480da025c3d9e.jpg)](https://www.udemy.com/course/python-chatbot/?referralCode=16AFD92422F1BC24FF0B)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

Pythonで色々なチャットボットを作ってみたいならこれ！今なら購入時に「FLSHDGEJURXF」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-chatbot/?referralCode=16AFD92422F1BC24FF0B" note="＼30日以内なら返金無料／"}
:::

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

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

<https://toukei-lab.com/python_line>

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

:::box
**[スタアカ「14.大規模言語モデル（LLM）・生成系AIコース」](https://toukei-lab.com/achademy/courses/llm/)**\
**[スタアカ「自然言語処理」](https://toukei-lab.com/achademy/courses/nlp/)**
:::

:::box
**AIデータサイエンス特化スクール「スタアカ」**

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)
:::

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

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

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

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

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

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

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

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

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}