Bag-of-Words(BoW)とは、テキスト(文書)に含まれる単語の出現頻度に着目して文章をベクトル表現に変換する、自然言語処理の基本的な手法です。単語の並び順や文脈を無視し、文章を「単語が入った袋(Bag)」として扱うのが特徴です。シンプルでありながら、文書分類や検索、感情分析などの初期モデルとして広く利用されています。
Bag-of-Wordsとは
Bag-of-Words(BoW)とは、テキストデータから文脈や単語の順序を無視し、各単語の出現頻度(カウント)のみを考慮して文章を数値ベクトルに変換する、自然言語処理における最も基本的なテキスト表現手法の一つです。
詳しく解説
Bag-of-Wordsの仕組みは非常にシンプルです。まず、処理対象となるすべての文書から「単語辞書(ボキャブラリ)」を作成します。次に、各文書においてその辞書に含まれる単語がそれぞれ何回出現したかを数え上げます。最終的に、辞書の単語数と同じ次元数を持つベクトルが生成され、各要素にはその単語の出現回数が記録されます。この手法は、機械学習アルゴリズムに入力可能な形式へテキストを変換する手法として、初期の検索エンジンやスパムメールフィルタなどで重要な役割を果たしてきました。テキスト表現の基礎となる重要な概念です。
具体例・使われ方
例えば、「私は猫が好きです。私は犬も好きです。」という文がある場合、単語辞書は「私」「は」「猫」「が」「好き」「です」「犬」「も」となります。この時、各単語の出現回数をカウントすると、「私: 2回」「好き: 2回」「猫: 1回」「犬: 1回」のように集計され、これをそのまま並べた数値の配列(ベクトル)として文章を表現します。実務においては、このベクトル表現を用いて「スパムメールの判定」や「ニュース記事のカテゴリ自動分類」などの機械学習タスクを実行する際に利用されます。
似た用語との違い
Bag-of-Wordsと混同されやすい概念に「TF-IDF」や「Word2Vec」があります。TF-IDFは、単なる出現頻度だけでなく、多くの文書に共通して現れる一般的な単語の重要度を下げ、特定の文書に特徴的な単語を重視する手法です。一方、Word2Vecに代表される単語埋め込み(ワードエンベディング)は、単語の意味や文脈、周辺単語との関係性を考慮して低次元の密ベクトルとして表現する手法です。Bag-of-Wordsは単語の意味や順序を完全に無視する点でこれらと異なります。
注意点
Bag-of-Wordsにはいくつかの重要な限界があります。第一に、「単語の順序(文脈)」が無視されるため、「犬が猫を追いかける」と「猫が犬を追いかける」という全く異なる意味の文が同じベクトルとして表現されてしまいます。第二に、辞書のサイズ(単語数)が大きくなると、ベクトルの次元数が非常に巨大になり、そのほとんどがゼロで埋まる「スパース性(疎性)」の問題が生じ、計算コストが肥大化しやすくなります。また、表記揺れや類義語を同一視できないため、事前の前処理(形態素解析や正規化)を丁寧に行う必要があります。