开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:文本特征提取-下】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15492
文本特征提取-下
内容简介:
一、自动分词
二、分词实例
一、自动分词
我们再来看看词性标准的问题,词性,动词名词形容词等。如果文本中的词有词性的话,会进一步帮助我们理解文本的语义,像一句话中的主谓宾。自动词性标注就是用计算机来自动的给文本中的词标注词性,自动标注也有问题,就是兼类词,就是一个词具有多种词性,也是歧义问题.像领导,既有动词又有名词。那么如何排除词性的歧义呢,我们来看这样一个技术。
把这篇报道编辑一下,把有四种词性,报道有两种词性,编辑也有两种词性等等。我们知道把这里是介词,报道是名词,编辑是动词,这条蓝颜色的线就是合法路径。
那么我们如果在一句话里找到他正确的词性呢,我们可以基于概率统计的方法和基于规则的方法。
所以说这个概率统计是非常重要的,你们选择一个非常好的专业。
自动词性标注问题研究很早,早在20世纪60年代,国外学者就开始研究英文文本的词类标注问题。
例如1971年美国布朗大学的两位学者建立了TAGGIT系统,利于3300条上下框架规则,自动标注正确率达到77%。1983年又有两位学者建立了CLAWS系统,使用133*133的词类共现矩阵,通过统计模型来消除兼类词歧义,正确率达到了96%。那么分词和自动词性标注用到了许多算法,我们颗里就详细讲解底层的算法细节了,我们主要以实践为主。
那么我们来看一下消除词性兼类词,也就是消除歧义依靠规则是如何做的。主要是依靠上下文来判断兼类词。
比如“这是一张白纸”白出现在名词纸之前,所以他是形容词,“他白跑了一趟”白出现在动词跑之前,所以他是副词,上面是形容词,下面是副词。除此以外还有词性连坐的问题,就是在并联的联合结构中,联合的两个成分的词类应该相同,如果其中一个为非兼类词,另一个为兼类词,就可以把兼类词的词性判定为非兼类词的词性。例如“我读了几篇文章和报告”文章是非兼类词只有一个名词性,报告为兼类词,有名词和动词两种词性,属于词性连坐,处于联合结构中,故可以判定报告为名词。
基于统计的词性标注问题,解决兼类词问题,我在这里就不详细讲述了,大家应该很容易看的明白。
我们总结一下,解决兼类词问题的两种方法,统计方法的缺陷,其同现概率仅只是最大的可能而不是唯一的可能,以同现的概率来判定兼类词,是以舍弃同现概率低的可能性前提的。所以解决兼词类词性问题的最好方法就是将统计方法和规则方法结合,像这个细节,大家有兴趣可以去研究。
在分词问题当中还有一个点就是停用词,停用词在英文当中基本都是介词,起连接文本的作用。
还有中文里的地得,都是一些虚词。那么在一些领域大的词上面,比如在数据库会议上,“数据库”可以作为停用词,主要是研究他们的细节,如果研究热点是数据库就不对了,研究热点应该是数据库里面的某一个细节。停用词,解释一下,就是在分词里面,我们不要把这些词分出来,把他忽略掉,停用掉,遇到这样的词,不要他,把它丢掉,不然会影响我们整个文本分析的效率。我们一般有个停用词表,我们分词的时候把停用词表也分进去。还有就是词根问题,一般是在英文里出现,中文没有这个问题,好几个词根都代表的同一个词,就是词性变化问题,那么关于分词的知识就和大家介绍到这里,介绍的基本上是主要内容,它的细节还是比较多的,大家有兴趣还可以去钻研一下。
二、分词实例
下面我们来看一下分词的实例,我们这门课主要是以python做实验的,我们来看一下英文分词是怎么做的
这段英文是华东大学的介绍,放到一个word分词变量里面,然后英文分词很简单,就用一个字符串函数,words是一个字符串,split是分割,没有给参数,默认空格,因为英文单词默认是空格隔开的。看到这里大家是不是发现英文分词很简单,在这里和大家提一下。当时我上课,早上下午,晚上,晚上下课后,有个同学问我,说“老师我在帮导师做项目,要对英文文献进行分词,您有什么工具可以介绍给我吗?”我答一句,你学一下python,结果这个学生瞪大眼睛看着我,意思说,老师我只是要对英文进行分词,怎么还要学习一种编程语言呢,实际上我并没有匡他,python真的很方便.
这就是分词的结果,如果用到停用词,你可以设一个停用词表,就是这些词不需要分,然后在python里很简单,只要分的词不在停用词表里面,就把这些词保留下来.
接下来我们看一下中文分词,中文分词我们大多用到一个模块,第三方模块,叫jieba。
大家看一下,我们导入jieba,然后这是一段中文的介绍,jieba后面用一个cut,就可以把这个词分好。
那么我们现在python3后面还需要加一个括号,都是函数,需要加括号。