LESSON 30分

NLP技術の進化と現在地

「NLPは2018年のBERT登場以降、劇的に進化した。そして2023年以降のLLMの台頭で、できることの範囲が格段に広がっている。」

田中VPoEがホワイトボードに年表を描き始める。

「技術選定を誤ると、古い手法に時間を費やしたり、逆に最新手法のコストに悩むことになる。進化の流れを押さえておこう。」

NLP技術の変遷

第1世代: ルールベース(〜2010年代)

正規表現や辞書を使ったパターンマッチング。

import re

def classify_rule_based(text):
    """ルールベースの分類"""
    if re.search(r'届か|配送|発送|追跡', text):
        return '配送'
    elif re.search(r'返品|返金|交換', text):
        return '返品'
    elif re.search(r'壊れ|不良|故障', text):
        return 'クレーム'
    else:
        return 'その他'

# 限界: 新しい表現に対応できない
print(classify_rule_based("荷物がまだ来ません"))  # → その他(本当は配送)
print(classify_rule_based("配送状況を教えて"))      # → 配送(正しい)

特徴:

  • メリット: 解釈性が高い、少量データで構築可能
  • デメリット: メンテナンスコストが高い、表現の揺れに弱い

第2世代: 統計的機械学習(2010年代)

Bag of Words(BoW)やTF-IDFで特徴量を作り、Naive BayesやSVMで分類する手法。

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

# 統計的ML分類パイプライン
pipeline = Pipeline([
    ('tfidf', TfidfVectorizer(max_features=5000)),
    ('clf', MultinomialNB()),
])

# 学習データがあれば、新しい表現にも対応できる
# pipeline.fit(train_texts, train_labels)
# predictions = pipeline.predict(test_texts)

特徴:

  • メリット: 表現の揺れに対応可能、学習データから自動的にパターンを獲得
  • デメリット: 語順情報を失う、文脈を理解できない

第3世代: ディープラーニング(2015年〜)

RNNやLSTMで語順を考慮した分類が可能になった。Word2Vecにより「単語の意味」をベクトルで表現できるようになった。

# Word2Vecの概念
# "王" - "男" + "女" = "女王"
# "東京" - "日本" + "フランス" = "パリ"

# 単語の意味的な関係をベクトル空間で表現
# → 「届かない」と「来ない」が近い位置にマッピングされる

特徴:

  • メリット: 語順や文脈を考慮、意味的な類似性を捉える
  • デメリット: 大量の学習データが必要、事前学習済みモデルの活用が限定的

第4世代: Transformer/BERT(2018年〜)

Attention機構によって文脈を双方向に理解できるようになった。事前学習+Fine-tuningのパラダイムが確立。

# BERTの特徴
# 1. 双方向の文脈理解
#    "銀行の口座" の「口座」 vs "川の口" の「口」
#    → 同じ「口」でも文脈によって異なる表現を獲得
#
# 2. 事前学習 + Fine-tuning
#    大量のテキストで事前学習(汎用的な言語理解)
#    → 少量のラベル付きデータでFine-tuning(タスク特化)

from transformers import pipeline

# 事前学習済みモデルを使った分類(概念例)
# classifier = pipeline("text-classification", model="bert-base-japanese")
# result = classifier("荷物がまだ来ません")

特徴:

  • メリット: 少量データでも高精度、転移学習が容易
  • デメリット: 計算コストが高い、モデルサイズが大きい

第5世代: 大規模言語モデル/LLM(2023年〜)

GPT-4、Claude、Geminiなどの超大規模モデル。Zero-shot/Few-shotで学習データなしに分類が可能。

# LLMによるZero-shot分類(概念例)
prompt = """
以下の問い合わせを分類してください。
カテゴリ: 配送, 返品, 商品質問, 決済, クレーム

問い合わせ: 荷物がまだ来ません
分類:
"""
# → LLMの回答: 配送

# 学習データ不要でタスクを遂行できる

特徴:

  • メリット: 学習データ不要、柔軟な対応力、マルチタスク
  • デメリット: API利用コスト、レイテンシ、ハルシネーションのリスク

技術選定のマトリクス

観点ルールベース統計MLBERTLLM
必要データ量不要数千件数百件不要
精度低〜中中〜高
推論速度最速速い中程度遅い
コスト/件最安安い中程度高い
メンテナンス高い中程度低い最低
柔軟性低い低い中程度最高

NetShop社への推奨アプローチ

推奨: 3段階ハイブリッドアプローチ

1. まず統計ML(Naive Bayes/SVM)でベースラインを確立
   → データの特性を把握、最低限の精度を確認

2. BERT Fine-tuningで精度を向上
   → 少量のラベル付きデータでタスク特化モデルを構築

3. LLM Zero-shotで補完
   → 未知カテゴリの対応、回答生成

この3段階を比較することで、コスト対効果の最適解を見つける

まとめ

項目ポイント
NLPの進化ルール→統計ML→DL→BERT→LLMの5世代
転換点2018年BERT(事前学習+Fine-tuning)
最新動向LLMによるZero-shot(学習データ不要)
推奨戦略統計ML→BERT→LLMの3段階比較

チェックリスト

  • NLP技術の5つの世代を時系列で説明できる
  • 各世代のメリット・デメリットを理解した
  • BERTの事前学習+Fine-tuningのパラダイムを説明できる
  • LLMのZero-shot分類の利点と課題を理解した
  • NetShop社への推奨アプローチを説明できる

次のステップへ

NLP技術の進化と現在地を把握したところで、次の演習でカスタマーサポート改善の分析フレームワークを設計しよう。

推定読了時間: 30分