机器学习之词袋模型

目录

[1 词袋模型基本概念](#1 词袋模型基本概念)

[2 词袋模型的表示方法](#2 词袋模型的表示方法)

[2.1 三大方法](#2.1 三大方法)

[1 独热表示法(One-Hot)](#1 独热表示法(One-Hot))

[2 词频表示法(Term Frequency, TF)](#2 词频表示法(Term Frequency, TF))

[3 词频-逆文档频率表示法(TF-IDF)](#3 词频-逆文档频率表示法(TF-IDF))

[2.2 例子](#2.2 例子)


1 词袋模型基本概念

词袋模型Bow,Bag of Words不考虑文本中词与词之间的上下文关系 ,仅仅只考虑所有词的权重 (与词在文本中出现的频率有关),类似于将所有词语装进一个袋子里,**其中每个词的出现都是独立的,不依赖于其他词是否出现。**这种模型的主要目的是将文本转换为一个向量,其中向量的每个维度代表一个词,而该维度的值则表示该词在文本中出现的频率。

词袋模型的主要特征是:每个词的出现都是独立的,相当于每次随机试验为随机从词表中抽取一个单词,进行n次独立重复试验,因此适合使用多项式朴素贝叶斯

2 词袋模型的表示方法

2.1 三大方法

1 独热表示法(One-Hot)

One-Hot表示法的数值计算规则为:词语序列中出现的词语的数值为1,词语序列中未出现的词语的数值为0。其数学表达式为:

2 词频表示法(Term Frequency, TF)

TF表示法的数值计算规则为:词语序列中出现的词语的数值为该词语在所在文本中的频次,词语序列中未出现的词语的数值为0。其数学表达式为:

其中,表示词语表示词语在所在文本出现的次数。

3 词频-逆文档频率表示法(TF-IDF)

TF-IDF的核心思想是:

  • 如果某个词语在文本中频繁出现,则认为该词语很重要
  • 如果某个词语在文本中频繁出现,但该词语在每篇文档都出现,则认为该词语不是特别重要,比如"的"字每篇文章都出现,但是重要性不大

TF-IDF表示法的数值计算规则为:词语序列中出现的词语的数值为词语在所在文本中的频次乘以词语的逆文档频率,词语序列中未出现的词语的数值为0。其数学表达式为:

其中,表示词语表示词语在所在文本出现的次数。

的计算公式为:

当分母越大,越小,则说明其越不重要,为了防止分母为0,对进行改进,如下:

2.2 例子

已知有下边的几篇英文文本,请分别用词袋模型的三种方法来向量化表示每篇文本。

| 文档ID | 文档词列表 |

1 Chinese Beijing Chinese
2 Chinese Chinese Shanghai
3 Chinese Macao
4 Tokyo Japan Chinese

第一步:构建词袋

第二步:对于每一篇文本,计算词袋中各词语的数值,得到该篇文本的向量

One-Hot表示法

根据上述公式可得:

Beijing Chinese Japan Macao Shanghai Tokyo
Chinese Beijing Chinese 1 1 0 0 0 0
Chinese Chinese Shanghai 0 1 0 0 1 0
Chinese Macao 0 1 0 1 0 0
Tokyo Japan Chinese 0 1 1 0 0 1

词频表示法

根据上述公式可得:

Beijing Chinese Japan Macao Shanghai Tokyo
Chinese Beijing Chinese 1 2 0 0 0 0
Chinese Chinese Shanghai 0 2 0 0 1 0
Chinese Macao 0 1 0 1 0 0
Tokyo Japan Chinese 0 1 1 0 0 1

TF-IDF表示法

使用改进后的,如下:

计算过程如下:

因此有:

Beijing Chinese Japan Macao Shanghai Tokyo
Chinese Beijing Chinese 1*1.916=1.916 2*1=2 0 0 0 0
Chinese Chinese Shanghai 0 2*1=2 0 0 1*1.916=1.916 0
Chinese Macao 0 1*1=1 0 1*1.916=1.916 0 0
Tokyo Japan Chinese 0 1*1=1 1*1.916=1.916 0 0 1*1.916=1.916
相关推荐
栗子~~几秒前
Python实战- Milvus 向量库 使用相关方法demo
开发语言·python·milvus
狐凄2 分钟前
Python实例题:基于 Flask 的在线聊天系统
开发语言·python
狐凄3 分钟前
Python实例题:基于 Flask 的任务管理系统
开发语言·python
JavaEdge在掘金13 分钟前
cursor 1.2发布!Agent规划、更好上下文支持 & 更快的 Tab 补全!
python
巴里巴气42 分钟前
Python爬虫用Clash软件设置代理IP
爬虫·python·tcp/ip
禺垣1 小时前
支持向量机(SVM)分类
机器学习
禺垣1 小时前
协同过滤推荐算法
机器学习
Whoisshutiao1 小时前
Python网安-zip文件暴力破解(仅供学习)
开发语言·python·网络安全
这里有鱼汤1 小时前
90%的人都会搞错的XGBoost预测逻辑,未来到底怎么预测才对?
后端·机器学习
小庞在加油1 小时前
《dlib库中的聚类》算法详解:从原理到实践
c++·算法·机器学习·数据挖掘·聚类