Python × AIで問い合わせメールを自動仕分け&優先度判定

はじめに

問い合わせメールの対応は、どの企業でも欠かせない業務です。しかし、件数が増えると「どのメールから対応すべきか?」を判断するのが大きな負担になります。
そこで本記事では、Python × AI を活用し、問い合わせメールを自動仕分け&優先度判定する方法を解説します。ChatGPT APIなどの自然言語処理(NLP)技術を組み合わせれば、業務効率化が一気に進みます。


自動仕分け&優先度判定の流れ

システムの全体像は以下のようになります。

  1. メールサーバーから問い合わせメールを取得(IMAP/POP3)
  2. 件名・本文を抽出
  3. AIモデルで カテゴリ分類(例:請求、サポート、営業)
  4. AIモデルで 優先度スコアリング(高・中・低)
  5. データベースやExcelに保存、またはチャットツールに通知

必要なライブラリ

Pythonで実装する際に使う主なライブラリは以下です。

pip install openai imaplib2 pandas
  • imaplib:メール取得
  • pandas:結果の保存・集計
  • openai:ChatGPT APIで分類・判定

サンプルコード:メールの自動分類

以下は、問い合わせメールをAIで自動仕分け&優先度判定するサンプルコードです。

import imaplib
import email
import openai
import pandas as pd

# OpenAI APIキー設定
openai.api_key = "YOUR_API_KEY"

# メールサーバーに接続
imap_host = "imap.example.com"
imap_user = "your_email@example.com"
imap_pass = "your_password"

mail = imaplib.IMAP4_SSL(imap_host)
mail.login(imap_user, imap_pass)
mail.select("inbox")

# 未読メールを取得
status, messages = mail.search(None, 'UNSEEN')
email_ids = messages[0].split()

results = []

for eid in email_ids[:10]:  # サンプルとして10件
    status, msg_data = mail.fetch(eid, "(RFC822)")
    msg = email.message_from_bytes(msg_data[0][1])

    subject = msg["subject"]
    from_addr = msg["from"]
    body = ""

    if msg.is_multipart():
        for part in msg.walk():
            if part.get_content_type() == "text/plain":
                body = part.get_payload(decode=True).decode("utf-8")
                break
    else:
        body = msg.get_payload(decode=True).decode("utf-8")

    # ChatGPT APIで分類と優先度判定
    prompt = f"""
    以下の問い合わせメールを分類して、優先度(高・中・低)を判定してください。
    出力フォーマット: JSON {{ "category": "", "priority": "" }}

    件名: {subject}
    本文: {body}
    """

    response = openai.ChatCompletion.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}]
    )

    result = response["choices"][0]["message"]["content"]
    results.append({"from": from_addr, "subject": subject, "ai_result": result})

# pandasで保存
df = pd.DataFrame(results)
df.to_excel("classified_mails.xlsx", index=False)
print("仕分け結果を保存しました。")

活用例

  • サポート担当 → 優先度「高」のメールのみSlack通知
  • 経理部門 → 「請求」カテゴリをExcelに自動仕分け
  • 営業部門 → 「新規相談」カテゴリをCRMに連携

メリット

  • 処理のスピードアップ:メールを読む前に優先度を判定
  • ヒューマンエラー防止:対応漏れや遅延を防ぐ
  • スケーラブル:問い合わせ件数が増えても対応可能

まとめ

PythonとAIを組み合わせることで、問い合わせメールの自動仕分けと優先度判定が可能になります。業務効率化だけでなく、顧客対応の質向上にもつながります。
特にChatGPT APIを活用すると、従来の単純キーワード分類よりも精度の高い仕分けが実現できます。

タイトルとURLをコピーしました