课件0901-文本处理库的应用_第1页
课件0901-文本处理库的应用_第2页
课件0901-文本处理库的应用_第3页
课件0901-文本处理库的应用_第4页
课件0901-文本处理库的应用_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

文本处理库的应用制作:教材编写团队出版社:机械工业出版社《Python编程基础与应用》配套课件本课件为《Python编程基础与应用(第2版)》配套教学资源,由编写团队精心打造。为便于教学使用,团队同步提供了丰富的辅助材料,涵盖微课视频、教学课件、实训手册、习题答案、课程标准及程序源代码等。同时,教材配套超星教学示范包,支持一键克隆为网络在线课程,助力高效开展线上线下混合式教学。欢迎联系出版方订购使用。

书名:《Python编程基础与应用(第2版)》出版社:机械工业出版社主编:蓝永健、陈冬冬副主编:蔡德琛、朱海鑫、邓爱玲+contents目录jieba的安装和应用wordcloud的安装和应用案例:可视化中文词云项目jieba的安装和应用01为什么要中文分词?在英文的行文中,单词之间是以空格作为自然分界符的,显得相对简单。但是中文比之英文要复杂得多、困难得多。中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块。不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性、句法等模块的效果。为什么要中文分词?比如“路不通行不得在此小便”,如果加上标点符号可以变为“路不通行,不得在此小便。”或者“路不通,行不得,在此小便。”如果使用计算机系统进行分词,它可能会分词为“路”,“不”,“通行”,“不得”,“在”,“此”,“小便”,“路”,“不”,“通行”,“不得”,“在”,“此”,“小便”等。它们的含义与真实原文含义会有偏差。中文分词的插件库简介以下是Python中常用的5个中文分词工具/插件,以表格形式对比它们的主要特点和适用场具名称主要特点适用场景jieba-支持精确、全模式、搜索引擎模式分词

-关键词提取、词性标注

-轻量级,易用通用中文文本处理、搜索引擎、数据分析HanLP-多任务NLP工具(分词、NER、句法分析等)

-支持预训练模型(如BERT)

-多语言支持高级NLP任务(如命名实体识别、依存句法分析)SnowNLP-中文分词、情感分析、文本摘要

-基于概率模型,适合非结构化文本情感分析、社交媒体文本处理pkuseg-高准确率分词(尤其适合领域文本)

-支持自定义训练模型

-北大语言计算组开发专业领域文本(医学、法律等)THULAC-清华NLP组开发,高精度分词

-支持词性标注

-速度较快学术研究、大规模文本处理中文分词的插件库简介jieba最常用,适合大多数场景;HanLP功能最全,适合复杂NLP任务;pkuseg/THULAC在专业领域表现更好;SnowNLP适合非结构化文本(如评论情感分析)。如果需要更高性能的分词(如生产环境),可考虑C++实现的工具(如FudanNLP、LTP)或结合深度学习模型(BERT-CRF)等。jieba的简介jieba是一个流行的中文分词工具,专门用于将连续的中文文本分割成有意义的词语(即分词)。jieba因其易用性和稳定性,成为中文NLP的基础工具之一。以下是它的核心功能:分词:支持三种分词模式:精确模式(默认):最常用,适合文本分析,准确率高。全模式:输出所有可能的词语组合,速度快但可能有冗余。搜索引擎模式:在精确模式基础上,对长词再次切分,适合搜索引擎应用。关键词提取:基于TF-IDF或TextRank算法提取文本关键词。词性标注(POSTagging):标记词语的词性(如名词、动词等)。支持自定义词典:用户可添加新词或调整词频,提升特定领域的分词效果。jieba的简介以下是它的优势:轻量高效:纯Python实现,依赖少,安装简单(pipinstalljieba)。多语言支持:除简体中文外,支持繁体中文分词。灵活可扩展:支持用户自定义词典和停用词过滤。注意事项:对于未登录词(如网络新词),需手动添加词典或使用动态调整功能(如jieba.suggest_freq)。处理超大文本时,可启用并行分词模式加速(jieba.enable_parallel())。jieba的安装它的安装方法很简单,可以直接使用PIP进行安装:#从国外镜像安装pipinstalljieba#从国内清华镜像源安装pipinstall-i/pypi/web/simplejiebajieba库的常用函数函数名称描述jieba.lcut(s)精确模式,返回一个列表类型。jieba.lcut(s,cut_all=True)全模式,返回一个列表类型。jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型。jieba.add_word(w)向分词的词典增加新词w。范例11-1jieba库的三种分词模式应用jieba库的三种分词模式,对字符串“jieba是优秀的中文分词第三方库”进行分词。importjiebas='jieba是优秀的中文分词第三方库'result=jieba.lcut(s)#精确模式print("精确模式:",result)result=jieba.lcut(s,cut_all=True)#全模式print("全模式:",result)result=jieba.lcut_for_search(s)#搜索引擎模式print("搜索引擎模式:",result)#jieba.enable_paddle()#启动paddle模式。

#result=jieba.cut(s,use_paddle=True)#使用paddle模式#print("paddle模式:",result)jieba.add_word('计算机编程语言')#加入新词result=jieba.lcut(s)#精确模式print("加入新词后的精确模式:",result)范例11-1jieba库的三种分词模式结果如下:精确模式:['Python','是','一门','计算机','编程语言']全模式:['Python','是','一门','计算','计算机','算机','编程','编程语言','语言']搜索引擎模式:['Python','是','一门','计算','算机','计算机','编程','语言','编程语言']加入新词后的精确模式:['Python','是','一门','计算机编程语言']从结果中可以对比看到精确模式将字符串分割成等量的中文词组,而全模式则把字符串的全部分词都列出来了,冗余性比较大。搜索引擎模式首先执行精确模式,然后再对其中长词进一步切分获得最终分词结果。精确模式因为不会产生冗余,比较常用。搜索引擎模式更倾向于寻找短词语,这种方式有一定的冗余度,但冗余度相对全模式少一些。在某个项目中应该选择哪一种分词模式,要看项目的实际需求。jieba库的常用用法归纳功能代码示例说明精确分词jieba.cut(text,cut_all=False)最常用全模式分词jieba.cut(text,cut_all=True)所有可能组合搜索引擎分词jieba.cut_for_search(text)适合搜索场景自定义词典jieba.add_word("新词")

jieba.load_userdict("dict.txt")提高专业词汇识别关键词提取analyse.extract_tags(text,topK=3)TF-IDF算法词性标注pseg.cut(text)返回(词,词性)并行分词jieba.enable_parallel(4)加速大数据处理加载自定义词典文件创建一个user_dict.txt文件,每行一个词(可带词频和词性):自然语言处理10n深度学习5n然后在代码中加载:jieba.load_userdict("user_dict.txt")#加载自定义词典words=jieba.cut("深度学习是人工智能的重要方向")print("/".join(words))#输出:深度学习/是/人工智能/的/重要/方向TF-IDF关键词提取fromjiebaimportanalysetext="自然语言处理是人工智能的重要分支,涉及文本分析、机器翻译等技术"#基于TF-IDF提取前3个关键词keywords=analyse.extract_tags(text,topK=3,withWeight=True)print(keywords)#输出:[('自然语言处理',1.0),('人工智能',0.8),('机器翻译',0.6)]TextRank关键词提取keywords=analyse.textrank(text,topK=3,withWeight=True)print(keywords)#输出:[('自然语言处理',1.0),('人工智能',0.9),('技术',0.7)]词性标注(POSTagging)importjieba.possegaspsegwords=pseg.cut("我爱自然语言处理")forword,flaginwords:print(f"{word}({flag})",end="")#输出:我(r)爱(v)自然语言处理(nz)常见词性标记:n:名词v:动词a:形容词r:代词nz:专有名词并行分词(加速大数据处理)jieba.enable_parallel(4)#开启4线程并行分词words=jieba.cut(text)print("/".join(words))jieba.disable_parallel()#关闭并行模式wordcloud的安装和应用02常用的词云简介以下是Python中常用的5个词云(WordCloud)生成库,以表格形式对比它们的特点和适用场景:库名称主要特点适用场景wordcloud-最流行的词云库

-支持自定义形状、颜色、字体

-依赖

matplotlib

Pillow通用词云生成、文本可视化stylecloud-基于

wordcloud

的简化版

-内置多种风格(渐变、图标形状)

-一键生成美观词云快速生成社交媒体风格的词云pyecharts-支持交互式词云(基于ECharts)

-可结合Web前端展示

-需要

pyecharts

依赖网页嵌入、动态数据展示cnschema-专为中文优化

-支持自定义语义规则

-适合特定领域(如法律、医疗)中文专业文本分析D3.js(Python接口)-通过

python-d3

调用

-高度自定义交互式词云

-学习曲线较陡高级可视化、定制化需求常用的词云简介wordcloud的安装和简介wordcloud库把词云当作一个WordCloud对象。wordcloud.WordCloud()代表一个文本对应的词云,可以根据文本中词语出现的频率等参数绘制词云,绘制词云的形状、尺寸和颜色都可以设定。它的安装方法很简单,可以直接使用PIP进行安装#从国外镜像安装pipinstallwordcloud#从国内清华镜像源安装pipinstall-i/pypi/web/simplewordcloudwordcloud的常用方法在生成词云时,它默认会以空格或者标点为分隔符对目标文本进行分词处理,但是对于中文的文本,分词处理需要提前处理好。一般的做法是先将中文文本进行分词,然后以空格或者标点拼接,再调用wordcloud库函数。方法描述w.generate(txt)向WordCloud对象w中加载文本txt,例如:w.generate("PythonandWordCloud")w.to_file(filename)将词云输出为图像文件,.png或.jpg,例如:w.to_file("outfile.png")范例11-2wordcloud库生成词云应用wordcloud库对以下字符串“PythonJAVAC#C++ASP.NETPythonandWordCloudPython”生成一个词云,并保存为图片。importwordcloudw=wordcloud.WordCloud()#步骤1:配置对象参数w.generate("PythonJAVAC#C++ASP.NETPythonandWordCloudPython")#步骤2:加载词云文本w.to_file("pywordcloud.png")#步骤3:输出词云文件它生成了一张图片pywordcloud.png,效果如图。从图中看到“Python”文字比较大,这是因为它的词频是字符串中最高的。生成指定形状的词云wordcloud也可以生成任何形状的词云,为了获取形状,需要提供一张相应形状的图像。图像最好以PNG格式的图片,其它无关的轮廓或者内容提前使用图像处理软件清除好。对于图片的读取可以使用imageio库。imageio是一个Python库,它提供了一个简单的接口来读取和写入大量的图像数据,包括动画图像、体积数据和科学格式。imageio.imread()#从指定的文件读取图像。wordcloud的常用参数wordcloud处理中文时,还可以指定用到的中文字体。中文字体文件需要与代码存放在同一个目录下。如果不放在同一个目录下,中文字体文件即要提供完整路径。下表是wordcloud的常用参数参数说明示例width,

height词云尺寸(像素)width=800,height=400background_color背景色background_color="white"font_path字体文件路径(解决中文乱码)font_path="SimHei.ttf"mask形状掩码(需

numpy

数组)mask=np.array(Image.open("shape.png"))stopwords停用词集合stopwords={"的","是"}max_words最大显示词数max_words=100generate()从文本生成词云wc.generate(text)generate_from_frequencies()从词频字典生成wc.generate_from_frequencies(freq)举例:从文件读取文本生成词云它的代码如下withopen("article.txt","r",encoding="utf-8")asf:text=f.read()wc=WordCloud(width=800,height=400,background_color="white").generate(text)plt.imshow(wc)plt.axis("off")plt.show()举例:自定义字体和颜色指定中文字体(避免中文乱码)wc=WordCloud(font_path="SimHei.ttf",#使用黑体(Windows自带)

width=800,height=400,background_color="white").generate("自然语言处理是人工智能的重要分支")设置颜色方案fromwordcloudimportWordCloud,get_single_color_funccolor_func=get_single_color_func("blue")#所有词用蓝色wc=WordCloud(color_func=color_func).generate(text)举例:过滤停用词使用stopwords参数排除无意义词(如“的”、“是”):stopwords={"的","是","在"}#自定义停用词wc=WordCloud(stopwords=stopwords).generate(text)或从文件加载:withopen("stopwords.txt","r",encoding="utf-8")asf:stopwords=set(f.read().splitlines())举例:调整词频权重通过generate_from_frequencies()直接传入词频字典freq={"Python":5,"Java":3,"C++":2,"JavaScript":1}wc=WordCloud().generate_from_frequencies(freq)plt.imshow(wc)plt.axis("off")plt.show()范例11-3wordcloud库生成一个心形词云应用wordcloud库对素材中的“phthon.txt”文件中的文本生成一个词云,并保存为图片。这个文本也更换为其它的长文本。原始参照图形如图所示。范例11-3wordcloud库生成一个心形词云它的代码如下importwordcloudfromimageioimportimread#导入imageio模块,用于读取图形#读取文本file=open('python.txt','r',encoding='utf-8')txt=file.read()#读取图片maskImage=imread('love.png')#图片形状#配置参数,并生成词云w=wordcloud.WordCloud(background_color="white",\width=600,height=500,mask=maskImage)w.generate(txt)#生成词云图片w.to_file("pywcloud.png")范例11-3wordcloud库生成一个心形词云它生成了一张图片pywcloud.png。它的宽是600,高是500,使用了图片love.png的词云形状,背景颜色为白色white。单词“Python”的词频最大,其次是“Tutorial”,从词云中可以很直观地看到那些是高频单词。案例:可视化中文词云项目03案例描述扶

温馨提示

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

评论

0/150

提交评论