我理解的文本表示模型

news2024/10/7 20:33:33

词袋模型与N-grams模型

  • 1 词袋模型 (Bag of Words)
  • N-Gram

  • 最简单的文本建模场景:垃圾短信分类

表1 样本示例

短信内容短信类别
样本1:“欢迎来到某某新葡京,点击就送一百万!”标签1:垃圾短信
样本2:“您好,请您于晚上8点前至某某小区东门取件,取件码为xxxxxx”标签2:非垃圾短信
样本3:…标签2:…

想要对短信进行分类,首先明确,在这次建模中,X是什么,Y是什么。
很明显第一列短信内容为X,而短信的类别为Y。
我们可能有30000个这样的样本。
我们期望达到的效果是,当手机收到一条短信时,模型能够自发的判断出这条短信属于哪一类。然而计算机是无法直接读懂中文的,我们首先第一步需要做的便是,将这些汉字转换为计算机能够读懂的语言。而这一步我们将它称为 文本表示模型。

下文中的一部分参考了 百面机器学习,并介绍了两种常见的文本表示模型。
按照我的理解来看,我经常搞不清很多教材中写的document的到底是什么。我认为文本表示模型的一个document应该就是表1中的样本1,即一条短信。30000条短信也即代表着30000个documents。

1 词袋模型 (Bag of Words)

  • 模型的一个输入示例:欢迎来到澳门新葡京,点击就送一百万!
  • 模型的一个输出示例:[0,0,1,0,0,0,1,1,0,1,0,…]
    对于词袋模型来说,最终的目的是将每个样本都转换成一个向量。
    向量的维数(长度) 代表着所有样本中不重复的单词数。在我们的例子里,这个向量的长度是所有的 30000 条短信里面出现的汉字(不重复)的数量。如“澳”,“门”,“新”,“葡”,“京”,…, 即便同一条短信出现过多次,每个字也只能在向量维数中占据一个位置。
    向量每一个维度的取值 可以有很多种方法决定。大体上这个值代表该维度对应的这个独特的字/单词 对这条样本的意义。所以目前对我们来说,Bag-of-Words 给我们提供了一个向量的框子,我们只需要看一下怎么把“某个单词对该样本的意义”这个东西量化出来,并一个一个填进框子里,就可以了。
    主要存在以下几种量化方法:

1.1 one-hot 取值 (Binary)

最简单的方法:某个单词出现在该document中,那么该维度对应的数值取1,否则取0.
可以参考:词袋模型
在这里插入图片描述

1.2 Term Frequency 取值 (TF)

可以用很多种方法来使用词频。

普通频数 r a w t f raw_{tf} rawtf

比如使用普通频数,直接用每个document 中每个单词出现的次数做为向量的取值。但是越长的document一定会有更多的词,导致其向量各个维度整体取值都更大。因此需要一定的标准化。

频率

使用 document 的单词数量进行标准化 (即普通频数除以document的长度)
t f = t e r m f r e q u e n c y t o t a l n u m b e r o f w o r d s tf = \frac{term frequency}{total number of words} tf=totalnumberofwordstermfrequency

范数归一化

使用 r a w t f raw_{tf} rawtf的范数归一化 (普通频数除以普通频数向量的模)
t f = r a w t f ∣ ∣ r a w t f v e c t o r ∣ ∣ p tf = \frac{raw_{tf}}{||raw_{tf} vector||_p} tf=∣∣rawtfvectorprawtf

对数频数

t f = log ⁡ ( 1 + r a w t f ) tf = \log(1+raw_{tf}) tf=log(1+rawtf)

以上为几种根据词频对向量进行取值的方法。但是完全根据词频进行计算会面临一个问题:
越常见的词越容易获得更大的值。而常见词未必是对于区分短信有意义的特征。
因此我们引入了IDF:

1.3 Inverse document frequency (IDF)

IDF值主要用于衡量向量某维度代表的词,在整个样本中的稀有程度。越稀有,IDF数值越大。越不稀有,IDF数值越接近于1.
在这里插入图片描述
这个式子意味着,如果某个词在所有文档都出现,那么他可能是冠词或者介词。比如英文中的a,of,on等。这种词对于区分短信来说其实不是很好的特征,不具备区分性。所以这样的词的IDF值会很接近于1.
当然IDF的取值也可以有多种表达式,但核心宗旨大概率都是类似的。

1.4 TF-IDF scores 取值

TF-IDF 意味着将两种取值方式结合起来。即某个词对某个样本的TF-IDF分数(也即这个样本在这个词代表的特征上的取值)大,意味着这个词不仅仅在这个样本中比较常见,同时在其他文档中又相对的不那么常见。也即这个词很有可能是”新葡京“这样的,让人一看就知道这是垃圾短信的标志性词汇。
而这种结合方式即为将TF分数和IDF分数相乘。
在这里插入图片描述
在这里插入图片描述
TF-IDF本质是在衡量,某个单词(term)在一个文档(document)中的意义。比如“葡京”在“欢迎光临澳门新葡京,100万大奖等你拿!某某新葡京,美女荷官,在线发牌,***blah blah, 某某.com" 这个短信中的意义。而这个意义的数值大小,会作为这条短信样本的某个维度的特征,放进Bag-of-Words搭好的向量框中,将来参与到短信分类的模型中。(比如logit模型等等)

词袋模型(Bag-o-fWords)的宗旨即为将document中的每个单词都视为一个独立的特征。特征值可以为one-hot编码、TF、TFIDF等。
词袋模型具有表示直接、生成简单、效果好等特点。但是由于其过于简单,难以捕捉文本的结构。例如词序、语序等,无法在文本表示向量中体现。

N-Gram

N-gram 与词袋模型相比,旨在保留更多的语序信息,因此会将 n个相邻的单词/汉字 也加入在特征的维度中。这就是 n-gram。在Bag of Words的基础上又大幅的拓展了文本表示向量的维度。
如果只考虑两个相邻的单词,那么可以称为 bi-grams。
在这里插入图片描述
再比如:
在这里插入图片描述
与词袋模型相同,在通过加入相邻词组成的词组后,向量的维度增加。但向量的取值依然可以考虑 one-hot编码、TF编码、TF-IDF编码等方式。

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

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

相关文章

定义多个类对象,分别输入和输出各对象中的时间(时:分:秒)

在前面的文章中,类中只有公用数据而无成员函数,而且只有1个对象。可以直接在主函数中进行输入和输出。若有多个对象,需要分别引用多个对象中的数据成员,可以写出如下程序: (1)编写程序&#xff…

stata17中java installation not found或java not recognozed的问题

此问题在于stata不知道去哪里找java,因此需要手动的告诉他 方法1: 1.你得保证已经安装并配置好java环境 2.在stata中输入以下内容并重启stata即可 set java_home "D:\Develope\JDk17" 其中java_home后面的""里面的内容是你的jdk安装路径 我的…

【Java算法】滑动窗口 上

🔥个人主页: 中草药 🔥专栏:【算法工作坊】算法实战揭秘 👖一. 长度最小的子数组 题目链接:209.长度最小的子数组 算法原理 滑动窗口 滑动窗口算法常用于处理数组/字符串等序列问题,通过定义一…

IKVM.net调用Jar包实现SM4解密

近期,我深入学习了如何使用IKVM.net来调用Jar包,这次的学习经历让我对Java与.NET之间的互操作性有了更深刻的理解。IKVM.net作为一款强大的工具,为我们打通了Java与.NET之间的桥梁,使得在.NET环境中调用Java库变得简单而高效。 在…

生产环境安装odoo

odoo可以在多平台运行,但是在生产环境下官方不建议在Windows平台部署。在Windows下可能不能很好的支持一服务多worker的形式,更推荐在Linux下部署。 常见的Linux如Ubuntu、Debian等Debian系或Redhat系都能执行官网的包安装。 地址:Download |…

使用Jetpack Compose为Android App创建自定义页面指示器

使用Jetpack Compose为Android App创建自定义页面指示器 在现代移动应用中,页面指示器在提供视觉导航提示方面发挥着重要作用,帮助用户理解其在应用内容中的当前位置。页面指示器特别适用于顺序展示内容的场景,如图片轮播、图像库、幻灯片放…

Python3简单实现与Java的Hutool库SM2的加解密互通

1、背景: 因业务需求,需要与某平台接口对接。平台是Java基于Hutool库实现的SM2加密解密,研究了下SM2的加解密算法,网上找的资料,都是说SM2【椭圆曲线】 公钥长【x,y分量 64字节】,私钥短【32字节】&#x…

ChatTTS增强版V3【已开源】,长文本修复,中英混读,导入音色,批量SRT、TXT

ChatTTS增强版V3来啦!本次更新增加支持导入SRT、导入音色等功能。结合上次大家反馈的问题,修复了长文本、中英混读等问题。 项目已开源(https://github.com/CCmahua/ChatTTS-Enhanced) 项目介绍 V3 ChatTTS增强版V3,长文本修复&#xff0c…

拔河【码蹄杯】/二分

拔河 二分 思路&#xff1a;二分平均力量值&#xff0c;并在check中利用前缀和判断。 #include<bits/stdc.h> using namespace std; typedef long long ll; ll a[100005]; double sum[100005]; ll f,n; bool check(double x) {double dx;double mn0;for(int i1;i<n;…

【MySQL进阶之路 | 高级篇】InnoDB存储结构

1. 数据库的存储结构 : 页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的.确切说是存储在页结构中.另一方面&#xff0c;索引是在存储引擎中实现的&#xff0c;MySQL服务器上的存储引擎负责对表中数据的读取和写入操作.不同的存…

助力数据跨境,最新政策解读与应用实践分享

6月13日&#xff0c;VERYCLOUD睿鸿股份联合深数所企业数据合规服务南山工作站、亚马逊云科技&#xff0c;在深圳南山区共同主办了一场关于《数据出境合规之路——法规解析与实践探索》研讨会。 VERYCLOUD睿鸿股份是南山大数据产业协会的副会长单位。南山大数据产业协会作为深圳…

Python二级考试试题

1. 关于数据的存储结构&#xff0c;以下选项描述正确的是 A 数据所占的存储空间量 B 数据在计算机中的顺序存储方式 C 数据的逻辑结构在计算机中的表示 D 存储在外存中的数据 正确答案&#xff1a; C 2. 关于线性链表的描述&#xff0c;以下选项中正确的是 A 存储空…

CSDN低质量分文章自动化获取

1. 背景 最近粉丝终于达到了5K&#xff0c;可是仍然无法通过优质作者申请&#xff0c;原来是平均质量分较低&#xff0c;优化了一些文章后分数提高仍然较慢&#xff0c;所以需要批量获取低质量文章&#xff0c;重点优化 2. 目标效果 3. 核心代码 其中的Cookie可以根据浏览器…

Ubuntu系统通过GRUB引导菜单进入恢复模式修改账户密码

当在Ubuntu系统中忘记了账户密码时&#xff0c;有几种方法可以破解或重置密码。 本指引文档方法&#xff1a;通过GRUB引导菜单进入恢复模式 实践环境为&#xff1a;20.04.6 LTS (Focal Fossa) 1. 重启Ubuntu系统&#xff1a;首先&#xff0c;你需要重启你的Ubuntu系统。 2. …

【PyTorch】【机器学习】图片张量、通道分解合成和裁剪

一、导入所需库 from PIL import Image import torch import numpy as np import matplotlib.pyplot as plt二、读取图片 pic np.array(Image.open(venice-boat.jpg))上述代码解释&#xff1a;先用Image.open()方法读取jpg格式图片&#xff0c;再用np.array()方法将图片转成…

图解Transformer

图解Transformer Transformer模型是在论文《Attention is All You Need》中提出的。它的TensorFlow实现作为Tensor2Tensor包的一部分是可用的。哈佛大学的自然语言处理小组创建了一个指南&#xff0c;用PyTorch实现对论文进行了注释。在这篇文章中&#xff0c;我们将尝试简化一…

基于CST的连续域束缚态(BIC)设计与机制研究

关键词&#xff1a;太赫兹&#xff0c;超表面&#xff0c;连续域束缚态&#xff0c;CST&#xff0c;高Q 束缚态的概念最先出现于量子力学中&#xff0c;当粒子被势场约束在特定的区域内运动&#xff0c;即在无限远处波函数等于零的态叫束缚态&#xff0c;例如势阱中的粒子就处…

MySQL操作语句练习【经典20题】

emp 表视图 dept 表视图 题目 1.请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。 2.请在EMP表中查找部门号在10&#xff0d;30之间的雇员的姓名、部门号、工资、工作。 3.请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 4.请从表EMP中查找工资低…

EM算法数学推导

EM算法可以看李航老师的《机器学习方法》、机器学习白板推导、EM算法及其推广进行学习。下文的数学推导出自“南瓜书”&#xff0c;记录在此只为方便查阅。

qt 简单实验 读取json格式的配置文件

1.概要 2.代码 //#include "mainwindow.h"#include <QApplication> #include <QFile> #include <QJsonDocument> #include <QJsonObject> #include <QDebug> //读取json数据的配置文件QJsonObject readJsonConfigFile(const QString …