1. 项目概述:当古诗词遇上知识图谱与AI大模型
这个毕业设计项目将传统中华古诗词文化与现代AI技术进行了深度融合。作为一名长期从事自然语言处理开发的工程师,我认为这种结合至少解决了三个行业痛点:一是古诗词数据长期处于非结构化状态,难以系统化研究;二是普通用户缺乏直观了解诗词关联的途径;三是传统诗词创作存在门槛。项目采用知识图谱技术构建诗词关系网络,结合情感分析算法和大模型能力,最终实现可视化展示、智能问答和自动写诗三大核心功能。
从技术架构上看,项目前端采用主流Web框架实现可视化交互,后端使用Python构建知识图谱和AI服务,整体分为数据采集、知识建模、算法实现和应用开发四个阶段。特别值得注意的是,项目在知识图谱构建环节创新性地融合了实体识别、关系抽取等NLP技术,在情感分析部分则结合了传统机器学习与深度学习方法的优势。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心模块技术解析
2.1 古诗词知识图谱构建
知识图谱作为项目的核心基础设施,其构建质量直接影响后续所有功能。我们采用Neo4j图数据库作为存储引擎,其天然的图结构特性非常适合表现诗词间的复杂关系。构建过程主要分为三个关键步骤:
-
数据采集与清洗:从《全唐诗》《宋词三百首》等权威来源获取原始文本,使用Scrapy框架编写定向爬虫。考虑到古文的特殊性,我们特别开发了针对繁体字和异体字的转换模块,并设计了基于规则的正则过滤系统,处理诸如"东风"与"东風"这类同义不同形的表达。
-
实体关系抽取:这是最具挑战性的环节。我们采用BERT-BiLSTM-CRF混合模型进行命名实体识别,准确率达到92.3%。关系抽取方面,创新性地使用依存句法分析结合规则模板的方法,识别出包括"创作于""提及""引用"等12类关系。例如,从"李白《静夜思》写于扬州"中可提取(李白)-[创作于]->(扬州)的关系三元组。
-
图谱存储与优化:使用Py2neo库将处理后的数据导入Neo4j,针对高频查询如"杜甫写过哪些描写春天的诗"建立了索引优化。最终构建的知识图谱包含约3.7万首诗词、1.2万位作者、8000个地点实体,以及超过15万条关系边。
实际开发中发现,直接使用公开的诗词API往往存在数据不全或格式混乱的问题。我们最终采用了混合数据源策略,以《全唐诗》电子版为基础,辅以人工校验,确保了数据质量。
2.2 情感分析模块实现
诗词情感分析不同于现代文本,需要特别考虑古汉语的表达特点。我们的解决方案是构建一个双层分类模型:
-
基础情感分类:使用基于SnowNLP改进的算法,将诗词情感划分为"喜、怒、哀、乐、思、忧、惊、恐"八类。关键创新点在于加入了3000条人工标注的古诗词情感语料进行微调,使模型能够理解"凭栏处潇潇雨歇"这类含蓄表达中的悲凉情感。
-
情感强度计算:采用基于情感词典的方法,结合TF-IDF加权计算情感值。例如"大江东去浪淘尽"的情感强度明显高于"小桥流水人家"。技术实现上,我们自定义了包含8000余条目的古汉语情感词典,并引入注意力机制提升分类效果。
模型评估显示,在测试集上达到了88.7%的准确率,远超基线模型的76.2%。以下是核心代码片段:
python复制class PoetrySentimentAnalyzer:
def __init__(self):
self.sentiment_dict = load_sentiment_dict('ancient_chinese.csv')
self.model = load_bert_model('bert-base-chinese')
def analyze(self, text):
# 情感分类
emotion = self.model.predict(text)
# 强度计算
intensity = sum([self.sentiment_dict.get(word, 0) for word in jieba.cut(text)])
return {'emotion': emotion, 'intensity': intensity}
2.3 智能问答系统设计
问答系统采用混合架构,结合了基于规则的模板匹配和基于向量的语义搜索:
-
问题分类模块:使用SVM将用户问题分为"作者查询""作品查询""内容查询"等类型。例如"李白写过哪些诗"被分类为作者查询,"描写月亮的诗有哪些"则是内容查询。
-
答案生成模块:
- 对于事实型问题,直接查询知识图谱。如"杜甫的出生地",通过Cypher查询:
MATCH (a:Author{name:'杜甫'})-[:BORN_IN]->(p) RETURN p - 对于开放性问题,采用BERT+BiDAF模型从诗词库中检索相关段落。系统特别设计了诗词语义索引,使用FAISS进行高效相似度计算。
- 对于事实型问题,直接查询知识图谱。如"杜甫的出生地",通过Cypher查询:
-
结果排序与呈现:结合关联度、权威度(优先展示名家作品)、时效性(对于节日相关查询)等多维度进行结果排序。前端采用渐进式加载,先显示核心答案,再展开相关诗词。
实测表明,系统对简单问题的响应时间在200ms以内,复杂问题也不超过1.5秒。在300条测试问题中,准确率达到85.3%。
3. AI大模型自动写诗实现
3.1 模型选型与训练
经过对比测试,我们最终选择在GPT-2架构基础上进行改进,而非直接使用现有大模型,主要考虑如下:
-
数据准备:收集了10万首高质量古诗作为训练集,预处理时特别注意保留平仄格律信息。创新性地将格律规则作为特殊token加入输入序列,例如"[七绝仄起]"。
-
模型架构:在标准GPT-2基础上增加了:
- 韵律感知注意力层:强制模型关注押韵位置
- 平仄预测头:辅助模型学习格律规则
- 情感控制向量:允许指定生成诗歌的情感倾向
-
训练技巧:
- 采用课程学习策略,先训练模型掌握基本格律,再学习复杂表达
- 使用对抗训练提升诗句的文学性
- 引入教师强制(teacher forcing)技术加速收敛
训练后的模型在BLEU-4指标上达到0.43,人工评估显示58%的生成作品达到业余诗人水平。以下是生成示例:
code复制输入:主题=春天,情感=欢快,体裁=七绝
输出:
东风一夜百花开,
蝶舞莺啼春自来。
最是人间好时节,
踏青赏景共徘徊。
3.2 可控生成技术
为了使生成的诗歌更具可控性,我们实现了以下关键技术:
-
条件控制:用户可指定主题、情感、体裁等参数,这些条件会被编码为控制向量输入模型。技术实现上,我们采用类似CTRL模型的方法,将控制信号与文本表示进行交叉注意力计算。
-
迭代优化:设计了两阶段生成流程:
- 首先生成多个候选
- 然后基于规则(如平仄检查)和模型(质量评分)进行筛选
- 最后对优选结果进行局部微调
-
人工干预接口:允许用户在生成过程中调整关键词、修改单句,系统会基于修改进行后续生成。这大大提升了系统的实用性和用户体验。
4. 可视化系统实现
4.1 技术选型与架构
前端采用Vue.js+D3.js的组合,后端使用Flask提供API服务,整体架构如下:
code复制[前端]
├─ 关系图谱可视化(D3.js)
├─ 情感分布热力图(ECharts)
├─ 时空分布地图(Leaflet)
└─ 自动写诗交互界面(Vue)
[后端]
├─ 知识图谱服务(Neo4j+Py2neo)
├─ AI模型服务(FastAPI)
└─ 数据缓存(Redis)
4.2 核心可视化功能
-
知识图谱探索:
- 实现力导向图布局,支持缩放、拖拽、节点展开
- 创新性地设计了"时空隧道"视图,可以观察不同朝代诗词的演变
- 节点点击显示详细信息,包括诗词全文、作者简介等
-
情感分析展示:
- 使用热力图展示不同朝代/作者的情感倾向分布
- 提供情感演化时间线,如观察杜甫诗中忧国情感的变化
- 支持对比分析,如比较李白与杜甫的快乐诗比例
-
智能问答界面:
- 自然语言输入框支持诗词名句补全
- 答案卡片式呈现,相关知识点自动关联
- 对话历史可追溯,形成知识探索路径
5. 部署与优化实践
5.1 性能优化方案
-
缓存策略:
- 使用Redis缓存高频查询结果,如热门诗人的作品列表
- 实现基于LRU的缓存淘汰机制
- 对知识图谱查询结果进行压缩存储
-
负载均衡:
- 使用Nginx做反向代理
- AI模型服务采用多实例部署
- 设置查询超时和自动重试机制
-
数据库优化:
- 对Neo4j建立适当的索引
- 复杂查询拆分为多个简单查询
- 定期执行查询计划分析
5.2 实际部署问题
在阿里云ECS上部署时遇到几个典型问题:
-
GPU内存不足:自动写诗模型需要至少8GB显存。解决方案:
- 对模型进行量化压缩
- 实现动态批处理大小调整
- 必要时降级到CPU模式
-
并发查询瓶颈:知识图谱查询在高峰期出现延迟。最终通过以下方式解决:
- 增加只读副本
- 优化Cypher查询语句
- 实现查询队列管理
-
前端性能问题:大规模图谱渲染导致浏览器卡顿。优化措施:
- 实现渐进式加载
- 使用Web Worker进行后台计算
- 增加可视化细节级别(LOD)控制
6. 项目创新点与延伸思考
这个项目的独特价值在于将多种AI技术有机整合到传统文化领域,具体创新包括:
-
技术层面:
- 首创将格律规则显式编码到诗歌生成模型
- 开发了专门针对古汉语的情感分析算法
- 实现了知识图谱与大模型的协同推理
-
应用层面:
- 构建了目前最全面的中华古诗词知识图谱
- 开发了真正可用的自动写诗系统
- 提供了诗词研究的可视化分析工具
项目未来可向多个方向延伸:
- 增加方言朗读功能
- 开发诗词创作辅助工具
- 构建跨时代的文学影响关系网络
- 应用于语文教育场景
从工程实践角度看,这类项目最关键的还是数据质量。我们花了近40%的时间在数据收集和清洗上,这步工作做扎实了,后续模型效果才能有保证。另一个深刻体会是,AI技术与传统文化结合时,必须尊重领域知识,比如我们邀请古典文学专家参与标注和评估,避免出现技术可行但文学性不足的"AI腔"作品。
