Pytorch项目实战聊天机器人(02.项目的准备阶段)

  • 02.项目的准备阶段
  • 二、2-2 NLP涉及知识
  • 三、2-3 NLTK库
  • 四 ,2-4 语料和词性标注
  • 五 ,2-5 分词
  • 六 , 2-6 TF-IDF
  • 七, 2-7 NLTK安装
  • 八, 2-8 代码小练

来自慕课网

02.项目的准备阶段

—# 一、2-1 NLP基础

第一个呢,就是我们NLP的基础,我们会从NLP的定义,包括它的这个发展方向,我们做一个简单的介绍。第二个呢,就是NRP所涉及的知识,包括一些分词啊,包括我们一些句法分析啊,还有所涉及的一些知识和技术。第三个呢,就是我们LP里面比较重要的一个库,就称之为NLTK库,我们会做一个介绍和这个了解。


第四部分就是我们所说这个分词比较重要的NRP里面比较重要的技术,第五呢是TFDF,就是磁频和幂词频也是。
我们LP里面比较重要的一个技术。下一个地方呢,就是啊,第六个部分呢,我们就会动手操作来安装一下,然后TK这个库。

那后面呢,我们会有构建一个最简单的聊天机器人的一个代码小链,最终呢,我们这一章节呢有一个小结,那下面我们马不停蹄就来看一下我们NRP的基础,


那首先来说呢,什么是VRP,我们可以看到这么一个图,很生动也很形象,呃,左侧呢是一个大脑里面的是很多的齿轮,右侧呢是一个类似于人脑,这个图呢,非常的贴切,而且也非常的明确,实际上我们NLP呢,简单来说就是我们人机的一个交互,就是通过我们的人类和我们的机器进行一个交互。从RP这个Z本身来理解呢,就是processing,也就是我们的所谓的自然语言处理。自然语言处理呢,实际上呢,嗯,是我们AI。

重要的一个分支之一,当然也是我们一个最难的一个领域。

而人们呢,对自然语言处理的研究呢,也是充满了这个魅力和挑战,LP呢,实际上是一种很吸引人的这个人机交互。啊,早期的语言的种类也有很多很多,他们其实更类似于一种积木,把有限的词汇表能绘画在一起,然后工作的很好,由于当时这个理解这个自然语言还非常非常的难,所以呢,也没有得到就是更多的发展。那我们NRP这主要的范畴有哪些呢?啊,这里面我们列举了很多啊,首先我们看这一页,因为下一页还是我们主要范畴,

主要范畴这类从我们文本朗读,文本朗读实际上很好理解,比如给我们一段文字,然后它能发出声音,也就是通过声音来。

朗诵我们之前这个文本啊,语音合成呢也很简单,就是从我们的这个语音合成,又称之为TTS,就是从我们的文本合成我们最终的这个语音,其实文本朗读和我们的语音合成呢,其实是一个类似的情况。呃,第三类就是我们语音识别,语音识别呢,就相当于我们语言合成呢,或者语音合成的一个反方向,实际上就是我们从。语音到文本一个过程,中文自动分词呢,也是刚才讲过,也是从我们的句子啊,分成我们的这个词,词性标注呢,相当于对于我们这个。这个名词也好,动词也好啊,打一个标签。句法分析,相当于把我们的这个词啊,做一些这个主语啊,谓语啊,包括一些词啊,其实它也是一种变相的一个呃词性标注,它这个它是呃句子的一些标注,那自然。

我q na,当然我们聊天机器人呢,也涉及到一些啊,自然语言的生成,那除了刚才讲的这一页的这个主要范畴呢,其实它还有很多。

我们看到第二页NRP这个领域里面呢,文本分类的份额占的非常非常大,呃,文本分类包括问答系统,还有我们刚才提到这个机器翻译,被称之为我们LP里面的三个非常重大的一个领域,呃,信息检索和信息抽取呢,其实它的含义呢,比较将近,就是给我们一段很多的一个内容,上面有很多的一个文章也好,一个篇章也好,我们从中去找出一些比较重要的东西,重要的点,比如说我们做一些阅读理解啊,包括一些这个关键词的一个抽取提取。

啊,包括一些这个啊,对于故事也好,对于这个文章也好的一些概述都是可以做到的啊,另外文字校对啊,括自动摘要啊,文字这个蕴含啊,这些方面呢,其实从文字上的这个描述上,大家已经很清楚,文字校对,那就给我一篇文一相称呢,我们就很好去能理解这些啊相应的这个范畴。当然文字蕴含呢,相对来说就是比较难理解,可能在我看来,文字蕴含主要就是理解我们这个这段话的一个大概的意思,也就是说类似于我们阅读理解啊,自动摘要呢,刚才也说过,类似于我们信息检索啊,信息抽取啊,这些实际上对我们整篇的论文,我们在写的。

一他提出中心括,提出概括,要和我们论文的摘要呢,非常非常的相似,

NRP的发展历程呢,其实我这里面简直简单的罗列了一下,简单来说呢,是从1950年1950年它就开始了,这个历史呢还是比较长的。到1954年呢,其实乔治成自动翻译,当时呢人类呢就已经很厉害了,把超过60句的这个俄文呢翻译成了英文,当时呢这个壮举非常非常的牛,因为当时的状态咱们并没有。一个自动翻译能把真正的一种语言翻译成另外一种语言,当时呢,这个乔治成用计算机把我们的这个60句的俄语,呃,最终翻译成了英文这个状语。当时。把所有人都给震惊了。那来到了196。

零年那1960年的就SHRURU啊,出现这个呢,就像咱们开篇所说的,更像呢,一个累积木,就是我们儿童玩的积木,他把很多模块能拼在一起,然后呢,来进行这个啊,语言理解也好,还有包括一些这个翻译也好,它类似于一种这个拈化的一个啊教学。啊,时间来到了1980年,实际上1980年呢,引入了机器学习,包括一些统计类的,包括之前一些n gram呀,还有类似好多的一些模型,类似于机器学习这个范畴之内,包括SVM等等相关类似于机器学习这个行业中一些技术应用了我们这个NRP当中,啊,我们RP呢,也到了一个相应的发展啊,直到2000年。或者说2005年左右,深度学习的一个发展再一次推动。

我的啊啊,包括现在特别流行的,包括一些等等相关。很很大程度推动了我们NRP的一个发展,当然我们聊天机器人呢,也是在这个一个基础上呢,也就是发展速度比较快,然后呢,也就很多很多的一些公司也好一些研究机构都进行聊天机器人的一系列的研究,从而使得我们聊天机器人作为我们NLP现在目前为止一个。非常非常有火热的一个热门的一个课程,包括一个应用的一个方向。

那说了这么多,那我们NLP有哪些研究的难点呢?啊,我们这个PPT呢,其中呢,啊,列举了其中的这个五点,这个五点呢,其实。

还非常非常的重要,这个五点呢,直接去制约了我们NLP的这个发展,呃,首先我们来看第一点,第一点呢是单词的边界的界定,单词边界的界定呢,其实怎么理解呢?换句话说,其实单词边界的界定就是我们的如何去分词,比如我们一个单词,我们举一个例子。比如中华人民共和国这个词呢,其实它很长,它呢可以看成一个词,当然也可以分为中华人民共和国三个词,这就是我们单词边界的一个界定,第二个呢,就是词义的消奇,词义的消奇呢,因为汉语的这个文化非常的这个说源远流长也好,说博大精深也好,它的词义呢有很多的意思,因为根据不同的上下文呢,一句同样的一句话,可能我们这个意思就有很大的区别。不规范的输入呢,是。

我们NRP一个非常非常严重的一个问题,因为在之前LP发展之中呢,我们在输入我们的网络之前呢,它的输入是不规定不规定的,也是没有什么规律,而且不像我们传统的这个图像输入一张图,然后输出一些一些什么内容,而我们这个NRP的输入呢,啊,有可能你如果拿机器翻译来举例的话,有可能你说的是英语俄文。还有西班牙中文英语等等,你的输入其实是不确定的,而我们像我们的传统的CBA行业也好,一些其他的行业也好,它的输入基本上是比较规范的。第四点呢,其实就是句法的模糊性,句法的模糊性呢,就是说刚才我们也提到了句法的分析。其实就是分析我们句子成分嘛,主语谓语等等相关,那我们作为中文也好,还有我们的英文,每个国家。

所以它有一些自己的一些规则,所以我们在分析中,它本身就存在一些包括一些模糊性,所谓的模糊性就是有一些不确定,这样分也对,它呢本身呢就是有一些矛盾的点,所以我们对于我们的NRP的研究呢,它是存在一些难点的,最终呢就是语言的行为与计划,而语言行为与计划呢,其实刚才讲到了。语言行为与计划更和我们的文化有很大差异,比如我的中文的这个语言的方式和我们的英文的表达,那完全是两个概念,但我们NLP不仅要解决我们英文,还要解释中文,当然还有很多,比如俄文啊,俄文有俄文的这个行为的方法,比如西班牙,西班牙有西班牙的这个方法,荷兰语有荷兰的方法等,不同的国家的语言都有自己的一个爱好偏好,所以就造成了我们一些啊,包括以上这五种呢,其实它都会存在。

一个相应的问题,这就是我们NRP的一个研究里面非常难的一点。今天这小节呢,我们说了这么多,主要呢,我们就来稍微来回顾一下,主要我们两方面内容,一个是呢,针对我们LP的这个定义也好,包括它的含义,我们有一个初步认识,它呢其实是我们AI的一个重要分支,另外它是也是比较难的,另外呢,它所涉及的领域呢,很多很广,主要呢和是和人打交道,人机的这个交互,目前主要的这个应用范畴呢,文本分类啊,聊天机器人啊,这个问答系统啊,机器翻译呢,是我们RP呢,目前为止应用啊比较多,或者我们研究啊人员比较多的这些几个几个行业。当然呢,它除了这个这些行业,它还有一些研究的难点,刚才也讲到了,包括单词的边境啊,词意消息啊,不规范的输入啊,句法模糊性啊,语言。

与计划这等等相关,因为我们RP呢,它不仅仅处理。一种中文,它还处于世界上各种各类的这个语言,所以NLP呢,总体来说它的难点还是非常多的,好,那我们这些章节呢,今天就讲到这里。

二、2-2 NLP涉及知识


大家好,今天这一小节呢,我们来学习NLP涉及的知识,NLP涉及的知识呢,相当的广泛,比如像知识图谱,像一些这个呃,翻译的机制啊,包括我们一些n Lu啊啊,还有一些这个NLG呀等等相关非常非常的多。大家其实不用去纠结这些概念,包括这些内容,我们这节课呢,主要呢讲两个方面,首先呢,就是在这个文本处理方面,我们做一些介绍,另外就是文本本身的一些模型,我们做一些介绍。呃,我们上一节课呢,把NLP的基础的内容呢,做了一个简单的介绍,我相信大家呢,对NLP有了一个自己的一个认识和理解,那么下面这节课呢,我们就来介绍一下NRP所涉及的知识,刚才说了NRP呢。

其实它处理呢,主要是以文本和语音为主,呃,文本呢,实际上我们在文本发现它最小单元基本上就是词,词和词之间呢,就会组成我们的句子,句子和句子之间呢,就组成我们的段落。段落和段落之间呢,就读的篇章这个文本处理方式呢,我们就来介绍一下,首先呢,我们来看一下这个词处理。那词处理呢,其实说白了它比较的简单,我们有以下这个四种情况。第一个就是分词啊,分词呢很好理解,就是把我们的句子呢,切成一个一个一个的词啊,它称为称之为这个分词啊。第二个呢是词性标注,词性标注呢也相对来说比较好理解,呃词性标注就相当于我们把分好的词呢,这就是切好的词一个一个给它进行分类,呃,分成哪几类呢?啊,我们分成这个呃动词。

形容词啊,名词就是说对它的词类进行一个啊分类,就是我们的词性的标注啊,第三个呢,就是我们的实体的识别,呃,实体的识别呢,主要简单来说,其实就是来识别什么呢?就是来识别我们这个人名,地名,组织机构,其实就是说白了就是一些名词的一些识别。呃,第四个呢,是我们的这个词义消息,呃,我们大家都知道这个汉语博大精深一个词呢,可能有很多的意思。所以我们中文的这个历史,包括它这个底蕴呢,还是非常非常深的啊,当然了大家又说了,英语有一个词,它也可能有多义,当然也不局限于英语,可能俄语啊,啊,西班牙语啊,它一个词都有很多的这个意思,那我们怎么去判断这个词的意思呢?没错,那就是联系我们的上下文。

联系上下文的内容呢,就能来啊,确定这个词最终的意思,这就是我们词义消息这部分啊,说完了我们词处理,

那我们马不停蹄啊,就来看一下我们的语句处理啊,我们都知道词和词之间就组成了我们的语句,语句呢这里面也有四个相应内容,第一个呢,就是句法的分析,那什么是句法分析,我们来举个例子,我去北京天安门。这个句子呢,啊,不长也不短。然后我们句法分析的意思呢,就是把我们这里面的主语谓语分清楚,我就是主语谓语就是后面的这个,那内容它呢,就是主谓分开,就是我们的句法分析,第二个就是语义的分析啊,语义的分析那就非常的明了,就是说针对一段话我们做一个理解,就像做我们做阅读理解一样,提出几个问题,然后呢,带着这些问题我们去做阅读理解。

然后回答这个问题,实际上就对我们的句子的一些理解,它就叫语义分析,那第三个就很好理解,叫机器翻译,之前咱们也有说过,其实呢,就是从一种语言翻译到另一种语言。比如说我们从我们的中文翻译到英文,这个过程就是机器翻译。从中文翻译回英文,当然也是一种机器翻译,当然我们不同之间语言的翻译都是可以,这就是我们的机器翻译。最后一个就是我们语音合成也是一个比较重要的一个内容,其实从字面来看呢,就是从我们的这个文本最终生成我们的这个语音MP3也好,或者我们的wav格式也好。呃,最常见的应用就是在我们导航地图当中,我们可以听到呢,比如像林志玲的语音导航,还可以听到郭德纲的导航,当然可以听到很多很多明星的那个导航。

语音这里面的主要的应用就是我们语音合成的技术,语句和语句之间一组合呢,就成为了我们的篇章,

篇章的这里面呢,主要就是一个自动文摘,那什么是自动文摘呢?我们这里面的文摘呢,其实指的就是摘要。自动文摘这个东西呢,实际上就是记人呢,去看一篇文章,把这篇文章都读完了,读完了呢,这篇文章的这个大体的思路,大体的这个意思概括出来,写一个摘要啊,这就要自动的文摘,实际上就像我们论文嘛,我们写一篇论文,在最开始之前,肯定要总结概括一下,写一个摘要,这个摘要呢,是相当对我们整篇文章的一个概述。其实自动文摘呢,就是机器人自动把我的门摘提取出一个大抬缸来,要写成这个摘要,这个一个叫自动文摘,那说完了这三种的处理方式。

我们再来讲讲这个文本的这个语言模型有哪几种。首先呢,就是我们这个统计语言模型,其实呢,包括我们LLP这个行业中的模型都是基于统计语言的,首先呢,我们就看一个叫gram的一个统计语言。N这个统一语言的模型。gram呢,其实呢,说好理解它也好理解,说不好理解也不好理解,其实它定义呢,其实就是计算呢,具有最大概率的句子。这是比较白的一个介绍方法。嗯,我们举个例子,其实呢,它的这个模型呢,就是基于一种假设。比如说第N个词的这个出现呢,只与前面N减一个词相关,而且其他任何词都不相关,那整句话整句的概率呢,就是各个词出现概率的一个。

这些概率呢,可以通过直接从这个呃语调当中,呃统计N个词同时出现的次数得到了,其实就是说什么呢,统计我们这段话里面出现一个词的一个概率,其实就是这么一个很也很好理解,那随着时间的推移呢,我们统计学呢,也得到一些发展。

这个发展以后呢,我们的语言模型呢,也进行往前推进了一步,那随之而来的呢,有一个大神,他叫马尔科夫,呃,马尔科夫呢是一个彼得堡的一个,呃,数学和概率学家。所以呢,他提出一个模型呢,就是以他的名字命名的叫马尔科夫模型,它本身呢,其实就是一种统计模型,它的应用呢,就相对来说比较广泛,比如我们语音识别啊,词性自动标注,音字转换概率文法在我们NRP这个。

应用领域到一个广泛的应用,所以它呢,相对来说比我们的成功。到目前为止呢,其实被认为实现快速精确的语音识别系统中,最成功的这个语言模型就是我们这个马尔科夫模型,当然后续马尔科夫模型呢,又得到了一系列的变化,那什么是马尔科夫模型呢?马尔科夫模型呢,其实简单来说,他提出了两个概念,一个呢就是我们时间的概念,一个就是我们状态。在时间状态,也就是说我们简单理解就是说马尔科夫呢,它这里面有一个专用的名词叫马尔科夫列,马尔科夫列呢,比如说我们呃,一个随机变量,X1 x2 X31个数列,那这些变量的范围。

他们所有可能取值的一个集合,我们称之为一个状态空间。XN的值就是在时间N的一个状态,如果XN加一对于过去状态的条件概率分布仅仅是一个XN的一个函数,它就有一个数学表达。这里面。其实这期说起来呢,是比较绕口呢,我们简单的来做一个介绍。其实这个东西怎么理解呢?实际上就是给定当前的知识和信息的情况下,过去对于预测这个将来其实是没有什么太多的关系的。其实马尔科夫模型呢,所阐述的就是这个意思。

随着时间的发展,马尔科夫模型呢,又得到了一个发展,也就是我们马尔科夫模型就诞生了。马尔夫。

模型呢,其实是在马尔科夫模型基础上呢,多了一个东西,这个什么东西呢?就是含有隐含未知参数的一个马尔科夫,这个难点就在于什么呢?可观察的参数中确定了该过程的隐含参数,和我们马尔科夫相比呢,就多了一个隐含的一个参数。那这些参数来进一步的分析,比如说我们应用就是模式的识别。啊,这说起来呢,还是比较的这个绕嘴,但是我们因马尔科夫这个历史还是比较长的,他呢创立于20世纪70年代,在80年代得到了一个非常广的传播和发展,成为了我们信号处理一个重要的方向。现在呢,已经成功了啊,用于我们这个语音识别,行为识别,包括我们文字识别等等相关以马尔科夫呢,实际上是马尔科夫链的一种,他的状态呢。

不能直接观察到,这个就和我们马尔科夫这个有一个本质的一个区别,它的基本算法呢,其实有三类,第一个就是评估问题,就是我们所称为的前项算法,第二个就是解码问题,叫我for算法,第三个就是学习问题,这里面就是向前向后的这个算法,但是它的模型表达呢,主要里面呢,提出了啊五个元素,五个什么五个元素呢,包括两个状态集合和三个概率的矩阵,这里面有两个概念吧,一个是隐藏状态S。这是这些状态之间呢,满足我们马尔科夫的性质,是我们马尔科夫模型实际所隐含的状态。我们有一些隐藏的状态,比如S1啊,S2S3S呢,就是像SP,当然还有一些可观测的一些状态。就通过直接观测一个得到啊,比如O1O2O3这些都是一些定义,大家有简。

单单认识就好了,其实大家不用去纠结这些模型啊,推导会很复杂,包括我们在以后的一些课程中,我们也会做一些简单的介绍,这些内容呢,就相当于我们NLP所涉及的一个知识的一个科普。大家不要害怕,在后续的课程当中,我们也会去介绍这些内容。好,那我们这一小节呢,其实主要介绍的内容就是我们NRP所涉及的知识啊,之前也说过LLP涉及的知识非常非常广,那我们只是挑其中的两个点来说,一个是我这个处理方式,包括我们词处理啊,句子处理,包括篇章处理。另外我文本的这些模型啊,我们说了语言模型里面有n gram语言模型,包括我们这个马尔科夫模型,到现在的一个马尔科夫模型,但是后续它还有很多别的模型,这个是我们对NLP所设计的知识。

三、2-3 NLTK库


一个工具包。目前LTK呢,它的这个版本已经升级到了这个3.4.5,包括它官方呢,有一些这个文档的介绍,包括一些使用说明,使用方法都是有的。



nga库呢,首先呢,它是诞生于20世纪80年代,也就是随着我们。NLP发展到我们的机器学习方向呢,它产生了我们这个NLTK库。下面我们打开我们这个网页浏览器,然后呢,我们去搜一下我们LPK。搜索完以后呢,第一个网址就是我们RTK,就是按我们刚才在课件里的那个网址LTK的org。我放大一下。NTK呢,这里面呢,我们有XD,包括如何安装TK。

后面的课呢,我们还会进行说,我们就不做详细的这个说明。这里面呢,除了刚才说的一些这个简单的介绍呢,它还有一些实例,包括这个top and t做一个词性的标注,包括一些。实体的命名,一些这个参数等等相关它都是可以做到的。包括后面我们还有一些API啊等等相关的一些都是应用都是可以的。

那我们NLTK能干什么呢?刚才这个英文的网站中呢,它其实已经做了一些介绍,下面呢,我们再来做一些详细的介绍。NLTK呢,刚才咱们已经说过,实际上呢,它是呢。还上著名的一个自然语言处理库,它呢实际上是可以自带语料库的,还有词性。

分类库,刚才我们看到它可以做这个词性分类,当然它还自带分类、分词等等功能。我们刚才看到呢,它有一个社区的支持,也就是我们在。org这个网站上可以得到一些API的支持啊,包括一些相应的一些支持,当然它还有N多简单版的一个rapper,比如经典版的一些rapper,相当于把NLTK呢做一个经典的一个处理。



NTK有什么具体的功能呢?也就是我们刚才说的LTK的一个model到底是什么呢?我们刚才已经讲到了。包括这个词语料。啊,就语包括词性的分析,包括一些相应的一个打标签,分类聚类等等相关我就不逐一来介绍,其实它的功能呢,还是很多的。我们当然也可以,刚才在我们这个网页上。

来看到他的这个我们做什么的,就是model。打开包括这里面呢,有很多的它的这个API。啊,大家可以看到有非常多在放大,看不太清楚,还有很多的这个epi class y啊。or cluster?那个余料啊。等等相关有很多的内容。我们这个PPT中呢,只是举例其中的几种啊,如果你想不到更多,包括所有完整的,那么刚才就可以去他官网去查看。

嗯,官方示例呢,这里面举了一个例子,就是我们RTK3分词,然后我们做一个分词,它呢就把我们这个句子主换成了这个分词,当然我们还可以对这个词呢做一个做一个标注。这个呢,就。

就是我们NLTK呢,一个比较常规和简单的一个应用。

刚才讲了我们NRTK呢,其实它是自带这个语料库的,我们可以看到这边它带了好几种的语料库。这里呢,我们就不做过多的解释,实际上就是它会自带一些语料库,方便我们来进行一些处理。

四 ,2-4 语料和词性标注


大家好,今天这一小节呢,我们主要来学习语料和这个词性标注,上一小节呢,我们把NLPK,我们NLP里面非常非常重要的这个库,我们做了一个简单的介绍,包括NLTK能做什么,大概怎么应用,我们也做了一个简单介绍,大家也不用去纠结,因为我们后面会带着大家去安装,包括一些简单的使用。回到我们本节课的内容,本节课的内容呢,主要我们来介绍语料和我们的这个磁性标注,那什么是语料呢?从字面上这个理解呢,其实语料就是语言的材料,这个东西呢,如果这么解释呢,相信大家都不陌生,但是语料包括什么呢?大家其实都知道,我们人工智能这个行业呢,都和数据打交道,其实呢就是通过大数据来分析出我们这个结果,而我们NLP行业。

也不例外,实际这里的语语料呢,不仅指我们的这个文本的这个材料,当然它也指我们的语音,这里面它泛指的语料呢,就是我们的这个数据集,就是我们的文本数据也好,或者我们语音数据也好,它都可以称为之为语量。

呃,解释完了什么是语量,那我们再来看一下词性标注,那什么是词性标注呢?我们先来看它的字面意思,词性标注呢,就是给每个词或者词语啊,这个词类的标签啊,如形容词,动词,名词,其实从字面上的意思来讲呢,也不难理解,用大白话来说呢,词性标注呢,其实呢,就是给我们这词呢分类,就是分哪种是形容词,哪种是动词,哪种是名词,其实就是对我们的这个词呢做一个分类,而在我们监督学习里面呢,我们的数据呢,是有有我们的这个标签的,实际上我们分成这个类呢。

它就是做一个标签,标成是形容词,标成是动词,标成是名词,我们知道这些达标的一个动作其实就可以了,如果说白了,其实它就是一个分类嘛,对不对。


说完了这个词性标注呢,我们就不得不说呢,我们中文的这个词性标编注呢,和我们英文呢是有区别的,而且我们中文呢啊非常非常的多,而且我们都知道中文呢确实博大精深,它这里面内容呢,确实很难很难,这里面呢,其实我只是写了一些,就是比较基本的这个词性编码,作为中文的词性编码有两大派,主要说呢,一个是北大的派系,一个是我们中科院的一个派系,其实它的内容基本上有很相似,我们带着大家来看一下它这个表格,我们调出我们圆读笔,我们来看一下,首先呢,它是分三列,第一个呢,就是磁性编码,第二。

就是词性的名称,第三就是注解,注解呢就是相对于我的解释,我们先来看一下词性编码呢,一般来说它这个规则呢,主要是根据我们这个英语单词的这个头一个字母,然后进行了这个缩写,其实就是这个意思,我们词性编码AG这里面呢,它的词性名称呢是形语速,注解的就是形容词的词性的语速,形容词的代码为a,就是aive,对吧,语速代码为G,所以前面加1AAG,就形成了我们这个形语速,刚才说了这个形容词aive,所以第二个呢,就是形容词就写了一个a,所写的a就是形容词,那我们副词呢,就是ad这个直接做状语的一个形容词,我们就是说称之为副形词,形容词和我们的代码a和我的副词代码D并在了一起,直接就是一个缩写嘛,就是ad。下面就是名行词。

就是我们具有名词功能的一个形容词,它就称之为明星词,它这个词性名称呢,也是一个缩写,名词形容词,具有名词功能的形容词,所以名形词我们呢,形容词代表a,和我们名词N放在一起就是an,所以它也是缩写。呃,区别词呢,就是取汉字这个别的一个声母就是B,区别词连词呢,就是conion的第一个字母C啊,副语速DG,副词性的语速,副代词为D语自代一个D就是DG。啊D呢,就是副词,就是第二个单词,因为第一个呢,已宾形容词使用了,通过这个表格呢,我们可以发现,实际上我们词性编码都是和我们这个形容词也好,包括副词也好,都是我们这个词性标注有关的,这它只取用我们英文也好,包括中文的这个拼音也好,它只是一个缩写。

所以大家呢,后面如果感兴趣可以去网上进行这个搜寻,当然我们在以后如果应用的话,也会带领着大家去做相应的介绍,这方面呢,大家不用担心,

说完了我们这个常见的中文的这个词编码,我们就来说一下我们词性这个标注的分类的方法。其实这个分类的方法呢,非常非常的多,最早呢,其实是基于这个规则的一个词性标注,什么叫基于规则的词性标注呢?就是在我们这个NRP行业有非常多的专家,他们制定的一些规则,比如他们有一个什么法则,他定义了一条规矩,然后就按照这个规矩来进行标注,这是最早的这个词性标注,随着时间的推移,统计学发展的很快。我们也知道文本这个语言模型呢,有很多的这个统计模型,包括我们马尔科。

模型就是him应用也很广泛,所以后来呢,就是基于马尔科夫模型呢,也做了一些的词性的标注,然后随着时间的发展呢,是一个基于转移的一个词性标注,说什么是基于转移的词性标注呢?准确来说就是说从一个词性转移到啊另一个词性,其实呢,就是一个它词性本身的一个变化,包括从名词到动词啊,名词到这个形容词啊,从这个方面来出发,来做一些这个啊词性标注。其实分类随着我们时间发展呢,基于这个转移,这种又基于我们尔夫它的状态空间,包括它这个条件概率也好,它呢结合在一起,又做了一个磁性的标注,那后来又发展成什么样啊,后来我们又有一些啊,包括这个条件,呃,随机场啊,CRF,包括我们这个深度。

学习一些内容也是都可以做词性标注,当然还有机器学习一些内容,当然它都是可以做这个,呃,词性标注随着我们技术的发展呢,其实词性标注的分类方法呢,越来越多,我们这里给大家列举呢,就是啊之前的一些啊词性标注。

说完了词性标注的分类方法啊,那大家可能更关心的是我们如何去进行这个词性标注,也就是我们来到了我们词性标注的这个方法,也就是用哪些工具可以进行词性标注,其实呢,可以做词性标注的方法有非常非常的多,我们这里呢,举两个呃,比较有代表性的例子,一个是我们LTK,因为我们之前的课程中,我们对LTK呢做了简单的介绍,它呢是LP里面呢非常一个重要的一个库,然后第二个呢是我们解吧,解吧呢是我们一个中文分词的库,中文分词的。

其实呢,它应用呢也非常广泛,而且呢,在我们中文这个分词行业呢,它是numberone,它是一个这个山峰顶峰的一个库,也就是我们如果要用我们的这个分词的技术,肯定是要用我们的这个解挖来进行这个分词的,当然我们这里面呢,还可以进行我们的这个词性标注,

那下面我们简举一个简单的例子来说明,第一个例子呢,就是基于我们NRTKNRTK大家都知道,这里面LTK呢,实际上呢,就是我们最重要的这个LP里面的一个重要的库,首先呢,它的操作呢,我们要使用的话就进行安装,安装以后呢。我们在后续的课程呢,会讲解这个安装,还有一些使用,这里呢,我们只做一个简单的一个介绍。啊,在使用的过程中呢,我们首先呢,就是和我们别的库一样,首先要import进来。

然后呢,找到一句话NLTK的word,找到这一个语句,因为我们大家都知道NLTK呢,本身它是带一些语料的,我们找到这个这个语料,而这一句话因为是一个T,然后下面呢,就对我们这句话来进行这个词性标注,也就是NLTk.POS tag对T,对我们上面这这一句话进行一个词性标注,它标注完后的结果呢,大家可以看到and标注为CC now标注成rb for标注成in something标注a completely rb变成啊,GG。这个呢就是一个简单的NLTK的一个例子,首先呢,这个过程呢,就是首先我们要input这个库,然后呢,从里面找到一句话调用这个API,就是at.post t,然后对我们之前那个句子呢,进行这个词性标注,其实这个就是一个简单的NLTK的一个词。


说完了我们NLTK,我们再来看一下我们的这个解吧,解吧呢,其实我们主要之前来说呢,它呢主要就是里面也有一些性,它里面的性标就是这个po e8点po POS suppose,主要用来。工作呢,就是用来进行词性标注,我们来看一下下面这个例子,这个例子呢,其实也是看起来也比较简单,我们还是要说我们这个圆珠笔,首先呢,还是继续导入这个库,和我们用其他的方法一样,我们肯定要导入解吧这个库,然后呢,words呢,我们定义一个words呢,我们来进行切分,就是爱北京天安门。然后我们做一个循环,for,就这个word嘛,对吧,然后我们flag in做一个循环,也就是把我们这些。

我标注成什么呢?RI标成Z,然后北京标成NS,天安门也是名词也是NS,这个简单了,实际它和NLTK的过程是一样的,只不过呢,这里边它不像NLTK本身自己带有这个语料,它呢要需要咱们给他一个语料,就这么些区别,它呢对于中文来说,你就用解巴,如果用英文,你就NLTK,其实就这么些区别。好的,那我们今天从这两个方面,一个呢是什么是语料,语料的一些这个定义包括什么,语料包括内容,咱们讲过,无论是文本啊,还是语音啊,其实都属于语调这个范围,那第二个呢,咱们就讲到了词性标注,那词性标注呢,实际上呢,它就是一个分类问题,就分成形容词啊,动词啊,包括一些其他的副词啊等等相关我们也介绍了中文的一个编码的一个方。

包括有北大,有中科院的,对吧,然后呢,我们又讲到了词性标注的这个分类的方法,包括我们之前的这个规则类的,还有我们马尔科夫基于这个统计学的,后来我们又有一些机器学习呀,深度学习呀,啊相关的这个词性标注的方法,那实际上我们词性标注的工具呢,我们讲到两个,一个英文LTK,中文就是我们的结吧,那今天我们这小节呢,就上到这里,谢谢大家。

五 ,2-5 分词


大家好,今天这一小节呢,我们来学习分词,在上一小节呢,我们学习了语料和我们这个词性标注,我们对于语料和词性流入,我相信大家呢都有一定的意认识,那这一小节呢,我们就来学习分词,分词对于我们NLP这个行业中是一个非常非常重要的一个内容,首先我们要做我们分词的内容呢,就是相当于我把它句子要切成我们这个词,就来看一下我们分词的一个定义,那什么是分词呢?从字面意思刚才已经说了,就是把句子呢变成词,把句子变成词呢,就是做一个切分的一个动作,我们举个例子,还是举我们之前最早举的例子,我爱北京天安门,这个呢到分词呢,就会有几种方式,比如我是一个爱,是一个北京天安门,对吧,当然也有可能分成我爱北京天安门是一个词,它有很多这个。

分词的方式,当然了,我们这个分词的方法,虽然方式呢,英文和中文还是有区别的,英文这个方法呢,和我们中文还是有很多的区别,之前在上一节课我们讲过,中文呢,比如你要用一个分词的话,相当于解八分词,是我们这个业内的一个标杆,所有我们处理中文的这个分词内容呢,结巴分词那是必不可或缺的。
说了这么多,那么分词有什么难点呢?刚才我们也介绍了,分词呢,有可能有很多很多的方式,首先来说呢,就是分词标准,分词标准那有可能是你这个词有可能是从左到右,有可能从右到左,如何两边进行分词,对吧?还有的就是有尽量长的,有尽量短的,所以这几分成的标准不一样呢,我最终的结果也不一样。第二个就是先分歧义,先分歧义什么意思呢?大家都知道,中文呢,其实非常的这个深奥。

也非常的博大精深,老外去学中文的话啊,非常的难,为什么呢?这一句话可能断句不一样,它的意思就完全不一样了,所以对于我们切分的歧义来说呢,很困难,因为你一句话你没有上下文,你这个切分呢,当然它的标准也不一样,所以我们有可能切的长一点,有的短一些,长一些和短一些呢,就对我们这个整个句子话就有一些区别,我们在后面的这个讲解中,我们会举一些实例来说明。第三呢就是新词,新词呢也很好理解,对,就是现在目前呃,网络流行语,包括一些这个时代所赋予的一些词,我们之前的那词里没有他的这个就非常难,


下面呢,我们就来逐一记号这个几个点。一个就是分资标准,刚才说了就是标准不一样,比如我这个分资标准有可能很长,有可能很短,我们这里举一个例子,就是花草这个例子,花草。

你如果做分词,你可能花草就如果你是以长作为标准,就我这词尽量长也好,那我就分成花草就一个词就OK了,如果说我这个要求,我这花草呢,分的很细,那花是一类,草是一类,那OK,那它分的就是两类,花是一个草是一个词,两个词对吧,这是就个是根据我们分词标准不一样,它最终最造成的这个分词的结果也是不一样的,这个呢,就是我们简单的这个分词标准所造成的这个分词结果不一样,

第二个大家讲的就是切分歧义,分成分词呢,会造成很多的这个语义上都不一样。也就刚才咱们说过,因为你的断句不一样啊,你这个整体的句子呢,可能发生了一个翻天覆地的一个变化,这个呢,也是我们一个中文的一个乐趣,有的很多很多老外呢,就是学不好中文,为什么?因为我们中文这个断句稍微有点区别,这个意思就完全都变了,我们下面就举几个例子。

呃,千分歧义呢,首先呢,它是由几个原因造成的,那第一个原因就是分子信息度不同造成的,我们这里面看到的例子呢,就是比较简单,就是中华人民共和国,中华人民共和国呢,它呢,首先如果说你的细腻度很粗啊,我不追求都分的非常细,那我们中华人民共和国就是一个名词,对不对,就是一个词,那我OK,那我就是一个词,这如果我追求的细腻度,也是我要求的细致,我就非常追求这个这个细化,我不想让它变成一个词,我可能就变成很多的部分,这里面我们分的就是中华人民共和国,把它拆分成三部分。它三部分就相当于比我们第一个分成一部分呢,它要更细致,所以我们称之为啊分词细腻度不同造成的这个先生歧义,

第二点呢,其实是最重要的,就是真正存在歧义的句子,比如。

左边那句话。下雨天留客天天留人不留,貌似很通是吧,咱们再换一种读法,下雨天留客天天留人不留,好像也对,对吧?这个呢,就是本身这个句话呢,它就存在一些问题,就说白了就是断句不同,它本身就不同,这就是我们切分奇迹中最难搞定的一种,因为没有上下文,如果有上下文可能还好办一些,所以给出右边的两种切分方法,当然也不非有这两种切分法,刚才咱们这种切分法也是可以的,我们来看右侧这个切分方法,下雨天游客天天留人不留,它表达意思是啥?人不留,那下边呢,下雨天留客天先留人不留,对吧?它表达意思呢,就是人叫留,这个就是因为我们切分最终造成我们的句子,它的意思是完全不一样的。

也是正是这个原因,也是造成了NRP在我们中文这个领域中发展非常慢,而且这个比较困难,就因为中文,中文这个东西呢,非常的深奥,当然也是我们LP非常有乐趣的一点。

第三点呢,就是一个交集型的这个歧义,这个东西也很好理解,比如我们还是举个例子,它将来农商银行我们可以分成什么呢?它将来农商银行那还可以分什么,它将来农商银行这个呢,将和来呢就是一个交集,它当然间可以分成两个词,也可以分成一个词,但这个东西分成一个词和两个词的意思就完全不一样了,对吧?这个就是我们交际性的一个奇义,

除了千分奇义呢,我们第三种刚才也说了,就是新词,新词呢有很多比仙女啊,给力啊,V58,禽流感,易花呗,金融支付啊,这些呢,就是网络流行,包括一。

目前为止比较流行啊,网络传播的一些一些新词,这些词非常难分,所以对于我们这个分词工具,它也要需要自己的迭代,包括它的更新也好,要把我们这些新词要囊括到其中,才能进行我的分词效果最终能分开,对吧?如果我们没有这个更新迭代,他对这个新词没有理解,那我们这个分词的效果就很很差了。

呃,说了这么多,那分词的算法有哪些呢?在之前呢,是有一些基于词典的这个分词算法,这个基于词典的分词算法很好理解,就是我们词典中有些哪些词,它能构成一个词,我们就来分词,对吧?就比如我们新华字典里面有一个词,比如中华,OK,那你就基于中华来分,对吧,人民你就基基于人民来分就没问题。第二个呢,就是我们统计学发展以后,以后就是基于统计就是。

一些概率,哪些词和哪些词放在一起,有一些概率,概率比较大的,我们就做一些这个分词,它就是基于这种概率的一个分词算法。

再细致说基于词典的分词算法呢,有这个以下几个四类,一个是正向最大匹配,第二个呢,就是逆向最大匹配,这两个相对正向最大匹配什么意思?就是从左往右这组成一个词儿最大,这叫正向最大匹配,逆向最大匹配呢?也就是从最后往前推,这个词尽量能匹配到最大,比如中华人民。这个四我就能最大对吧,中华人民共和国正向最大就是中华人民共和国对吧?逆向呢,可能就是从后往前推,它是两个逆向的,当然还有双向的,从左往右和从右往左两个双向,当然还有全切分路径,什么叫全切分路径?就是对我这句话分别进行切,一直切,切很多的部分,然后再进。

进行选择,这就是基于我们词典的,当然这些词还是基于我们新华词典也好,包括我们的辞海也好,就我说的是中文的啊,说的是中文的,英文的相对来说简单一些,当然我们刚才说了基于这种词典呢,

就后来又说到我们基于统计的,统计呢,我们之前说过包括n gram啊,HMM,我们么阿尔科夫,包括CRF条件随机上这些都是基于概率统计,统计出哪两个词啊,放一块儿,它的这概率比较高,其实它的意思就是在这个随着实间发展的深度学习,通过我们一个模型,就我们通过我们的CN啊,LYPM啊,包括等等相关一些DN啊,一些网络,因为网络来统计出我们这个分词也是可以的。






上节课内容呢,我们讲到分词里面呢,我们不能不说我们的这个结巴分词,结巴分词作为一个中文非常非常。

的一个这个分词,如果你要做中文方面的这个分词,那解八分词你肯定要用,肯定肯定要用,你不用做什么怀疑,解八分你必须要用,如果不用,那基本上你的任务是没法完成的,它的它首先呢是一个开源的,它效果非常的不错,下面这个就是它的一个网址,我们呢可以带大家去简单的看一下。我们打开我们的浏览器。放大一下这个呢,就是解巴分词这个giit源码,也就是它的源码,如果我们使用呢,就是说进行来安装啊,后续的课呢,我们会用到它的时候们我们会带着大家去安装,所以大家不用特别着急解吧,中文分词呢,它有一个宗旨,也就。

口号就做最好的Python中文分词组件,确实它也做到了这个这个地步,也就是我们现在目前为止Python里面中文分子组件最好的一个工具,它有四个特点,最后这一般有人不会说四个特点呢,主要呢,第一个就是真实三种分词模式,一个是精确的模式,就是说把我的句子呢,最精确的能切开,视为我们的文本分析,第二个就是全模式。所有可以成词的词语都扫描出来,速度快。但是不能解决那种歧异,这个很正常,因为就是速度快嘛,然后第三个呢,就是搜索引擎在精确模式基础上,对长词再次切分,提高一些召回率,适合用于就是搜索引擎的一些分词,这个呢咱们在后续的例子中我们会进行讲解,然后第二个呢,就是支持反解分,分词我们都知道像什么香港啊,台湾啊,它还用在这个中文繁体,所以它这个还比较智能,支持中文。

第三个就是知识自定义词典,这点也很重要,知识自定义词典呢,我们大家可以享到有一些新词,新词呢就是可以通过这个来进行解决,第四个就是MIT的授权的这个协议,这个呢就是在他这个认证,包括一些其他的东西来从这个认证来看呢。当然这也有一些链接啊,目前一些百度的啊,都做的还是比较不错的,然后安装说明呢,就是后面有一些全自动安装啊,半自动安装啊等等相关后面也介绍绍一些这个分词的一些算法,它大概的原理是啥啊,这里面的主要的功能我们看一下就是。几个主重要的这个API几八点,这里面呢,我们是非常常用的这块呢,我们多看一下,一会我们会讲一个实例,这里面呢它呢主要呢是介绍三个输入参数,首先是需要分词这个字符串,对吧,然后一个开头这个参数用来控制是否为全模式啊。

HM的参数用来控制是否使用这个HM模型,


我们再来回到我们的PPT啊,我们这个结巴分子应用呢,我们举这么一个例子,解巴分子怎么用呢?和我们别的库一样,首先呢,我们要导入啊,对吧,port啊,解吧,然后我们给他一句话,我们需要分什么内容,这里面呢,就是解八点cut,刚才讲过了,解八点cut就是实际上是我们这个API分什么话呢?分进去,我来到北京清华大学开到等于数,这里面呢,就是说你是否使用全模式,我们这里等于true就使用了全模式,如果等于false就使用了这个。精选模式。第二个呢,就是我们还是这句话,我们只使用了这个fo,也就是精确模式,下面呢,还有除了我们这个呢,我们在做了一个其他的,他来到了网易行业大厦,默认我们也使用这个精确模式,最后呢,我们尝试。

这括号里面给他已经写了这个注解了,行言在这个词典中其实没有,但是通过这个我特这算法其实也识别出来了,其实它也是一个新词,所以解吧分词对于新词呢还是有一定作用的,最后一个呢,就是咱们尝试这个搜索引擎,刚才说讲过就是搜索引擎这个API,咱们用搜索引擎模式,搜索引擎模式呢很有意思,就是小明硕士毕业于中国科学学院科学院,中国科学院计算计算所,后在日本京都大学日本京都。大学什么意思呢?它是能把这句话里所有能成词的词呢,全都给统计出来了,所以它称之为搜索引擎模式,这个搜索引擎模式呢,就可以做一些比对呀,包括一些搜索呀,能出现的词呢,都给它统计罗列出来,分出来,有助于我们做搜索这种相应的这个行业应用,所以它称之为这个搜索引擎的模式。

  • 好的,那我们来回。

注意一下这一章节我们学习的内容,主要这一章节我们学习内容就是分词,从它的定义,分词呢,其实很好理解,就是把我们句子切成一个一个的词,然后它使用的方法有很多,有基于我们之前的这个词典方式,也有基于我们这个统计学习的方式。基于我们这个统计学习的方式呢,最开始我们可能就是我们的以马尔科夫模型,后来我们的CRF调进随机场,然后又到我们的深度学习,其中分析中最重要,最最重要的,我们在中文这个领域中,中文分词最重要就是我们这个解分子,我们带着大家看了分子的网,然后我们也了解到解巴点的这个非常重要的API是如何使用的,然后呢,我们举了一个例子,看了我们最终这个啊,在不同模式下,我们最终分词这个效果,相信大家呢,对,由于我们分词和我们结巴分词。

已经有了一个相对来说比较清晰的一个理解和认识,那么好,那下一段内容呢,我们就将讲我们一个更加重要的一个内容,就是我们PIDF,也就是我们新频日视频,好,谢谢大家。

六 , 2-6 TF-IDF


大家好,今天这节课我们来学习TF杠IDF,在上一小章节我们学习了分词这个重要技术,那么这一小节我们就来学习TF杠IDF。那什么是我们的TF跟IDF呢?我们来看这个图,实际上我们TF跟idi是一个缩写,它的全称呢,是term frequency document frequency。实际上呢,它是用信息检索以及数据挖掘的常用的加权技术,它的主要思想呢,也很简单,就是说会统计一篇文章中出现频率最高的一个词。简单来说就是这个意思,当然它的语义类别呢,也是属于统计学习这个范畴之内。呃,我们可以看到一些公式,实际上呢,我们看到PF杠,IDF就是我们PF和我们IDF的一个成绩,PF呢称之为的磁品,IDF称之为我们逆文本。

频率,最终得到我们TF杠F。

我们下面就来详细的去看一下相应的描述。什么是PF跟F?刚才解释了,PF就是我们的term FCA就衡量一个term在文档中出现的有多频繁,说白了就是衡量一个词儿在我们的文档中出现几次。这时我们称之为TF,这里面还有公式TF杠T也认为我们认为这个词是TT呢,出现文档中的次数除以我们文档中赫面的这个总数,就是我们的这个词频。第二个呢,就是IDF衡量了一个term到底有多重,要求完以后我们对文档的总数除以我们含有T的文档的总数,取一个对数,最终我们TF杠IDF刚才也说了,就是TF乘以IDF一个乘积。这个呢,就是我们TF杠IDF定义TF。

其实它的主要思想啊,我们举个例子,就是如果一个词,比如是W,在一篇文章义中出现它概率比较高,并且呢在其他的文档中很少出现,我们就认为呢4W具有很好的区分能力,适合我们把这文章D呢和其他文章区分出来,这就是最简单的一个原理。

说到原理呢,我们也会说到TF跟RDF作用,刚才我们举例啊,相信大家也都明白,实际上我们总结这个词频,其实就是变相的去提取文本向量的一些特征,我们汲取出每一个文本中每一个词频,相当于我得到了这篇文章也好,文本也好,它的一个征,因为文本和文本不一样嘛,那天我某一个词词频还有的逆文本频率是不一样,所以得到这个TF杠IDF这个值呢也是不一样的,所以正好就能得到这个值,就能代表我们这个文章一个特征,这就是我们TF杠ID一个作用。

说完了。

TF的作用,那我们那有哪些工具可以去用我们TF杠IDF呢?这里面当然我们可以去手写,就是我们用Python来手写是可以的,在机器学习里面呢,K我们又可以简称SK,它呢是集成了这个TFDF这种方法,因为我们在传统机器学习里面会用到我们的TF跟ID。除了SK类图像,我们NRTK里面也有PFDF啊,还有我们的这个解吧,里面也是有PFDF。下面呢,我们就以这个SK来做一个简单的介绍。我们要使用SKN呢,我们首要安装好这个SKN,装完以后呢,我们要导入包,和别的应用方法是一样的,一步呢,就是import,我们的两个包,一个是计算矩阵,就是把我们的词频矩阵做一个词频矩阵,所词频矩阵也就是我们统计次数,然后我们。

逆文本频率运算,我们两个一个做一个乘积,在我们SK其实里面已经封装好了。直接用就可以了。封装完的就是PF跟IDF transformer,还有victory。我们导入库以后,定义我们的语料,比我们语料是这个四句话,I come to China to travel this is car popular in China I love to write some papers in science,然后我们下一步呢,就是把我们这个词统计转成我们的词频矩阵,然后transform呢,也是我们相当于给它进行了一个这个初始化也好,包括我们应给他计算我们这个文本频率,然后通过我们这个API。这个呢就是计算我们TF跟if最终这个值,而前面这个呢,就是统计法这个次数。这个就是我们之前讲过TF间的公式,也就是乘积相当于我们TF乘以我们的IDF。这个。

就是我们SK。对于TF跟IDF的一个应用,后面有一个结果,我们一会可以看一下我们这节课的代码实战呢,也会基于我们SK进行一个比较简单一个TM跟IM,到时候呢,我们会把SK的安装,包括我们的这个API,我们再详细的进行讲解一下。

最终得到结果呢,就直接有一个磁性矩阵,然后后面有一个相应的一个磁性的概率,我们会看到这个就是我们通过SK这个工具得到了我们t fidf这个结果,

们再来回顾一下,首先呢,我们要来安装SKN,安装以后我们导入包,导入包里呢,我给它语料,语料完以后我们就要运用这个语料把我们的词频统计出来,把我们的这个逆文本频类提供出来,然后用它已经封装好的API呢,来计算我们的tdf,这是整我们整个的一个流程。

那除了SKN呢,我们再来介绍NRTKNRTK呢,实际上它计算TF跟idm比我们SK要简单的多了啊,首先如果我们用的话,肯定还是要导入库,它的库呢,就是我们这个NLTK的tax import tax collection,然后我们还是进我们一个余量,然后它呢直接就可以算出我们TFTF啊,print,然后我们调这个API。也就是我们这个语料点T,然后this this is four,直接就能计算出GM值,它比我们的SQ来说更简单一些。我们在我们代码实战中呢,使用的是我们SK的计算TF杠IDF,到时候呢,大家也不用慌,也不用着急啊,到时候我会带着大先装XK的包,然后我们一步一步包括讲解它的API和使用,咱们再来详细的去进行说明,这节课呢,我们简单的就来。

给它过一下,让大家呢在对于我们TF杠IDF这个应用工具上有一些初步的一些认识,那我们说这么多TF跟RDF有着哪些应用呢?我们这里面只列了三点,其实呢,它的应用还很广泛,第一个呢,就是说自动提取关键词,这个东西呢,我就不用做太多的解释,比如说我们一个词,这个词呢,可能比较关键,比较有用,而且比较主导在我们这个文章里边啊,次数很多,通过我们这个能提取出来啊,自动摘要也很好理解,那我们这篇文章,那我出现哪个词比较多,那可能出现词多的,这确实比较重要,它呢就构成了我们这个文章也好,这个段落也好,它一个核心,也就是它的大体的一个轮廓,是通过这个词来形容的。那寻找相似文章呢,也就是说同样一个词在我这个a文章和B文章出现都比较多,那可能我的文章内容讲一个事儿,所以呢,这三种应用呢是。

我们TF杠IDF呢,一个非常常用的一个场景。当然了,我们TF杠还有很多的应用,并不局限于这些。当然说这么多,我们TF杠M,它还有自己的啊优缺点,我们来简单的一个分析啊,优点呢就是说它这个非常简单快速,而且呢容易理解,我相信我们在我们这一系列的讲解,TF跟EF这个讲解中呢,大家已对TF已经非常了解,因为它的数学上非常的简单,没有那么多的这个公式,而且它的意义也非常简单,缺点呢是词频呢,来衡量文章中一个词的重要性不够全面,为什么呢?因为这篇文章呢,并不是说词儿出现的次数越多,越能代表这个文章,对吧,有些关键词它可能就出现几次,但是对于我文章来说呢,它的重要意义也是非常大的,比如有一些名词它出现的频率是比较高,但是。

因为我整个文章不是那么重要,所以它的缺点也是非常明显的。好了,那我们今天这一节课要呢,就是介绍TF杠DF定义,包括它数学表达,然后呢,我们又分别SKN和我们的NLTK2个部分,这两个工具去讲解这个历程,我们如何去计算我们的PF跟RDF,最后我们又分析了PF杠F的应用场景,也总结了TF杠IDF的一个优缺点。好,那我们TF跟IDF那部分内容呢,我们今天就讲到这里,谢谢大家。

七, 2-7 NLTK安装







大家好,今天我们这节课呢,来学习如何安装NLTK,在之前的课里面我们讲了NLTK呢,实际上是我们NLP里面非常重要的一个库。而且NLTK呢,能做的这个工作很多,我们再来回顾一下NLTK能干什么,NLTK呢,里面还有语料LTK呢可以做分词NLTK呢可以做TF杠IDF,总之一句话,NLTK呢就是我们NLP行业比较万能的一个包。那好,那我们就来看一下如何来安装NLTK,我们都知道我们的操作系统一般呢,是分Linux和我们的Windows,当然还有Mac这三种,所以它的这个安装方法呢,其实也是不一样的。那下面呢,我们就来介绍一下如何来安装,如果你是u班图,咱们拿u班图来举例,或者你是Mac,这里面我们都可以通过在terminal也就。

终LTK就可以了,我们可以带着大家来安装一下,老师这边呢是服务器,我们们在啊,已经登弄好我们的服务器,敲一下张涵的指令Su do,然后呢,老师这里边是PA3,应该是这个PYTHON3INSTALL。NLTK可以啊。执行,然后等他那个进行安装。这里面呢,实际上已经安装好了。我们再来回到我们的PPT,呃,顺便呢,我们可以安装一下单派,咱们可以进行操作派杠nu nu py。OK,然后他就要进行下载,咱们可以看到这个进度还是很快的。successful in啊,南排最新版本。1.16.4,这叫。

这样就安装好了。然后我们可以测试是否安装成功,我们可以打一个Python,然后import NL TK就可以知道呢,它有没有安装成功,咱们来调一下这个武器,咱们来看一下老师这里面是。Python因为之前的是3.5 Python的版本呢,这块呢无所谓,因为老师现在目前的这个服务器版本是3.5。本机的这个Windows是3.7,这个版本倒是无所谓,因为安装指令都是一样的,咱们来看一下安装好没有,就是import。啊,咱们打NIMNLTK,然后打回车的话,它出现没有报错,这样的话我们NLTK呢,就安装好了。再回到我们的这个PPT,我们PPT内容呢,咱可以看到pyon老师,这是PY3,这个都无所谓,如果你是PYON2也是可以的啊,尽量还是按PYTHON3,因为。

啊PYTH2大家都知道在明年就不进行维护了啊inport这NLTK以后呢,没有报错证明我们就安装好了啊这个呢,就是在我们这个乌班图也好,Mac它是安装都是一样的,





那我们啊有很多的同学呢,是在这个Windows啊Windows我们首先呢就要安装我们这个Python3.7。当然您可以安装别的这里面呢,我们就首先呢,安装我们这个Python3.7。看3.7呢,我们就来下载这个网址,我们来点一下。我们来拷贝一下,放到我们的浏览器里面,我们来下载我们的这个Python。咱们其实可以装一个安con,它是集成了一些PYTHON3啊,PYTHON2啊,包括。

一系列这个科技数据库啊,咱们也来看一下。咱们当然可以在百度搜,因为装安达框呢,相对来说比较简单。其实咱们在第一节课中呢,也讲解了安康的安装,这个是安康的官网,咱们可以点开看一下。我一律给他进行放大啊,大家看不清楚,安那康的呢,实际上呢,他是一个科学家,然后他呢,可以有很多的工作老师,这里面其实有安可给大家看一下,其实我们第一节课呢,也就带着大家安装和使用了,这里面呢,在我们第二项安的propt promp就可以再进行我们的这个Python操作,我们还是按照我们PPT的内容,PPT内容呢,是先安装一个这个Python3.7,我们这个网址应该也打开了,我们来找一下。呃,3.7.4,我们来下载。这里面呢,它要分了这个很多的这个版本。我们往下看。

看一下实际上for Windows呢,我们有X64版本,我们装264版本,大家可以看一下它这个后缀。就是web,就是网络安装的,我们可以安装这个执行的,但也可以那个zip压缩包都是可以的,我们就直接下载这个。实际上他的包呢,并不是很大。25.4。啊,我们,呃,就下载呢,可能需要一定时间,我们再来回到我们的PPT。我们的PPT呢,其实这里面呢,Windows的使用呢,和我们这个u半图也好,或者Mac还是有一定的区别的,当然你可以咱们在这个下载之前呢,去找一下咱刚才这个PPT里边的这个派。我们可以再打一下这个网页。当然,如果同学在第一节课和老师一起呢,把安框装完了,这些操作其实就没有必要了。安排我们可以。

最新的。啊,等我的就可以了。当然如果是安装好了那框的话,咱们就可以直接在里面操作。这里边呢,如果都安装好的话,其实和我们的这个U盘图呢,没有什么太多的区别,我们可以等一下开启。咱们这里面呢,啊是现在6.4,我们可以看一下import,咱们看一下NLTK老师这里装了没有。还是刚才咱们那个安康这个安装。在第一章呢,我们这个在做代码实战的时候,已经带领大家安装了,我就不用再多说了。这个PPT呢,主要是给咱们大家之前没有安装这个安达康的,如果大家安装了安达框呢,其实也不用安装这个库。如果说你不说。

老师,这个链接你自己去安装,我们单派也是可以。啊,这里面可以搜一下,在我们的百度搜我们的MPY南。可以就直接找到我们ipad的这个下载地址啊,都是可以的,有很多的方法。那这里面写get started。what?三排其实已经下完了。1.11.2,当然它不是最新的啊,如果我们使用呢,我们可以更新啊,这些都是可以。我们再回到我们的PPT,那会PPT呢?可以安装我们这个下载以后安装,还有安装我们的这个NLTK也是我们要下载。好,我们聊到今天。可以安装。这个Python确实下载有点慢啊,老师这边网络确实不是很快。这个呢,就是NLTK3.4.5。

呢,相当于我们呢,有一个这里面,这里面呢,就有一些数据,包括咱之前讲的一些料,包括些一些工具包都是在这里面的,咱们可以在咱们这个服务器中进行操作。服务器中咱们已经安装好了NLTKNLTK,点咱们这个网页里面的内容呢,是点download括号,我们去操作一下,看在服务器中有什么样的一个效果。实际上在这里面呢,就是他要把这个语料你看大家可以看到,他呢会直接去找NLTK里面的这个这些数据,包括都会下载进来,对吧,就像刚才我们在PPT当中讲的这里面一样。在Windows呢,它是有这样一个图形界面,在我们这个UB图也好,或Mac里面没有这个界面,这个界面其实都无所谓,最终呢,你在应用的时候。

实际上就是在你的这个程序中调我们的LTK相关的这个API就可以了,就没有什么关系。我建议大家呢,还是去装这个安耐框的,安耐框的装完以后那边会啊,相对来说比较简单,那老师这边的网络确实比较慢啊,这边OK了,然后咱们呢,呃,打一个Python是吧,然后咱们import NL TK。如果不报错的话。证明我们的库呢已经装好了。也就是我们通过pab install n TK已就装好了,

八, 2-8 代码小练



大家好,今天这节课呢,我们就来学习一下SKN如何调用我们的TF跟IDF,在之前的课程当中呢,我们学习了TF跟IDF的这个原理,同时我们知道呢,有很多的库呢,都是可以去调我们的TF跟IDF,而不用我们去手写像我们的NLTK库,还有当然我们这节课的主角SK Le也是可以调我们的这个TF杠20F,那么我们马不停蹄立马去看一下我们notebook怎么去书写我们的用SKN去调我们TF杠IDF,首先呢,还是和我们之前的操作一样,我们在我们的这个开始这个当我们去找到我们14,然后点击点击我们的e,点击以后输入命行行的这个提示,然后在我们的浏览器当中。我们就新建通过。

notebook python3我们来新建一个notebook文件,

建完以后呢,我们本节课内容呢,是基于SK调用我们的TF杠IDF,这里面呢,我们要把第一行呢,我们认为它是标记,第二行呢,我们选择代码,也就说我们从第二行开始写我们的代码。在写代码之前呢,我们要确定我们的。库中是否有我们的TFIDF,这里面呢,我们就要打开。我们相应的an pocon3。这里面我们就可以再点击CON3PRO,我们调出命令行,在这里面呢,我们首先可以去看我们安装了什么库PE list。打这条命令以后呢,就会显示出我们用PA安装的包。这里面的老师其实已经按按我们的这个。

不用再安装了,如果你没有安装呢,我们来讲解一下,我们和安装别的库是一样的。安装别的一样的,我我们的SCI。然后放回车就可以了,我们等着安装就行,因为老师已经安装了,我就给他取消了。

OK。讲完这个呢,我们就来具体去看一看我们相应的官网SKN,这里面我已经给它打开了。实际上我们可以在。骨骼之下呢,我们进行搜索。我们在Google里面,我们搜索SKN这里面呢,当然除了官网还有一些很多的大神也有讲解。啊,包括还有一个GI的源码都是可以看的,我们这边打开它的官网。



打开个官网以后呢,发现有主页面安装,还有包括一些文档,还有一个example,咱们可以看安装,刚才就像啊老师讲过的install杠u就可以了,如果你是的话,我们选择这是可以的,都是没有问题的。然后我们呢,去看一下它相应的API,这边我们打的document,然后我们去选择APIAPI呢我们因为今天的主角呢,是TF盖IDF的这个里这个T跟IDF这个啊,现在库我们主要使用第二个。回到我们的notebook,那我们现在就来书写一下我们如何来调用这个库,首先是from我们刚才S点,我们刚才可以去找我们官网。

这个内容instruction text。我们可以进行拷贝,拷贝过来以后。fromsk.future。extraction我们import,我们刚才这个,刚才这个我老师比较犯懒啊,就直接给他拷贝一下,你们可以拷贝一下。我们可以点击看一下。当然我们也可以拷贝一下,直接拷贝到我们这里面。这里面呢,我们有一个习惯,如果说你是可以在写这个代码的时候,你可以分步写,也可以整体一个写,如果你担心你的代码有问题呢,我们可以逐步写,我们可以进行运行,发现没有报错,证明这个是没有问题的,显然这一句呢,我们作为一个实例化,也就是我们TFIDF呢,我们给它。

进行一个实例化,我们就是实际上来进行一个相应的操作,OK,前缀以后呢,我们要有我们的语料,我们这里面有一个有我们的语料cups,对吧,然后我们定义一下我们的语料,还是拿我们课程当中这个语料呢,作为我们的这个应用,我们课程中主要有四句话,我们这里面也还是用我们的四句话。我们来注意一下这个标点,一定要注意标点不要错。都要在英文下,你在中文下它是不认的。OK,我们什么四句话呢?第一句话呢,我们可以想一想,之前我们说的呢,是我来到。北京。大学,OK,这是第一句话,那第二句话呢?他。来到了网易杭研大厦。这是第二句话,那第三。

三句话呢,就是小明。小明硕士毕业。与中国科学院OK,然后呢,我们最后一句是像我们儿时唱的儿歌我爱北京天安门OK,这个就是我们的语料,我们写完了写个注释,实际上我们会发现呢,我们的语料呢,是分词后的结果,所以我们这里面写一下是分词后的结果,因为有已经带空格了,这就是我们的语料。写了我们的语料呢,我们就要进行相关的操作,把我这些语料变为我们一个数组,也就是我们使用result,我们这里面定一个result等于什么呢?还是等于我们的TM跟点F给它进行一个变换。transform。我们的。

比如我们的语料,然后变成什么呢?变成一个数组,也就是点啊。OK,这个就是变完了以后数组了,变完以后呢,我们可以print这个结果。result。我们可以运行一下看一下啊,这个就可以复认它的结果了,这个呢,就是把我们的词转成我们的这个数组,一个结果写完这里呢,我们再进行一个其他的操作,比如说呢,我们想统计有哪些关键词,我们里面写关键词,我们要写一个word对吧,等于。通过同时也是通过我们一个API下F点。that the future。there that。

就是name就可以了,我们看一下就可以了,然后呢,我们可以print the。我们同样可以运行一下OK,去统计出我们有哪些关键词了,我们还不满足于此,我们还要进行我去统计呢。我关键词出现的次数。这里面呢,我们关节的出现的次数呢,我们就要用我们的循环了,for k和V呢,在我们的这个TF杠DIDF里面的这个词,它生成一个词汇表就是vocabulary vocabulary,对吧,他的项目当中。做了便利,然后呢,我们print一下K,就可以遍利出它出现的次数。你发现这里面有。


有一个问题,我们实际上打错了一个标,应该是o,这样就可以了,这就统计出它这个次数了。另外我们最后再做一项工作对比。第二类文本。的词语TFIDF的权重。OK,这里面我们要做两个循环,一个是for I。这里面我们要去创作我们的结果,result。妈,ha on print,那神,这里面我们print一个。一些杠,然后呢,我们逗号,哎,逗号我们再打一些杠。

可以认为它就是一个分割线,然后我们再做一个循环和。因为我们的之前呢,是在我们这个result,这个result这个二维数组,就是数组里面做便历,这次呢,我们在我们的word统计词里里面做for range,我们直接可以来进行拷贝,for这里面改一下,改成word。OK,我们可以一下结果普遍呢,我们了解到word呢,实际在做了一次循环,也就是word我们角标呢,我们这里面就是对于它G,然后我们的result呢。实际上对I和G呢,都做了循环,我们小标呢,它有两个,一个是R一个是GOK,这样我们这个代码就写完了,我们可以运用一下。这样的话,就才看到这个分割线呢,就分割出来,然后我们相应的这个结果。

选中的结果它也是计算出来了,好,这个就是我们代码的部分,

那有同学可能会问,那我们老师你这个API是在哪里找到的,为什么要这样写,我们呢,可以在。谷歌里面之前咱已经说过了,在SK咱们搜索,然后呢,在我们这个API里我们进行搜索,咱们下面呢,就带着大家呢来搜索一下,看看这个that future name在哪里,还有我们的这个aem在哪里,我们可以搜索一下。我们搜索一下以后呢,就发现呢,一下就搜索到了,这里面是一个example。是一个example,咱们直接可以找到,那我们如果不想看example,然后在API里面我们所搜索发现是没有的,对吧,这里面发现没有发现,所以我们一定要进去我们相对应的TF断裂M里去找,才能找到相应的,比如用法,包括它一些API,咱们的。

搜索一下就找到了。对吧,这个一下就能找到它这个内名,当底下呢,有一些介绍我们艾瑞。这里面的啊,to name就是关键词。

除了这个呢,咱们还用到一个就是我们TF vocabulary,咱们可以拷贝一下,然后在同样在里面搜索一下vocabulary,咱们后面不在我这里面,它它有相关的一些诶内容咱们可以看一下,我们可以去找。我们可以看到这里面就可以找到了我们VO mapping of terms to future inence。这里面就可以找到我们的相应的这个API的用法。然后我们还可以继续往下搜索下,后面应该还有一些内容。这个呢,就是。

是我们这些API和我们的历程是怎么结合的,我们呢都在我们的这个TF跟AF有像样化,或者是在我们这个transform里面,我们都可以找到相应的一些公式也好,包括我们的AF描述都是可以的。我们大家一定要记住,如果我们要应用一个API也好,或者是应用一个库,首先我们要去看它的官网,因为官网会很全,内容很全,尽管说可能是英文,但是它的内容全,告诉你API怎么使用,告诉你历程大概怎么调用,都是可以的。好,那今天我们这节课呢,就上到这里,主要我们学习呢,用SK去调我们的TF杠F,当然我们的SK不仅仅只能调我们的TF杠IDF,它还有其他的很多的一些工作,SK主要是在于机器学习当中。在后续的课程我们有。

可能会介绍它的一些其他的用法,

好,那今天这节课我们就上到这里,谢谢大家。大家好,下面呢,我们来给第二章做一下小结。第二章中内容呢,主要我们讲解了NP的基础,首先呢,我们讲解了NP起源的发展及应用领域,在之前最早呢,我们LP实际上是在应用于你的机器翻译,那RP呢,本身意识还是比较悠远流长的。第二个呢,我们就是讲解了NRP基础与要处理一些分析的原理。第三部分呢,我们就讲解了RP基础语料处理的磁性标注的一些原理。

后面我们又讲了我们NRP中非常重要的技术,TF跟IDF原理,首先就是逆词频,逆词频的逆文本频率的一个概念。总之。

我们还讲解了NRT基础的NRT最常用的裤子安装和使用。代码小链部分呢,我们使用基于SK这个库进行TF杠M的代码测试,和我们的这个从零开始进行书写。这节课就到这里,谢谢大家。

Pytorch项目实战聊天机器人(02.项目的准备阶段)相关推荐

  1. 菜鸟修行之路----项目实战:微人事项目之项目概述

    菜鸟修行之路----项目实战:微人事项目之项目概述 ​ 修行之路艰辛,与君共勉!! ​ 从即日起,通过对于github上非常热门的前后端分离开发的开源项目:微人事管理系统的全面学习以及自主手写代码实现 ...

  2. OpenCV-PyQT项目实战(5)项目案例01:图像模糊

    欢迎关注『OpenCV-PyQT项目实战 @ Youcans』系列,持续更新中 OpenCV-PyQT项目实战(1)安装与环境配置 OpenCV-PyQT项目实战(2)QtDesigner 和 PyU ...

  3. 项目实战-清风粉丝的项目

    项目实战-清风粉丝的项目 时间紧迫,为了避免麻烦AC直接采用路由模式接入到VLAN30下面.后面给大家再演示胖挂AC 拓扑图 核心交换机SW1配置 划分vlan vlan10,员工上网使用,需要开启D ...

  4. HaaS EDU物联网项目实战:野外救援项目

    HaaS EDU K1是一款高颜值.高性能.高集成度的物联网开发板,板载功能强大的4核(双核300Mhz M33+双核1GHz A7)主芯片,2.4G/5G双频Wi-Fi,双模蓝牙(经典蓝牙/BLE) ...

  5. 软工实践团队项目-智能聊天机器人简介

    "智能聊天机器人"项目 目前已确定的团队人员:张扬.俊彦.韫月.地秀.泽波.李翔.文婧.俞明.加伟(排名不分先后) 队伍已满,没有再招人的打算(#^.^#) 我们的想法 你有用过智 ...

  6. 【PyTorch】11 聊天机器人实战——Cornell Movie-Dialogs Corpus电影剧本数据集处理、利用Global attention实现Seq2Seq模型

    聊天机器人教程 1. 下载数据文件 2. 加载和预处理数据 2.1 创建格式化数据文件 2.2 加载和清洗数据 3.为模型准备数据 4.定义模型 4.1 Seq2Seq模型 4.2 编码器 4.3 解 ...

  7. 一个可以使用自己语料进行训练的聊天机器人开源项目

    目录 背景 关于语料的说明 seq2seq版本代码执行顺序 seqGAN版本代码执行顺序 参考代码和文献 建议环境 已更新功能清单 版本路线图 背景 自定义语料训练聊天机器人,可以用于智能客服.在线问 ...

  8. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  9. 十年互联网项目实战经验分享:项目经理成长之路的三个层次

    网易项目管理专家雷蓓蓓老师,结合十年互联网项目摸爬滚打的实战经验,首次披露了从业多年来的诸多干货.项目经理要想在升职加薪路上走的更顺,核心要解决的是什么呢?就是怎么样去提升自己的核心竞争力,也就是升& ...

最新文章

  1. 一分钟先生之拨云见日看绩效
  2. Struts2框架--学习笔记(上):搭建struts2工程、struts2基本概念、struts2对页面数据的操作
  3. 北方大学 ACM 多校训练赛 第十五场 买花
  4. python定制框架知识点_python框架中flask知识点总结
  5. Codeforces976E Well played! 【贪心】
  6. 【前端】第一章 前端三要素、前后端分离的演变史
  7. Git清除用户名和密码
  8. 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-1-论文学习
  9. matlab 辅助函数 —— 文件下载与文件解压
  10. C语言编程齿轮轮廓线坐标,C语言程序实现齿轮基本参数几何尺寸计算
  11. oem和odm是什么意思?oem与odm区别是什么?
  12. MapReduce之简单K-mer计数
  13. 尚硅谷-SpringSecurity
  14. 拼多多活动主图尺寸多少?企立方来告诉你!
  15. jenkins检查更新站点时出错:SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.secu
  16. Django-模型层
  17. 林大计算机学子第一篇博客
  18. 210814算法日记:归并逆序对板子快排第k个数板子第k个数的stl
  19. 纯css实现导航处hot小图标实现
  20. 【技法操作】PS制作定位图标,UI设计教程

热门文章

  1. 听说,你想干掉中介?
  2. 浙大计算机系帅哥,浙江大学有位帅哥!立志成为一名卓越的医学统计学家
  3. z-index设置说明
  4. 中文编程最高境界,不用编程,会用excel就会用,香不香?
  5. linux查看进程的信息失败,Linux查看端口、进程信息
  6. 2021/11/10
  7. C语言windows.h库的常用函数(二)
  8. VS2019官方的免费打印控件
  9. Android 用官方SDK实现第三方(qq、微信、微博)登录
  10. HTTPS SSL TLS