机器学习之词袋模型

目录

[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
相关推荐
周杰伦_Jay10 分钟前
【 2025年必藏】8个开箱即用的优质开源智能体(Agent)项目
人工智能·机器学习·架构·开源
u***32435 小时前
使用python进行PostgreSQL 数据库连接
数据库·python·postgresql
青瓷程序设计8 小时前
动物识别系统【最新版】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
tobebetter95278 小时前
How to manage python versions on windows
开发语言·windows·python
F_D_Z8 小时前
数据集相关类代码回顾理解 | sns.distplot\%matplotlib inline\sns.scatterplot
python·深度学习·matplotlib
daidaidaiyu9 小时前
一文入门 LangGraph 开发
python·ai
yLDeveloper9 小时前
一只菜鸟学机器学习的日记:入门分布偏移
机器学习·dive into deep learning
不知更鸟10 小时前
前端报错:快速解决Django接口404问题
前端·python·django
4***721310 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
梁正雄10 小时前
1、python基础语法
开发语言·python