1、项目2初识文本基础处理读取与分析语料库1实训目标(1) 能够使用nltk.corpus中的PlaintextCorpusReader函数获取语料库中的文本标识列表。(2) 能够使用count函数统计词语使用次数流程。(3) 掌握统计高频词频、查询词汇在指定区间内的词数量的方法。2实训环境环境版本说明Windows1064电脑操作系统Python3.8.5Python语言版本pandas1.3.0主要用于数据读取、清洗等操作NumPy1.21.6主要用于Python中的数值计算jieba0.42.1主要用于文本分词Gensim4.2.0主要用于检索文本、计算文本相似度、训练词向量、建模主题等Ma
2、tplotlib3.3.0主要用于数据可视化PaddlePaddle2.4.2是一个深度学习框架,提供了高效的计算框架和优化算法PaddleSpeech1.2.0主要用于语音和音频中的各种关键任务的开发scikit-leam1.0.2广泛地用于统计分析和机器学习建模等数据科学领域Librosa0.8.1主要用于分析一般的音频信号,是一个非常强大的Python语音信号处理的第三方库NLTK3.5是一个常用的自然语言处理工具包,可用于文本处理、语义分析、词性标注等SciPy1.7.3是一个科学计算工具包,可用于数学、科学、工程学等领域pyttsx32.9.0主要用于将文本转换成语音3实训说明语料库
3、是指大量的、有组织的、用于研究目的的文本或语言样本集合。语料库可以来自各种来源,如书籍、新闻、网页、社交媒体、口语等。读取与分析语料库任务是自然语言处理中的一项基本任务,涉及从语料库中提取有用信息并做进一步分析.该任务通常作为中文分词、词性标注、中文命名实体识别、提取文本关键词等薪级任务的预处理步骤。本任务使用中IH四大名著进行作品集语科库构建,语料库如图2-1所示,通过对四大名著的语科障分析,学生可以认识文学,感受经典,增强文化认同感、文化自信心、民族自登啦a*MHWZtXl*3WftEaUiSIXi图2T语料库示意图4实训步骤4.1 读取作品集语料库读取一个位于本地存放四大名著作晶集文本的
4、目录卜的所有文件,再获取文件列表并输出.如代码2-1所示.代码2-1获取保存的文件列表imo!tnl(kIrtMnn!lk.bckImP(Ml,fromnlIk.corpusinpi)11PhinltxtCiHpuReader*本地加孜语料诉xpus.roo=data#本地存放泅人名著作晶集文本的目.境A援取语料库中的文本标IR列表WOniliXbi=Pbink!lCorpuRuufcr(m0=ckfiIcidv=.*.cncodi11g=utf8*)fileJist=wordlids()#获取文件列丧Primf文件列反为:OIjHsd#将出文件列半在代码21中,使用到nlk.corpus中的
5、PkliIMeXlCorpusReader函数获取语料库中的文本标识列表,其中,PIaimCXICrpusRvder函数的常用参数说明如表2所示。表2-1PiaintextCorpusReader函数的常用参数说明.*说明11xm接收*r表示研科蟀所在的根H录路径,无默认的接收str,表示用于匹配包含在语料库中的文件名,可以使用正则表达式进行模fileids式匹配。无默认值encoding接收str,表示语料库文件的编码方式。默认为utf8运行代码2-1,输出文件列表如下,表明本地文件目录包含了4个文本文件,分别是三国演义、水浒传、红楼梦和西游记。文件列表为:三国演义txt,水浒传.txth红
6、楼梦.tJ西游记.tx门此外,用户还可以通过在线加载获得四大名著的语料库,如代码22所示。代码22在线加载四大名著语料库importrequestsurls=“红楼梦”:“西游记”:“水浒传”:”三国演义”:novels=)fortitle,urlinurls.items():response=requests.get(url)response.encoding=utf-8text=response.textnovelstitle=textPrint(title己经成功加载到内存中。)运行代码2-2,已在线加载获得四大名著的语料库,过程结果如下。红楼梦已经成功加载到内存中。西游记已经成功加载到
7、内存中。水浒传已经成功加载到内存中。三国演义已经成功加载到内存中。构建完成语料库之后,可以进行读取语料库、查询词频并查看部分文本、统计高频词频、查询词频在指定区间内的词数量等相应操作。4.2文学名著语料库分析1.读取语料库导入西游记语料,在不重复词的条件下统计西游记语料中总用词量和平均每个词的使用次数,如代码2-3所示。代码2-3统计西游记语料中总用词量和平均每个词的使用次数withOPenC./data/西游记.txt:T,encoding=,utf-8)asf:#打开文本fiction=f.read()#读取文本len(set(fiction)#统计总用词量len(fiction)/lcn
8、set(fiction)#平均每个词的使用次数Print(总用词量为:,len(set(fiction)Print(平均每个词的使用次数为:,len(fiction)/Ien(Set(fiction)运行代码2-3,得到总用词量和平均每个词的使用次数如下。总用词量为:4290平均每个词的使用次数为:172.95617715617715由代码2-3的运行结果,可以看出西游记语料总共使用了4290个词,平均每个词约使用172次。2.查询词频通过CoUnt函数分别统计查看西游记文本中的“唐僧”“孙悟空”“白龙马”词语的使用次数,如代码2-4所示。代码2-4查看西游记文本中的“唐僧”“孙悟空”“白龙
9、马”词语的使用次数Print(唐僧的使用次数为:,fiction.countC唐僧,)Print(孙悟空的使用次数为:,fiction.count(孙悟空,)Print(白龙马的使用次数为:,fiction.count(白龙马)运行代码2-4,输出“唐僧”“孙悟空”“白龙马”的使用次数如下。唐僧的使用次数为:1005孙悟空的使用次数为:126白龙马的使用次数为:5查看西游记部分文本,如代码2-5所示。代码2-5查看西游记部分文本Print(部分文本为:,fictionl112:1206)#查看西游记部分文本运行代码2-5,输出西游记部分文本如下。部分文本为:每受天真地秀,日精月华,感之既久,遂
10、有灵通之意。内育仙胞,一日迸裂,产一石卵,似圆球样大。因见风,化作一个石猴,五官俱备,四肢皆全。便就学爬学走,拜了四方。目运两道金光,射冲斗府。惊动高天3 .统计高频词频统计高频词频(即高频词次数),并输出前30个高频词,如代码2-6所示。代码2-6统计高频词次数并输出前30个高频词fdist=FreqDist(fiction)#生成fiction文本的词频Print(前30个高频词或高频标识符为:,fdist.most_common(30)#统计前30个高频词或高频标识符运行代码2-6,输出前30个高频词如下。前30个高频词或高频标识符为:(,56958),(1,20979),(,14000
11、),(:,11790),(,11142),(”11116),(道,11078),(不,8882),7956),(T,7749),(那7516),(n,7302),(我,7224),(是,6497),(!6045),(来5994),(他,5751),(个,5704),(行,5629),(你,5522),(的5426),(者4989),(有4487),(大,4231),(?3893),(得3845),(这3807),(上3721),(去3699),(见3428)4 .查询词频在指定区间内的词数量查询词频在指定区间内的词数量,如代码2-7所示。代码2-7查询词频在指定区间内的词数量fromcolle
12、ctionsimportCounterW=Counter(fiction)# 查询词频在099的词量Print(词频在0-99的词量为:,len(wforWinW.values()ifw100andw100Oandw5000)运行代码2-7,输出词频在指定区间内的词数量如下。词频在0-99的词量为:3358词频在101-999的词量为:796词频在100l4999的词量为:Ill词频在5()00以上的词量为:215实训小结技术点自评达标未达标能够掌握nltk.corpus中的PlaintextCorpusReader函数能够使用count函数统计词语使用次数能够掌握统计高频词频、查询词汇在指定区间内的词数量的方法心得体会(如遇到的问题及解决方法、存在的不足之处等):