当前位置: 首页 > news >正文

机器学习之词袋模型

目录

1 词袋模型基本概念

2 词袋模型的表示方法

2.1 三大方法

1 独热表示法(One-Hot)

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

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

2.2 例子


1 词袋模型基本概念

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

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

2 词袋模型的表示方法

2.1 三大方法

1 独热表示法(One-Hot)

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

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

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

其中,t_{j}表示词语jcount(t_{j})表示词语j在所在文本出现的次数。

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

TF-IDF的核心思想是:

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

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

其中,t_{j}表示词语jcount(t_{j})表示词语j在所在文本出现的次数。

idf(t_{j})的计算公式为:

当分母越大,idf(t_{j})越小,则说明其越不重要,为了防止分母为0,对idf(t_{j})进行改进,如下:

2.2 例子

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

文档ID文档词列表
1Chinese Beijing Chinese
2Chinese Chinese Shanghai
3Chinese Macao
4Tokyo Japan Chinese

第一步:构建词袋

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

One-Hot表示法

根据上述公式可得:

BeijingChineseJapanMacaoShanghaiTokyo
Chinese Beijing Chinese110000
Chinese Chinese Shanghai010010
Chinese Macao010100
Tokyo Japan Chinese011001

词频表示法

根据上述公式可得:

BeijingChineseJapanMacaoShanghaiTokyo
Chinese Beijing Chinese120000
Chinese Chinese Shanghai020010
Chinese Macao010100
Tokyo Japan Chinese011001

TF-IDF表示法

使用改进后的idf(t_{j}),如下:

计算过程如下:

idf(Beijing)=1+ln\frac{4+1}{1+1}\approx 1.916 ~~idf(Chinese)=1+ln\frac{4+1}{4+1}= 1

idf(Japan)=1+ln\frac{4+1}{1+1}\approx 1.916 ~~idf(Macao)=1+ln\frac{4+1}{1+1}\approx 1.916

idf(Shanghai)=1+ln\frac{4+1}{1+1}\approx 1.916 ~~idf(Tokyo)=1+ln\frac{4+1}{1+1}\approx 1.916

因此有:

BeijingChineseJapanMacaoShanghaiTokyo
Chinese Beijing Chinese1*1.916=1.9162*1=20000
Chinese Chinese Shanghai02*1=2001*1.916=1.9160
Chinese Macao01*1=101*1.916=1.91600
Tokyo Japan Chinese01*1=11*1.916=1.916001*1.916=1.916
http://www.lryc.cn/news/354635.html

相关文章:

  • 【C++/STL】vector(常见接口、模拟实现、迭代器失效)
  • Spring Boot Web 开发:MyBatis、数据库连接池、环境配置与 Lombok 全面解析
  • 【UE5.1 多线程 异步】“Async Blueprints Extension”插件使用记录
  • 【已解决】在jupyter里运行torch.cuda.is_available(),显示True,在pycharm中运行却显示false。
  • Flutter 中的 Scrollbar 小部件:全面指南
  • 【华为】将eNSP导入CRT,并解决不能敲Tab问题
  • 实验二 电子传输系统安全-进展2
  • JavaScript 获取 HTML 中特定父元素下的子元素
  • 等保服务是一次性服务吗?为什么?怎么理解?
  • 全网首发UNIAPP功能多的iapp后台源码
  • 【搜索方法推荐】高效信息检索方法和实用网站推荐
  • 面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?
  • Flutter 中的 StatefulBuilder 小部件:全面指南
  • mail发送接口API如何使用?怎么调用接口?
  • DOS学习-目录与文件应用操作经典案例-attrib
  • STP简介
  • java调用科大讯飞在线语音合成API --内附完整项目
  • Vuex 页面刷新数据丢失怎么解决
  • 如何使用Cloudways搭建WordPress网站
  • Lora理解
  • EtherCAT总线掉线如何自动重启
  • RabbitMQ有哪些优缺点
  • word页眉线如何置于文字上方
  • CTF-web-攻防世界-2
  • 【深度学习】YOLOv8训练,交通灯目标检测
  • 紧固件松动的危害及原因——SunTorque智能扭矩系统
  • Android-okhttp调接口传参简单举例
  • 复习java5.26
  • 学 Python 具体能干什么?
  • 福昕PDF使用技巧