Bag of wordsを用いた文章の数値化手法と具体例
こんにちは。ゆうせいです。
コンピューターに文章の内容を理解させる自然言語処理の分野において、文章を数値のまとまりであるベクトルに変換する工程は不可欠です。本記事では、文章をベクトル化する基礎的な手法であるBag of wordsについて、3つの短い日本語の文章を例に挙げて解説します。
Bag of wordsの基本的な概念
Bag of wordsは、文章に含まれる単語の並び順を完全に無視し、どの単語が何回出現したかという出現頻度のみに注目して文章を数値化する手法です。Bag of wordsという名称が示す通り、文章をひとつの袋と見立てます。そして、文章を構成する単語が書かれたカードを袋の中にバラバラに放り込み、袋の中にあるそれぞれの単語カードの枚数を数える状態に似ています。文法や語順の情報は失われますが、特定の単語の出現回数から文章の特徴を抽出することができます。
3つの文章を用いた変換の具体例
Bag of wordsの仕組みを理解するために、以下の3つの文章を例に手順を解説します。
文章1:私は猫が好きです。
文章2:私は犬が好きです。
文章3:猫と犬が好きです。
単語への分割と形態素解析
日本語は英語と異なり単語の区切りに空白がないため、形態素解析と呼ばれる技術を用いて文章を単語に分割します。形態素解析は、文章を意味を持つ最小単位の単語に切り分ける辞書のような役割を果たします。
文章1:私 / は / 猫 / が / 好き / です / 。
文章2:私 / は / 犬 / が / 好き / です / 。
文章3:猫 / と / 犬 / が / 好き / です / 。
語彙の辞書作成
3つの文章に出現するすべての異なる単語を集め、基準となる辞書を作成します。出現した単語は以下の9種類です。
私、は、猫、が、好き、です、。、犬、と
出現回数のカウントと数値化
作成した辞書の順序に従って、各文章にそれぞれの単語が何回出現するかを数え、数値のまとまりに変換します。
文章1の数値化
辞書の単語の順序に対して出現回数を当てはめます。
私(1)、は(1)、猫(1)、が(1)、好き(1)、です(1)、。(1)、犬(0)、と(0)
変換後の数値:[1, 1, 1, 1, 1, 1, 1, 0, 0]
文章2の数値化
私(1)、は(1)、猫(0)、が(1)、好き(1)、です(1)、。(1)、犬(1)、と(0)
変換後の数値:[1, 1, 0, 1, 1, 1, 1, 1, 0]
文章3の数値化
私(0)、は(0)、猫(1)、が(1)、好き(1)、です(1)、。(1)、犬(1)、と(1)
変換後の数値:[0, 0, 1, 1, 1, 1, 1, 1, 1]
文章を数値のまとまりに変換することで、コンピューターは文章同士の類似度を計算するなどの処理が可能になります。
Bag of wordsの変換結果一覧表
抽出された単語の辞書を基準として、それぞれの文章における単語の出現回数をまとめました。表の右端にある「変換後の数値」が、最終的にコンピューターへ渡されるデータとなります。
| 文章 | 私 | は | 猫 | が | 好き | です | 。 | 犬 | と | 変換後の数値 |
| 文章1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | [1, 1, 1, 1, 1, 1, 1, 0, 0] |
| 文章2 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | [1, 1, 0, 1, 1, 1, 1, 1, 0] |
| 文章3 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | [0, 0, 1, 1, 1, 1, 1, 1, 1] |
表から確認できる客観的事実
作成した一覧表から、Bag of wordsの手法について以下の事実を確認できます。
- 共通して出現する単語(が、好き、です、。)は、すべての文章において出現回数が1として記録されています。
- 文章の意味を分ける要素となる名詞(猫、犬)の数値の差異が、文章同士を区別するための重要なデータとして機能しています。
- 変換後の数値を比較した際、同じ位置にある数値の一致が多いほど、使われている単語が共通している類似度の高い文章であると判定する計算が可能になります。
Bag of wordsのメリットとデメリット
Bag of wordsのメリットとデメリットは以下の通りです。
メリット
- 仕組みが単純であるため、処理速度が速く、プログラムの実装が容易である。
- 単語の出現頻度に基づくため、文書のテーマ分類を行う用途において一定の精度を出しやすい。
デメリット
- 単語の並び順が無視されるため、「私は犬が好きですが猫は嫌いです」と「私は猫が好きですが犬は嫌いです」のように、使われている単語が同じで意味が正反対の文章を区別できない。
- 扱う単語の種類が増えると数値のまとまりの長さが膨大になり、多くの部分が0で埋められるため、コンピューターのメモリ消費量が増加し計算効率が低下する。
まとめ
Bag of wordsは、文章を単語の出現頻度という単純な指標で数値化する自然言語処理の基礎技術です。仕組みが簡潔である反面、語順の喪失やデータ量の増大といった課題も存在します。
学習のステップとして、まずは形態素解析ツールを用いてご自身の用意した文章を単語に分割し、手作業で出現頻度を数えて数値化する手順を体験してみてください。次に、プログラミング言語を用いて自動的にBag of wordsを作成する処理を実装し、最後に、Bag of wordsの欠点を補うTF-IDFやWord2Vecといったより高度なベクトル化手法の学習へ進む順序をお勧めします。
セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
新人エンジニア研修講師2026年3月28日Bag of wordsとGPTによる文章分析の違いと文脈理解の比較
新人エンジニア研修講師2026年3月28日BERTを用いた文脈理解の仕組みと文章比較の具体例
新人エンジニア研修講師2026年3月28日Embedding(単語の埋め込み)による文章の意味の数値化と類似度計算
新人エンジニア研修講師2026年3月28日Bag of wordsを用いた文章の数値化手法と具体例
