这几年一直都在研究CV领域,后面想抽点时间学习一下NLP方面的东西【纯个人兴趣爱好】,本人从来没有接触过NLP方面的学习,也不知道怎么学习,因此只能东一榔头西一棒槌的学了,希望可以快速系统的学起来~会专门建立一个专栏用来学NLP,后续会不定时的更新分享,如果有这方面的大佬也可以指点一下。后续的学习计划会希望将NLP和我所研究的CV内容进行结合(因此我在学习这方面的时候会和CV领域进行类比来学),欢迎支持。
零基础学NLP,第一部分就是专业名词的解读。就和当初学CV的时候一样,需要理解什么是卷积,通道指什么,特征图又是指什么等等。NPL亦是如此,比如,词向量、词嵌入、分布式表示等等。
注意:本篇主要涉及一些基础知识的更新。
目录
语言的表示
1.词的独热表示(one-hot)
2.分布式表示
2.1基于矩阵的分布式
2.2词嵌入
这一部分可以理解为是讲数据的表现形式。对于不同的任务,我们送入模型的数据形式也是不同的。例如语音信号,我们通常会将频谱序列送入模型进行特征提取。对于图像,通常会将RGB三通道的图像送入模型进行特征提取,同时希望这些特征尽可能的线性无关。那么在NLP中,是将每一个词用向量的形式表示出来。这一点就类似于CV任务了,因为在CV对图像的特征提取,每个通道就是对该图像提取到的不同特征。【因此我是是不是可以理解为词向量中的向量维度就对应于CV中的通道呢】
但是与CV不同的是,NLP中的词是有上下文含义的,你去理解一个词,有时候是需要理解上下文含义的,这就是比CV中高级的部分。同时,比如像“土豆”、“洋芋”,两个不同字的词,却是指相同的东西。我们在设计任何一款模型的时候,都是希望它与我们的数据进行拟合,在建模之前,我们需要把数据充分的表示出来才可以。
按照现今目前的发展,词的表示分为独热表示 one-hot、分布式表示 distributed。
NLP 中最直观,也是到目前为止最常用的词表示方法是 One-hot【CV中也有】,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。
比如:
"狗":[0,0,0,0,0,1,0,0,0,....]
"猫": [0,0,0,01,0,0,0,0,0,..]
这种方式也常应用于CV中的分类任务。当预测索引位置为1就表示预测的该类。
但这种方式是有问题的,比如随着句子的增多,维度也会增大,而且这种One-hot分类出的词是独立的,没有词之间的相关信息。
one-hot这种分类方法虽然准确,但没有语义之间的相关性,仅仅将词符号化。Harris 在 1954 年提出的分布假说,上下文相似的词,其语义也相似。Firth 在 1957 年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定。这个可以打个比方,比如咱们在做英语阅读的时候,有一个单词不认识,但是我们可以通过上下文的含义就能猜出来这个词是什么。这就是分布式,或者可以说"分布"一词指单词在上下文中的分布模式和统计特征。
当我们说一个单词在上下文中的分布时,我们指的是它与其他单词在文本中的共现关系(什么叫共现呢,可以理解为同时出现,比如“猫爱吃鱼”,猫和鱼是有关系的,在上下文中出现在一起,“喜欢”和“吃”也有一定的关联,通过观察和统计大量的文本数据,我们可以得到单词之间的共现模式)。具体而言,我们观察一个单词在其周围的窗口或一定范围内的上下文中出现的其他单词,然后统计它们之间的关系。
因此,在分布式表示中的建模就需要解决两个问题,1.用一种方式描述上下文;2.选择一个模型可以刻画“目标词”与其上下文之间的关系。
词的分布式表示又可以分为基于矩阵的分布式、词向量或者词嵌入。
基于矩阵的分布表示通常又称为分布语义模型,矩阵中的一行,就成为了对应词的表示,这种表示描述了该词的上下文的分布,由于分布假说认为上下文相似的词,其语义也相似,因此在这种表示下,两个词的语义相似度可以直接转化为两个向量的空间距离。
在词嵌入中,"嵌入"一词指的是将单词或短语映射到一个连续向量空间中的过程。这个向量空间通常是低维且连续的。【可以理解为是将离散空间映射到连续空间的过程,把离散的词“嵌入”到连续空间内】。这种嵌入的方式使得具有相似语义关系的单词在向量空间中更加接近(当前词在本句子中上下文的信息)。
例如,"猫"和"狗"在词嵌入空间中可能会被映射到相似的向量表示,因为它们在语义上具有一定的相似性,那么这两者的空间距离就会更近。
更新中........