基于知识图谱与AI的古诗词情感分析系统设计

发布时间:2026/7/21 8:34:58

基于知识图谱与AI的古诗词情感分析系统设计 1. 项目背景与核心价值中华古诗词作为传统文化瑰宝其数字化研究一直存在两大痛点一是分散的诗词数据缺乏结构化关联二是传统分析方法难以量化诗词情感特征。这个毕业设计项目创新性地融合知识图谱与AI技术构建了包含5.2万首诗词、1.8万位诗人的知识网络并实现了情感向量化分析。我在实际开发中发现这种技术组合不仅能解决学术研究中的关联分析难题更为文化传播提供了可视化交互新范式。2. 系统架构设计2.1 整体技术栈系统采用前后端分离架构后端Python 3.8 Flask框架数据层Neo4j图数据库(存储知识图谱)MySQL(结构化数据)AI组件Transformers库(BERT模型微调)SnowNLP(情感分析)可视化EchartsPyVis网络图辅助工具Scrapy爬虫框架Jieba分词技术选型要点Neo4j的Cypher查询语言特别适合处理诗人-诗词-朝代的复杂关系网络实测比关系型数据库查询效率提升7倍以上。2.2 知识图谱构建流程数据采集爬取《全唐诗》《宋词三百首》等权威源数据通过正则表达式提取实体诗人、朝代、地名、意象人工标注3000首诗词的情感标签喜/怒/哀/乐/思图谱建模# Neo4j节点关系示例 CREATE (p:Poet {name:李白, dynasty:唐}) CREATE (w:Work {title:静夜思, style:五言绝句}) CREATE (e:Emotion {type:思乡, intensity:0.82}) CREATE (p)-[:CREATED]-(w) CREATE (w)-[:EXPRESSES]-(e)质量控制使用SimHash算法去重相似度90%自动合并构建校验规则如诗人出生年必须早于卒年3. 核心功能实现3.1 智能问答模块基于BERT的问答模型采用两阶段训练在CMRC2018中文阅读理解数据集上预训练使用自建的5万条古诗词QA对微调# 问答服务核心代码 def answer_question(question): vector sentence_encoder.encode(question) # 在Neo4j中执行向量相似度搜索 with driver.session() as session: result session.run( CALL db.index.vector.queryNodes(poemQA, $k, $vector), k3, vectorvector.tolist()) return [dict(record) for record in result]典型问题处理效果问题类型示例准确率作者查询《将进酒》是谁写的98.7%情感分析杜甫《春望》表达什么情绪89.2%意象关联哪些诗提到月亮且情感悲伤83.5%3.2 情感分析引擎创新性地融合三种分析方法词典法扩展《知网》情感词典新增876个古诗词专用词条机器学习BiLSTMAttention模型F10.79大模型ChatGLM-6B的LoRA微调版本情感维度量化指标{ poem_id: 1024, sentiment: { joy: 0.15, anger: 0.08, sorrow: 0.63, love: 0.22 }, dominant_emotion: sorrow }3.3 自动写诗系统采用GPT-2架构改进的专属模型在160万行古诗语料上训练引入平仄约束损失函数示例生成结果七言绝句《春思》 东风拂柳绿参差 燕子归来寻旧枝。 最是多情三月雨 悄声细语诉相思。4. 可视化实践4.1 知识图谱可视化使用PyVis实现的动态交互功能节点力导向布局支持语义缩放从宏观朝代关系到微观词语解析右键菜单查看诗词全文唐代诗人节点呈中心辐射状李白节点连接着987条关系边包括56首代表作品与杜甫的诗仙-诗圣关联常出现的明月美酒意象4.2 情感趋势分析基于Echarts的时间轴图表# 情感时序分析代码 def emotion_trend(poet_name): query MATCH (p:Poet {name:$name})-[:CREATED]-(w:Work)-[:EXPRESSES]-(e:Emotion) RETURN w.year as year, avg(e.intensity) as intensity ORDER BY year return neo4j_query(query, namepoet_name)5. 部署与优化5.1 性能优化方案缓存策略Redis缓存热点查询诗人关系网络TTL1小时使用Memcached存储情感分析结果查询加速// 优化后的Cypher查询示例 PROFILE MATCH path(p1:Poet)-[:CREATED*..3]-(p2:Poet) WHERE p1.name p2.name WITH p1, p2, count(path) AS strength ORDER BY strength DESC LIMIT 10 RETURN p1.name, p2.name, strength内存管理限制NetworkX加载的节点数分批渲染使用生成器处理大型结果集5.2 常见问题排查Neo4j连接池耗尽症状突然出现Too many connections错误解决方案from neo4j import GraphDatabase, BoltDriver driver GraphDatabase.driver(uri, max_connection_pool_size100)情感分析偏差现象将国破山河在误判为积极情感修正方法添加反讽语境检测规则调整损失函数权重可视化卡顿优化步骤启用WebGL渲染对超过500个节点进行聚类预处理6. 项目扩展方向在实际开发中我总结了三个有价值的延伸方向多模态分析结合历代书画作品构建跨媒体知识图谱示例查询苏轼《赤壁赋》相关古代绘画教学应用开发Jupyter Notebook插件支持学生交互式探索诗词关系大模型增强用LoRA技术微调LLaMA模型实现以诗解诗的深层语义分析这个项目最让我惊喜的发现是通过知识图谱的路径分析可以自动识别出传统研究中难以发现的诗人群体影响关系比如晚唐诗风对宋代婉约词的潜在影响路径。这种技术手段为文学研究提供了全新的量化分析维度。

相关新闻