


Python,金融数据挖掘,高等教育出版,第七章,Python,文本,挖掘,Python金融数据挖掘 高等教育出版第七章Python,【知识框架图】,文本挖掘,基本概念,分词,特征提取,文本分析,jieba,处理包,NLTK,处理包,词云图制作,语句情绪分析,【知识框架图】文本挖掘基本概念分词特征提取文本分析jieba,目录,Contents,第一节,基本概念,第二节,文本分析处理,第三节,案例,目录Contents第一节基本概念第二节文本分析处理第三节案,本章,学习目标,分词的概念与基本方法中文,jieba,处理包的应用NLTK,自然语言处理包的应用文件词频统计及制作词云图文本特征分析、客户言论评估及舆情反应监督应用案例本章学习目标分词的概念与基本方法需求背景,文本挖掘是数据挖掘的重要应用领域目前的研究成果已能够使用文本挖掘算法对自然语言进行统计分析,从而实现对字、词、句子、篇章等语言单位进行分析、统计、翻译、语句情感色彩评估、语言风格分辨等功能,甚至能够模仿人创作文学作品在金融数据挖掘领域中,可以使用,Python,的自然语言处理包,对语言素材进行统计分析,从而实施如分词、数据提取、词频统计、词云图绘制及语句情绪色彩分析等文本挖掘工作。
需求背景文本挖掘是数据挖掘的重要应用领域目前的研究成果已能,01,基本概念,01基本概念,3.1,基本,概念,文本挖掘(,Text Mining,)和自然语言处理(,NLP,,,Natural Language Processing),是现代人工智能系统不可分割的一部分,众所周知,,计算机擅长处理结构化数据,处理非结构化的文本时,就会变得很困难,自然语言,属于典型的非结构化数据,并且语言交流方式也有许多变化和差异,例如方言、语境、俚语等,因此,研发,NLP,应用程序是一种挑战,同时也激发了众多研究者的兴趣,随着,NLP,技术和机器学习的日趋成熟,计算机理解自然语言的目标已逐渐成为现实3.1 基本概念,文本挖掘的一般过程如图,7-2,所示数据源,文本数据库,网页等,预处理,分词,噪音词,词性标记,特征提取,挖掘分析,文本结构分析,文本摘要,文本分类,文本聚类,关联分析,分布分析,趋势预测,数据,集,市,可视化,图,7,-,2,文本挖掘的一般过程,文本挖掘的一般过程如图 7-2所示数据源预处理挖掘分析数据,文本挖掘过程包含的技术主要有:数据预处理(重点是分词技术、文本特征提取)、词性标记、信息检索、文本挖掘、文本分类、文本聚类、关联分析、语义解释、语言翻译等,。
目前的分词预处理技术主要有基于字符串匹配(词典)的分词方法、基于统计的分词方法和基于理解的分词方法文本挖掘过程包含的技术主要有:数据预处理(重点是分词技术、文,1,.,基于,字符串匹配(词典)的分词,算法,所谓,基于词典的意思是,按照一定的策略将待分析的汉字字符串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功(识别出一个词),查找,匹配的算法来源于经典的字符串匹配算法,包括正向最大匹配、正向最小匹配、逆向匹配及逐词遍历匹配法等这类算法的特点是易于实现,设计简单,但,分词的正确性很大程度上取决于所建的词库1.基于字符串匹配(词典)的分词算法,2,.,基于,统计的分词,技术,这种,技术用一个条件概率(出现频率)的表格取代前述算法的词库,首先,对大量的文本素材进行扫描统计,将素材中任意前后紧邻的两个字作为一个词进行出现频率的统计在素材中某个组合出现的次数越高,那么这个组合是一个词语单位的可能性就越大,在频率超过某个预先设定的阈值时,就将其作为一个词进行索引,并记录下这种组合出现的概率,当,新的文本被提交进行分词时,相邻的字可能有若干种不同的方式组合成词按照统计生成的概率表格,选择组合概率最大的那一种作为分词的方案。
2.基于统计的分词技术,3,.,基于,理解的分词,方法,这种,分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果,其,基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象,它,通常包括三个部分:分词子系统、句法语义子系统、总控部分在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程这种分词方法需要使用大量的语言知识和信息,由于,汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段3.基于理解的分词方法,以文本分词后的词语素材为基础,进一步可以进行的工作主要包括,:,文本词性标注,文本摘要,文本分类,文本聚类,文本可视化,以文本分词后的词语素材为基础,进一步可以进行的工作主要包括:,02,文本分析处理,02文本分析处理,2.1,英文,处理,NLTK,(,Natural Language Toolkit,,自然语言工具包)是采用,Python,语言开发的,目前最为广泛的用于英文文本分析、挖掘的开发工具包,NLTK,由宾夕法尼亚大学计算机和信息科学系的,Steven Bird,和,Edward Loper,开发,是一个开源的自然语言分析处理项目,其官方主页为:,http:/www.nltk.org/,。
2.1 英文处理,我们可以在,Anoconda Prompt,命令行窗口安装,NLTK,:,conda,install,ntlk,首次,运行,NLTK,相关代码,时需要安装模块,,如图,7-3,所示,我们,直接在代码里指定代码所需要模块,针对性地下载特定内容,可以节省下载的时间图 7-3 NLTK模块下载,我们可以在Anoconda Prompt命令行窗口安装NLT,1,.,分割,句子与单词,使用,NLTK,我们可以将段落分割成句子,将句子分割成单个,词例,2-1,】,演示了利用,NLTK,提供的句子和单词分割器,(tokenizer),来分词的方法1.分割句子与单词,继续:,第,17-19,行使用了标点符号分割器,PunktSentenceTokenizer,将段落分割成句子第,22-23,行使用句子分割器,sent_tokenize,完成类似的工作第,26-28,行使用了单词分割器,word_tokenize,将句子分割成单词这些分割器对于非英语的语言文字同样有效继续:第17-19行使用了标点符号分割器PunktSente,输出结果:,输出结果:,2.,词干,提取,以英语为例,单词有单、复数形式的变化、时态的变化、语态的变化;还可以通过前缀、后缀生成新词、转换词性。
例如,working,、,works,、,worked,的词干同为,work,词干提取是去除词缀得到词根的过程,,NLTK,有一个名为,PorterStemmer,的类来完成这项工作,下面看看这个,算法的应用例子2.词干提取,【,例,7-2,】,词干,提取案例,【例 7-2】词干提取案例,3.,同义词,和反义词处理,WordNet,是,NLTK,中一个为自然语言处理而建立的数据库,它包括同义、反义词组和单词的定义类似于一个英语语言词典例,7-3】,可以获取某个给定单词的定义、示例,查询同义、反义词3.同义词和反义词处理,继续:,继续:,输出结果:,输出结果:,2.2,中文,处理,中文分词是中文文本处理的一个基础步骤不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分,好的词再组合成词组,作为后续句子分析和处理的基础2.2 中文处理,分词效果将直接影响词性、句法树等模块的效果看一个简单的中文句子,:,北京大学,毕业生于昨日来,Python,公司,应聘,这样,的句子正常地理解应该是这样,:,北京大学,/,毕业生,/,于,/,昨日,/,来,/Python,公司,/,应聘,但是,对于计算机来说,划分,成:,北京,/,大学毕业生,/,于昨日(人名),/,来,/Python,公司,/,应聘,分词效果将直接影响词性、句法树等模块的效果。
看一个简单的中文,在中文环境下,我们主要利用基于统计结果进行中文分词首先对海量的中文语料库进行统计,得到词语与词语组合的出现概率;然后按照这个概率的高低,对待分析的句子中的词和词的组合进行取舍目前,有不少可以对中文或其他语言进行分词的工具jieba,分词工具是其中较为常用的一种,jieba,项目在,Python,的官网地址是:,https:/pypi.python.org/pypi/jieba/,项目,主页是:,https:/ jieba/pip3 install,jieba,进入Python命令行后,执行以下命令jieba,分词分为三种模式:,1.,精确模式(默认):试图将句子最精确地切开,适合文本分析;,2.,全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;,3.,搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词jieba分词分为三种模式:,【,例,7-4,】,使用,jieba,分词工具对“北京大学毕业生于昨日来,Python,公司应聘”进行分词In5:,对分词结果的词语进行了逐项词性标注,其具体含义请参见本书附录,B,。
例 7-4】使用jieba分词工具对“北京大学毕业生于昨日,【,例,7-5】,用,jieba,来提取,舌尖上的中国,中某一集解说词出现频率最高的,20,个中文词语,第,4,行读入,txt,文本素材文件第,6,行,jieba.cut(shejian),对读入的文本素材进行分词,将所有长度大于,2,的分词结果放入,shejian_words,中,第,7,行对各个词语的出现频率进行统计,将出现频率最高的,20,个词放入,c,当中,最后输出,c,例 7-5】用jieba来提取舌尖上的中国中某一集解说,2.3,词,云图,词云图是由词汇组成类似云的彩色图形,利用词云图可以过滤掉文章大量无关紧要的文本信息,使浏览者能够很直观快捷地凭借视觉感官提取文本中的主题内容,,如下图所,示2.3 词云图,【,例,7 6】,所示代码,便可生成词,云图首先安装包:在,Anaconda Prompt,命令行窗口安装,wordcloud,包和用于背景图像文件读取的,imageio,包,:,pip,install,wordcloud,conda,install,imageio,【例 7 6】所示代码,便可生成词云图运行程序:,首先为项目导入必要的包,再将素材文件读入到,content,变量中。
第,10-11,行调用,jieba.analyse.extract_tags,将,content,中出现频度排在前,200,位的单词以列表,List,存入,tags,中,再将其转换为空格分隔的文本对象,text,第,13,行读入预先准备好的中国地图图像文件作为词云图的底图第,15-18,行设置,WordCloud,词云图对象,第,20-21,行以,text,对象数据生成词云图最后输出显示和文件保存运行程序:首先为项目导入必要的包,再将素材文件读入到cont,输出结果:,图 7-5 舌尖词云图,输出结果:图 7-5 舌尖词云图,03,案例,03案例,本节我们将介绍一个利用文本挖掘工具对股票评论的标题内容进行情绪分析,生成每天股评标题量化情绪分数的波动与沪深两市的指数波动情况进行对比分析结果这个综合应用的例子需要用到,SnowNLP,包,这个包由中国人研发该工具可以对中文句子进行情感分析,针对每个句子进行打分,每个句子的得分在,0-1,(,0,表示消极,,1,表示积极)之间,对应了消极到积极的情绪变化,在,Anoconda Prompt,命令行窗口输入以下命令安装,SnolNLP,包:,pip install,sno。