通俗理解Bag-of-words模型入门

总括


Bag-of-words模型是信息检索领域常用的文档表示方法


在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖

于其它单词是否出现。(是不关顺序的)


也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而独立选择的。那么到底是什么意思呢?那么给出具体的例子说明。

2  例子


Wikipedia[1]上给出了如下例子:


John likes to watch movies. Mary likes too.
  John also likes to watch football games.

根据上述两句话中出现的单词, 我们能构建出一个字典 (dictionary):


{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10}


该字典中包含10个单词, 每个单词有唯一索引, 注意它们的顺序和出现在句子中的顺序没有关联. 根据这个字典, 我们能将上述两句话重新表达为下述两个向量:


[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
 [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]


这两个向量共包含10个元素, 其中第i个元素表示字典中第i个单词在句子中出现的次数. 因此BoW模型可认为是一种统计直方图 (histogram). 在文本检索和处理应用中, 可以通过该模型很方便的计算词频.


但是从上面我们也能够看出,在构造文档向量的过程中可以看到,我们并没有表达单词在原来句子中出现的次序这也是bag of words的一个缺点,但是听师兄说,很多情况简单的用bow特征产生的结果就比较好了

3  适用场景


现在想象在一个巨大的文档集合D,里面一共有M个文档,而文档里面的所有单词提取出来后,一起构成一个包含N个单词的词典,利用Bag-of-words模型,每个文档都可以被表示成为一个N维向量。


变为N维向量之后,很多问题就变得非常好解了,计算机非常擅长于处理数值向量,我们可以通过余弦来求两个文档之间的相似度,也可以将这个向量作为特征向量送入分类器进行主题分类等一系列功能中去。


总之通过有效的办法转换为向量之后,后面的一切都变得明朗起来了,因为至少得想办法让计算机理解吧!


你可能感兴趣的:(机器学习)