引言
词袋模型(Bag of Words, BOW)的基本思想是把一个句子转化为向量表示,它不考虑句子中单词的顺序,仅仅考虑语料库某个词在这个句子中的出现次数。
1 表示方法
例如,有如下两句话:
- 句子1:小唐喜欢看电视剧,小王也喜欢看电视剧
- 句子2:小唐还喜欢看电影
对于这两个句子,我们要用词袋模型把它转化为向量表示,给每个词一个位置索引,这两个句子形成的词表为:
{'小唐': 0, '小王': 1, '还': 2, '也': 3, '喜欢': 4, '看': 5, '电视剧': 6, '电影': 7}
如果文本中含有的一个词出现了一次,那么让这个词的位置置为1,词出现几次就置为几,其中key为词,value为词的索引,语料中共有 8 个单词, 那么每个文本我们就可以使用一个8 维的向量来表示。上述文本的向量表示为:
- 句子1:[1, 1, 0, 1, 2, 2, 2, 1]
- 句子2:[1, 0, 1, 0, 1, 1, 0, 1]
2 存在的问题
词袋模型存在较大的问题是丢失词序信息和稀疏性。
2.1 丢失词序信息
词袋模型只考虑了词的出现次数,忽略了词在文本中的顺序,因此无法捕捉到词之间的上下文关系和语义信息。
2.2 稀疏性
词袋模型使用了固定大小的词汇表来表示文本,当词汇表过大时,会增加模型的复杂度和存储空间。在大多数情况下,文本数据中出现的词汇只占据词汇表的一小部分,导致词袋表示是一个稀疏向量,存在大量的零值,这会影响模型的性能和效率。