Python语言程序设计基础 课件 第8章 中文文本分析基础与相关库_第1页
Python语言程序设计基础 课件 第8章 中文文本分析基础与相关库_第2页
Python语言程序设计基础 课件 第8章 中文文本分析基础与相关库_第3页
Python语言程序设计基础 课件 第8章 中文文本分析基础与相关库_第4页
Python语言程序设计基础 课件 第8章 中文文本分析基础与相关库_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第8章中文文本分析基础与相关库8.1中文分词jieba库8.2词云(wordcloud)库8.3社交关系网络分析networkx库8.4中文文本分析基础与相关库的应用实例本章小结

8.1中文分词jieba库

作为一款由Python编写的中文分词工具,jieba库以其高效、简单易用的特点,成为了中文自然语言处理领域的重要工具之一。它不仅可以对中文文本进行精准的分词,还支持词性标注、关键词提取等功能,为中文文本的分析和处理提供了强大的支持,库的主要函数如表8-1所示。

8.1.1中文分词

所谓分词,就是将连续的字序列按照一定的规范重新组合成语义独立的词序列的过程。作为表意文字的代表——中文和字母文字的代表——英文,二者在分词的难度上存在显著差别。英文的单词之间以空格作为自然分界符,而中文只是在字、句和段上通过明显的分界符来简单划界,在词这个层面上却没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比英文要复杂、困难得多。

【例8-1】

精确模式分词。尽可能精确地切分句子。

【例8-2】

全模式分词。尽可能地将可以成词的词语都扫描出来。

【例8-3】

搜索引擎模式分词。结合以上两种模式,尽可能精确且尽可能全面的分词。

8.1.2词性标注

词性标注是自然语言处理中的重要任务之一,它涉及对文本中每个词语所表达的语法和语义信息进行准确分类的过程。通过对文本中的词语进行词性标注,我们能够更深入地理解文本的结构和含义,为后续的文本分析和处理提供重要支持。

在词性标注中,每个词语都被赋予一个特定的词性标签,例如名词、动词、形容词等,以反映其在句子中的作用和语法功能。

常用的词性编码及含义如表8-2所示。

【例8-4】

在使用词性标注时,需要导入jieba.posseg模块。

【例8-5】

利用词性标注对文本中的某一类词性进行筛选。

8.1.3关键词提取

在处理文本数据时,识别关键信息是非常重要的。关键词提取是一种常见的文本处理技术,它能够自动地从文本中提取出具有重要意义的词语或短语,帮助我们快速了解文本的主题和内容。通过关键词提取,我们可以从海量的文本数据中快速发现和识别出关键信息,为后续的文本分析、信息检索等任务提供重要支持。

关键词提取技术广泛应用于各种文本处理场景,包括文本摘要生成、舆情分析、信息检索等。

在jieba库中,常用的关键词提取算法主要包括TF-IDF和TextRank算法。TF-IDF算法是一种常用的文本特征提取方法,它通过计算词语在文档中的频率和在整个语料库中的逆文档频率来评估词语的重要性。而TextRank算法是一种基于图的排序算法,它利用词语之间的相互关系构建图,并通过迭代计算词语的权重来确定关键词。

【例8-6】TF-IDF算法。

运行结果如下:

【例8-7】TextRank算法。

运行结果如下:

8.1.4用户词典支持

在分词过程中,我们可以使用jieba.add_word()函数将新词语添加到分词词典中,也可以指定自己预定义的词典,来帮助jieba划分不易识别的词语,提高开发效率。

【例8-8】

引入新词的用法。

【例8-9】

将“张教授”和“信息工程系”写入到“mydict.txt”文本文件中并导入到jieba中。

8.2词云(wordcloud)库

词云(wordcloud)是一种可视化技术,用于展示文本数据中词语的频率或重要性。它通过将文本中出现频率较高的词语以视觉上吸引人的方式展现出来,从而直观地展示文本的主题和关键信息。作为Python语言中非常优秀的第三方库,wordcloud库常被用在文本数据的关键词展示、文本摘要、主题分析等场景中,为用户提供了一种直观、有趣的方式来理解文本数据。

对于wordcloud库的安装,我们可以在文件下载路径的目录中执行命令pipinstallwordcloud。当我们需要使用时,仅需在代码中importwordcloud(导入库)即可。wordcloud库中常用的函数及参数如表8-3所示。

8.2.1词语词频统计

在通过词云更加清晰直观地获取文本中的信息时,我们需要对文本中的词语词频进行统计。首先,引用习近平总书记在重庆召开新时代推动西部大开发座谈会所发表的内容中的一段作为我们的分析文本并写入“Test_text.txt”文本中,如图8-1所示。图8-1“Test_text.txt”文本

【例8-10】

词频统计。

【参考代码】

8.2.2词云的可视化展示

有了包含词语和词频的词典后,我们可以对其进行词云的可视化展示,具体如下:

【例8-11】

制作词云。

程序运行完毕后,会生成如图8-2所示的词云。图8-2“result_cloud.png”

8.2.3自定义配置

词云自定义配置可以涵盖诸多方面,如字体样式、词语数量限制、词语颜色设置等,通过灵活运用这些配置选项,我们可以创造出形态各异、富有个性的词云图。下面将介绍如何利用这些配置选项实现词云图的个性化定制,为我们的文本数据赋予更加出色的表现力。

我们利用枫叶图(图8-3)来为词云更改形状遮罩,同时将字体改为楷体。具体代码见例8-12。图8-3“leaf.png”枫叶图

【例8-12】

自定义词云。

输出的图片如图8-4所示。图8-4“leaf_cloud.png”

8.3社交关系网络分析networkx库

社交网络分析是一种研究社会关系和网络结构的方法,通过对个体之间的连接模式和关系特征进行分析,揭示社会网络的结构、功能和动态。在社交网络中,个体(节点)之间的关系(边)可以是各种类型的,如友谊关系、合作关系、信息传播关系等。社交网络分析旨在探索人们之间的相互联系、信息流动和影响传播等,以及揭示这些联系和流动的规律、特征和动态变化。

安装networkx需在系统命令行中执行命令pipinstallnetworkx。networkx库中的主要函数如表8-4所示。

【例8-13】

尝试绘制社交关系网络图。

最终我们得到的结果如图8-5所示。图8-5社交关系网络图

8.4中文文本分析基础与相关库的应用实例

8.4.1分词及词频统计将提前准备好的《水浒传》txt文本(图8-6)读取到我们的字符串类型的变量text中,然后进行分词,并筛选出小说中的人物并统计其出现的次数。最终将结果输出到“词频.txt”中。具体如下所示。图8-6“水浒传.txt”

【例8-14】

分词筛出小说人物并统计词频。

【参考代码】图8-7输出结果“词频.txt”

最终我们得到的结果如图8-7所示,但我们发现“梁山泊”并不属于人物名词,并且“呼延灼”的名字被错误地分词成了“呼延”,除此之外还有一些分词错误。所以我们需要在代码第七行词性标注之前添加自定义的词性标注词典“新词修改.txt”(图8-8),并将第七至九行代码更改如下:图8-8“新词修改.txt”

最终我们得到了更新的人物名词和词频排序结果,如图8-9所示。图8-9修改后的“词频.txt”

8.4.2制作词云

我们可以利用词云将《水浒传》中的高频人物呈现出来,具体代码如下:

最终得到的结果如图8-10所示。图8-10词云“水浒传主要人物图.png”

8.4.3章回拆分及分析

1.章回拆分

在分析前,我们需要找到每一回的起始索引位置和结束索引位置来确定每一回的文字范围。代码如下:

最终,得到的每回的起始和结束索引如下:

2.分析主要反派——“高太尉”

高俅作为主要的反面角色,与蔡京、童贯、杨戬同为《水浒传》的四大奸臣。高俅本是浮浪子弟,依靠自己左右逢源的处事能力和高超的蹴鞠本领,最终身居太尉。高俅与梁山泊不少英雄豪杰都闹下了矛盾,最著名的便是把林冲逼上梁山。他的出现推动了整个故事的发展,同时也引导着梁山众兄弟悲惨故事的结局。接下来我们统计高俅在每回中出现的次数。代码如下:

利用Matplotlib库,我们可以用折线图更直观地看到高俅的出现次数,如图8-11所示,结合实际统计数据,我们看到,高俅的身影贯穿了整个水浒传,在小说的前中后期都有很高的出场率,结合文本内容我们看到,高俅前期逼反了林冲,中后期曾经三次攻打梁山失败,最后又设计害死宋江和卢俊义,是北宋末期官逼民反的典型反面官员代表人物。图8-11高俅每章回出现的次数

3.分析段落篇幅

我们可以通过统计每回的段落数和字数来侧面推测出每章回故事的复杂和曲折程度,然后利用Matplotlib库中的散点图将结果呈现出来。代码如下:

程序执行结果如图8-12所示。图8-12每章回篇幅

4.人物社交关系分析

利用之前统计词频算出来的主要人物“词频.txt”来分析这20个人之间的亲疏关系,可以认为,在同一段落中出现的两个人之间一定存在某种联系。于是我们以段落为单位,

温馨提示

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

评论

0/150

提交评论