コンテンツにスキップ

11.1.2 NLP の概要

NLP の全体像

この節を終えると、次のことができるようになります。

  • NLP が何を解決しようとしているのかを説明できる
  • NLP でよく使われる代表的なタスクを理解できる
  • 最も基本的な NLP の流れを理解できる
  • なぜテキスト処理は表や画像よりも「ややこしい」のかを理解できる
  • 最小例を通して「テキスト -> 構造化結果」の感覚をつかめる

一、NLP はいったい何をしているの?

Section titled “一、NLP はいったい何をしているの?”

NLP は Natural Language Processing の略で、日本語では自然言語処理です。

もっと簡単に言うと、

NLP とは、コンピュータに人間の言葉を処理させることです。

ここでいう「言葉」には、いろいろな形があります。

  • チャットメッセージ
  • コメント
  • ニュース
  • 契約書
  • 問い合わせ票
  • メール
  • 検索キーワード
  • 会議メモ

NLP が最終的に解決したいのは、単に「文字を認識する」ことではありません。さらに先へ進んで、

  • 意味を理解する
  • 情報を取り出す
  • 答えを生成する
  • タスクを完了する

ことを目指します。


二、NLP でよくあるタスクには何があるの?

Section titled “二、NLP でよくあるタスクには何があるの?”

まずは NLP のタスクを、次の 4 つの大きな種類に分けて考えるとわかりやすいです。

入力はテキスト 1 本で、出力は全体の結果です。

例えば:

  • テキスト分類 「これは返金の問い合わせ? それとも請求書の問い合わせ?」
  • 感情分析 「このレビューはポジティブ? ネガティブ?」

一部のフレーズを見つけるタイプ

Section titled “一部のフレーズを見つけるタイプ”

入力はテキスト 1 本で、その中から重要な部分を出力します。

例えば:

  • 固有表現抽出 「山田太郎は東京で働いている」から 山田太郎東京 を抜き出す
  • 情報抽出 お知らせから時間、場所、人名を抜き出す

テキストからテキストへ変換するタイプ

Section titled “テキストからテキストへ変換するタイプ”

入力テキストを受け取り、別のテキストを出力します。

例えば:

  • 機械翻訳
  • テキスト要約
  • 言い換え
  • 質問応答生成

入力は単発のテキストだけとは限らず、状態、履歴、ツールの結果なども含まれます。

例えば:

  • チャットボット
  • RAG 質問応答システム
  • Agent

こうしたタスクでは、上の 3 つの能力を組み合わせて使います。


三、なぜテキスト処理は表データより難しいことが多いの?

Section titled “三、なぜテキスト処理は表データより難しいことが多いの?”

テキストにはあいまいさがある

Section titled “テキストにはあいまいさがある”

1 つの文が、複数の意味に取れることがあります。

例えば:

「このスマホは安くはないけど、カメラは本当に強い。」

「安くない」だけを見るとネガティブに見えますが、 文全体ではむしろポジティブな評価です。

テキストは文脈への依存が強い

Section titled “テキストは文脈への依存が強い”

単独では重要でない単語も、文脈に入ると意味が決まります。

例えば:

  • bank 銀行の意味にも、川岸の意味にもなりえます

テキスト表現は統一されていない

Section titled “テキスト表現は統一されていない”

同じ意味でも、ユーザーはたくさんの言い方をします。

例えば:

  • 「返金したい」
  • 「返金のやり方は?」
  • 「この注文はまだキャンセルできる?」

文字面はかなり違っても、意図は近いです。

テキストはもともと非構造化データ

Section titled “テキストはもともと非構造化データ”

表データには、たいてい明確な列の意味があります。

  • 年齢
  • 収入
  • 都市

一方でテキストは、基本的に人が自由に書いた表現です。 モデルはまず、それを計算できる形に変える必要があります。


四、NLP の典型的な処理フローはどうなっているの?

Section titled “四、NLP の典型的な処理フローはどうなっているの?”

最も基本的な流れは、まず次のように理解できます。

flowchart LR
A["原始テキスト"] --> B["前処理"]
B --> C["テキスト表現"]
C --> D["モデル"]
D --> E["結果 / 構造化出力"]

この流れの各段階は、とても大切です。

  • 前処理 汚れたテキストを、今のタスクに合う形へ整える
  • テキスト表現 文字を数字に変える
  • モデル 入力と目的の関係を学習する
  • 出力 ラベル、答え、要約、またはエンティティの断片にする

後で学ぶ 11 自然言語処理(方向選択)の内容の多くは、実はこの流れを土台にして広がっています。


五、まずは最小の NLP 例を動かしてみよう

Section titled “五、まずは最小の NLP 例を動かしてみよう”

次の例はとてもシンプルですが、NLP の核心となる流れをすでに全部含んでいます。

  1. 入力はテキスト
  2. 最小限の前処理をする
  3. ルールで意図を判定する
  4. 構造化された結果を出す
import re
texts = [
"今日の東京の天気を調べて",
"大阪行きのチケットを予約して",
"25 かける 4 はいくつ?",
"明日の横浜は雨が降る?",
]
def classify_intent(text):
text = re.sub(r"\s+", "", text)
if "天気" in text or "" in text:
return "weather_query"
if "チケット" in text or "予約" in text:
return "ticket_booking"
if "計算" in text or "かける" in text:
return "calculation"
return "unknown"
for text in texts:
print(text, "->", classify_intent(text))

実行結果の例:

Terminal window
今日の東京の天気を調べて -> weather_query
大阪行きのチケットを予約して -> ticket_booking
25 かける 4 はいくつ? -> calculation
明日の横浜は雨が降る? -> weather_query

出力は構造化されています。自由な文章が、それぞれタスクラベルに変換されています。後で使うモデルが強くなっても、プロジェクトにはこの明確な出力境界が必要です。

この例で本当に押さえたいことは?

Section titled “この例で本当に押さえたいことは?”

この例は、NLP の最小ループがとても素朴だということを示しています。

  • 入力は自然言語
  • システムがその中のパターンを見つける
  • 最後に構造化された結果を返す

ここではルールしか使っていませんが、これでもすでに最も基本的な NLP システムです。


六、NLP の 3 つの主要な発展ルート

Section titled “六、NLP の 3 つの主要な発展ルート”

人手でルールを書いて処理します。

メリット:

  • 説明しやすい
  • 小さなタスクならすぐ始められる

デメリット:

  • 保守が大変
  • 汎化しにくい

先に特徴量を作り、それを使って分類器を学習します。

例えば:

  • BoW
  • TF-IDF
  • SVM
  • ロジスティック回帰

モデルに表現や文脈関係を直接学習させます。

例えば:

  • RNN / LSTM
  • Transformer
  • BERT
  • GPT

つまり、これから学ぶ多くの内容は、結局のところ同じ問いに答えています。

どうすれば機械は、人間の言語をより安定して処理できるようになるのか?


七、なぜ NLP は大規模モデル、RAG、Agent と強く関係するの?

Section titled “七、なぜ NLP は大規模モデル、RAG、Agent と強く関係するの?”

大規模言語モデルも、結局はテキストを扱っているからです。 もし次のような基礎概念を知らないと、

  • token
  • 意味表現
  • 文脈
  • 分類
  • 抽出
  • 生成

後で LLM、RAG、Agent を学んだときに、理解が

  • API を呼べる

ところで止まりやすくなります。

でも本当に大事なのは、

  • それらが内部で何をしているのかを理解すること

です。

だから 11 自然言語処理(方向選択)は回り道ではなく、後ろの土台づくりなのです。


NLP = チャットボット だと思ってしまう

Section titled “NLP = チャットボット だと思ってしまう”

チャットは NLP の応用の 1 つであって、すべてではありません。

前処理は細かいおまけだと思ってしまう

Section titled “前処理は細かいおまけだと思ってしまう”

多くのタスクでは、前処理の質がそのまま結果の上限に効きます。

深層学習だけが NLP だと思ってしまう

Section titled “深層学習だけが NLP だと思ってしまう”

ルールベースや伝統的機械学習も、中小規模の多くのタスクで今でもとても価値があります。

テキストを「読めた」なら機械もそのまま処理できると思ってしまう

Section titled “テキストを「読めた」なら機械もそのまま処理できると思ってしまう”

機械にとっては、テキストをまず計算可能な形に変える必要があります。


このページを終えたら、この evidence card を残します。

生テキスト
クリーニングやトークナイズ前の元の例
処理済みテキスト
整形済みテキスト、トークン、正規化メモ、削除項目
タスク境界
classification、extraction、retrieval、generation、または QA の出力
失敗確認
意味の喪失、誤ったトークン分割、言語の問題、またはあいまいなラベル
期待される成果
前後のテキストサンプルと、token または表現の出力

この節でいちばん覚えておきたい一文はこれです。

NLP の本質は、自然言語を計算可能で、モデル化できて、推論できる対象に変えることです。

これから先で見る内容は、次のようにつながっています。

  • 前処理は「どうやってテキストを整えるか」
  • テキスト表現は「どうやってテキストを数字に変えるか」
  • モデルは「どうやって数字から規則を学ぶか」

この地図を先に頭の中に置いておけば、11 自然言語処理(方向選択)の後半で内容が混乱しにくくなります。


  1. 自分の言葉で説明してください:なぜテキスト処理は表データより難しいことが多いのでしょうか?
  2. 例のルールを拡張して、hotel_booking の意図分類を追加してみてください。
  3. チャットボットは、なぜ NLP の 1 つの応用にすぎず、すべてではないのでしょうか?
  4. 自分がよく知っている AI 製品を 1 つ選び、裏側で使われている NLP タスクに分解できますか?
参考実装と解説
  1. テキストが表データより難しいのは、意味が語順、文脈、曖昧さ、句読点、表記ゆれ、ドメイン語彙に左右されるからです。表の列は多くの場合、すでに特徴の境界を定義しています。
  2. hotel_booking ルールなら、hotelroomcheck-inreservationstay などを手がかりにできます。大事なのは、正例だけでなく restaurant booking のような紛らわしい反例も試すことです。
  3. chatbot は NLP の一用途にすぎません。NLP には分類、検索、抽出、要約、翻訳、モデレーション、文書分析も含まれます。
  4. 身近な AI 製品は、入力、NLP タスク、出力、指標に分けて説明します。たとえばサポート助手なら、intent classification、retrieval QA、summarization、refusal check が入ります。