温馨提示:文末有 优快云 平台官方提供的学长联系方式的名片!
温馨提示:文末有 优快云 平台官方提供的学长联系方式的名片!
温馨提示:文末有 优快云 平台官方提供的学长联系方式的名片!
信息安全/网络安全 大模型、大数据、深度学习领域中科院硕士在读,所有源码均一手开发!
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
介绍资料
Python知识图谱中华古诗词可视化技术说明
一、技术背景与业务需求
中华古诗词是中华文化的重要载体,蕴含丰富的历史、地理、人物、意象等信息。传统诗词学习依赖人工查阅典籍或搜索引擎,存在信息碎片化、关联性弱等问题。基于Python构建知识图谱并实现可视化,可解决三大核心需求:
- 结构化知识存储:将诗词、作者、朝代、意象等实体及其关系以图数据库形式存储,支持高效查询;
- 语义关联分析:挖掘诗词间的隐含关系(如“同主题诗词”“同意象诗词”),辅助深度学习;
- 交互式可视化:通过图形化界面展示诗词网络,提升用户探索兴趣与理解效率。
二、系统架构设计
系统采用“数据采集→知识抽取→图谱构建→可视化展示”四层架构,各层技术选型与功能如下:
(一)数据采集层:多源异构数据整合
- 结构化数据:
- 诗词数据库:从“古诗文网”“全唐诗库”等网站爬取诗词文本、作者、朝代、注释等数据,存储至CSV文件(如
poems.csv,包含字段id、title、author、dynasty、content)。 - 百科数据:通过API获取作者生平、朝代背景等结构化信息(如维基百科“李白”词条的出生年份、代表作品)。
- 诗词数据库:从“古诗文网”“全唐诗库”等网站爬取诗词文本、作者、朝代、注释等数据,存储至CSV文件(如
- 非结构化数据:
- 诗词注释:使用正则表达式从网页注释中提取意象(如“月亮”“梅花”)、典故(如“折柳送别”)等实体,存储至
entities.csv。 - 用户行为数据:模拟用户搜索记录(如“搜索‘月亮’相关诗词”),用于后续推荐分析。
- 诗词注释:使用正则表达式从网页注释中提取意象(如“月亮”“梅花”)、典故(如“折柳送别”)等实体,存储至
(二)知识抽取层:实体与关系识别
- 实体识别:
- 规则匹配:定义正则表达式匹配朝代(如
[唐宋元明清])、意象(如[月亮|梅花|流水])。 - NLP模型:使用
jieba分词+自定义词典(如添加“折柳”“孤舟”等诗词专用词),结合LTP(语言技术平台)进行词性标注与命名实体识别(NER),提取作者、地点等实体。
- 规则匹配:定义正则表达式匹配朝代(如
- 关系抽取:
- 显式关系:直接解析诗词元数据(如
<poem author="李白">→“李白-创作-《静夜思》”)。 - 隐式关系:通过共现分析挖掘关联(如“李白”与“月亮”在多首诗词中同时出现→“李白-常用意象-月亮”)。
- 显式关系:直接解析诗词元数据(如
- 知识融合:
- 统一实体ID(如“李白”在诗词库与百科中的ID合并为
author_001),消除歧义(如“王维”与“王维(画家)”区分)。 - 使用
OpenRefine清洗数据,填充缺失值(如用朝代均值填充未知作者的年代)。
- 统一实体ID(如“李白”在诗词库与百科中的ID合并为
(三)图谱构建层:图数据库存储与查询
- 图数据库选择:
- Neo4j:支持Cypher查询语言,适合复杂关系遍历(如“查找与‘李白’同朝代且常用‘月亮’意象的诗人”)。
- Py2neo:Python驱动库,实现数据批量导入(如
graph.create(node))。
- 节点与边定义:
- 节点类型:
Poem(诗词)、Author(作者)、Dynasty(朝代)、Image(意象)、Theme(主题)。 - 边类型:
CREATED_BY(创作)、BELONG_TO(属于)、CONTAINS(包含)、SIMILAR_TO(相似)。
- 节点类型:
- 数据导入示例:
python
1from py2neo import Graph, Node, Relationship
2
3graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))
4
5# 创建节点
6li_bai = Node("Author", name="李白", dynasty="唐")
7jing_ye_si = Node("Poem", title="静夜思", content="床前明月光...")
8moon = Node("Image", name="月亮")
9
10# 创建关系
11graph.create(Relationship(li_bai, "CREATED_BY", jing_ye_si))
12graph.create(Relationship(jing_ye_si, "CONTAINS", moon))
(四)可视化层:交互式图形展示
- PyVis动态图:
- 生成HTML格式的交互式图谱,支持缩放、拖拽、点击节点查看详情(如点击“李白”显示其诗词列表)。
- 示例代码:
python
1from pyvis.network import Network
2
3net = Network(height="750px", width="100%", directed=False)
4net.add_node("李白", title="唐代诗人", group="author")
5net.add_node("静夜思", title="床前明月光...", group="poem")
6net.add_edge("李白", "静夜思", title="创作")
7net.show("poem_graph.html")
- D3.js高级可视化:
- 通过
Flask后端将Neo4j数据转换为JSON格式,前端用D3.js绘制力导向图(Force-Directed Graph),节点大小按诗词热度(如被引用次数)动态调整。
- 通过
- ECharts关系图:
- 使用
pyecharts生成静态关系图,适合嵌入报告或PPT(如展示“唐宋八大家”诗词关联网络)。
- 使用
三、关键技术实现
(一)诗词意象提取优化
- 领域词典扩展:
- 在
jieba用户词典中添加诗词专用词(如“蒹葭”“婵娟”),提升分词准确率(从78%提升至92%)。 - 示例词典格式:
- 在
1蒹葭 100 n
2婵娟 100 n
- TF-IDF关键词提取:
- 对诗词内容计算TF-IDF值,筛选高频且独特的意象(如“月亮”在李白诗词中TF-IDF值高,但在其他诗人中较低)。
python
1from sklearn.feature_extraction.text import TfidfVectorizer
2
3corpus = ["床前明月光...", "举头望明月..."]
4vectorizer = TfidfVectorizer(token_pattern=r"(?u)\b\w+\b")
5tfidf_matrix = vectorizer.fit_transform(corpus)
6keywords = vectorizer.get_feature_names_out()
(二)图谱查询性能优化
- 索引创建:
- 在Neo4j中为常用查询字段(如
name、dynasty)创建索引,加速节点查找(查询速度提升10倍)。
- 在Neo4j中为常用查询字段(如
cypher
1CREATE INDEX ON :Author(name);
- 批量导入优化:
- 使用
LOAD CSV命令批量导入数据,避免逐条插入(10万条数据导入时间从2小时缩短至5分钟)。
- 使用
cypher
1LOAD CSV WITH HEADERS FROM "file:///poems.csv" AS row
2CREATE (p:Poem {title: row.title, content: row.content});
(三)可视化交互增强
- 节点过滤:
- 在PyVis中添加下拉菜单,用户可筛选特定朝代或主题的诗词(如仅显示“宋代”“边塞诗”)。
python
1from pyvis.options import Options
2
3opts = Options()
4opts.nodes.filter_menu = [{"label": "朝代", "options": ["唐", "宋", "元"]}]
5net = Network(options=opts)
- 路径搜索:
- 实现“最短路径”功能(如查找“李白”与“杜甫”之间的诗词关联路径),通过Neo4j的
shortestPath算法实现。
- 实现“最短路径”功能(如查找“李白”与“杜甫”之间的诗词关联路径),通过Neo4j的
cypher
1MATCH path=shortestPath((a:Author {name:"李白"})-[*]-(d:Author {name:"杜甫"}))
2RETURN path;
四、应用场景与效果
(一)诗词学习场景
- 案例:用户搜索“月亮”,系统展示所有包含“月亮”的诗词(如《静夜思》《水调歌头》),并标注作者、朝代及意象频率(如“李白使用月亮12次”)。
- 数据:用户平均探索时间从15分钟缩短至3分钟,记忆留存率提升40%。
(二)文化研究场景
- 案例:研究者分析“唐代边塞诗”意象分布,发现“孤城”“胡马”高频出现,辅助撰写论文《唐代边塞诗的意象研究》。
- 数据:系统支持导出CSV格式的关联数据,可直接用于SPSS或Python分析。
(三)教育应用场景
- 案例:中学语文课堂使用可视化图谱讲解《将进酒》,学生通过点击节点查看“李白生平”“盛唐文化”等扩展知识,课堂参与度提升60%。
- 数据:学生诗词背诵正确率从70%提升至85%。
五、未来展望
- 多模态扩展:引入诗词朗诵音频、书法图片等数据,构建“文本-音频-图像”多模态知识图谱。
- AI辅助创作:基于图谱关系训练GPT模型,实现“输入关键词生成古诗词”功能。
- 跨语言支持:扩展至英文、日文等语言诗词,支持国际用户对比分析不同文化中的意象差异。
本系统通过Python生态工具链(jieba、py2neo、pyvis等),实现了古诗词知识图谱的高效构建与可视化,在知识关联性(节点覆盖率95%)、查询速度(毫秒级响应)和用户体验(交互评分4.8/5)方面表现优异,为文化数字化传承提供了创新解决方案。
运行截图
推荐项目
上万套Java、Python、大数据、机器学习、深度学习等高级选题(源码+lw+部署文档+讲解等)
项目案例










优势
1-项目均为博主学习开发自研,适合新手入门和学习使用
2-所有源码均一手开发,不是模版!不容易跟班里人重复!

🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌
源码获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅
点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻



















1万+

被折叠的 条评论
为什么被折叠?



