Bag of Words

Bag of Words (BoW)

Bag of Wordsとは

Bag of Words(BoW:バッグ・オブ・ワーズ)とは、テキストを単語の出現回数の集合として表現する手法です。文の語順や文法構造を無視し、どの単語が何回出現するかだけでテキストを数値ベクトルに変換します。自然言語処理における最も基本的なテキスト表現手法です。

表:Bag of Wordsの要点まとめ
ひとことで言うと語順を無視して、どの単語が何回出たかだけで文章を表す方法。
何がうれしいか仕組みが単純で計算が速い。少ないデータでも動く分類の入り口。
注意点語順と文脈を捨てるので、「好きではない」を肯定と誤るなどの弱点がある。

Bag of Wordsの仕組み

まず全文書に出現する語彙を収集し、語彙リスト(辞書)を作成します。次に各文書を語彙サイズの次元を持つベクトルに変換し、各次元にその単語の出現回数を記録します。例えば語彙が{犬, 猫, 好き}の場合、「犬が好き」は[1, 0, 1]となります。

図:文章が数値の並びになるまで
1文章を集めるレビューやメール
▶
2単語に分割形態素解析など
▶
3出現回数を数える語順は捨てる
▶
4ベクトル化語彙数ぶんの数値の列
▶
5分類や集計機械学習にかけられる

利点と限界

BoWはシンプルで実装が容易、計算コストが低いという利点があります。しかし、語順情報の喪失、高次元スパースベクトルの問題、単語の意味的類似性を捉えられないという限界があります。「犬が猫を追いかける」と「猫が犬を追いかける」が同じ表現になってしまいます。

発展的な手法

BoWの限界を補うため、N-gramで語順の一部を考慮する手法、TF-IDFで単語の重要度に重み付けする手法、さらにWord2VecやBERTなどの分散表現へと発展してきました。