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利用コスト、レイテンシ、ハルシネーションのリスク
技術選定のマトリクス
| 観点 | ルールベース | 統計ML | BERT | LLM |
|---|---|---|---|---|
| 必要データ量 | 不要 | 数千件 | 数百件 | 不要 |
| 精度 | 低〜中 | 中〜高 | 高 | 高 |
| 推論速度 | 最速 | 速い | 中程度 | 遅い |
| コスト/件 | 最安 | 安い | 中程度 | 高い |
| メンテナンス | 高い | 中程度 | 低い | 最低 |
| 柔軟性 | 低い | 低い | 中程度 | 最高 |
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分