阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


词袋模型

词袋模型(英语:Bag-of-words model)是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,一段文本(比如一个句子或是一个文档)可以用一个装着这些词的袋子来表示,这种表示方式不考虑文法以及词的顺序。最近词袋模型也被应用在电脑视觉领域。

词袋模型被广泛应用在文件分类,词出现的频率可以用来当作训练分类器的特征。

最简单例子

词袋模型能将文档表示为矢量。

在词袋模型下,每个文档都由一个向量表示,该向量包含字典中每个单词的频率计数。

例如,假设我们有一个包含单词['coffee','milk','sugar','spoon']的字典。

文档由字符串“coffee milk coffee”组成。

则字典将由矢量[2,1,0,0]表示,

其中矢量的条目是(按顺序)出现“coffee”,“milk”,“sugar”和“spoon”。

第二个例子

以下是两个简单的文件:

(1) John likes to watch movies. Mary likes movies too.
(2) John also likes to watch football games.

基于以上两个文件,可以建构出下列清单:

[
    "John",
    "likes",
    "to",
    "watch",
    "movies",
    "also",
    "football",
    "games",
    "Mary",
    "too"
]

此处有10个不同的词,使用清单的索引表示长度为10的向量:

(1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1]

(2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

每个向量的索引内容对应到清单中词出现的次数。

举例来说,第一个向量(文件一)前两个内容索引是1和2,第一个索引内容是"John"对应到清单第一个词并且该值设定为1,因为"John"出现一次。

此向量表示法不会保存原始句子中词的顺序

该表示法有许多成功的应用,像是邮件过滤。

reference