1. 项目概述:古诗词知识图谱全栈系统设计
这个毕业设计项目本质上是一个融合了知识图谱、情感分析和生成式AI技术的古诗词数字化应用系统。作为完整的大数据解决方案,它实现了从古诗词数据采集、知识结构化到智能应用的完整闭环。我在实际开发中发现,这类系统特别适合作为计算机专业的毕业设计选题——既涵盖了主流技术栈,又能体现文化传承的创新应用。
系统核心功能模块包括:
- 基于Python的知识图谱构建引擎
- 古诗词情感分析模型
- 基于大模型的智能问答系统
- 自动写诗生成模块
- 交互式可视化前端
提示:选择古诗词领域具有天然优势——数据获取门槛低(公开古籍资源丰富)、实体关系明确(诗人、朝代、意象等关联清晰)、应用场景直观(适合可视化展示)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 知识图谱构建关键技术
2.1 数据采集与预处理
古诗词数据源通常来自:
- 公开古籍数据库(如国学大师网API)
- 爬取诗词网站结构化数据
- 现有标注数据集(如THUCN古代诗歌数据集)
预处理关键步骤:
python复制# 示例:诗句清洗代码
import re
def clean_poem(text):
text = re.sub(r'(.*?)|{.*?}|[\]【】]', '', text) # 去除括号注释
text = re.sub(r'[0-9a-zA-Z]', '', text) # 去除字母数字
return text.strip()
2.2 本体设计与实体识别
古诗词领域典型本体结构:
code复制朝代 -- 包含 --> 诗人
诗人 -- 创作 --> 作品
作品 -- 包含 --> 意象
意象 -- 象征 --> 情感
实体识别可采用:
- 基于规则的方法(朝代、诗人名等固定实体)
- BiLSTM-CRF模型(识别意象等非固定实体)
- 预训练模型(如LAC、LTP)
2.3 关系抽取与图谱存储
关系抽取方案对比:
| 方法 | 准确率 | 实现难度 | 适用场景 |
|---|---|---|---|
| 规则匹配 | 85% | 低 | 明确句式(如"李白字太白") |
| 监督学习 | 92% | 高 | 复杂语义关系 |
| 远程监督 | 78% | 中 | 大规模数据 |
推荐存储方案:
- Neo4j:适合展示和简单查询
- Nebula Graph:适合超大规模图谱
- JanusGraph:适合需要Hadoop生态的场景
3. 情感分析模块实现
3.1 古诗词情感标注体系
不同于现代文的情感分析,古诗词需要特殊处理:
- 二维情感空间(愉悦度、激活度)
- 典型情感标签:思乡、爱国、闺怨、田园等
- 意象情感词典(如"月亮"→思乡,"杨柳"→离别)
3.2 混合分析方法
实际采用的多模型融合方案:
- 基于词典的快速匹配(覆盖60%常见意象)
- CNN情感分类模型(处理复杂表达)
- 注意力机制分析意象组合
关键代码结构:
python复制class EmotionAnalyzer:
def __init__(self):
self.lexicon = load_emotion_lexicon()
self.cnn_model = load_cnn_model()
def analyze(self, poem):
lexicon_score = self.lexicon_analysis(poem)
cnn_score = self.cnn_model.predict(poem)
return weighted_sum(lexicon_score, cnn_score)
4. 智能问答系统设计
4.1 系统架构设计
问答系统技术栈选型:
code复制前端:Vue.js + ECharts
后端:Flask/FastAPI
知识图谱:Neo4j + Nebula Graph
大模型:ChatGLM3-6B(本地部署)
缓存:Redis
4.2 混合问答策略
问题类型处理流程:
- 事实型问题(如"李白的出生地")→ 知识图谱查询
- 解释型问题(如"静夜思表达什么情感")→ 情感分析模块
- 开放型问题(如"比较李白杜甫的风格")→ 大模型生成
4.3 性能优化技巧
实际开发中的经验:
- 对高频查询做Redis缓存
- 对大模型响应实现流式输出
- 使用查询模板提高图谱查询效率
5. 自动写诗生成模块
5.1 模型选型对比
| 模型 | 参数量 | 生成质量 | 硬件需求 |
|---|---|---|---|
| GPT-2 | 1.5亿 | 一般 | 消费级GPU |
| Chinese-GPT | 8亿 | 较好 | 专业显卡 |
| 文心一格 | 100亿 | 优秀 | 服务器集群 |
推荐方案:使用LoRA微调小模型(如GPT-2)实现轻量级部署
5.2 生成控制策略
提高生成质量的关键:
- 约束生成:限制韵脚、平仄
- 后处理:格律检查、意象匹配
- 交互式生成:允许用户指定关键词
6. 可视化展示方案
6.1 知识图谱可视化
ECharts力导向图优化技巧:
- 按朝代分层布局
- 动态筛选实体类型
- 鼠标悬停显示详细信息
6.2 情感可视化设计
创新展示方式:
- 情感雷达图(多维度对比)
- 时空热力图(情感随朝代变迁)
- 意象关联桑基图
7. 项目部署与优化
7.1 技术栈整合方案
推荐Docker compose部署:
yaml复制version: '3'
services:
web:
image: nginx
ports: ["80:80"]
api:
build: ./backend
ports: ["5000:5000"]
neo4j:
image: neo4j:4.4
ports: ["7474:7474", "7687:7687"]
7.2 性能瓶颈解决
常见问题及解决方案:
- 图谱查询慢 → 添加索引、优化Cypher查询
- 大模型响应延迟 → 量化模型、使用API缓存
- 可视化卡顿 → 数据采样、WebWorker异步处理
8. 毕业设计扩展建议
可深入的方向:
- 增加跨语言古诗词对比(如中日汉诗)
- 开发移动端小程序版本
- 结合AR技术实现场景化诗词展示
- 添加用户创作社区功能
我在开发过程中最大的体会是:知识图谱项目的难点不在于算法本身,而在于领域知识的结构化处理。建议在开始编码前,至少花两周时间深入研究古诗词的文体特点和历史背景,这能大幅减少后期的数据清洗工作量。
