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)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建前端项目的方法

目录 一、创建前端项目的方法 1.前提:安装Vue CLI 2.方式一:vue create项目名称 3.方式二:vue ui 二、Vue项目结构 三、修改Vue项目端口号的方法 一、创建前端项目的方法 1.前提:安装Vue CLI npm i vue/cli -g 2.方式一&…

INCOSE需求编写指南-附录 D: 交叉引用矩阵

附录 Appendix D: 交叉引用矩阵 Cross Reference Matrices Rules to Characteristics Cross Reference Matrix NRM Concepts and Activities to Characteristics Cross Reference Matrix Part 1 NRM Concepts and Activities to Characteristics Cross Reference Matrix Part…

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设

浪潮云洲工业互联网有限公司(以下简称为“浪潮云洲”)成立于2018年,定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前,浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…

基于Python的人工智能患者风险评估预测模型构建与应用研究(下)

3.3 模型选择与训练 3.3.1 常见预测模型介绍 在构建患者风险评估模型时,选择合适的预测模型至关重要。不同的模型具有各自的优缺点和适用场景,需要根据医疗数据的特点、风险评估的目标以及计算资源等因素进行综合考虑。以下详细介绍几种常见的预测模型。 逻辑回归(Logisti…

灰色预测模型

特点: 利用少量、不完全的信息 预测的是指数型的数值 预测的是比较近的数据 灰色生成数列原理: 累加生成: 累减生成:通过累减生成还原成原始数列。 加权相邻生成:(会更接近每月中旬,更推荐…

golang通过AutoMigrate方法自动创建table详解

一.AutoMigrate介绍 1.介绍 在 Go 语言中,GORM支持Migration特性,支持根据Go Struct结构自动生成对应的表结构,使用 GORM ORM 库的 AutoMigrate 方法可以自动创建数据库表,确保数据库结构与定义的模型结构一致。AutoMigrate 方法非常方便&am…

宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大

磁盘空间占用过多,排查后发现网站/www/wwwroot只占用7G,/www/server占用却高达8G,再深入排查发现/www/server/data目录下的mysql-bin.000001和mysql-bin.000002两个日志文件占去了1.5G空间。 百度后学到以下知识,做个记录。 mysql…

Case逢无意难休——深度解析JAVA中case穿透问题

Case逢无意难休——深度解析JAVA中case穿透问题~ 不作溢美之词,不作浮夸文章,此文与功名进取毫不相关也!与大家共勉!! 更多文章:个人主页 系列文章:JAVA专栏 欢迎各位大佬来访哦~互三必回&#…

decison tree 决策树

熵 信息增益 信息增益描述的是在分叉过程中获得的熵减,信息增益即熵减。 熵减可以用来决定什么时候停止分叉,当熵减很小的时候你只是在不必要的增加树的深度,并且冒着过拟合的风险 决策树训练(构建)过程 离散值特征处理:One-Hot…

研发的立足之本到底是啥?

0 你的问题,我知道! 本文深入T型图“竖线”的立足之本:专业技术 技术赋能业务能力。研发在学习投入精力最多,也误区最多。 某粉丝感发展遇到瓶颈,项目都会做,但觉无提升,想跳槽。于是&#x…

WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理

WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理 一、前言二、WPF 事件基础概念2.1 事件的定义与本质2.2 常见的 WPF 事件类型 三、路由事件3.1 路由事件的概念与原理3.2 路由事件的三个阶段3.3 路由事件的标识与注册3.4 常见的路由事件示例 四、自定义事件处…

DeepSeekMoE:迈向混合专家语言模型的终极专业化

一、结论写在前面 论文提出了MoE语言模型的DeepSeekMoE架构,目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离,DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。从较小的2B参数规模开始&#x…

机器人抓取与操作经典规划算法(深蓝)——2

1 经典规划算法 位姿估计:(1)相机系位姿 (2)机器人系位姿 抓取位姿:(1)抓取位姿计算 (2)抓取评估和优化 路径规划:(1)笛卡…

【Qt】06-对话框

对话框 前言一、模态和非模态对话框1.1 概念1.2 模态对话框1.2.1 代码QAction类 1.2.2 模态对话框运行分析 1.3 非模态对话框1.3.1 代码局部变量和成员变量setAttribute 类 1.3.2 现象解释 二、标准对话框2.1 提示对话框 QMessageBox2.1.1 现象及解释 2.2 问题对话框2.2.1 现象…

< OS 有关 > Android 手机 SSH 客户端 app: connectBot

connectBot 开源且功能齐全的SSH客户端,界面简洁,支持证书密钥。 下载量超 500万 方便在 Android 手机上,连接 SSH 服务器,去运行命令。 Fail2ban 12小时内抓获的 IP ~ ~ ~ ~ rootjpn:~# sudo fail2ban-client status sshd Status for the jail: sshd …

是否需要显式使用 epoll_ctl ( fd , EPOLL_CTL_DEL , ... ) 来从红黑树里显式删除过期的套接字

(1)关于 epoll 操作的三大系统函数: epoll_create ( … ) 、 epoll_ctl ( … ) 、 epoll_wait(…)。具体的函数原型略。这些函数完成了 epoll 对象的创建、 套接字往 epoll 红黑树中的添加、修改 与 删除 。 本文的整理…

【Hadoop】Hadoop 概述

Hadoop 概述 Hadoop 是什么Hadoop 发展历史Hadoop 三大发行版本Hadoop 优势(4 高)Hadoop 组成(面试重点)HDFS 架构概述YARN 架构概述MapReduce 架构概述HDFS、YARN、MapReduce 三者关系 大数据技术生态体系 Hadoop 是什么 Hadoop…

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发,经过2个来月的努力,于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志(网络爬虫学习:应用selenium从搜…

week08_文本匹配任务

1、文本匹配任务概述 狭义: 给定一组文本,判断其是否语义相似 今天天气不错 match 今儿个天不错呀 √ 今天天气不错 match 你的代码有bug 以分值形式给出相似度 今天天气不错 match 今儿个天不错呀 0.9 今天天气不错 match…

Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)

文章目录 Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)1. 副本的基本概念2. 副本同步和一致性2.1 AR(Assigned Replicas)2.2 ISR(In-Sync Replicas)2.3 OSR(Out-of-Sync Replicas&#xf…