文章目录

  • 引言
  • 一、词袋模型—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)TFIDF(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)=A2B2AB

余弦相似度可以用于分析两个特征向量之间的相似性,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维的情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧式距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。

欧式距离:d=∑i=1n(xi−yi)2d=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}d=i=1n(xiyi)2


Minkowski距离:d=(∑i=1n∣xi−yi∣p)1pd=(\sum_{i=1}^{n}|x_i-y_i|^p)^{\frac{1}{p}}d=(i=1nxiyip)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)TFIDF(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.文本表示相关推荐

  1. NLP基础 - 计算文本的相似度

    NLP基础 - 计算文本的相似度 一.计算文本的相似度简介 二.举例 一.计算文本的相似度简介 计算两个文本间的相似度在NLP领域中的应用非常广,包括:搜索引擎.问答系统.聊天机器人.文本分类等. 计 ...

  2. 零基础入门NLP - 天池新闻文本分类Task3笔记

    零基础入门NLP - 天池新闻文本分类 以下以Datawhale与天池举办的新闻文本分类这个NLP赛题做的NLP入门Task2笔记 赛题链接:https://tianchi.aliyun.com/co ...

  3. 文本标注十要点 | NLP基础

    NLP基础系列 1. 浅论语言与认知的关系 2. 为什么要处理自然语言 3. 计算机是如何理解自然语言的 文本标注十要点 实验 vs 应用 自然语言处理(NLP)是机器学习领域非常有挑战的一个分支. ...

  4. 利用python处理pdf文本_Python用于NLP :处理文本和PDF文件

    原标题:Python用于NLP :处理文本和PDF文件 提示:代码图片可以点击全屏查看,双指操作还可以放大缩小. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从 ...

  5. NLP中面向文本表示的模型梳理

    引言 语言表示是将自然语言表示为计算机或者模型能够处理的数据特征,是解决例如情感分析.命名实体识别.机器翻译.文本生成等这些高级任务的基础.本文作为NLP基础知识的入门,梳理了相关文本表征的模型与方法 ...

  6. 2021秋招-NLP基础任务模型-NER

    NLP基础任务模型-NER 注: 基本全是转载,也都附加了转载链接,侵删. 多谢各位大佬的总结. 目录: 任务定义 简单综述 数据集细节总结 模型细节总结 损失函数计算 总结 NLP实战-中文命名实体 ...

  7. nlp基础—8.隐马尔科夫模型(HMM)分词实现

    文章目录 引言 HMM分词实现 理论部分传送门: nlp基础-7.隐马尔可夫模型(HMM算法) 数据代码链接见:https://gitee.com/lj857335332/hmm-for-word-s ...

  8. bio和bieos哪个标注模式好_2021秋招-NLP基础任务模型-NER

    NLP基础任务模型-NER 注: 基本全是转载,也都附加了转载链接,侵删. 多谢各位大佬的总结. 目录: 任务定义 简单综述 数据集细节总结 模型细节总结 损失函数计算 总结 NLP实战-中文命名实体 ...

  9. NLP基础——语言模型(LM)

    文章目录 NLP基础:语言模型(LM) 1. 模型评估(概率估计) 2. 平滑方法 3. LM在拼写纠正(Spell Correction)中的应用 NLP基础:语言模型(LM) 语言模型(LM,La ...

  10. Android Studio基础输入文本框EditText

    Android Studio基础输入文本框EditText 接续上一节<Android Studio 基础按钮使用> 1.提示文本框.输入文本框,在布局xml编写 <EditText ...

最新文章

  1. Windows下Git的安装
  2. 排列和组合简单的递归思路以及C++实现
  3. 人生的意义—我们为什么活着?
  4. ServiceStack.Redis常用操作 - 事务、并发锁
  5. zynqpl端时钟_第十二章 ZYNQ-MIZ702 PS读写PL端BRAM
  6. SAP HANA Cloud 学习教程之二: 如何往SAP BTP 上 HANA Cloud 实例的数据库表里插入数据
  7. Rtworld目录网全解开源2.0-功能齐全
  8. Spring Boot 发送邮件时,出现 Mail server connection failed 异常问题
  9. 【Python系列】之python2.7.6离线安装Matplotlib
  10. yolo和mrcnn目标检测
  11. edge设置IE兼容模式
  12. 解决VMware 虚拟机中的网络连接出现”受限制或无连接“问题的方法
  13. 如何锻炼提高自己的逻辑思维?这里给你7个方法!
  14. pscs6安装序列号
  15. 2.3、云计算FusionCompute存储虚拟化
  16. 互联网名称与数字地址分配机构ICANN简介
  17. 临沂一中高考2021成绩查询,2021年临沂高考状元名单公布 今年临沂高考状元是谁资料和分数...
  18. Vue进阶(三十六):created() 详解
  19. Pwn2Own 2022 温哥华大赛Master of Pwn 诞生
  20. 满天星(HTML+CSS+JS)

热门文章

  1. 和浏览器并发请求数有关的一些前端技术
  2. UVa10047 BFS
  3. linux 中ifconfig命令 结果解释
  4. java day35【Bootstrap】
  5. Windows Moible, Wince 使用.NET Compact Framework进行蓝牙(Bluetooth)开发 之 32feet.NET
  6. C#+ArcEngine中com对象的释放问题
  7. 【Chromium中文文档】线程
  8. 「2013-9-14」Change Remote Desktop Port
  9. 程序理解与程序员的未来
  10. C#判断一个string是否为数字 --zt