一、前言
词袋模型是早些年使用的词向量模型,该模型假设每个词都是独立的,仅仅使用词在文章中的频率来决定如何表达词,并将每个词的表达通过组合来表征文章。
二、原理以及实现
该模型的具体构建流程如下:
假设我们有如下三篇简短文章
1、今天 我们 去 唱歌 明天 我们 去 爬山
2、 我们 去 爬山
3、小名 喜欢 打球
1、构建词袋
将文章的所有词提取出来放在一个袋子中:
dict = ['今天', '唱歌', '喜欢', '小名', '我们', '打球', '明天', '爬山']
共得到包含有8个词的词袋,那么每篇文章的维度就固定为8
2、统计文章词频
使用词袋的每个词去文章中一一统计,并按照顺序记录词频,比如文章1中,“今天”出现1次,“唱歌”出现1次...“爬山”出现1次
得到三篇文章的词向量分别如下:
1、[1 1 0 0 2 0 1 1]
2、[0 0 0 0 1 0 0 1]
3、[0 0 1 1 0 1 0 0]
3、代码实战
使用sklearn进行实战
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['今天 我们 去 唱歌,明天 我们 去 爬山',
'我们 去 爬山',
'小名 喜欢 打球']
vec=CountVectorizer()
X = vec.fit_transform(corpus)
print(X.toarray())
三、特点
1、优点
- 简单快捷,易于理解
2、缺点
- 向量稀疏度较高,当词袋较大时,容易出现维度灾难
- 假设了文本中词与词之间相互独立,上下文没有关联性,有悖于人类语言
网友评论