1、项目3深入文本进阶处理论文文本相似度计算1实训目标(1)熟练使用PyPDF2库读取PDF文件中的文本。(2) 掌握使用jieba库中的CUt函数对文本进行分词的方法。(3) 掌握将文本数据转化为数字向量形式的方法。(4) 掌握计算余弦相似度的方法。2实训环境环境版本说明Windows1064电脑操作系统Python3.8.5Python语言版本pandas1.3.0主要用于数据读取、清洗等操作NumPy1.21.6主要用于Python中的数值计算jieba0.42.1主要用于文本分词Gensim4.2.0主要用于检索文本、计算文本相似度、训练词向量、建模主题等Matplotlib3.3.0主要
2、用于数据可视化PaddlePaddle2.4.2是一个深度学习框架,提供了高效的计算框架和优化算法PaddleSpeech1.2.0主要用于语音和音频中的各种关键任务的开发scikit-leam1.0.2广泛地用于统计分析和机器学习建模等数据科学领域Librosa0.8.1主要用于分析一般的音频信号,是一个非常强大的Python语音信号处理的第三方库NLTK3.5是一个常用的自然语言处理工具包,可用于文本处理、语义分析、词性标注等SciPy1.7.3是一个科学计算工具包,可用于数学、科学、工程学等领域pyttsx32.9.0主要用于将文本转换成语音3实训说明本实训旨在实现一种基于文本相似度计算
3、的方法,用于比较两篇中文论文之间的相似度。该方法可以帮助研究人员更快速地找到相似研究,并可以帮助研究人员编辑更好地组织内容,避免重复发表。计算文本相似度的基本流程如图3-1所示。图3-1文本相似度计算基本流程图4实训步骤4.1 从PDF中提取文本从PDF中提取文本的作用是将PDF文档中的文本内容转换成可读取的文本格式,便于进行文本分词、文本向量化等处理,以便后续通过向量化的文本进行文本相似度的计算。运用PyPDF2库读取以二进制方式打开的PDF文件,依次读取每页的文本内容,再将每页内容进行整合,如代码3-1所示。代码3-1PDF文本提取importPyPDF2#导入PyPDF2库#读取PDF文
4、件中的文本内容defextract_text_from_pdf(filename):pdf_file=open(filename,rb,)#以二进制方式打开PDF文件pdf_reader=PyPDF2.PdfReader(pdflfile)#仓IJ建PdfReadeI对象num_pages=Ien(pdf_reader.pages)#获取PDF文件中页面的数量content=#初始化文本内容为空字符串#循环读取PDF文件中每个页面的文本内容foriinrange(num_pages):page=pdf_reader.pages|i#获取当前页面content+=page.extract_tex
5、t()#将当前页面的文本内容添加到文本内容变量中PdfLfiIe.close。#关闭PDF文件returncontent#返回PDF文件中的文本内容#读取两个PDF文件中的文本filename!=./data/数字普惠金融促进乡村振兴的影响机制研究孟维福.pdflfilename2=./data/乡村振兴与新型城镇化协同发一基于省级尺度时空演化分析_谢天成.pdftextl=extract_text_from_pdf(filename1)text2=extract_text_from_pdf(filename2)#输出文本内容的前10行Iinesl=textl.splitlines():9Ii
6、nes2=text2.splitlines():9PriIlt(“文本1的前10行为:n,Iinesl)Print(“文本2的前10行为:nIineS2)运行PDF文本提取代码,得到文本1、文本2的提取结果如下。文本1的前10行为:孟维福,李莎,刘靖涵,陈阳:数字普惠金融促进乡村振兴的影响机制研究,一、引言民族要复兴,乡村必振兴。自党的十九大报告中明确提出要实施乡村振兴战略后,2020年12月,习近平总书记在中央农村工作会议上再次强调,要举全党全社会之力推动乡村振兴,这是在我国绝对贫困问题得到历史性的解决之后,乡村振兴战略又丁顺势发力,成为党和国家事业的重中之重;2022年710月,党的二十大
7、报告再次提出要全面推进乡村振文本2的前10行为:,2022年第9期丁一、引言2020年3月,习近平总书记在湖州安吉考察调,研时强调,全面建设社会主义现代化国家,既要有城市现代化,又要有农业农村现代化O乡村振兴战;略规划(20182022年)要求坚持乡村振兴和新型,城镇化双轮驱动;中共中央、国务院发布的关于建立健全城乡融合发展体制机制和政策体系的意见提出,重塑新型城乡关系,走城乡融合发展之路,要4.2 中文分词使用jieba库中的CUt函数对文本进行分词,如代码3-2所示。代码3-2中文分词importjieba#导入jieba库# 中文分词deftokenize(text):words=jie
8、ba.cut(text)returnwordforwordinwords# 对文本进行预处理words1=tokenize(text1)words2=tokenize(text2)# 分别输出两个文本第10行的分词结果Print(文本1第10行分词结果:,.join(wordsl90400)Print(文本2第10行分词结果:,.join(words290J00)运行中文分词代码,得到文本1、文本2的分词结果如下。文本1第10行的分词结果为:解决之后,乡村振兴战略又顺势文本2第10行的分词结果为:城乡融合发展体制机制和政策体系的意见4.3 文本向量化文本向量化需要经过获取单词、创建词向量等步骤
9、将文本数据转化为数字向量形式,以便做进一步的数据分析和模型训练。文本向量化如代码3-3所示。代码3-3文本向量化# 获取所有不同的单词words_set=list(set(wordsl+words2)# 创建词向量vectorl=words1.count(word)forwordinwords_setvector2=words2.count(word)forwordinwords_set# 输出每个文本第10行的向量line_number=10Print(f11文本1第lineHlmber行的向量为:vectorl(line_number-1)*10:line_number*10,)Prin
10、t(fn文本2第line_nUmber行的向量为:vector2(line_number-1)*10:Iine_number*10)运行文本向量化代码,得到文本1、文本2的向量化结果如下。文本1第10行的向量为:0,1,1,0,1,3,1,3,2,0文本2第10行的向量为:1,0,1,15,4,0,0,38,0,14.4计算相似度计算相似度需要经过计算余弦相似度、输出相似度的步骤。计算相似度如代码3-4所示。代码3-4计算相似度importnumpyasnp#导入NumPy库#计算余弦相似度defCOSine.similarity(VeCtor1,vector2):dot_product=np
11、dot(vector1,vector2)norml=np.linalg.norm(vectorl)norm2=np.linalg.norm(vector2)returndot_product/(norml*norm2)#计算textI和text2的相似度sim=cosine_similarity(vectorl,vector2)PrimC相似度为一,sim)#输出相似度运行计算相似度代码,得到相似度的计算结果如下。相似度为:0.9343626546713895从相似度结果可以看出,本任务分析的两篇论文中的话语具有较高的相似度。5实训小结技术点自评达标未达标熟练使用PyPDF2库读取PDF文件中的文本能够使用jieba库中的CUt函数对文本进行分词能够将文本数据转化为数字向量形式的方法能够计算余弦相似度心得体会(如遇到的问题及解决方法、存在的不足之处等):