词袋模型是一个在自然语言处理和信息检索下被简化的表达模型。此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。最近词袋模型也被应用在电脑视觉(CV)领域。
例子:
以下使用词袋模型来模拟文本文档。以下是两个简单的文本文档:
(1)约翰喜欢看电影。玛丽也喜欢电影。
(2)约翰也喜欢看足球比赛。
根据这两个文本文档,为每个文档构建如下列表:
“John” ,“likes” ,“to” ,“watch” ,“movies” ,“Mary” ,“likes” ,“movies” ,“too”
“约翰”,“也”,“喜欢”,“到”,“观看”,“足球”,“游戏”
将每个词袋表示为JSON对象,并归因于相应的Javascript变量:
BoW1 = { “John” :1 ,“likes” :2 ,“to” :1 ,“watch” :1 ,“movies” :2 ,“Mary” :1 ,“too” :1 };
BoW2 = { “John” :1 ,“also” :1 ,“likes” :1 ,“to” :1 ,“watch” ::1 ,“游戏”:1 };
每个键都是单词,每个值都是给定文本文档中该单词的出现次数。
元素的顺序是自由的,例如{"too":1,"Mary":1,"movies":2,"John":1,"watch":1,"likes":2,"to":1}也是BoW1。这也是我们对严格的JSON对象表示的期望。
注意:如果另一个文档就像这两个文件的联合,
(3)约翰喜欢看电影。玛丽也喜欢电影。约翰也喜欢看足球比赛。
其Javascript代表将是:
BoW3 = { “John” :2 ,“likes” :3 ,“to” :2 ,“watch” :2 ,“movies” :2 ,“Mary” :1 ,“too” :1 ,“also” :1 ,“足球”:1 ,“比赛”:1 };
所以,正如我们在袋代数中看到的那样,两个文档在袋式文件表示中的“联合”在形式上是不相交的联合,将每个元素的多重性相加。
【来源:维基百科 https://en.wikipedia.org/wiki/Bag-of-words_model】
【https://machinelearningmastery.com/gentle-introduction-bag-words-model/】
发展历史
最初的Bag of words,也叫做“词袋”,在信息检索中,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。
现在Computer Vision中的Bag of words来表示图像的特征描述也是很流行的。大体思想是这样的,假设有5类图像,每一类中有10幅图像,这样首先对每一幅图像划分成patch(可以是刚性分割也可以是像SIFT基于关键点检测的),这样,每一个图像就由很多个patch表示,每一个patch用一个特征向量来表示,咱就假设用SIFT表示的,一幅图像可能会有成百上千个patch,每一个patch特征向量的维数128。 接下来就要进行构建Bag of words模型了,假设Dictionary词典的Size为100,即有100个词。那么咱们可以用K-means算法对所有的patch进行聚类,k=100,我们知道,等K-means收敛时,我们也得到了每一个cluster最后的质心,那么这100个质心(维数128)就是词典里德100 个词了,词典构建完毕。
主要事件
年份 | 事件 | 相关论文 |
1954 | 泽里格·哈里斯于1954年在Distributional Structure的文章第一次提到“词袋” | Harris, Zellig. Distributional Structure. Word. 1954, 10 (2/3): 146–62. |
2002 | Ruch, P.; Baud, R.; Geissbuhler, A.把词袋模型应用于医疗记录 | Ruch, P.; Baud, R.; Geissbuhler, A.Evaluating and reducing the effect of data corruption when applying bag of words approaches to medical records. 2002,67(1): 75-83 |
2012 | 提出了一种监督码书学习和词袋模型优化的新方法 | Mingyuan Jiu; Christian Wolf; Christophe Garcia; Atilla BaskurtSupervised Learning and Codebook Optimization for Bag-of-Words Models2012,4(4)1866-9956 |
2014 | Alexandros Iosifidis;提出了一个基于词袋模型表示的人类行为识别新框架 | Alexandros Iosifidis; Anastastios Tefas; Ioannis Pitas. Discriminant Bag of Words based representation for human action recognition2014,49: 185-192. |
2016 | 提出了一种名为FBoW的新型词袋模型来描述基于FST的图像 | Yanshan Li; Weiming Liu; Qinghua Huang; Xuelong LiBag of words; Fuzzy sets theory; Image description; Social images2016,75(3)1380-7501 |
发展分析
瓶颈
词袋(Bag-of-words)模型非常易于理解和实施,并为定制特定的文本数据提供了很大的灵活性。
它在语言建模和文档分类等预测问题上取得了很大的成功。
然而,它有一些缺点,比如:
- 词汇:词汇需要仔细的设计,特别是为了管理文档的大小,这会影响文档表示的稀疏性。
- 稀疏性:由于计算的原因(空间和时间复杂性)以及信息的原因,稀疏表示更难模拟,因为模型在如此庞大的代表空间中利用这么少的信息面临着巨大挑战。
- 含义:丢弃词序忽略了上下文,进而又影响在文档中的词语的意义(语义)。上下文和意义可以提供很多模型,如果模型可以区分相同的单词不同的排列(“这是有趣的”vs“这是有趣的”),同义词(“旧自行车”vs“二手自行车”)。
【来源:https://machinelearningmastery.com/gentle-introduction-bag-words-model/】
未来发展方向
Word2vec 是一种可以进行高效率词嵌套学习的预测模型。其两种变体分别为:连续词袋模型(CBOW)及Skip-Gram模型。从算法角度看,这两种方法非常相似,其区别为CBOW根据源词上下文词汇('the cat sits on the')来预测目标词汇(例如,‘mat’),而Skip-Gram模型做法相反,它通过目标词汇来预测源词汇。Skip-Gram模型采取CBOW的逆过程的动机在于:CBOW算法对于很多分布式信息进行了平滑处理(例如将一整段上下文信息视为一个单一观察量)。很多情况下,对于小型的数据集,这一处理是有帮助的。相形之下,Skip-Gram模型将每个“上下文-目标词汇”的组合视为一个新观察量,这种做法在大型数据集中会更为有效。本教程余下部分将着重讲解Skip-Gram模型。
【TensorFlow 官方教程: http://www.tensorfly.cn/tfdoc/tutorials/word2vec.html】
Contributor:Peng Jiang