AIによる文章分類、スパム判定、検索システムなど、自然言語処理(NLP)の多くの技術では、文章をコンピュータが扱える数値へ変換する必要があります。
しかし、人間が理解する言葉をそのまま機械が理解することはできません。
そこで古くから利用されてきた代表的な手法が「BoW(Bag of Words)」です。
BoWは文章内に含まれる単語の出現回数に着目し、文章を数値ベクトルとして表現するシンプルな方法です。
現在の大規模言語モデル(LLM)ほど高度ではありませんが、自然言語処理の基礎として今でも重要な概念の一つです。
本記事では、BoWの仕組みや具体例、メリット・デメリット、現代AIとの違いまでわかりやすく解説します。
BoW(Bag of Words)とは
BoW(Bag of Words)は、文章を「単語の集まり」として扱う手法です。
名前の直訳は「単語の袋」です。
袋の中に単語が入っている状態をイメージすると理解しやすいでしょう。
重要なのは、BoWでは単語の順番を考慮しない点です。
文章の意味ではなく、
- どの単語が
- 何回出現したか
だけを見ます。
文章を単語の出現回数として数値化し、コンピュータが処理できる形に変換します。
BoWの基本的な仕組み
BoWは大きく次の流れで作成されます。
1. 文書全体から語彙を作る
まず対象文書全体から重複を除いた単語一覧を作成します。
これを「語彙(Vocabulary)」と呼びます。
例えば以下の2文があるとします。
文1:
「私は猫が好きだ」
文2:
「私は犬が好きだ」
重複を除くと、
- 私
- 猫
- 犬
- 好き
が語彙になります。
2. 単語出現回数を数える
各文書について、語彙内の単語が何回出現するか数えます。
「私は猫が好きだ」
↓
| 単語 | 出現回数 |
|---|---|
| 私 | 1 |
| 猫 | 1 |
| 犬 | 0 |
| 好き | 1 |
ベクトル表現:
【1,1,0,1】
一方、「私は犬が好きだ」
↓
【1,0,1,1】
このように文章が数値へ変換されます。
なぜBoWが必要なのか
コンピュータは文字列の意味を直接理解できません。
そのため、文章を数学的に扱える形式へ変換する必要があります。
BoWによって、
- 文書同士の比較
- 分類
- 検索
- 類似度計算
などが可能になります。
初期の自然言語処理では、文章理解の土台となる重要技術でした。
BoWの活用例
BoWは現在でも多くの場面で利用されています。
文書分類
メール分類やニュース分類で利用できます。
例えば:
入力文:
「期間限定セール開催中」
頻出単語:
- セール
- 割引
- 購入
こうした特徴から、「広告メール」として分類できます。
スパムメール検出の初期手法でも広く使われていました。
検索システム
検索語と文書の単語頻度を比較して、関連性の高い文書を見つけます。
例えば:
検索:
「機械学習」
頻繁に「機械学習」が登場する記事ほど関連性が高いと判断できます。
感情分析
レビュー分析にも利用されます。
例:
「最高」「嬉しい」「おすすめ」
→ ポジティブ
「最悪」「不満」「高すぎる」
→ ネガティブ
頻出語から感情傾向を分析します。
BoWのメリット
BoWは古典的手法ですが、多くの利点があります。
実装が簡単
アルゴリズムが非常にシンプルです。
単語を数えるだけなので初心者でも実装しやすい特徴があります。
計算コストが小さい
深層学習のような巨大計算資源を必要としません。
小規模データでも利用できます。
結果を説明しやすい
「なぜその判定になったか」が分かりやすい点も強みです。
例えば:
「猫」という単語が多かったから「動物カテゴリ」と判断したという説明ができます。
AIの説明可能性という観点でもメリットがあります。
BoWの課題
便利な一方で、BoWには大きな制約もあります。
語順を無視してしまう
BoW最大の問題は語順を考慮しない点です。
例:
「猫が人を噛む」
「人が猫を噛む」
BoWでは同じ単語を使っているため、ほぼ同じベクトルになります。
しかし意味はまったく異なります。
人間なら簡単に理解できますが、BoWでは区別が難しくなります。
文脈を理解できない
BoWは単語の意味関係を把握できません。
例えば:
- 自動車
- 車
人間には似た意味ですが、BoWでは完全に別単語です。
意味の近さを理解できません。
疎なベクトル問題
語彙が増えるほどベクトルが巨大になります。
例えば10万語の辞書を使う場合:
【0,0,0,1,0,0,0,0…】
ほとんどが0になります。
このような状態を「疎(Sparse)なベクトル」と呼びます。
問題点:
- メモリ消費が大きい
- 計算効率低下
- 学習精度低下
大規模データでは課題になります。
TF-IDFとの違い
BoWは単純な出現回数のみ利用します。
一方、TF-IDFは重要度も考慮します。
例:
文:
「AIの技術はAI業界で注目されている」
BoW:
AI → 2回
TF-IDF:
AIは多くの文書にも出現するため重要度調整
つまりTF-IDFは「珍しさ」も考慮するため、より特徴的な単語を抽出できます。
BoWはTF-IDFの基礎技術ともいえます。
現代AIとの関係
近年は以下の技術が主流です。
- Word2Vec
- BERT
- Transformer
- 埋め込み(Embedding)
これらは文脈や意味を考慮できます。
例えば、「銀行でお金を下ろす」「川の土手」という異なる意味も理解可能です。
BoWには難しかった処理です。
ただしBoWは現在も、
- 小規模分類
- 前処理
- ベースライン比較
- 教育用途
などで利用されています。
自然言語処理の基礎学習では欠かせない技術です。
まとめ
BoW(Bag of Words)は、文章を単語の出現回数として表現する自然言語処理の基本手法です。
ポイントを整理すると以下の通りです。
- 文書を単語の袋として扱う
- 単語の順番は考慮しない
- 出現回数を数値化してベクトル化する
- 実装が簡単で計算が軽い
- 文脈理解は苦手
- 現代AI技術の基礎概念として重要
最新の生成AI時代でも、BoWは自然言語処理の出発点として重要な存在です。
まずはBoWを理解することで、より高度なAI技術の理解にもつながるでしょう。
こちらもご覧ください:TF-IDFとは?自然言語処理で単語の重要度を測る基本技術をわかりやすく解説

