1行定義
BoW(Bag-of-Words)とは、文書を単語の並び順を無視した単語の集まりとみなし、各単語の出現回数などを並べたベクトルで表す方法のことです。
くわしく
BoW(Bag-of-Words)は、文書を数値のベクトルに変える、最も基本的な方法の1つです。名前のとおり、文書を「単語を袋に詰めたもの」とみなします。袋の中では単語の並び順は分からず、どの単語が何回入っているかだけが残ります。
作り方
- 文書を単語に分けます。日本語では、形態素解析で単語に区切ります。
- 扱う単語の一覧(語彙)を決め、各単語に番号を振ります。
- 文書ごとに、語彙の各単語が何回現れたかを数えて並べます。
たとえば語彙が「犬・猫・好き・嫌い」の4語なら、「犬が好き。猫も好き。」は(1, 1, 2, 0)になります。語彙にない「が」「も」は数えません。次元数は語彙の数と同じで、語彙が多いとほとんどの要素が0の疎なベクトルになります。出現回数の代わりに、現れたかどうかを0と1で表すこともあります。
強みと弱点
計算が単純で、文書分類や情報検索などで長く使われてきました。トピックモデルのLDAも、文書をBoWとして扱います。
一方で、語順と文脈の情報は失われます。「犬が猫を追う」と「猫が犬を追う」は同じベクトルになります。また、「の」「する」のようにどの文書にも出る語ほど、値が大きくなりがちです。意味の近い「車」と「自動車」も、無関係な別々の要素として扱われます。
弱点を補う工夫
- TF-IDF:多くの文書に現れる語の重みを下げ、その文書に特徴的な語を重く扱います。
- n-gram:2語や3語の連なりを1つの単位として数え、近くの語順を一部とり込みます。
- 分散表現:word2vecなどで学習した、意味の近さを表せる密なベクトルを使います。
word2vecのCBOW(Continuous Bag-of-Words)という名前も、周辺の単語の並び順を区別しない点がBoWと同じことに由来します。
覚え方
「袋に入れると、順番は分からなくなる」と覚えます。
G検定での出題
出題のされ方
文書を単語の出現回数のベクトルにする手順、語順や文脈の情報が失われる弱点、TF-IDFによる重み付けやword2vecなどの分散表現との違いが問われます。
混同しやすい用語
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
BoWで文書を表したベクトルの次元数は語彙の数と同じで、その文書に現れない単語に対応する要素は0になる。
答えを見る
答え ◯ 正しい
語彙の各単語に要素を1つずつ割り当て、出現回数などを入れるためです。語彙が多いと、ほとんどの要素が0の疎なベクトルになります。
-
BoWのベクトルでは、各要素の値が、その単語が文書の何番目に現れたかという位置を表す。
答えを見る
答え × 誤り
各要素の値は、その単語の出現回数か、出現したかどうかを表す0と1です。位置の情報は持たないため、語順は失われます。
-
BoWで出現回数をそのまま使うと、同じ話題でも長い文書ほど各要素の値が大きくなりやすいため、文書の総単語数で割るなどして長さの影響をならすことがある。
答えを見る
答え ◯ 正しい
出現回数は文書が長いほど増えがちです。総単語数で割った相対頻度にしたり、ベクトルの長さを1にそろえたりして、長さの違いを調整します。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目27 自然言語処理)
- Gerard Salton, Christopher Buckley, Term-weighting approaches in automatic text retrieval, Information Processing & Management 24(5), 513–523 (1988)
- Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, Efficient Estimation of Word Representations in Vector Space (2013) (3.1 Continuous Bag-of-Words Model)