AI大模型开发原理篇-2:语言模型雏形之词袋模型

基本概念

词袋模型(Bag of Words,简称 BOW)是自然语言处理和信息检索等领域中一种简单而常用的文本表示方法,它将文本看作是一组单词的集合,并忽略文本中的语法、词序等信息,仅关注每个词的出现频率。

  • 文本表示:词袋模型将每篇文本(如句子或文档)转换为一个固定长度的向量,其中每个元素表示词汇表中某个特定词在该文本中出现的次数。
  • 忽略顺序:词袋模型不考虑词语出现的顺序,只关注哪些词出现以及每个词的频率。

比如下面这2句话:

  •  "沐雪喜欢吃葡萄"
  •  "葡萄是沐雪喜欢的水果"

词袋模型会将这两个句子表示成如下的向量。
{"沐雪": 1, "喜欢": 1, "吃": 1, "葡萄": 1}
{"葡萄": 1, "是": 1, "沐雪": 1, "喜欢": 1, "的": 1, "水果": 1}
通过比较这两个向量之间的相似度,我们就可以判断出它们之间关联性的强弱。

构建词袋模型的步骤

1、文本预处理

  • 分词:将文本划分为独立的词(对于英文,通常是按空格和标点符号分词;对于中文,可能需要分词工具如jieba)。
  • 去除停用词(可选):如“的”、“是”、“和”等无实际意义的高频词。
  • 大小写标准化(可选):统一大小写,如将所有字母转换为小写。
  • 去除标点符号(可选):去掉文本中的标点符号,以避免干扰。

2、构建词汇表

例如,假设我们有以下两个句子:

词汇表为:["我", "爱", "自然语言", "学习"]

  • 词袋模型会构建一个文本数据集中的所有不同词汇组成的词汇表。这个词汇表的每个词都会成为向量的一个维度。
  • “我 爱 自然语言”
  • “我 学习 自然语言”

3、构建词频向量

例如,句子“我 爱 自然语言”在词汇表["我", "爱", "自然语言", "学习"]中出现的次数为:

因此,文本“我 爱 自然语言”可以表示为向量:[1, 1, 1, 0]。

对于第二个句子“我 学习 自然语言”,它在同样的词汇表中的表示为:

对应的词袋向量为:[1, 0, 1, 1]。

  • 对每篇文本,统计词汇表中每个词在文本中出现的次数。文本中的每个词都会映射到一个数字,表示该词在该文本中的出现次数。
  • "我":1次
  • "爱":1次
  • "自然语言":1次
  • "学习":0次
  • "我":1次
  • "爱":0次
  • "自然语言":1次
  • "学习":1次

4、构建特征矩阵

假设有两个文档,分别为“我 爱 自然语言”和“我 学习 自然语言”,其特征矩阵为:

文档自然语言学习
文档11110
文档21011
  • 如果我们有多个句子或文档,最终的结果就是一个特征矩阵,其中每一行表示一个文档,每一列表示词汇表中的一个词。矩阵的元素表示词汇表中相应词在该文档中出现的次数。

5、计算余弦相似度

计算余弦相似度(Cosine Similarity),衡量两个文本向量的相似性。余弦相似度可用来衡量两个向量的相似程度。它的值在-1到1之间,值越接近1,表示两个向量越相似;值越接近-1,表示两个向量越不相似;当值接近0时,表示两个向量之间没有明显的相似性。在文本处理中,我们通常使用余弦相似度来衡量两个文本在语义上的相似程度。对于词袋表示的文本向量,使用余弦相似度计算文本之间的相似程度可以减少句子长度差异带来的影响。

补充:

余弦相似度和向量距离(Vector Distance)都可以衡量两个向量之间的相似性。余弦相似度关注向量之间的角度,而不是它们之间的距离,其取值范围在-1(完全相反)到1(完全相同)之间。向量距离关注向量之间的实际距离,通常使用欧几里得距离(Euclidean Distance)来计算。两个向量越接近,它们的距离越小。
如果要衡量两个向量的相似性,而不关心它们的大小,那么余弦相似度会更合适。因此,余弦相似度通常用于衡量文本、图像等高维数据的相似性,因为在这些场景下,关注向量的方向关系通常比关注距离更有意义。而在一些需要计算实际距离的应用场景,如聚类分析、推荐系统等,向量距离会更合适。


矩阵图中每个单元格表示两个句子之间的余弦相似度,颜色越深,句子在语义上越相似。例如,“这部电影真的是很好看的电影”和“电影院句子在语义上越相似。例如,“这部电影真的是很好看的电影”和“电影院的电影都很好看”交叉处的单元格颜色相对较深,说明它们具有较高的余弦相似度,这意味着它们在语义上较为相似。

词袋模型的优缺点

优点

  • 简单易懂:词袋模型非常直观,理解和实现都比较简单。
  • 不依赖语法:能够处理没有语法结构的文本,适用于许多实际应用。
  • 容易计算:由于不考虑词序列,可以直接进行计算,且非常适合机器学习中的特征提取。

缺点

  • 忽略词序:词袋模型无法捕捉到词语之间的顺序关系,因此不能处理像“我爱自然语言”和“自然语言我爱”这种顺序不同但含义相同的情况。
  • 稀疏性:对于大型语料库,词汇表的大小会非常庞大,这可能导致特征矩阵非常稀疏,大量的零值会降低计算效率。
  • 语义信息丢失:仅关注词频而忽略了语法和上下文信息,导致词袋模型在处理词义和上下文依赖时的能力较弱。

词袋模型的应用场景

  • 文本分类:如垃圾邮件识别、情感分析、主题分类等。
  • 信息检索:将文档表示为词袋模型,计算文档与查询的相似度。
  • 推荐系统:利用文本特征进行推荐,例如根据用户的评论进行商品推荐。

One-Hot编码

One-Hot编码也可以看作一种特殊的词袋表示。在One-Hot编码中,每个词都对应一个只包含一个1,其他元素全为0的向量,1的位置与该词在词汇表中的索引对应。在单词独立成句的情况下,词袋表示就成了One-Hot编码。比如上面的语料库中,“我”这个单词如果独立成句,则该句子的词袋表示为[1, 0, 0, 0],这完全等价于“我”在当前词汇表中的One-Hot编码。

词袋模型与N-Gram模型的区别

N-Gram和Bag-of-Words是两种非常基础但是仍然十分常用的自然语言处理技术,它们都用于表示文本数据,但具有不同的特点和适用场景。


N-Gram是一种用于语言建模的技术,它用来估计文本中词序列的概率分布。N-Gram模型将文本看作一个由词序列构成的随机过程,根据已有的文本数据,计算出词序列出现的概率。因此,N-Gram主要用于语言建模、文本生成、语音识别等自然语言处理任务中。


(1)N-Gram是一种基于连续词序列的文本表示方法。它将文本分割成由连续的N
个词组成的片段,从而捕捉局部语序信息。
(2)N-Gram可以根据不同的N
值捕捉不同程度的上下文信息。例如,1-Gram(Unigram)仅关注单个词,而2-Gram(Bigram)关注相邻的两个词的组合,以此类推。
(3)随着N的增加,模型可能会遇到数据稀疏性问题,导致模型性能下降。


Bag-of-Words则是一种用于文本表示的技术,它将文本看作由单词构成的无序集合,通过统计单词在文本中出现的频次来表示文本。因此,Bag-of-Words主要用于文本分类、情感分析、信息检索等自然语言处理任务中。


(1)Bag-of-Words是基于词频将文本表示为一个向量,其中每个维度对应词汇表中的一个单词,其值为该单词在文本中出现的次数。
(2)Bag-of-Words忽略了文本中的词序信息,只关注词频。这使得词袋模型在某些任务中表现出色,如主题建模和文本分类,但在需要捕捉词序信息的任务中表现较差,如机器翻译和命名实体识别。
(3)Bag-of-Words可能会导致高维稀疏表示,因为文本向量的长度取决于词汇表的大小。为解决这个问题,可以使用降维技术,如主成分分析(Principal Component Analysis,PCA)或潜在语义分析(LatentSemantic Analysis,LSA)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/961367.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“爱”之浅谈(一)

《九重紫》里 陈嘉有了爱情 从粗糙的一介武夫和赌徒,变得温柔细致 万皇后伤于爱情 从温柔的眼里有爱有光的小姑娘,变成狠毒的残害忠良的、意图谋反的、卷动举国风云的操盘手 “爱让怯懦者勇敢,让高傲者低头” “爱是软肋,也是…

图漾相机搭配VisionPro使用简易教程

文章目录 1.下载并安装VisionPro软件2.下载PercipioCameraForVisionPro软件包3.软件部署4.测试流程4.1 遍历VisionPro SDK支持的参数4.2 设置示例4.2.1_cameraSingle.SetTriggerMode4.2.2 _cameraSingle.SetRegistration4.2.3_cameraSingle.SetInt4.2.4 _cameraSingle.GetInt4.…

Versal - 基础3(AXI NoC 专题+仿真+QoS)

目录 1. 简介 2. 示例 2.1 示例说明 2.2 创建项目 2.2.1 平台信息 2.2.2 AXI NoC Automation 2.2.3 创建时钟和复位 2.3 配置 NoC 2.4 配置 AXI Traffic 2.5 配置 Memory Size 2.6 Validate BD 2.7 添加观察信号 2.8 运行仿真 2.9 查看结果 2.9.1 整体波形 2.9…

iperf 测 TCP 和 UDP 网络吞吐量

注:本文为 “iperf 测网络吞吐量” 相关文章合辑。 未整理去重。 使用 iperf3 监测网络吞吐量 Tom 王 2019-12-21 22:23:52 一 iperf3 介绍 (1.1) iperf3 是一个网络带宽测试工具,iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽…

ResNeSt: Split-Attention Networks论文学习笔记

这张图展示了一个名为“Split-Attention”的神经网络结构,该结构在一个基数组(cardinal group)内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…

自动驾驶---苏箐对智驾产品的思考

1 前言 对于更高级别的自动驾驶,很多人都有不同的思考,方案也好,产品也罢。最近在圈内一位知名的自动驾驶专家苏箐发表了他自己对于自动驾驶未来的思考。 苏箐是地平线的副总裁兼首席架构师,同时也是高阶智能驾驶解决方案SuperDri…

【C++】内联函数inline、关键字auto与新式for

内联函数 内联函数背景 我们在使用C语言中我们都学过函数,我们知道函数在调用的过程中需要开辟栈帧。如果我们需要频繁的调用一个函数,假设我们调用10次Add()函数,那我们就需要建立10次栈帧。我们都知道在栈帧中要做很多事情,例如…

Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?

文章目录 13003数据结构与算法全书框架考试题型的分值分布如何? 本次内容概述绪论第一节概览什么是数据、数据元素,数据项,数据项的值?什么是数据结构?分哪两种集合形式(逻辑和存储)&#xff1f…

论文阅读(十六):利用线性链条件随机场模型检测阵列比较基因组杂交数据的拷贝数变异

1.论文链接:Detection of Copy Number Variations from Array Comparative Genomic Hybridization Data Using Linear-chain Conditional Random Field Models 摘要: 拷贝数变异(CNV)约占人类基因组的12%。除了CNVs在癌症发展中的…

深入理解若依RuoYi-Vue数据字典设计与实现

深入理解若依数据字典设计与实现 一、Vue2版本主要文件目录 组件目录src/components:数据字典组件、字典标签组件 工具目录src/utils:字典工具类 store目录src/store:字典数据 main.js:字典数据初始化 页面使用字典例子&#xf…

思维练习题

目录 第一章 假设法1.题目1. 如何问问题2. 他们的职业是分别什么3. 谁做对了4. 鞋子的颜色 2.答案 空闲时间写一些思维题来锻炼下思维逻辑(题目均收集自网上,分析推理为自己所写)。 第一章 假设法 一个真实的假设往往可以让事实呈现眼前&…

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal,选择版本后点击“install”执行安装

DVC - 数据版本和机器学习实验的命令行工具和 VS Code 扩展

文章目录 一、关于 DVC二、快速启动三、DVC的工作原理四、VS代码扩展五、安装Snapcraft(Linux)Chocolatey (Windows)Brew (mac OS)Anaconda (Any platform)PyPI(Python)Package (Platform-specific)Ubuntu / Debian (deb)Fedora /…

实现前端当中的页面过渡动画

使用 HTML、CSS 和 JavaScript 实现页面过渡动画 在现代网页设计中,用户体验是至关重要的。而页面切换时的平滑过渡效果,不仅能让界面更加美观,也能增强用户的互动体验。 引言 作为一名热爱前端开发的程序员,我一直在寻找能提…

AJAX笔记入门篇

黑马程序员视频地址: 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2https://www.bilibili.com/video/BV1MN411y7pw?vd_source…

ts 进阶

吴悠讲编程 : 20分钟TypeScript进阶!无废话快速提升水平 前端速看 https://www.bilibili.com/video/BV1q64y1j7aH

望获实时Linux系统:2024回顾与2025展望

2024年回顾 功能安全认证 2024年4月,望获操作系统V2获ISO26262:2018功能安全产品认证(ASIL B等级),达到国际功能安全标准。 EtherCAT实时性增强 2024年5月,发布通信实时增强组件,EtherCAT总线通信抖…

linux监控脚本+自动触发邮件发送

linux脚本 需求: CPU 负载:使用 uptime 命令,我们可以清楚地了解系统的 CPU 负载情况。这个命令会显示系统在过去 1 分钟、5 分钟和 15 分钟的平均负载。高负载可能意味着系统正在处理大量的任务,可能会导致性能下降或服务响应延迟…

软件工程概论试题一

一、单选 1.下面关于“发布测试”的观点错误的是( )。 A.系统开发团队不应该负责发布测试 B.发布测试是一个确认检查的过程 C.发布测试的目的是让系统供应商确信系统足够好可以使用了 D.发布测试通常采用白盒测试 正答:D 2.下图最有可能是()体系结构风格。 A. C…

iPhone SE(第三代) 设备详情图

目录 产品宣传图内部图——后设备详细信息 产品宣传图 内部图——后 设备详细信息 信息收集于HubWeb.cn