【机器学习300问】58、什么是词袋模型和N-gram模型?

news2024/11/28 10:43:16

        词袋模型(Bag of Words, BoW)和N-gram模型主要用于早期的自然语言处理任务,上文中我介绍了机器是如何读懂文本的四个阶段,这篇文章带大家来看看在不同阶段中会用到的两个模型——词袋模型和N-gram模型。如果没有读过我之前的文章,可以先去看看哦!

【机器学习300问】57、机器是如何读得懂文本数据的呢?icon-default.png?t=N7T8http://t.csdnimg.cn/QJPqB

一、词袋模型

        最基本的文本表示模型就是词袋模型,这个模型把一段文本看作一个装满了单词的袋子,袋子中不考虑单词出现的顺序和语法结构,只关注每个单词出现的频率(或是否出现)。

(1)具体步骤

        具体来说,就是将整段文本以单词为最小单位切分开,一整篇文章可以表示成一个长向量,向量中的每个维度代表一个单词,而该维度的值则反映了这个词在原文中的重要程度(也就是词频)。步骤如下:

  1. 分词(Tokenization):将文本分割成单个的单词或术语。
  2. 词频统计(Term Frequency):计算每个词在文本中出现的次数,形成词频直方图。
  3. 特征选择与加权:可以选择仅保留最常见的词汇(停用词过滤),并对某些重要性较高的词给予更高的权重,常见的加权方法有TF-IDF(Term Frequency-Inverse Document Frequency)。
  4. 向量化(Vectorization):将文本转化为向量形式,每个维度对应一个词汇,值代表该词汇在文档中的统计值(例如词频、TF-IDF值等)。

【注】术语(Terminology)是在某一特定学科领域或专业背景下使用的、具有特殊意义的词汇或短语。比如在医学领域,“白细胞”是对一类特定血细胞的术语,在法律领域,“合同法”是一个法律术语,在数学领域,“正弦”和“余弦”是数学术语。

(2)TF-IDF值

        TF-IDF值是用来计算这个词在原文中的重要程度的(权重)。TF-IDF公式由两部分组成,公式如下:

① 词频(TF)

 TF(t,d) = 特定词条t在文档d中出现的次数 / 文档d中词条总数

② 逆文档频率(IDF)

IDF(t, D) = \log \left(\frac{n}{df(t)+1}\right)

        其中df(t)是包含单词t的文章总数,n是文章总数。加1是为了避免分母为0,即避免在所有文档中都没有出现过的词带来的问题。

③ TF-IDF权重

TF\text{-}IDF(t, d, D) = TF(t, d) \times IDF(t, D)

        直观的解释是,如果一个单词在非常多的文章中都出现过,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩罚。在计算时,每个词条的TF-IDF值都会被计算出来,然后可以用于表示文档d在词条t上的重要性。越高的TF-IDF值表示词条在文档中越重要。

二、N-gram模型

(1)词袋模型的局限性 

        将文章仅仅划分成单词级别有时存在局限性,比如“look up”代表查阅的意思,但如果拆成2个独立的单词就会丧失原有的含义。词袋模型的局限性:忽视单词之间的语法关系和语义搭配、忽视上下文信息、丢失情感色彩和语气等等问题。

        于是聪明的人们想到了可以将连续的n个单词(n<N)组成词组(N-gram)也当做一个独立的特征放到向量中去,构成N-gram模型。另外同一个词可能会有词性变化,却拥有相似的含义。在实际应用中,一般会对单词进行词干抽取处理,将不同词性的单词统一成同一个词干的形式。

(2)N-gram模型的定义

        在一个文本序列中,一个N-gram是由连续N个项组成的序列。如果N=1,那么就是Unigram(一元模型),包含单独的词或字符;如果N=2,就是Bigram(二元模型),包含相邻的两个词或字符对;N=3时,是Trigram(三元模型),以此类推。

        N-gram模型通过计算词语或字符序列在给定上下文中的联合概率来捕捉文本数据中的语言规律。N-gram模型的核心概念是依据马尔可夫假设,即一个词出现的概率仅依赖于它前面有限个数(N)的词。

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

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

相关文章

算法系列--递归,回溯,剪枝的综合应用(2)

&#x1f495;"对相爱的人来说&#xff0c;对方的心意&#xff0c;才是最好的房子。"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–递归,回溯,剪枝的综合应用(2) 大家好,今天为大家带来的是算法系列--递归,回溯,剪枝的综合应用(2) 一.括号…

《拆解一切问题》如何成为解决难题的高手 - 三余书屋 3ysw.net

拆解一切问题&#xff1a;如何成为解决难题的高手 今天给大家分享的这本书叫做《拆解一切问题》&#xff0c;标题看起来确实有点虚&#xff0c;在没有读这本书之前&#xff0c;会让人感觉似乎只要读完学会书中的内容&#xff0c;就可以解决一切问题了。但事实上这种认识是误解…

网络基础二补充——json与http协议

五、市面上常用序列化和反序列化工具 ​ 常用的有&#xff1a;json、protobuf、xml三种方案&#xff1b; 5.1json的使用 1.安装jsoncpp库&#xff0c;是一个第三方的开发库文件&#xff1b; sudo yum install -y jsoncpp-devel2.使用json ​ 经常使用的头文件是json.h&…

跟张良均老师学大数据人工智能——泰迪智能科技第二期在线实习项目已开营

在这个信息爆炸的时代&#xff0c;如何有效地收集、处理、分析和利用数据&#xff0c;以获取有价值的信息&#xff0c;成为了各行各业面临的关键挑战。因此&#xff0c;数据分析挖掘、人工智能和大数据开发等领域的需求日益凸显&#xff0c;这些技术也成为了推动社会进步的重要…

【python plotly库介绍】从视觉到洞见:桑基图在业务分析中的应用【保姆级教程过于详细珍藏版】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 本文结构&#xff1a;工具介绍python实现库 - 案例 - 分析思路与过程 实战专栏&#xff1a;https://blog.csdn.net/cciehl/category_12615648.html 备注说明&#xff1a; 企业…

【面试题】RocketMQ如何处理消息重复的问题呢?

对分布式消息队列来说&#xff0c;同时做到确保一定投递和不重复投递是很难的&#xff0c;就是所谓的“有且仅有一次” 。RocketMQ择了确保一定投递&#xff0c;保证消息不丢失&#xff0c;但有可能造成消息重复。 处理消息重复问题&#xff0c;主要有业务端自己保证&#xff…

自动驾驶杂谈

在2024年的今天&#xff0c;自动驾驶技术已经迈向了一个崭新的阶段&#xff0c;日趋成熟与先进。昨日&#xff0c;我有幸亲眼目睹了自动驾驶车辆在道路上自如行驶的场景。然而&#xff0c;在市区拥堵的路段中&#xff0c;自动驾驶车辆显得有些力不从心&#xff0c;它们时而疾驰…

机器学习 -- 随机森林DEMO

场景 之前看一些歌手或者演员选取节目的时候&#xff0c;上面不是一个评委&#xff0c;少则三五个&#xff0c;多则几十个&#xff0c;当做重要决定时&#xff0c;大家可能都会考虑吸取多个专家而不只是一个人的意见。机器学习也是一样的&#xff0c;机器学习中分为两种&#…

“IT小百科 ”之“那些看不懂的HTTP状态码详解”

“IT小百科 ”之“那些看不懂的HTTP状态码详解” 小伙伴们应该遇到过在浏览器中打开某个网页&#xff0c;半天没打开&#xff0c;然后网页给出一个“ 提示码”&#xff0c;如下图所示 &#xff1a; 我相信看到这个提示的小伙伴普遍有点懵&#xff0c;这个提示码到底是什么意思…

【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

结构体与位段的定义以及在内存中的存储

目录 结构体的声明 完全声明 不完全声明 结构体变量的定义和初始化 结构体的嵌套 结构体成员的直接访问和间接访问 结构体的自引用 typedef对结构体类型重命名 结构体内存对齐 对齐规则 练习 为什么存在内存对齐 修改默认对齐数 结构体传参 结构体实现位段 位段…

代码膨胀会破坏开发操作吗,它将如何影响编译时间?

Incredibuild 正潜心研究公司以及客户的未来发展趋势。 过去的一年举步维艰&#xff0c;但聪明的企业总是能够抓住机遇&#xff0c;将大部分业务自动化&#xff0c;保持敏捷度和竞争力&#xff0c;最佳的案例就是游戏工作室。这一年来&#xff0c;用户对新游戏或新版本的期待达…

Python 基础:标准库 -- math (数学函数)

1. 官方文档 math --- 数学函数 — Python 3.12.2 文档 cmath --- 关于复数的数学函数 — Python 3.12.2 文档 Python 中&#xff0c;可以使用内置的数学运算符&#xff0c;例如加法 ()、减法 (-)、除法 (/) 和乘法 (*) 进行简单的数学运算。不过&#xff0c;更高级的运算&a…

Python | Leetcode Python题解之第3题无重复字符的最长子串

题目&#xff1a; 题解&#xff1a; class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 哈希集合&#xff0c;记录每个字符是否出现过occ set()n len(s)# 右指针&#xff0c;初始值为 -1&#xff0c;相当于我们在字符串的左边界的左侧&#xff0c;还没…

Dubbo 原理及使用详解

嗨&#xff0c;亲爱的童鞋们&#xff01;欢迎来到这次关于Dubbo的探险之旅。在编程的世界里&#xff0c;我们时常需要处理分布式系统的问题&#xff0c;而Dubbo作为一款开源的分布式服务框架&#xff0c;正是为了解决这类问题而生。本篇博客将深入浅出&#xff0c;带你领略Dubb…

transformers微调模型后使用pieline调用无法预测列表文本

初学transformers框架 使用trainer简单训练一个文本分类模型三个epoch后 使用piepline调用model 和tokenizer后 发现 传入列表文本后 输出就变得不正常了&#xff0c;为么子哇 如下图

常见的DC电源模块故障及解决方法

BOSHIDA 常见的DC电源模块故障及解决方法 DC电源模块广泛应用于各种电子设备中&#xff0c;为其提供稳定的直流电源。然而&#xff0c;由于长期使用或其他原因&#xff0c;DC电源模块有时会出现故障。本文将介绍一些常见的DC电源模块故障及相应的解决方法。 1. 输出电压异常&a…

如何使用免费的ChatGpt3.5

如何使用免费的ChatGpt 最近免费的gpt3.5很多都不怎么行了实在是太给力了尾声 最近免费的gpt3.5很多都不怎么行了 原因是什么呢&#xff1f;因为openai已经取消了免费的5刀赠送&#xff0c;那么这些人手上的免费的sses-key 用完后&#xff0c;就基本上全军覆没了&#xff0c;再…

探索http-vue-loader的奥秘:原理、使用方法、在Vue开发中的应用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SpringSecurity学习总结(三更草堂)

SpringSecurity安全框架的核心功能是认证和授权&#xff1a; 认证&#xff1a;验证当前访问系统的是不是本系统的用户&#xff0c;并且要确认具体是哪个用户。 授权&#xff1a;经过认证后判断当前用户是否具有进行某个操作的权限。 一般来说中大型的项目都是使用SpringSecurit…