NLP基础—3.文本表示
文章目录
- 引言
- 一、词袋模型—Bag of Words
- 二、文本相似度计算
- 三、词嵌入
- 四、句子表示
引言
文本是一类非常重要的结构化数据,如何表示文本数据是机器学习领域的一个重要研究方向。文本表示的核心在于将文本表示成后续算法可以使用的特征向量。
一、词袋模型—Bag of Words
在介绍词袋模型前,我们先引入词集模型。词集模型是指基于词典的句子的one-hot编码。词集模型只能统计这句话是否出现过这个词,而不能记录词之间的顺序,词出现的个数。因此,在词集模型的基础上出现了词袋模型。
词袋模型是最基础的文本表示模型。词袋模型是将每篇文章看成一袋子词,并忽略每个词出现的顺序。具体来说,就是将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映这个词在原文章中的重要程度。常用TF-IDF来计算权重,公式为:
TF−IDF(t,d)=TF(t,d)×IDF(t)TF-IDF(t,d)=TF(t,d)×IDF(t)TF−IDF(t,d)=TF(t,d)×IDF(t)
其中,TF(t,d)TF(t,d)TF(t,d)为单词ttt在文档ddd中出现的频率;IDF(t)IDF(t)IDF(t)是逆文档频率,用来衡量单词ttt对表达语义所起的重要性,表示为
IDF(t)=logNN(w)+1IDF(t)=log\frac{N}{N(w)+1}IDF(t)=logN(w)+1N
其中,N表示语料库中的文章总数,N(w)表示词语w出现在多少个文档中
逆文档频率最直观的解释是:如果一个单词在非常多的文章里面出现,那么它很可能是一个通用词汇,对于区分某篇文章特殊语义的贡献越小,因此对权重做一定惩罚。
二、文本相似度计算
如何计算句子之间的相似复杂度?有如下指标:余弦相似度(两个向量夹角的余弦),欧式距离,Minkowski距离。
余弦相似度:cos(A,B)=A∗B∣∣A∣∣2∣∣B∣∣2cos(A,B)=\frac{A*B}{||A||_2||B||_2}cos(A,B)=∣∣A∣∣2∣∣B∣∣2A∗B
余弦相似度可以用于分析两个特征向量之间的相似性,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维的情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧式距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。
欧式距离:d=∑i=1n(xi−yi)2d=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}d=i=1∑n(xi−yi)2
Minkowski距离:d=(∑i=1n∣xi−yi∣p)1pd=(\sum_{i=1}^{n}|x_i-y_i|^p)^{\frac{1}{p}}d=(i=1∑n∣xi−yi∣p)p1
当p=1时,为曼哈顿距离
当p=2时,为欧式距离
当p=∞时,为切比雪夫距离
三、词嵌入
词嵌入是在原来基于字典的词独热编码的一种改进。核心思想是将每个词映射成低维空间上的一个稠密向量。K维空间的每一维也可以看作是一个隐含的主题,只不过不像主题模型中的主题那样直观。
由于词嵌入将每个词映射成一个K维向量,如果一篇文档有N个词,就可以用一个N×K维的矩阵来表示这篇文档,但是这样的表示过于底层,在实际应用当中,如果仅仅把这个矩阵作为原文本的表示特征输入到机器学习模型中,通常难以得到令人满意的效果。因此,还需要在此基础上加工出更高层的特征。深度学习模型正好提供一种自动进行特征工程的方式,模型的每个隐层都可以对应着不同抽象层次的特征。
目前谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。Word2Vec实际上是一种浅层的神经网络,它有两种网络结构,分别是CBOW和Skip-gram。
CBOW是预测中间单词,skip-gram是预测上下文。
nlp领域并不存在空穴来风的word embedding,实际上也是一种one-hot,在one-hot基础上进行全连接进而得到word embedding。
四、句子表示
句子表示方式分为以下几种:
- 对齐的字符序列
依靠非常严格的字符串对齐,找到两段文本的相似性度量方式,这种相似性度量方式是编辑距离 - 非对齐的词向量平均
- 句子级别的embedding
严格对齐与非对齐的区别在于非对齐计算的是同义词之间的相似性;句子级别的embedding指的是抛弃单词级别的表示。
句子的编码方式:
- one-hot编码
这是传统机器学习的方式。特点:稀疏表示、词表空间;英文中常见单词有3万,其ont-hot编码可以表示为:
ont-hot编码后可以表示句子中是否存在单词,但并不能表示每个单词的重要性,就演变出词袋模型,以TF-IDF来表示单词的重要性 - 词袋模型
词袋模型是最基础的文本表示模型。词袋模型是将每篇文章看成一袋子词,并忽略每个词出现的顺序。具体来说,就是将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映这个词在原文章中的重要程度。常用TF-IDF来计算权重,公式为:
TF−IDF(t,d)=TF(t,d)×IDF(t)TF-IDF(t,d)=TF(t,d)×IDF(t)TF−IDF(t,d)=TF(t,d)×IDF(t)
其中,TF(t,d)TF(t,d)TF(t,d)为单词ttt在文档ddd中出现的频率;IDF(t)IDF(t)IDF(t)是逆文档频率,用来衡量单词ttt对表达语义所起的重要性,表示为
IDF(t)=logNN(w)+1IDF(t)=log\frac{N}{N(w)+1}IDF(t)=logN(w)+1N
其中,N表示语料库中的文章总数,N(w)表示词语w出现在多少个文档中
逆文档频率最直观的解释是:如果一个单词在非常多的文章里面出现,那么它很可能是一个通用词汇,对于区分某篇文章特殊语义的贡献越小,因此对权重做一定惩罚。
ont-hot模型与词袋模型是从原始的词表出发,构造加权方式,还是手动构造特征的方式;深度学习开辟了通过算法来学到特征的方式,有AR(自编码)与AE(自回归)两种方式。
- 自回归AR
典型的AR模型有RNN,LSTM,GRU,自回归模型是依靠历史信息监督当前信息,在这些深度模型的最后一层会有隐向量,可以得到词向量的深度表示。 - 自编码AE
自回归模型是依靠历史信息监督当前信息
深度学习编码:AR/AE ——> Word2Vec(CBOW和Skip-gram) ——> ELMo
seq2seq ——> transformer
seq2seq ——>GPT ——>BERT(终点)
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
NLP基础—3.文本表示相关推荐
- NLP基础 - 计算文本的相似度
NLP基础 - 计算文本的相似度 一.计算文本的相似度简介 二.举例 一.计算文本的相似度简介 计算两个文本间的相似度在NLP领域中的应用非常广,包括:搜索引擎.问答系统.聊天机器人.文本分类等. 计 ...
- 零基础入门NLP - 天池新闻文本分类Task3笔记
零基础入门NLP - 天池新闻文本分类 以下以Datawhale与天池举办的新闻文本分类这个NLP赛题做的NLP入门Task2笔记 赛题链接:https://tianchi.aliyun.com/co ...
- 文本标注十要点 | NLP基础
NLP基础系列 1. 浅论语言与认知的关系 2. 为什么要处理自然语言 3. 计算机是如何理解自然语言的 文本标注十要点 实验 vs 应用 自然语言处理(NLP)是机器学习领域非常有挑战的一个分支. ...
- 利用python处理pdf文本_Python用于NLP :处理文本和PDF文件
原标题:Python用于NLP :处理文本和PDF文件 提示:代码图片可以点击全屏查看,双指操作还可以放大缩小. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从 ...
- NLP中面向文本表示的模型梳理
引言 语言表示是将自然语言表示为计算机或者模型能够处理的数据特征,是解决例如情感分析.命名实体识别.机器翻译.文本生成等这些高级任务的基础.本文作为NLP基础知识的入门,梳理了相关文本表征的模型与方法 ...
- 2021秋招-NLP基础任务模型-NER
NLP基础任务模型-NER 注: 基本全是转载,也都附加了转载链接,侵删. 多谢各位大佬的总结. 目录: 任务定义 简单综述 数据集细节总结 模型细节总结 损失函数计算 总结 NLP实战-中文命名实体 ...
- nlp基础—8.隐马尔科夫模型(HMM)分词实现
文章目录 引言 HMM分词实现 理论部分传送门: nlp基础-7.隐马尔可夫模型(HMM算法) 数据代码链接见:https://gitee.com/lj857335332/hmm-for-word-s ...
- bio和bieos哪个标注模式好_2021秋招-NLP基础任务模型-NER
NLP基础任务模型-NER 注: 基本全是转载,也都附加了转载链接,侵删. 多谢各位大佬的总结. 目录: 任务定义 简单综述 数据集细节总结 模型细节总结 损失函数计算 总结 NLP实战-中文命名实体 ...
- NLP基础——语言模型(LM)
文章目录 NLP基础:语言模型(LM) 1. 模型评估(概率估计) 2. 平滑方法 3. LM在拼写纠正(Spell Correction)中的应用 NLP基础:语言模型(LM) 语言模型(LM,La ...
- Android Studio基础输入文本框EditText
Android Studio基础输入文本框EditText 接续上一节<Android Studio 基础按钮使用> 1.提示文本框.输入文本框,在布局xml编写 <EditText ...
最新文章
- Windows下Git的安装
- 排列和组合简单的递归思路以及C++实现
- 人生的意义—我们为什么活着?
- ServiceStack.Redis常用操作 - 事务、并发锁
- zynqpl端时钟_第十二章 ZYNQ-MIZ702 PS读写PL端BRAM
- SAP HANA Cloud 学习教程之二: 如何往SAP BTP 上 HANA Cloud 实例的数据库表里插入数据
- Rtworld目录网全解开源2.0-功能齐全
- Spring Boot 发送邮件时,出现 Mail server connection failed 异常问题
- 【Python系列】之python2.7.6离线安装Matplotlib
- yolo和mrcnn目标检测
- edge设置IE兼容模式
- 解决VMware 虚拟机中的网络连接出现”受限制或无连接“问题的方法
- 如何锻炼提高自己的逻辑思维?这里给你7个方法!
- pscs6安装序列号
- 2.3、云计算FusionCompute存储虚拟化
- 互联网名称与数字地址分配机构ICANN简介
- 临沂一中高考2021成绩查询,2021年临沂高考状元名单公布 今年临沂高考状元是谁资料和分数...
- Vue进阶(三十六):created() 详解
- Pwn2Own 2022 温哥华大赛Master of Pwn 诞生
- 满天星(HTML+CSS+JS)
热门文章
- 和浏览器并发请求数有关的一些前端技术
- UVa10047 BFS
- linux 中ifconfig命令 结果解释
- java day35【Bootstrap】
- Windows Moible, Wince 使用.NET Compact Framework进行蓝牙(Bluetooth)开发 之 32feet.NET
- C#+ArcEngine中com对象的释放问题
- 【Chromium中文文档】线程
- 「2013-9-14」Change Remote Desktop Port
- 程序理解与程序员的未来
- C#判断一个string是否为数字 --zt