开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):自然语言处理基础技术详细介绍(一)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19279
自然语言处理基础技术详细介绍(一)
内容介绍
一、分词
二、词性标注
三、关键词提取
四、命名实体识别
五、语法分析
六、文本向量化
一、分词
分词的概念,分词就是把句子、段落或者是文章这种长文本分解成以字词为单位的数据结构。
机器学习之所以看上去可以解决很多复杂的问题,是因为他把这些问题都转化成了数学问题。
NLP也是相同的思路,我们把文本都看成是一些非结构化的数据。我们需要先把这些数据转换为结构化的数据,结构化的数据就可以转化成数学问题了。分词就是转化的第一步。我们把这些句子、段落、文章把它分解成了分词这种形式之后,方便以后的分析处理工作。
我们对语言理解,词就是最小的能够独立活动的有意义的语言成分。将词确定下来,是我们能够理解自然语言的第一步。对于分词,英文相对来说比较简单,中文因为自身的特点,中文的分词就面临了很多的挑战。但是我们说理解语言,分词是第一步。只有跨过这一步,中文才能像英文那样过渡到短语的划分,概念的抽取,主题的分析等,最终达到自然语言理解。在英文中这个单词本身就是词,一篇英文的文章就是单词,然后单词之间是有空格的,用空格分割的就是不同的词。
在汉语里面,词是以字为单位的,但是一篇文章的语义表达,它仍然是用词来划分的。所以处理中文的文本的时候,肯定是需要进行分词处理,把句子转换成词的表示。中文分词的常见算法有最大匹配分词算法、最短路径分词算法。
我们看一下下面这个例子,了解一下最大匹配分词算法。
上面这个图是带分词的句子是自然语言处理,是有趣的科学。我们去读的时候非常容易理解,怎么对它进行分词,我们需要有一个词表,这个词表里面包含了分的这个词汇都有什么。
词表里面有自然,有语言,有处理,有趣,有科学等。除了这个之外,自然语言可能还是一个词,自然语言处理还是一个词,语言处理可能也是一个词。词表有可能是这样的,当我们对这句话从左向右进行分词的时候,然后去找自然。
这个时候并不是把自然拆开,而是还要继续找下去,找到自然语言处理是一个词,这个时候就找到了最大匹配,最后分析的结果就是自然语言处理,把这个拆出来了,是有、 趣 、的、 科学,这个过程就是最大匹配分词。这种方式是比较机械的方式,最短路径算法,其实它也是一种机械化的分词的方法。
最短路径分词用到了词频,它在分词的过程中分词有很多种,会用这个分词出现的频率,当成很重要的参考的点。
然后把句子分词的可能性当成一条条的路径,当有很多种分词方案的时候,他会选一个最短的路径,认为这个是最优的,就得到一个最优的分析结果。
中文分词任务有许多的难点,首先是界定中文的词汇。中文分词工具的好或者是坏,至少需要一个清晰的评判标准,也就是中文词汇的界定。
举个例子,比如说科教兴国这个词既可以当成一个词科教兴国,也可以切碎成科教和兴国,它都符合百科里的定义,也都是合情合理的。
当我们界定中文词汇的时候,我们是先理解句子,再去判断应该怎么样去分词。同样计算机里面也有这种思路,它的核心思想就是把分词的决定放在句法分析的过程中去解决,这就需要一个很强大的基于句法语义规则的句子分析系统。
但是这样的分词工具会依赖规则,规则的多少,规则的数量和质量,这种方式其实是比不上统计学习中的中文分词工具。
分词的第二个难点是分子的提议问题,我们可以把歧义分成为交际性切分歧义和组合型切分歧义。
我们看一下上边表格里面分词歧义的示例,看文本南京市长江大桥,大家可能一般都是这样去分的,但是有可能分错。
我们分的时候可能分成南京,然后市跟后面的长放在一起了,就变成了市长,后面就只能分成江大桥了,但正确的分词是南京市长江大桥。研究生命的起源,如果分错了,就研究生,结婚的和尚,这就分错了,是结婚的和尚未结婚的,这样分才是正确的。这个也是经常见到的,和服,和服装很容易被切分成和服,这些都是交际型的切分歧义。最后一个是从马上跳下来,主要这个马,是从马上跳下来,还是马上的跳下来,这是组合选择题。
然后是分子的使用一个切分子的力度的问题。将这个语言单元啊分词的时候切分成什么样的力度,是一个很重要的问题。
它会影响到这个词点的大小,就算是表达意思相同的字串 ,它在语料中也可能有不同的切分的方式,可以有细粒度的切分,有粗粒度的切分,分词的难点,还有一个未登录词的识别问题。那通过大量的评测结果证明,未登录词对于精度的影响是奇异问题的五倍以上。
未登录词其实不难理解,就是没有被收录到分词词典里的词。这样的词的类型很多,比如说网络新词、人名、机构词、缩写词、新增词等。然而这些类型的词往往对于实际的业务有很大的价值,是分词结果考察的重点。现在已经有了很多的方法可以自动的去识别未登录词,比如说隐马可夫模型。以上是分词过程中的一些难点。
介绍一下分词的实现方法。
首先介绍一下最大匹配分词算法。它首先是以词典为依据,先要有一个词典列着我们有可能分出来的所有的词,然后取词典中最长词的长度,作为第一次取字数量的长度,因为词典里面这个词可能会有长有短,比如说一个词可能有两个字,可能有三个字,可能有五个字,那么你要根据你的词典里面最长的那个是多长,比如说的是五个,那么你从句子里面去取词的时候,要先取五个。
取完出来之后,再看五个字是不是一个词。如果不是的话,那就取四个。取出来之后,要在字典中进行匹配,叫逐字递减。在对应的字典里面查找,如果查找到了,就说明实现了分词。
举个例子,比如说阿里云,那阿里是一个词,阿里云也是一个词,如果在一个句子里面你去取这个词是怎么分出来的,可能取的长度是一定的长度,然后取的时候一点点减少的时候。你会发现,阿里云这三个就已经是一个词了,那这个阿里云这个词就分出来了,如果你的词典里面没有阿里云,只有阿里,那你可能就找不出阿里云这个词,只能找到阿里,只能这样分。那么这种分词的方法,根据匹配的方向不同,又分为正向匹配和逆向匹配。
那么比如说下面这句话,他说的确实在理,我们看一下它的正向匹配。那在分词的时候,从左边开始,就他说\然后到的\的时候,发现这个\的确可以分成一个词。那这个时候就分成\的确了,然后\实在又可以分成一个词,就是实在然后\理分成了这样的结果。
如果从逆向匹配来做的话,从右边开始,分出来\在理\确实\的\说\他\他说的确实在理,这个更是我们想要的结果,也就是说正向匹配和逆向匹配可能分出来的结果不一样。
分词算法的第二种: 最短路径分词算法。
这种算法首先将文本里面所有的词都匹配出来,然后构成一个词图,然后这个到底应该怎么分这个方式,就变成了从起始点到终点去寻找最短路径的这个问题。词图里面每个词的权重都是相等的,每条边的权重呢都是一,找出最优的路径就可以了,两点之间的最短路径就包括了路径上其他顶点的最短路径。通过这个它的这个算法,如果这个能够把这个词分得这个长一点,是更容易成为最短路径的。
我们还是看一下刚才那句话的例子,他说得确实在理。如果我们把他所有的词都匹配出来的话,就\的确\实在\确实在理,好多的词,那么这句话也可以怎么去读,怎么去分。
每一条路径都是一个可能的分词的结果,比如说他说\的确\实在\理,你这是一种,然后他说的\确实\在理,这是一种,这里还能发现一种新的,他说\的确\实\在理\是一个词,这个也可以成为一个路径,然后应该去选哪一个作为最终的分词结果,要看哪一个算出来的这个路径是最短的。
二、词性标注
前面讲完分词之后我们获得了词。如何让这个计算机程序认识这字词,知道它的词性,我们需要对它进行词性标注。在进行词性标注之前,我们首先要了解词性都有哪些。
例如这句话,自然语言处理是有趣的科学。这个句子里面有多少种词性,答案是由名词、动词、形容词和助词,词性标注的概念。首先弄清楚什么是词性,词性指的是词的语法分类,又称词类。在英文里面有名词、动词、形容词、副词、代词、介词、冠词、连词、感叹词。
中文的大致是相同的,中文里面有名词、动词、形式、容词、副词、代词、介词、连词、数词、量词、助词、感叹词、拟声词。
那词性标注是在给定的句子上判断每个词的语法范畴,确定它的词性,并给它加上标注。这个过程就是词性标注。
比如表示人地点、事物以及其他抽象概念的名称,这就是名词表示动作或者状态变化的词叫动词。描述或者是修饰名词属性状态的词叫形容词。词性标注最简单做法主要是从这个语料库里面统计出来每个词对应的高频的词性,然后这个高频的磁性就可以作为它默认的磁性,但是这样显然还有提升空间。
目前较为主流的方法是跟分词一样,将句子的词性标注作为一个序列标注来解决,这样分词中的常用的手段,比如压印马尔可夫克模型,条件式机场模型等,都可以在词性标注的任务中使用。
自然语言处理是有趣的科学,我们把它分词,分词完了之后做词性标注,分词完之后,我们识别出来自然语言处理是名词,是 是动词,有趣是形容词,的是助词,科学是名词,这就是一个词性标注的结果。
在中文里一个词的词性很多时候都是不固定的,一般表现为同音同形的词在不同的场景下,其表示的语法截然不同,这就为词性标注带来了很大的困难。
但是另一方面,从整体上来看,大多数词语尤其是实词,一般只有一到两个词性,并且其中的一个词性出现的这个频次会远远大于另一个。这样就算是每次将它的高频词性选中,作为选择来进行标注,那也能实现80%以上的准确率。也就是说如果我们能对常用的词性进行很好的识别,就能够覆盖绝大多数的场景,满足基本准确度的要求。
词性标注需要有一定的标注规范。
比如说我们先可以把词分为名词、动词、形容词等。然后用像nv a d j分别表示名词、动词、形容词,上面有一个表,这是我们一种常用的标注的方式。比如说a表示形容词,n表示名词,m表示数词,c表示连词,d表示副词,p表示介词,q表示量词,v表示动词。
自然语言处理是有趣的科学。这句话可能的标注结果是这样的,自然语言处理是名词,是动词,有趣的是形容词,d是副词,科学是名词。