🗣

自然言語処理で身につけたいスキルと技術一覧:できること・使う技術を一望

に公開

はじめに

こんにちは、SE出身の駆け出しデータサイエンティストの「マチ」です。テーブルデータだけでなく、自然言語も扱えるようになりたいと思い、勉強したことをまとめてみました。「自然言語を扱ってみたいけど、どこから手をつければいいか分からない」——そんな方にとって、この記事が学びの地図のような役割を果たせれば嬉しいです。まとめるにあたり、以下の書籍を参考にしました。

1.データ収集

高品質なモデルを作るには、まず良質なデータの収集が不可欠です。テキストは構造化(CSVなど)、半構造化(HTML、JSONなど)、非構造(自由記述)の3種に大別され、形式に応じて手法を使い分けることが求められます。加えて、著作権や個人情報保護への配慮も忘れてはいけません。

  • 既存コーパスの活用:Wikipedia、BCCWJ、Twitter API など
  • クローリング:ウェブサイトを巡回して、ページごと情報を取得
  • スクレイピング:HTMLから必要な情報だけ抽出(例:記事本文やレビュー)

2.前処理

自然言語はあいまいで構造が不明瞭なため、モデルが扱いやすい形に整える前処理が不可欠です。前処理を通じて、言語の曖昧さをできるだけ構造化・数値化していきます。代表的な処理には以下が挙げられます。

2-1.テキストの正規化

文字や記号のゆらぎを統一し、分析しやすい形に整えます。

  • 全角・半角の統一(例:「A」→「A」)
  • 大文字・小文字の統一(例:「Apple」→「apple」)
  • 改行・タブ・余分な空白の除去
  • 記号や絵文字の削除 or 置換(必要に応じて)

2-2.文・文節の分割

分析単位を文や文節に分割し、処理の粒度を整えます。

  • 文分割:改行や句点(。!?など)で文を区切る
  • 文節・フレーズ分割:係り受け解析や構文解析の前処理として必要な場合もある

2-3.単語の分割・品詞付け

文章を意味単位に分解し、各単語に文法情報を付与します。

  • トークン化(形態素解析):文を単語に分割
  • 品詞タグ付け:各単語に名詞・動詞・助詞などの情報を付与

2-4.語彙処理(意味の整理)

モデルが適切に学習できるよう、語彙のノイズを減らす

  • ストップワード除去:意味の薄い語(例:「は」「の」「です」)を削除
  • ステミング / レンマ化:活用語を原形に変換(例:「running」→「run」)

2-5.ノイズ処理・フィルタリング

誤字や記号などのノイズ要素を削除または補正します。

  • スペルチェック・誤字補正:SNS投稿やOCR後のデータなどで有効
  • 正規表現による除去:メールアドレス・URL・絵文字・ハッシュタグなど
  • 数字・記号のマスキング:数字を「<NUM>」に置換するなどの前処理が有効な場合がある

3.特徴量設計

テキストを数値的に表現し、モデルが学習・予測できる形式に変換します。

3-1.統計ベースのベクトル化

単語の出現頻度や文書全体での重要度に基づき、数値的に特徴を抽出する手法です。

TF-IDF:頻出語に重みをつけて重要語を抽出

TF」は、ある文書内で単語がどれくらい多く使われているか(出現頻度)を示します。「IDF」は、単語の希少性に着目しており、「多くの文書に登場する単語は情報価値が低い」として、それらの重みを下げるための指標です。「TF-IDF」は、頻繁に登場するが、他の文書にはあまり出ない単語に高い重みを与え、汎用語(例:「こと」「ある」「です」など)を低く評価することで、特徴的なキーワードを抽出するために使われます。

  • メリット
    • 共通語(ストップワード)を自動で重みづけ低下できる
    • 文書分類・検索・要約・トピック分析などに強い
  • デメリット
    • 文脈は捉えられない。単語の意味や文法的関係は無視される。
      (例:「not good」と「good」)
    • ボキャブラリ数が多くなると、疎なベクトルになる
    • 単語分割の精度に依存する。
      特に日本語では形態素解析の質が重要(「映画が」「映画」などの違い)。
Bag of Words(BoW):単語出現頻度を数値化

「単語の順番や文法構造を無視し、どの単語がどれだけ出現したか」に着目することで、テキストデータを機械学習で扱いやすくします。例えば、次のような3文からなるコーパス(文書集合)があったとします。

文1:私は映画が好きです
文2:あなたも映画が好きですか?
文3:私はスポーツが好きです

このとき、出現する語彙(ボキャブラリ)は以下のようになります。

["私", "は", "映画", "が", "好き", "です", "あなた", "も", "ですか", "スポーツ"]

各文を BoW に変換すると、以下のようなベクトル(単語の出現回数)になります。
※ 単語の順序は無視され、語彙リストの順に並べられます。

ベクトル
文1 [1,1,1,1,1,1,0,0,0,0]
文2 [0,0,1,1,1,0,1,1,1,0]
文3 [1,1,0,1,1,0,0,0,0,1]
  • メリット
    • シンプルで実装が容易
    • モデルの解釈性が高い(どの単語が効いているか分かりやすい)
    • 小〜中規模のデータでは有効(例:メール分類、レビュー分析)
  • デメリット
    • 文脈情報を失う(「not good」と「good」の意味の違いが分からない)
    • 次元が非常に高くなる(語彙数=特徴数)
    • 疎なデータになる(大部分が0)
n-gram:連続語(例:bi-gram)で文脈を考慮

n-gram(エヌグラム) とは、テキスト中の連続したn個の単語(または文字)の並びを取り出す手法です。「n」は整数(1以上)で、n=1ならユニグラム(単語単体)、n=2ならバイグラム(2語ペア)、n=3ならトライグラム(3語セット)になります。順序を考慮することで、BoWよりも語のつながり・文脈の一部をモデルに反映できます。例えば、次のような文があった場合、

私は 映画 が 好き です

n-gramは以下のようになります。

n n-gram
1(ユニグラム) 私は, 映画, が, 好き, です
2(バイグラム) 私は 映画, 映画 が, が 好き, 好き です
3(トライグラム) 私は 映画 が, 映画 が 好き, が 好き です
  • メリット
    • 映画 が」「が 好き」のような語と語のつながりを保持できる
  • デメリット
    • nが大きくなると語彙数(特徴量)が爆発的に増える
    • 出現頻度の低いn-gramが多数発生し、学習が難しくなる
    • 日本語の場合は形態素解析が不可欠
    • nが小さいとロングレンジの依存関係(例:主語と述語)は拾えない

3-2.意味ベースのベクトル化

単語や文の意味的な類似性や関係性を反映するように、連続値ベクトルに変換する手法です。

fastText:サブワード情報を活用した単語ベクトル表現

単語を文字 n-gram(部分文字列)の集合としてとらえ、未知語や稀な語に対しても有効な分散表現を生成できる点が特徴です。これにより、スペルミスや派生語への頑健性が高くなります。

  • メリット
    • 未知語(Out-of-Vocabulary)に対しても、サブワードからベクトルを生成できる
    • 単語の内部構造(接頭辞・語幹など)を活用するため、構造的な意味類似性を捉えやすい
    • word2vecよりも高精度でありつつ、高速に学習できる
  • デメリット
    • 単語の順序や文脈は考慮されないため、文脈依存の意味には弱い
    • ベクトルの次元数が増えがちで、計算資源を多く消費する場合がある
    • 文単位の意味表現には適さない
word2vec:単語の意味をベクトルで表すモデル

意味が近い単語はベクトル空間でも近くなるように学習されます。

  • メリット
    • 「王様 − 男 + 女 = 女王」のような意味的な計算が可能
    • 軽量・高速で、単語のクラスタリングや可視化、類似語検索などに使われる
  • デメリット
    • 文脈の違いを反映できない(例:「バット(野球)」と「バット(動物)」)
BERT:Transformerベースの事前学習型言語モデル

文の前後両方の文脈を同時に考慮することで、従来の手法よりもはるかに高精度な自然言語理解を実現した革新的モデルです。さまざまな自然言語タスクに対して、事前学習済みモデルをファインチューニングすることで応用可能です。

  • メリット
    • 文脈に応じて同じ単語でも異なるベクトル表現を生成できる(文脈依存型)
    • 文分類、質問応答、固有表現抽出など多数のタスクに高精度で対応可能
    • Transformerアーキテクチャにより、長文中の依存関係も効率的に捉えられる
  • デメリット
    • モデルサイズが大きく、学習・推論に高い計算リソースが必要
    • 解釈性が低く、ブラックボックス的な側面がある
    • トークナイザや事前学習の前提に依存するため、応用時には注意が必要

word2vecとBERTの違い

比較軸 word2vec BERT
処理単位 単語(固定ベクトル)       文脈に応じた単語 or 文全体
文脈理解 ×(なし) ◎(双方向)
精度 中(軽量・高速) 高(大規模・高精度)
実務用途 意味検索・類似語抽出 文分類・QA・NER・多用途モデルとして活用可能

3-3.構造・ルールベースのカスタム素性

構文や意味、出現パターンなどに基づき、人手で設計した特徴(素性)を加える手法です。
モデルに明示的なヒントを与えたり、業務特化・ドメイン知識を活かしたりする際に効果的です。

主なカスタム素性の例とその用途
カスタム素性例 内容 主な用途・効果
文の長さ 文字数や単語数など 短文・長文の傾向把握
(例:スパム検出)
出現単語リスト ポジティブ語・ネガティブ語の
リストを用いたフラグ
感情分析・レビュー評価など
記号の出現数 「!」「?」などの感嘆・疑問符数 主観的・強調表現の判定
固有表現の有無 地名・人名・組織名の出現判定 ニュース分類、文書のトピック推定
否定表現の有無 「ない」「ぬ」などの否定語が
含まれているか
意味反転の考慮(感情判定・
事実関係抽出など)
品詞構成比率 名詞・動詞・形容詞の出現比率 文の構造やスタイルの判定
(例:説明文か感想か)
特定語の出現有無 業界用語や特定キーワードの出現 ドメイン特化の分類
(医療・法務・金融など)
文位置情報 文中での登場位置(冒頭・末尾) 要約・意図抽出での文の重みづけ
単語の出現頻度
ランキング
頻出語ランキング内に含まれるかどうか ノイズ除去や意味重みの調整に活用
  • メリット
    • 業務特化・ドメイン知識を反映できる。
    • 軽量かつ解釈しやすい。
  • デメリット
    • 汎用性がなく、構築に手間がかかる。
    • トレンドの変化にも弱い。

3-4.文書レベルのベクトル化

文全体・文書全体を1つのベクトルとして表現することで、文章分類や感情分析など、文単位の予測に対応するための特徴量設計です。

主なアプローチ
手法 説明
BERTの[CLS]トークン出力 文全体の意味を代表するベクトルとして抽出可能
単語ベクトルの平均 各単語ベクトルを平均して文の特徴ベクトルを生成
単語ベクトルの最大値 各特徴次元で最大値をとって、代表的な特徴を抽出
CNN/Transformerベースの
文書分類器
文書を直接ベクトルに変換し、
分類や回帰などのタスクに活用
(TextCNN・Transformer Encoder)
  • メリット
    • 文全体・文書全体の意味を1つのベクトルに圧縮でき、分類タスクに適する
    • 再利用可能な特徴ベクトルを事前計算できる(効率化)
  • デメリット
    • 平均や最大値では文の構造や順序が失われることがある
    • 長文では重要な情報が希薄化する可能性あり

4.モデル構築

4-1.4つのアプローチ

NLPに限らず、データを扱う手法は以下のように分類できます。目的やデータ量に応じて、最適なアプローチを選ぶことが重要です。

  • ルールベース:正規表現など、人が定義したルールに基づく
  • 統計ベース:TF-IDFなど、出現頻度や分布に基づく
  • 機械学習ベース:決定木やSVMなど、特徴量と正解から学習する
  • 深層学習ベース:ニューラルネットで文脈や構造を自動で学習する

4-2.ルールベースのアプローチ

  • メリット
    手軽かつ透明性が高く、小規模データでも効果的
  • デメリット
    対応範囲が狭く、保守性に課題あり
  • 代表例
    正規表現を使ったパターンマッチング、記号やキーワードによる分類・抽出

4-3.統計ベースのアプローチ

  • メリット
    文書の構造を問わず使いやすい
  • デメリット
    文脈理解が難しく、深い意味は捉えにくい
  • 代表例
    TF-IDFによる特徴抽出
    PMI(Pointwise Mutual Information)による語の関連度評価
    Co-occurrence(共起)行列
    単純ベイズ分類器などの軽量モデルとの組み合わせも有効

4-4.機械学習ベースのアプローチ

  • メリット
    ラベル付きデータから学習し、分類や抽出に強い
  • デメリット
    特徴量設計が性能に大きく影響する
  • 代表例
    SVM、ロジスティック回帰、ランダムフォレスト

4-5.深層学習ベースのアプローチ

  • メリット
    • 文脈理解や構造の自動学習が可能で、BoWやTF-IDFといった単純な手法では捉えきれなかった意味的なつながりを扱える
    • 事前学習済みモデル(BERTやGPTなど)をファインチューニングすることで、高精度なモデルを少量のデータで構築できる
    • 多様なタスク(分類・抽出・生成など)に汎用的に適用できる
  • デメリット
    • 高性能な分だけ、学習には大量のデータと高い計算リソースが必要
    • モデルの解釈性や可視化が難しく、ブラックボックスになりがち
    • 適切なトークナイザや前処理、パラメータ設計が性能に大きく影響するため、実装・チューニングの難易度が高い
  • 代表例
    • BERT
      双方向の文脈を考慮したベクトル表現を生成し、文分類・質問応答・NERなど幅広く活用できる
    • Transformer
      エンコーダ・デコーダ構造により、長文の依存関係も効率的に学習でき、翻訳・要約・生成に強みを持つ
    • GPT
      自己回帰型の生成モデルで、文章生成や対話システムなどに特化
    • BART / T5
      文の変換や再構成(要約・翻訳など)に強みを持つエンコーダ・デコーダ統合型モデル

5.評価

自然言語処理の成果を正しく測るには、タスクごとに適切な評価指標を選ぶことが必要です。また、評価指標そのものを損失関数に取り込むアプローチ(例:誤り率最小化学習(MERT))もあります。

5-1.分類系

分類タスクでは、モデルがラベルをどれだけ正しく予測できたかを評価します。特にクラス不均衡がある場合は、単純な正解率(Accuracy)だけでなく、Precision(適合率)・Recall(再現率)・F1スコアなどを組み合わせて判断する必要があります。

  • 主な適用タスク
    感情分析、文書分類、スパム検知、固有表現抽出(NER)
  • 代表的な評価指標
    • Accuracy(正解率):全体に対して正しく分類された割合
    • Precision(適合率):正と予測されたもののうち、実際に正だった割合
    • Recall(再現率):実際に正だったもののうち、正と予測された割合
    • F1スコア:PrecisionとRecallの調和平均
    • ROC-AUC:2値分類での性能曲線下の面積
    • Kappa係数:分類器同士やアノテーター間の一致度を、偶然の一致を補正して評価

5-2.検索系

検索や類似文検索タスクでは、ユーザーのクエリに対する文書ランキングの妥当性を評価します。順位の適切さや、重要な文書が上位に出てくるかを重視します。

  • 主な適用タスク
    Web検索、FAQ検索、文書レコメンド、検索型QAなど
  • 代表的な評価指標
    • Precision@k:上位k件の中で正解が含まれる割合
    • Recall@k:全正解のうち、上位k件に含まれる割合
    • MAP(Mean Average Precision):複数クエリにおける平均適合率
    • MRR(Mean Reciprocal Rank):最初の正解の逆数順位の平均
    • NDCG:正解文書の順位に重みをつけてスコア化。上位にあるほど高評価

5-3.生成系

文章生成タスクでは、「出力の自然さ」「内容の正確さ」「人間らしさ」など多角的に評価します。自動評価指標と人手による主観評価の併用が一般的です。

  • 主な適用タスク
    自動要約、機械翻訳、対話生成、説明文生成など
  • 代表的な評価指標
    • BLEU:n-gramの一致率をもとに翻訳の正確さを評価
    • ROUGE:要約文と正解文のn-gramの共通性に基づく評価指標(ROUGE-N, ROUGE-Lなど)
    • METEOR:語順と意味的なマッチを考慮した翻訳評価指標
    • BERTScore:生成文と正解文の意味的な類似性をBERT埋め込みベースで評価
    • 人手評価:自然さ・流暢さ・妥当性・情報の完全性などをヒューマンジャッジで評価

6.自然言語処理でできること

大きく、既存の自然言語を扱う4つの領域と、自然言語を生成・変換する領域の計5つの領域に分けられます。

6-1.文構造と意味を理解する

単語や文の構造、意味、関係性を解析することで、文章の内部構造を把握します。

単語・語句レベルでの解析
  • 代表タスク
    形態素解析、単語分割、品詞タグ付け
  • 代表技術・ツール
    • MeCab、JUMAN、KyTea、GiNZA
      日本語の形態素解析器。文を単語に分割し、品詞を付与する。
    • 最長一致法、Viterbiアルゴリズ
      単語境界の曖昧さを解決するためのアルゴリズム。最も長い語を優先(最長一致)するアルゴリズムや、系列全体で最適解を探索(Viterbi)するアルゴリズムがある。
    • BPE(Byte Pair Encoding)
      単語をサブワード単位に分割する技術。未知語や低頻度語に強い。
    • 隠れマルコフモデル(HMM)
      形態素解析や品詞タグ付けに使われる、状態遷移に基づく確率モデル。
文レベルでの解析
  • 代表タスク
    文分割、構文解析、係り受け解析
  • 代表技術・ツール
    • CaboCha、KNP、KWJA(日本語構文解析ツール)
    • ビダビアルゴリズム(Viterbi)
      系列データにおいて、もっとも確からしい状態遷移系列(例:単語の品詞列など)を効率的に求める動的計画法。形態素解析や構文解析で用いられる。
    • 系列ラベリングモデル
      文中の各単語にラベル(品詞・係り先など)を付与するモデル。CRFやBERTによるラベリングなどが含まれ、構文・意味解析の基盤となる。
機能や役割(意味)のラベリング
  • 代表タスク
    固有表現抽出、主語・述語抽出、意味役割付与(SRL)
  • 代表技術・ツール
    • BIOラベル、CRF、LSTM-CRF、BERT
      単語列に意味ラベルを付けるための手法。
      CRFは系列ラベリング用、BERTは文脈理解ベースの深層学習モデル。
    • 素性テンプレート
      「どのような情報(特徴量)を抽出してモデルに渡すか」をルールベースで定義するひな形(テンプレート)のこと。
特徴表現・ベクトル化
  • 代表タスク
    テキストの数値ベクトル化
  • 代表技術・ツール
    • TF-IDF、BoW、word2vec、BERT
      テキストを数値ベクトルに変換する技術群。
      TF-IDF・BoWは統計ベース、word2vec・BERTは意味ベース。

6-2.分類する

テキストに対して、1つまたは複数のカテゴリを付与します。

単一ラベル分類
  • 代表タスク
    文書分類、感情分類(ポジネガ分析)、意図分類
  • 代表技術・ツール
    • SVM、ロジスティック回帰、ランダムフォレスト
      教師あり学習による分類モデル。テキスト分類でよく使われる。
    • BERTによるテキスト分類(ファインチューニング)
      [CLS]トークンを使って文全体をベクトル化し、分類に活用。高精度。
多ラベル分類
  • 代表タスク
    トピック分類、タグ付け(複数カテゴリの付与)
  • 代表技術・ツール
    • ディスコースマーカーやワードリストによる特徴抽出
      接続詞や重要語の有無などを使った特徴量設計。
      ルールベース・前処理支援の役割が強い。
    • マルチラベル対応のロジスティック回帰やNNベース分類器

6-3.抽出・検索する

情報を検索・抽出したり、関係性や類似性を分析します。

情報検索
  • 代表タスク
    検索エンジン、ドキュメント検索、クエリ文書マッチング
  • 代表技術・ツール
    • ベクトル空間モデル(TF-IDF、BM25)
      単語の重要度を数値化し、文書の検索やスコアリングに利用。
    • インデックス構築とランキング手法(NDCG、MAP など)
      検索効率化と、検索結果の品質評価に用いられる手法。
関係抽出
  • 代表タスク
    述語項構造解析、依存構造解析、エンティティ間の関係抽出
  • 代表技術・ツール
    • 係り受け解析器、共起分析、BERTによる関係分類
      文中の構造や意味関係を抽出し、述語と項の関係性などを把握。
類似文検索
  • 代表タスク
    意味検索、類似文章検索、レコメンド
  • 代表技術・ツール
    • コサイン類似度、ベクトル化(TF-IDF・BERT埋め込み)、k近傍法(KNN)
      意味の近さを数値で評価し、類似文書や質問のマッチングに活用。
抽出型質疑応答(検索+抽出)
  • 代表タスク
    質問に対して、文中の一部をそのまま返す
  • 代表技術・ツール
    • SQuAD形式QA、BERTなどによる文書スパン抽出
      文中から回答部分(スパン)を抽出する抽出型質問応答モデル。BERTが主流。

6-4.分析・可視化する

テキスト集合から傾向やパターンを抽出し、構造的に可視化・分析します。

パターン・トピック抽出
  • 代表タスク
    トピックモデリング、クラスタリング、頻出語抽出
  • 代表技術・ツール
    • LDA(Latent Dirichlet Allocation)
      文書群から隠れたトピック構造を抽出する確率モデル。
    • 共起ネットワーク分析、テキストマイニング手法
      文書群を可視化・分析するための探索的手法。
品質・誤り分析
  • 代表タスク
    自然さ評価、誤り検出、文の品質推定
  • 代表技術・ツール
    • 編集距離、キャッシュモデル、トリガーモデル
      誤り検出・品質評価に用いるルールベース系技術(やや古典的)。
    • SVR(サポートベクター回帰)
      テキストの自然度・信頼度などを数値として予測する場合に利用。
    • 分類モデルによる誤用予測
主観性分析
  • 代表タスク
    感情分析、主観/客観の分類
  • 代表技術・ツール
    • ナイーブベイズ(標準型・complement型)、SVM、BERT
      感情分析や主観性分類で使われる代表的分類器。BERTは文脈理解型。
分類型質疑応答
  • 代表タスク
    FAQ応答、カテゴリ選択型QA、意図分類QA
  • 代表技術・ツール
    • 意図分類モデル(テキスト分類)、類似度ベースの質問マッチング
      FAQ応答やカテゴリ選択型QAに用いるアプローチ。

6-5.生成・変換する

機械翻訳
  • 代表タスク
    言語間の翻訳(例:日英翻訳)
  • 代表技術・ツール
    • Transformer
      Self-Attentionを用いて文全体の文脈を効率よく学習するモデル構造。
    • seq2seqモデル(エンコーダ・デコーダ構造)
      エンコーダとデコーダを用いた系列変換モデル。
    • tree-to-tree構造
      構文木を使って文構造ごとに変換するモデル。構文的整合性が求められるタスクで活用
    • 翻訳モデル+並び替えモデルの併用
      意味変換と語順修正を分けて処理する翻訳手法の一種。
応答生成
  • 代表タスク
    チャットボット、会話応答生成
  • 代表技術・ツール
    • GPT、DialoGPT
      事前学習+自己回帰型でテキストを生成。ChatGPTの中核技術。
記述文生成
  • 代表タスク
    構造化データから文章生成(説明文、キャプションなど)
  • 代表技術・ツール
    • 表形式データからのテキスト生成モデル、NLGパイプライン
      テーブルや構造化データを自然言語に変換。説明文・キャプション生成に有効。
要約
  • 代表タスク
    文章の重要部分だけを抜き出す or 再構成
  • 代表技術・ツール
    • 抽出的要約:文スコアリング、文ランキング(TextRankなど)
    • 生成的要約:seq2seq+注意機構、BARTなど
生成型質疑応答
  • 代表タスク
    質問に対し、新たな回答文を生成
  • 代表技術・ツール
    • GPT系モデルによるフリーフォーム回答
    • RAG

おわりに

自然言語処理は、テキストデータを「人間にとって意味がある情報」として活用するための強力な技術です。基本的な構造や考え方を押さえておくことで、応用の幅が広がります。
本記事が、駆け出しのデータサイエンティストとしてNLPを学ぶうえでの土台作りに役立てば幸いです。今後も実践を通じて理解を深めていきたいと思います。

GitHubで編集を提案

Discussion