中华古诗词知识图谱之网页设计及实现(完结)
前台大屏数据可视化
朝代诗集总数-柱状图
统计各朝代的诗集总数,进行柱状图展示
宋词意象词频统计-词云图
将收集的宋词,经过分词器,在进行统计后,得出的意象词频结果,再将其展示成为词云图。
唐朝情感分布-饼状图
分析唐朝诗词,进行七种情感分析,统计情感的占比,绘制饼状图展示。
诗人游历-旅行图
定义了三位出名的诗人:李白、白居易、杜甫。
通过之前对诗人生平的解析,解析出对应的事迹。
事迹实体包含:时间,地点,事迹内容。然后地点是古代地名,通过百度搜索爬取其现代地名,做一个古今地名转换,方便之后的高德地图定位。
设置的轨迹路径是从出生地到其他地方的路线图,触摸地点会展现出对应的时间,事件,出发地,终点地。
宋代词牌名热度-横向柱状图
统计宋代的词牌名,进行频度统计,在展示其效果。
朝代情感-折线图
分析每个朝代的诗词,根据七种情感,找出各朝代情感表达最多的,作为该朝代的主题情感。
宋代诗词类别-南丁格尔图
统计带有类别标签的诗词,进行宋代的诗词类别统计,进行相应的展示。
前端整体数据展示
后端管理
首页
首页展示各朝代的诗词统计,诗人统计信息,以及各朝代的部分诗人浏览展示。
诗词浏览
分为三部分:按照朝代浏览,按照诗人浏览,按照题材浏览
朝代浏览:分为唐宋元明清,五个朝代的诗词浏览。进入每个朝代的诗词浏览,可以看到卡片式的诗词布局展示,分页浏览以及根据诗名模糊查询本朝代的诗词。
朝代诗词浏览
分页浏览
模糊搜索
诗人浏览:分成李白、杜甫、白居易、苏轼、更多...。更多这里有个所有诗人的展示,分页展示所有的诗人,点击后进入单独的诗人诗集页面。在诗人诗集页面,会展示相关的诗人的诗集,同样也支持模糊搜索,分页展示。
李白诗集
分页浏览
更多诗人页面浏览
王昌龄诗集
题材浏览:五言绝句、七言绝句、五言律诗、七言律诗、词、曲。点击对应的详情页面,会展示和诗词题材相关的诗词,同样支持模糊搜索,分页展示。
诗人浏览
按照朝代浏览:唐宋元明清
进入单个朝代页面可以浏览该朝代的诗人,一行设置四个诗人位置,左侧诗人头像,右侧诗人简介,下面是诗人的名字以及查看详情的链接跳转。
分页浏览:分页查询展示该朝代的诗人详情
模糊查询:根据诗人的名字,进行模糊查询
诗人图谱
包含:基本介绍,诗人画像,诗人图谱(朋友圈),诗人轨迹,诗人生平,诗人合称
基本介绍
包含诗人的简介,诗人经历,通过数据库展示。之前重新爬取了诗人的经历,将其对应的html代码爬取到数据库中,因此页面展示的时候就会显得规则化一些,不至于太乱。
诗人画像
诗人画像是对诗人个人简介的内容抽取,抽取出诗人的字,号,出生时间,去世时间,所属朝代,游历地点,合称称号,部分作品集。
分页展示诗人的名句与作品集
诗人的名句来源于:寻古诗词网名句
游历地点来源:通过对诗人的个人生平进行分析,提取其中的地点词,作为诗人的旅行地点词。
诗人图谱(朋友圈)
诗人的朋友圈
通过收集诗人列表,在对诗人的个人生平进行人名提取,提取出同一朝代的诗人。
建立诗人的朋友列表,导入neo4j数据库。
页面展示:
通过D3将诗人关系图谱展示出来,展示诗人的直接朋友,再根据诗人的朋友展示其间接朋友,也就是我们常说的(朋友的朋友,不就是你的间接朋友)
改进:不触摸诗人,展示所有诗人关系;触摸到诗人,只展示其直接朋友关系,其他诗人关系不显示。
不触摸状态:
触摸状态:
诗人轨迹
轨迹地点:通过对诗人的个人生平,进行地点提取,通过古今地点对应表,查询现今地点的经纬度,在高德上可进行标记。
然后通过echarts的轨迹图,将作者的轨迹按照时间的顺序进行展示。
诗词鉴赏
展示的内容:基本介绍、诗人信息、字词解释、情感分析、时空背景
情感分析
通过BILSTM情感分析模型,对单句进行七种细颗粒度的情感分析。然后对整首诗进行情感分析,得出最终的各类情感的占比。
单句情感分析
基本介绍
诗人信息
字词解释
时空背景
创作该诗的前后几年,诗人在何时在哪里做了哪些诗词
机器作诗
实现给定一个开头词或者四个藏头字,数字5或7代表五言或七言。
改良:
①避免叠词出现:
例如:
楼高高高楼 ×
避免叠词产生
②开头词不重复
避免四句古诗,有相同的开题词,导致古诗不通顺
成果展示:
藏头七言古诗
诗词问答
问答主体
#----------诗人相关问题-------------------------------------------------
# 诗人的作品
self.poem_name_qwds=['诗','作品','诗集','诗词']
# 诗人的朋友
self.poemer_friend_qwds=['好友','朋友','知己']
# 诗人的出生年月
self.poemer_born_qwds=['出生','生于']
# 诗人的去世年月
self.poemer_die_qwds = ['死', '去世']
# 诗人的简介
self.author_qwds=['简介','介绍']
# 诗人所属朝代
self.author_desty_qwds=['朝代','朝','年代','代']
# 诗人的合称
self.author_common_name_qwds=['合称','称号']
# 诗人旅行地点
self.author_travel_where_qwds=['旅行','游历','游玩','到','地点']
# 诗人的字
self.author_zi_qwds=['字']
# 诗人的号
self.author_hao_qwds=['号']
# 诗人的诗集总数
self.author_poem_sum_qwds=['总数','合计','总共','诗词总数']
# ----------诗词相关问题-------------------------------------------------
# 诗词的内容
self.poem_qwds=['内容']
# 诗词作诗时间
self.poem_date_qwds=['时间','作诗时间']
# 诗词的创作背景
self.poem_back_qwds=['创作背景','背景']
# 诗词的翻译
self.poem_trans_qwds=['翻译']
# 诗词的作者
self.poem_author_qwds=['作者','诗人']
# 诗词的朝代
self.poem_desty_qwds=['朝代','朝','年代','代']
# 诗词的类别
self.poem_tag_qwds=['类','类别','类型','风格']
# 诗词的形式
self.poem_formal_qwds=['形式','题材']
# 诗词的词牌名
self.poem_cipaiming_qwds=['词牌名']
# 诗词的曲牌名
self.poem_qupaiming_qwds = ['曲牌名']
# ----------类别相关问题-------------------------------------------------
# 所有诗词类别?
self.tag_qwds = ['诗词类别']
# 类别包含哪些诗?
self.tag_poem_qwds=['诗','有']
# ----------形式相关问题-------------------------------------------------
# 所有诗词形式?
self.formal_qwds = ['诗词形式']
# 形式包含哪些诗?
self.formal_poem_qwds=['诗','有']
# ----------词牌名问题-----------------------------------------------
# 所有的词牌名?
self.cipaiming_qwds = ['词牌名']
# 词牌名包含哪些诗?
self.cipaiming_poem_qwds=['诗','有']
# ----------曲牌名问题-----------------------------------------------
# 类所有曲牌名?
self.qupaiming_qwds = ['曲牌名']
# 曲牌名包含哪些诗?
self.qupaiming_poem_qwds = ['诗', '有']
# ----------朝代问题-----------------------------------------------
# 所有的朝代?
self.desty_qwds = ['朝代']
# 朝代包含哪些诗?
self.desty_poem_qwds = ['诗', '有']
# 朝代包含的诗人?
self.desty_author_qwds=['诗人','人']
# ----------诗人合称问题-----------------------------------------------
# 所有合称
self.common_name_qwds = ['诗人合称']
# 诗人合称包含哪些人?
self.common_name_author_qwds=['人','诗人']
# ----------飞花令问题--------------------------------------------------
# 飞花令的诗句
self.word_qwds = ['飞花令']
# 飞花令的诗句
self.word_poem_qwds=['飞花令']
问答展示
总结
整个项目完结!!总结一下,遇到的困难:分析诗人的事迹,七种情感分析,基于规则模板的诗词问答。
遇到困难,认真分析,逐个攻破,保持热爱