开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):自然语言处理基础技术详细介绍(三)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19279
自然语言处理基础技术详细介绍(三)
五、语法分析
语法分析的概念,语法分析是自然语言处理里面的核心技术,是对语言进行深层次理解的基础。语法分析一般要做下面几件事情,一个是判断输出的字符串是否属于某种语言,对它属于某种语言进行判断。
第二个是消除输入语句中词法和结构等方面的歧义。消除歧义之后,再分析句子的内部结构,如成分构成和上下文关系,比如说这里有句子,外面摆着花,外面演着戏,这样的句子,那么我们对它进行语法分析。分析句子的结构,分析它的上下文关系可以得到这样的结果。他们的词序列相乘,他们的词序列都是有处所短语,就是外面,然后后面是跟着动词,助词和名词,外面摆着花,外面演着戏。这是对他语做这个语法分析的一个示例。语法分析的难点有两个,一个是歧义,一个是搜索空间。
自然语言具备于人工语言,一个重大的特点,就是它存在着大量的歧义,人们是可以用大量的先进知识有效地去消除歧义。而在机器学习里,机器在表示和获取方面有着严重的不足,很难像人一样进行有效的这个起义消除。
比如说上面的两个句子,山上的水宝贵,我们把它留给晚上来的人喝,可能这个意思是晚上来,有上来早的人,有上来晚的人,或者可以理解成留给晚上才来的人喝,晚上这个时候是一个时间,计算机去理解的时候,就很容易有歧义。
第二句是这个人连小明都不认识,可能的题意是,这个人都不认识小明。小明是一个很有名的人,他竟然不认识小明,或者是这个人小明不认识,小明认识很多人,但是不认识这个人,这个时候就造成了歧义,我们人是可以用上下文来消除这个歧义,但是如果单独地给你这个句子的话,就很难了。
语法分析的另一个难点,这个搜索空间是什么意思,当我们去理解什么是名词,什么是动词,什么是形容词的时候,可能在一个候选数里面去搜索。在自然语言里面这个内容可能会非常的庞大,这个表可能会非常的庞大,因此必须有合适的解码器,才能在规定的时间内搜索到模型定义的最优解。
语法分析的实现方法。基于规则的方法,这种方法的基本思路是由人工来组织语法规则,建立语法知识库。通过条件约束和检查来实现语法结构歧义的消除。
那对于特定领域,有针对性的规则,能够比较好地去处理这个句子里面的奇异的现象,或者是一些超语法的现象。
但是用这种基于规则的方法,在处理大规模的真实的文本的时候,会出现这种语法规则覆盖有限。
出现这种情况,因为规则可能不完善,还可能出现这个系系统的可迁移这种缺陷。总的来说基于规则的方法还是能够很好的处理句子歧义和这个语法的现象。
我们看一个实例,例:说小明在快乐地学习。那我们要分析它的语法的结构,在那就在里面去查找所有的名词,然后查找所有的动词,然后去随机匹配名词跟动词,那可能就能匹配出来。小明学习,那么这个就是对应的规则的主语和谓语,名词和动词这个关系。这是基于规则的方法。
六、文本向量化
文本向量化是因为文本不好处理,我们可以把文本数字化变成数值的形式。那变成什么样的数值呢?变成向量,把文本变成向量这个过程就叫文本向量化。
所以这里写到在自然语言处理之前,要将文本表示成计算机可识别的数值形式。我们这里抛出了一个问题,就我想要一个————橙汁,是一杯、一份、一桶什么东西,你就需要去预测画短线部分,这个词是用什么,这是一个典型的NLP的问题,这个模型的输入是上下文内容,输出呢是画横线的目标单词,或者说是目标单词的概率。这就需要一个语言模型来构建输入输出之间的映射关系,应用到深度学习上这个模型就是循环神经网络,把这个文本向量化之后,那文本就可以作为输入或者是输出,我们用一个语言模型来构建这个输入和输出之间的映射关系。
在自然语言处理技术站里面最小的力度就是字和词,拿字和词来组成句子,句子再构成段落,篇章,再构成文档。
但是计算机并不认识这些词,所以我们要对以词汇为代表的自然语言进行数学上的表征。这种转化方式,有两种,一种是传统的机器学习上叫one hot编码方式。
另外一种呢是基于神经网络的词欠技术。
文本向量主要有两种方法,离散式的词向量和分布式的词向量。在语言处理里面最常用的最传统的磁特征表示方法就是one hot编码,每一个词特征都被表示成一个很长的向量,这个长度要等于词表的大小,非常地长,看词表有多大。
当前词对应的位置是一,其他的位置就是零。举一个简单的例子,比如说我喜欢学习NLP,那我们建立词表的就是我喜欢学习NLP,这是分词的结果,真生的词表不可能是这么小的。那么你用one hot编码,如果只是说一个我,这时候这值就是1,喜欢就是1学习就是0。如果只是说我喜欢学习,没有后面NLP,那么这个文本向量就1110,就是这样的一个向量,这种编码的方式就叫one hot编码。这种方式有一些问题就是一个是它词跟词之间是正交的,无法衡量不同词之间的相似的关系,这是第一点。
它只能反映这个词在文档里面,是不是出现了,但是他不能去反映这个不能反映重要性的区别。当然你看到它的这种定义,你就知道如果这个词表非常大,那这个表就会变得非常大。
同样如果这个句子语句变得很长很复杂,那么这个向量就会变得很大,所以用one hot编码的时候,可能要进行降维,在这种离散式的词向量里面,相当于屏幕中的表来表示词向量存在的几个问题。
它的数据过于稀疏,难以捕捉文本行业盘义,它的数据的里面的信息量又很少,所以就引入了分布式词向量这个概念。分布式词向量它是把词转化成一种分布式表示,也就是说把这个词表示成一个定长的连续的稠密向量。
我们看一下图的实例。
如果用离散式的词向量的话,就是这样的。如果用分布式的词向量,一种可能的形式就是这样的。
它的特点是词之间是存在距离的概念的,这样就可以表示词之间的相关性,然后是向量,它可以包含更多的信息,而且每一位都有特定的定义,比如在用这个one hot这个特征的时候,可以对特征向量进行删减,但是此向量不能。
本节回顾
本节学了分词、词性标注、关键词提取、命名、实体识别、语法分析、文本向量化。
1、分词就是将句子、段落、文章等长文本分解成以支持为单位的数据结构,就是分词做的事情。
2、词性标注,给定句子去判断每个词的语法范畴,确定它的词性并加以标注。
3、关键词提取,关键词提取就是从文本里面提取出一些体现中心思想的重要词,包括两个步骤,一个是获取文本的候选词,然后对候选词进行打分。
4、命名实体识别,识别文本中具有特定意义的实体,显示人名、地名、机构名、专有名词等,然后我们分析出识别的对象可以分为三大类和七小类。
5、语法分析判断,至此属于某种语言,然后消除句子的歧义,分析输入句子的内部结构。
6、文本向量化,也就是把文本表示成计算机,可以识别的数字形式就是向量。然后通过以一个语言模型来构建输入文本和输出文本之间的映射关系,就叫做文本向量化。