- 收藏
- 加入书签
基于《三侠五义》文本对其主人物关系进行“远读”分析
摘要:[目的/意义]旨在为文本类机器阅读提供一种可视化与分析的方法。[方法/过程]基于TF-IDF算法,在研究《三侠五义》原始文本的基础上,利用jieba 自身的语料库,分析词语在文本章节中的权重,利用词性分析方法,挑选出符合人名特征的词语,根据各人名间关联关系的强弱,组成联通平面图。[结果/结论]通过此种方法实现了对文本阅读的远读处理,展示文章内容的大概。另外,积极探索此次分词效果不好的原因,为今后文本阅读分词以及提取关键词、人名提供借鉴。
关键词:《三侠五义》 TF-IDF 算法 远读 联通平面图
1. 引言
《三侠五义》是清代小说家石玉昆所创作的一部长篇侠义公案小说,被誉为中国古代武侠小说的开山鼻祖。文章以包公与南侠展昭、双侠丁兆兰、丁兆蕙、北侠欧阳春、钻天鼠卢方、彻地鼠韩彰、穿山鼠徐庆、翻江鼠蒋平、锦毛鼠白玉堂等人物为中心,来展现“侠之大者,为国为民”的本质。而“远读”强调的是“距离是认知的条件”。伴随着现代信息技术的到来,人工智能愈加发达,这也为“远读”创造了条件。通过远离文本材料,更多的关注到文本的主题、修辞以及语言风格等方面,从丰富的语言材料中对其文本进行抽象化。
小说三要素为环境、人物和情节。其中人物为串联故事情节的主要元素。本文利用自然语言处理技术,通过对《三侠五义》文本进行分词、词性标注以及对人物之间关系的探索,通过对文本人名提取,查找不同人名间相关关系,建立联通平面图,通过可视化的方法,简单明了的提取人物关系,以对文本进行大致的了解。
2.相关工作
Python文档中的jieba分词库基于TF-IDF算法而实现的快捷化运算,本文第一部对中文进行分词处理,便是基于此而产生的。jieba是一个较好的中文分词词库,普适应较强。此外还有一些专门的分词词库,如对人民日报进行分词处理时可以采用“人民日报语料库”,前人已经进行了较为完善的整理,这里不一一赘述。对于《三侠五义》文本的分析,暂时先采取jieba中文分词的模糊处理。
2.1分词
jieba分词基于前缀词典,利用Tier词典进行高效扫描,目的是将字符串整合成树形,每一节点保留一个字符,多个字符相连组成词语,并对其进行编号,以便后续使用处理。之后建立贝叶斯网络,找出各个词语相连成句的最大概率,划定最终切分方案。
2.2提取关键词
本文利用TF-IDF算法对所取得的关键词赋予权重,对每一章节选择权重较高的20个词语作为关键词进行提取。
TF 是 termfrequency 的简称,指一词语在本章节中出现的频次;ni,j即指的是某一单一词语;∑knk,j指文本中本章节全部词语的出现频次;由此得出某一词语在这一章节中的重要程度,作为算法的第一步。
IDF是inverse documentfrequency 逆文本频率的简称,相对于整个章节而言,从整个章节出发,如果这个词语在每个章节出现的次数都非常多,那么他的idf 值会偏低,如果某一个词语在其他文本中都很少出现,那么他的 idf 反而会偏高,以此来计算某一词语对某一特定章节重要程度。本文 idf 公式取lg的目的是为了使结果图像保持在一个可以观察的合适的区间,无特殊含义。
2.3 人物 “共现”关系构建
人物共现关系中的“共现”是基于统计学的方法,统计在每一段中人名出现的频次,以及与其相关人物出现的频次,从而建立关联列表,组成联通平面图。本文通过词性分析,调用 jieba 分词库,划分词性,找出人名,并建立主要人物相关关系。通过“导航搜索”发现:相对于“包公”而言,别名“包拯”“包相公”不多于十次,因此其他别名可忽略不计;“白玉堂”外号“锦毛鼠”,但少有人如此称呼,且多与“白玉堂”连用,偶尔有人称“白玉堂”为“玉堂”,或仅凭“玉堂”作为“白玉堂”的名称代号,因此以“白玉堂”进行搜索;“蒋平”“徐庆”“韩彰”“卢方”均可用其本名进行搜索;“欧阳春”可与“北侠”同名建立词典;“展昭”与“南侠”建立共同词典;“丁兆兰”“丁兆蕙”与“双侠”建立共同的词典。
2.4 联通平面图介绍
G = (V, E)
其中G为联通平面图集合;V为非空集合,为联通平面图的顶点集;E为非空集合,为联通平面图的边集。将每个人物按照编号分别命名绘制图形,联系越密切线条越粗,反之亦然。
3. 实现过程及结果展示
3.1 分词及提取关键词过程展示
因为文本共120章,每章截取20个词语,内容过于庞杂。为节省空间,本文仅展示前5章关键词提取结果以作展示:
从文本提取出来结果可以得知,大体上分词结果较为合理。但是对于“包相公”一词就被划分为了“包”和“相公”两个词语,由于 jieba 自身语料库并没有包含“包相公”一词,或者说“相公”一词出现的概率大于“包相公”一词出现的概率所导致的。
下面本文为了更直观表现某一词语在全文中所占有的比重,将采取柱状图的方式对全文出现频率最高的50个词语进行展示,以便读者更直观对《三侠五义》中突出名词有所了解。
本文将排名前八的词语进行表格化展示。由此看出机器分析与人类读书所提取的关键词几乎一致;当然不可避免的是机器也会提取一些助词对文本分析进行干扰。大体来看,机器提词“包公”排名第一,证明文本中所有案件都是围绕包公断案展开的这一事实;同时在后续文本中,机器提词也出现了“白展堂”“展堂”“展爷”,既说明了白展堂在文本中的重要作用,同时也展示了尽管机器分词效果欠佳、弊端明显,但是误差仍在可接受的范围之内。
3.2 人物关系图形构建
根据统一编码方式对文章分词性后的数据进行挑选,判断词性,如果是“人名”编码为“nr”加入姓名列表。我设定如果在同一段中出现的两个人名是表示互相有关联关系的,若同时出现那么他们边的权重就设为1,不断进行累计处理。最终进行过滤冗长边,也即边的数值较小的元素被筛查掉。
3.3 人物构建关系结果展示
由于人物众多,图片呈现黑块状态。接下来,将进行手动筛选主要人物从而呈现仅有《三侠五义》的人物关系图谱。并对对象进行筛选,如果与《三侠五义》人物边的权重在1000以上则保留,否则删除不考虑。得出“包公”与展爷、孙策、李保、太后、赵虎、白玉堂、郭槐、包兴、杨忠、公孙先生联系较为密切;“白玉堂”与展爷、北侠、蒋爷(蒋平)、包公、卢方关系密切;“蒋平”和卢方、白玉堂联系较为密切;“徐庆、韩彰”没有与人联系超过1000;“卢方”与蒋平、白玉堂、包公联系较为密切;北侠(欧阳春)与倪忠、龙涛、蒋爷、马强、钟雄、艾虎联系密切;“双侠”没有与人关系超过1000;“展昭”与白玉堂、包公、孙策关系密切。最构建《三侠五义》主要人物关系图。
4. 结语
本文意图通过分词、挑选人名、建立有向图等方式形成“主要人物关系图”,利用可视化的方式,通过线条粗细,描述各个对象之间关系的强弱。人物为小说的重要要素之一,通过人物间的相互关系,组成了各个事件之间的爱恨情仇。本文也为后续对文本分析提供了借鉴。目前机器分词也出现了小干扰项,诸如分词效果不好、对人名提取误差等因素,在后续研究实践中将重点加以解决。

京公网安备 11011302003690号