Python程序设计语言(第二版)(微课版)课件 09 中文文本分析_第1页
Python程序设计语言(第二版)(微课版)课件 09 中文文本分析_第2页
Python程序设计语言(第二版)(微课版)课件 09 中文文本分析_第3页
Python程序设计语言(第二版)(微课版)课件 09 中文文本分析_第4页
Python程序设计语言(第二版)(微课版)课件 09 中文文本分析_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章知识导图9.1中文文本分析相关库jieba库概述1.jieba库安装与使用安装:pipinstalljieba导入:importjieba2.jieba分词的原理jieba分词依靠中文词库,利用一个中文词库,确定汉字之间的关联概率,通过图结构和动态规划方法找到最大概率的词组,汉字间概率大的组成词组,最终形成分词结果。9.1中文文本分析相关库3.jieba分词的三种模式(1)精确模式(2)全模式(3)搜索引擎模式9.1中文文本分析相关库4.jieba库的主要函数函数描述jieba.cut(s)精确模式,返回一个可迭代的数据类型jieba.cut(s,cut_all=True)全模式,输出文本s中所有可能的单词jieba.cut_for_search(s)搜索引擎模式,适合搜索引擎建立索引的分词结果jieba.lcut(s)精确模式,返回一个列表类型,建议使用jieba.lcut(s,cut_all=True)全模式,返回一个列表类型,建议使用jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型,建议使用jieba.add_word(w)向分词词典中增加新词w9.1中文文本分析相关库【例9-1】精确模式分词。>>>importjieba>>>s="庆祝中国共产党建党100周年">>>forxinjieba.cut(s):#返回的是一个可迭代的类型

print(x,end='')庆祝中国共产党建党100周年>>>jieba.lcut(s)#返回的是一个列表['庆祝','中国共产党','建党','100','周年']9.1中文文本分析相关库【例9-2】全模式分词。>>>importjieba>>>s="庆祝中国共产党建党100周年">>>forxinjieba.cut(s,cut_all=True):

print(x,end='')庆祝中国中国共产党国共共产共产党党建建党100周年>>>jieba.lcut(s,cut_all=True)['庆祝','中国','中国共产党','国共','共产','共产党','党建','建党','100','周年']9.1中文文本分析相关库【例9-3】搜索引擎模式分词。>>>importjieba>>>s="庆祝中国共产党建党100周年">>>forxinjieba.cut_for_search(s):

print(x,end='')庆祝中国国共共产共产党中国共产党建党100周年>>>jieba.lcut_for_search(s)['庆祝','中国','国共','共产','共产党','中国共产党','建党','100','周年']9.1中文文本分析相关库【例9-4】添加新词。>>>importjieba>>>s="青春须早为,岂能长少年">>>jieba.lcut(s)['青春','须','早','为',',','岂能','长','少年']9.1中文文本分析相关库【例9-4】添加新词。>>>jieba.add_word("须早为")>>>jieba.add_word("长少年")>>>jieba.lcut(s)['青春','须早为',',','岂能','长少年']9.1中文文本分析相关库4、词性标注词性(part-of-speech)是词汇基本的语法范畴,通常也称为词类,主要用来描述一个词在上下文的作用。9.1中文文本分析相关库4、词性标注词性(part-of-speech)是词汇基本的语法范畴,通常也称为词类,主要用来描述一个词在上下文的作用。【例9-5】引入词性标注。>>>importjieba.possegaspsg#引入词性标注接口>>>text="奋斗百年路,起航新征程,庆祝建党100周年!">>>seg=psg.cut(text)#词性标注>>>foreleinseg:#将词性标注结果打印出来 print(ele,end='')

奋斗/v百年/m路/n,/x起航/v新/a征程/n,/x庆祝/v建党/n100/m周年/t!/x9.1中文文本分析相关库【例9-6】筛选出中国共产党名称由来段落中的地名。>>>importjieba.possegaspsg>>>text="中国共产党名称的由来:1920年8月,陈独秀在上海发起成立了中国共产党的第一个早期组织。1920年9月1日,陈独秀在《新青年》发表的《对于时局之我见》一文中,曾称“吾党”为“社会党”,后来才改称为“共产党”。最早提出“中国共产党”这一名称的是蔡和森。1920年8月13日和9月16日,正在留法勤工俭学的他,在给毛泽东写的两封信中,详细地研讨了共产党问题,提出:“先要组织党——共产党,因为它是革命运动的发动者、宣传者、先锋队、作战部。”他在对西欧各国共产党特别是俄国共产党考察的基础上,提出了具体的建党步骤,其中包括“明目张胆正式成立一个中国共产党”。">>>seg=psg.cut(text)>>>type(seg)<class'generator'>>>>lst=[x.wordforxinsegifx.flag=="ns"]>>>lst['上海','西欧各国','俄国']9.1中文文本分析相关库5、jieba库关键词提取关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。9.1中文文本分析相关库【例9-7】利用jieba分词系统中的TF-IDF接口抽取关键词示例。123456789101112fromjiebaimportanalysetext='''中国共产党名称的由来:1920年8月,陈独秀在上海发起成立了中国共产党的第一个早期组织。1920年9月1日,陈独秀在《新青年》发表的《对于时局之我见》一文中,曾称“吾党”为“社会党”,后来才改称为“共产党”。最早提出“中国共产党”这一名称的是蔡和森。1920年8月13日和9月16日,正在留法勤工俭学的他,在给毛泽东写的两封信中,详细地研讨了共产党问题,提出:“先要组织党——共产党,因为它是革命运动的发动者、宣传者、先锋队、作战部。”他在对西欧各国共产党特别是俄国共产党考察的基础上,提出了具体的建党步骤,其中包括“明目张胆正式成立一个中国共产党”。'''keywords=analyse.extract_tags(text,topK=10,withWeight=True)print("keywordsbyTF-IDF:")forkeywordinkeywords:print("{:<10}weight:{:4.2f}".format(keyword[0],keyword[1]))9.1中文文本分析相关库【例9-7】利用jieba分词系统中的TF-IDF接口抽取关键词示例。

运行结果:9.1中文文本分析相关库【例9-8】利用jieba分词系统中的TextTank接口抽取关键词示例。123456789101112fromjiebaimportanalysetext='''中国共产党名称的由来:1920年8月,陈独秀在上海发起成立了中国共产党的第一个早期组织。1920年9月1日,陈独秀在《新青年》发表的《对于时局之我见》一文中,曾称“吾党”为“社会党”,后来才改称为“共产党”。最早提出“中国共产党”这一名称的是蔡和森。1920年8月13日和9月16日,正在留法勤工俭学的他,在给毛泽东写的两封信中,详细地研讨了共产党问题,提出:“先要组织党——共产党,因为它是革命运动的发动者、宣传者、先锋队、作战部。”他在对西欧各国共产党特别是俄国共产党考察的基础上,提出了具体的建党步骤,其中包括“明目张胆正式成立一个中国共产党”。'''keywords=analyse.textrank(text,topK=10,withWeight=True)print("keywordsbyTextTank:")forkeywordinkeywords:print("{:<10}weight:{:4.2f}".format(keyword[0],keyword[1]))9.1中文文本分析相关库【例9-8】利用jieba分词系统中的TextTank接口抽取关键词示例。

运行结果:9.1中文文本分析相关库词云绘制wordcloud库wordcloud库把词云当作一个wordcloud对象,wordcloud.WordCloud()代表一个文本对应的词云,可以根据文本中词语出现的频率等参数绘制词云,绘制词云的形状,尺寸和颜色都可以设定。安装:pipinstallwordcloud导入:importwordcloud9.1中文文本分析相关库词云绘制wordcloud库wordcloud库常规方法如下:

w=wordcloud.WordCloud()方法描述w.generate(txt)向WordCloud对象w中加载文本txt,w.generate("PythonandWordCloud")w.to_file(filename) 将词云输出为图像文件,.png或.jpg,w.to_file("outfile.png")9.1中文文本分析相关库词云绘制wordcloud库使用wordcloud库包括以下三个步骤:(1)配置对象参数;(2)加载词云文本;(3)输出词云文件。9.1中文文本分析相关库词云绘制wordcloud库【例9-9】使用wordcloud绘制词云。>>>

importwordcloud>>>w=wordcloud.WordCloud()>>>w.generate("Ilovechina")>>>w.to_file("china.png")名称含义ont_path:string设置字体路径,例如font_path='黑体.ttf‘。width:int(default-400)设置输出的画布宽度,默认为400像素。height:int(default=200)设置输出的画布高度,默认为200像素。mask:nd-arrayorNone(default-None)如果mask为空,则使用二维遮罩绘制词云;如果mask非空,则设置的宽高值将被忽略,遮罩形状被mask取代。min_font_size:int(default=4)设置要显示的最小字体大小。max_words:number(default=200)设置要显示的词的最大个数。stopwords:setofstringsorNone设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS。background_color:colorvalue(default='black')设置背景颜色,例如background_color='white'表示背景颜色为白色。max_font_size:intorNone(default=None)设置要显示的最大字体大小。relative_scaling:float(default=.5)设置词频和字体大小的关联性。color_func:callable,default=None生成新颜色,如果为空,则使用self.color_func。fit_words(frequencies)根据词频生成词云(frequencies为字典类型)。generate(text)根据文本生成词云。generate_from_frequencies(frequencies[,...])根据词频生成词云。generate_from_text(text)根据文本生成词云。process_text(text)将长文本分词并去除屏蔽词to_array()转换为NumPy数组。to_file(filename)输出到文件。9.1中文文本分析相关库词云绘制wordcloud库【例9-10】运用随机数和大写字母创建字典,最后绘制生成词云。1234567891011importwordcloudimportrandomimportstringlChar=[xforxinstring.ascii_uppercase]lfreq=[random.randint(1,100)foriinrange(26)]freq={x[0]:x[1]forxinzip(lChar,lfreq)}print(freq)wcloud=wordcloud.WordCloud(background_color='white',width=1500,max_words=50,height=600,margin=1).fit_words(freq)wcloud.to_file("outcloud.png")print('ending')9.1中文文本分析相关库9.1中文文本分析相关库运行结果:词云图:9.2中文文本分析应用实例英文文本词频统计【例9-11】英文词频统计:对英文OneLife文章进行分词统计(OneLife.txt),输出前十个单词。1234567891011#读取文件,fp数据类型为字符串fp=open('OneLife.txt','r',encoding='utf-8')txts=fp.read()fp.close()txts=txts.lower()#将标点符号去掉chars="《》,.;!?"forcharinchars:txts=txts.replace(char,'')#进行分割形成列表txt=txts.split()121314151617181920newchar={}#空字典foritemintxt:newchar[item]=newchar.get(item,0)+1items=list(newchar.items())items.sort(key=lambdax:x[1],reverse=True)#输出结果foriinrange(10):k,v=items[i]print('{:8}{:2}'.format(k,v))9.2中文文本分析应用实例【例9-11】英文词频统计:对英文OneLife文章进行分词统计(OneLife.txt),输出前十个单词。运行结果:9.2中文文本分析应用实例【例9-12】中文词频统计:对小说《西游记》中人物进行词频统计,找出前5名的人物。分析:1)打开文件2)分词jieba库分词3)利用字典进行词频统计4)排序5)输出9.2中文文本分析应用实例【例9-12】中文词频统计:对小说《西游记》中人物进行词频统计,找出前5名的人物。1234567891011importjiebatxt=open("西游记.txt","r",encoding='utf-8').read()words=jieba.lcut(txt)#使用精确模式对文本进行分词counts={}#通过键值对的形式存储词语及其出现的次数forwordinwords:counts[word]=counts.get(word,0)+1#遍历所有词语,每出现一次其对应的值加1items=list(counts.items())#将键值对转换成列表items.sort(key=lambdax:x[1],reverse=True)#根据词语出现的次数进行从大到小排序foriinrange(15):word,count=items[i]print("{}\t{}".format(word,count))9.2中文文本分析应用实例运行结果:剔除长度为1的汉字len()9.2中文文本分析应用实例修改程序:12345678910111213importjiebatxt=open("西游记.txt","r",encoding='utf-8').read()words=jieba.lcut(txt)#使用精确模式对文本进行分词counts={}#通过键值对的形式存储词语及其出现的次数forwordinwords:

iflen(word)==1:#单个词语不计算在内

continuecounts[word]=counts.get(word,0)+1#遍历所有词语,每出现一次其对应的值加1items=list(counts.items())#将键值对转换成列表items.sort(key=lambdax:x[1],reverse=True)#根据词语出现的次数进行从大到小排序foriinrange(15):word,count=items[i]print("{}\t{}".format(word,count)iflen(word)==1:#单个词语不计算在内

continue9.2中文文本分析应用实例运行结果:1)剔除不是人物2)剔除无意义词语3)一人多种称呼整合为一个人123456789101112131415161718192021222324importjiebaexcludes={"一个","那里","我们","怎么","甚么","两个","只见","这个","不知","不是","不曾","只是","袈裟","那怪","闻言","如何","行者","和尚","徒弟","长老","不敢"}txt=open("西游记.txt","r",encoding='utf-8').read()words=jieba.lcut(txt)counts={}forwordinwords:iflen(word)==1:continue

elifword=="大圣"orword=="悟空"orword=="老孙"orword=="猴王":rword="孙悟空"elifword=="师父"orword=="三藏":rword="唐僧"else:rword=wordcounts[rword]=counts.get(rword,0)+1forwordinexcludes:#剔除不需要统计的词delcounts[word]items=list(counts.items())items.sort(key=lambdax:x[1],reverse=True)f=open('西游记词频.txt','w')foriinrange(5):word,count=items[i]print("{}\t{}".format(word,count))excludes={"一个","那里","我们","怎么","甚么","两个","只见","这个","不知","不是","不曾","只是","袈裟","那怪","闻言","如何","行者","和尚","徒弟","长老","不敢"}elifword=="大圣"orword=="悟空"orword=="老孙"orword=="猴王":rword="孙悟空"elifword=="师父"orword=="三藏":rword="唐僧"else:rword=wordforwordinexcludes:#剔除不需要统计的词

delcounts[word]9.2中文文本分析应用实例运行结果:9.2中文文本分析应用实例【例9-13】制作《西游记》词云。对例9-12改进,实现将前200个高频词汇生成菱形词云图。分析:1.生成“西游记词频.txt”文本文件2.绘制词云图3.绘制菱形词云图12345678910111213141516171819202122232425importjiebaexcludes={“一个”,“那里”,“我们”,“怎么”,“甚么”,“两个”,“只见”,“这个”,“不知,"不是","不曾

",“

只是","袈裟","那怪","闻言","如何","行者","和尚","徒弟","长老","不敢"}txt=open("西游记.txt","r",encoding='utf-8').read()words=jieba.lcut(txt)counts={}forwordinwords:iflen(word)==1:continueelifword=="大圣"orword=="悟空"orword=="老孙"orword=="猴王":rword="孙悟空"elifword=="师父"orword=="三藏":rword="唐僧"else:rword=wordcounts[rword]=counts.get(rword,0)+1forwordinexcludes:delcounts[word]items=list(counts.items())items.sort(key=lambdax:x[1],reverse=True)f=open('西游记词频.txt','w')foriinrange(5):word,count=items[i]

f=open('西游记词频.txt','w')f.c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论