词袋模型:概念及python实现

简介: 词袋模型:概念及python实现

1. 基本概念


在对文本进行分类时,需要首先对文本进行向量会表示,常用到词袋模型。


词袋模型(Bow,Bag of Words)不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重(与词在文本中出现的频率有关),类似于将所有词语装进一个袋子里,每个词都是独立的,不含语义信息。


生成文本的词袋模型分为三步:


分词(tokenizing)

统计词频(counting)

特征标准化(normalizing)

词集模型(SoW,Set of Words)与词带模型类似,唯一的不同是仅考虑词是否在文本中出现,而不考虑词频。多数时候一般使用词袋模型。


比如语料库中有4个文本:


I come to China to travel

This is a car polupar in China

I love tea and Apple

The work is to write some papers in science


上述语料生成的词典共有21个单词:


‘a’,

‘and’,

‘apple’,

‘car’,

‘china’,

‘come’,

‘i’,

‘in’,

‘is’,

‘love’,

‘papers’,

‘polupar’,

‘science’,

‘some’,

‘tea’,

‘the’,

‘this’,

‘to’,

‘travel’,

‘work’,

‘write’


每个单词的One-Hot Representation如下:


image.png

上述文本的词袋模型表示如下:


image.png

词频归一化结果如下:

image.png

在大规模的文本处理中,由于特征的维度对应分词词汇表的大小,维度将会非常高,常使用Hash Trick的方法进行降维。

此外,词袋模型中的值也可以采用单词的TF-IDF值。


2. 代码实现


主要通过sklearn.feature_extraction.text中的CountVectorizer类实现。


CountVectorizer是常见的特征数值计算类(支持传入停止词),对于每个文本通过fit_transform方法计算每个单词在该文本中出现的频率,形成词频矩阵。

通过get_feature_names可查看所有文本关键字,通过toarray可查看到文本的词袋模型结果。


输入:列表,列表元素为字符串

输出:词频矩阵,矩阵元素a [ i ] [ j ] 表示j jj词在第i 个文本下的词频

scikit-learn的HashingVectorizer类实现了基于signed hash trick的算法。


代码如下:


from sklearn.feature_extraction.text import CountVectorizer  
corpus=["I come to China to travel", 
    "This is a car polupar in China",          
    "I love tea and Apple ",   
    "The work is to write some papers in science"] 
vectorizer=CountVectorizer()
print("词频统计:")
#输出4个文本的词频统计:左边的括号中的两个数字分别为(文本序号,词序号),右边数字为频次
print(vectorizer.fit_transform(corpus))
print("\n词袋模型:")
print(vectorizer.fit_transform(corpus).toarray())

输出如下:

20200705183616375.png

from sklearn.feature_extraction.text import HashingVectorizer 
vectorizerH=HashingVectorizer(n_features = 6,norm = None) #将19维词汇表哈希降维到6维
print("词频统计:")
print(vectorizerH.fit_transform(corpus))
print("\n词袋模型:")
print(vectorizerH.fit_transform(corpus).toarray())

输出如下:


20200705183719163.png



相关文章
|
16天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
110 70
|
23天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品库存管理的深度学习模型
使用Python实现智能食品库存管理的深度学习模型
138 63
|
24天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
43 3
|
5天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
113 73
|
18天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
121 68
|
14天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
91 36
|
8天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品消费需求分析的深度学习模型
使用Python实现智能食品消费需求分析的深度学习模型
47 21
|
10天前
|
机器学习/深度学习 数据采集 搜索推荐
使用Python实现智能食品消费偏好预测的深度学习模型
使用Python实现智能食品消费偏好预测的深度学习模型
50 23
|
11天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费习惯预测的深度学习模型
使用Python实现智能食品消费习惯预测的深度学习模型
54 19
|
12天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
67 18
下一篇
DataWorks