質問: 「日本語入力を支える技術 ―変わり続けるコンピュータと言葉の世界」徳永拓之 著では、bag of wordsについて、こういう説明が述べられています。 > > 「bag of words」では、文章を単語に区切って含まれる単語の数を数え、それぞれの**単語に対応する次元**に単語の出現回数を設定するものです。例えば、「this is a pen」という文をベクトルに変換することを考えます。**「this」「is」「a」「pen」に対応するベクトル**の次元がそれぞれ「3」「4」「9」「2」であったとすると、2、3、4、9**の次元だけ1であり、他の次元はすべて0である**ようなベクトルになります。 > > > 1、「単語に対応する次元」はどういうものですか。 2、「this」「is」「a」「pen」に対応するベクトルとはどういうものですか、次元である「3」「4」「9」「2」はそれらの単語の出現回数ですか。Wikipedia: Bag-of-words modelで紹介された方法に沿って、`{"this": 3, "is": 4, "a": 9, "pen": 2}`で表現できますか。 3、「2、3、4、9の次元だけ1であり、他の次元はすべて0である」どういう意味でしょうか。
回答: 用語について] バッグ(bag)というのは集合論の用語で、多重集合(multiset)とも呼ばれます。 集合(set)が、ある要素が含まれるか否か(1か0か)なのに比べて、バッグは同じ要素を複数個含むことができます。 1. 次元というのは、互いに独立な(他の値が変化しても、自分の値に影響がない)軸のことです。 この質問の「bag of words」では、個々の単語が別々の軸になっていて、その単語が元の文章に何回使われているかが、その値になります。 2. "book","pen","this","is","that","apple","orange","note","a","an"の10単語に注目した時、"book"という単語が一つ目なので一つ目の次元(1の次元)、"an"という単語は十個目なので十個目の次元(10の次元)となる訳です。 {"this": 3, "is": 4, "a": 9, "pen": 2} という表現方法は、"this"が3番目の次元、"is"が4番目の次元、といった事を表しているだけで、"this"や"is"が文章に何度出現するかの情報を含んでいませんから、別物です。 3. "this is a pen"という文章を当てはめてみると、左側の表になります(文章で使われた単語の行を赤字にしてあります) 出現回数の数値の並び(ベクトル)は、0,1,1,1,0,0,0,0,1,0となります(「2、3、4、9の次元だけ1」[2番目、3番目、4番目、9番目の数値だけ1で残りは0に、なってますよね]) 表では、0,1,1,1,0,0,0,0,1,0が3列目に縦に表示されています。 同様に、"that is an apple"であれば右側の表になって、ベクトルは0,0,0,1,1,1,0,0,0,1となります。 ![Bag of wordsの例