在语言处理中,用向量x表示文本数据,以反映文本的各种语言属性,这称为特征提取或特征编码;而词袋模型Bag-of-words(简称BoW)就是一种可以 / 以多种方式 / 从文档中 / 对文本数据 / 进行特征提取 / 的方法。
词袋是文本的表示,它涉及两件事:(1)已知单词的词汇;(2)衡量已知单词的存在。 词袋被称为单词的“ 包 ”,因为它仅关注文档中是否出现已知单词,而关于文档中单词的顺序或结构的任何信息都被丢弃。
词袋模型提取句子和文档的特征,提取过程即“查看文本中单词的直方图,即将每个单词计数视为一个特征”。如果文档具有相似的内容,则文档是相似的,并且,仅从内容中我们可以了解文档的含义。这个词袋可以像你想的那样简单或复杂,复杂性在于决定 (1)如何设计已知单词(或标记)的词汇;(2)如何对已知单词的存在进行评分。
(1)四个 “文档” 构成的 “文档集”
It was the best of times It was the worst of times It was the age of wisdom it was the age of foolishness(2)将“文档集”包含的“所有独特的单词”(忽略大小写和标点符号)定义成一个“词表”
“It” “was” “the” “best” “of” “times” “worst” “age” “wisdom” “foolishness”(3)将每个“文档”转换成一个“向量”(这个向量的维度与词表的大小一致)
词表有10个单词,用固定长度为10的向量表示文档集。 在向量中有一个位置来对每个单词进行评分。 最简单的评分方法是将单词的存在标记为布尔值,0表示缺席,1表示存在。 其他的简单评分方法包括: (1)计数,计算 每个单词在文档中出现的 次数 ; (2)频率,计算文档中所有单词中 每个单词出现在文档中的 频率。 “It was the best of times” = [1, 1, 1, 1, 1, 1, 0, 0, 0, 0] “It was the worst of times” = [1, 1, 1, 0, 1, 1, 1, 0, 0, 0] “It was the age of wisdom” = [1, 1, 1, 0, 1, 0, 0, 1, 1, 0] ”it was the age of foolishness” = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1](4)“文档集”变大时,“词表”变大,但每条“文档”包含的“词”并不多,这导致表示文档的向量有很多0值,称为稀疏向量或稀疏表示
克服文档稀疏表示的一些简单的文本清理技术: 忽略案例 忽略标点符号 忽略不包含太多信息的常用词,称为停用词,如“a”,“of”等 修复拼写错误的单词 使用词干算法将单词减少到词干(e.g. “play” from “playing”) -------------------------------------------------------------- 创建分组词的词表 该方法既改变了词汇表的范围,又允许“词袋 从文档中捕获更多的含义”。 此时,每个单词或标记称为“gram”,如创建双字对词表称为2-gram模型。 通常一个简单的2-gram方法比1-gram词袋模型更好。 “It was the best of times” 的2-gram如下: “it was” “was the” “the best” “best of” “of times”