1. 项目概述:构建中华古诗词知识图谱的技术实践
去年在完成某文化机构的数字人文项目时,我深刻体会到传统诗词检索方式的局限——当用户想探究"李白诗中涉及月亮的送别作品"这类多维查询时,常规数据库显得力不从心。这正是我们选择知识图谱技术的根本原因:它能用节点和边直观表达"诗人-作品-意象-情感"的复杂网络关系。
本项目采用Python技术栈实现从数据采集到可视化展示的全流程,核心解决三个问题:
- 如何从非结构化的古诗文本中提取实体及其关系(技术难点)
- 如何设计符合诗词文化特性的图谱schema(设计难点)
- 如何实现兼顾美学与功能性的可视化交互(体验难点)
适合读者:
- 数字人文领域的研究者
- 知识图谱技术的实践者
- Python全栈开发的学习者
- 对传统文化数字化感兴趣的开发者
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计
2.1 系统分层架构
采用典型的三层架构设计,各层技术选型如下:
| 层级 | 组件 | 技术选型 | 选型理由 |
|---|---|---|---|
| 数据层 | 爬虫模块 | Scrapy+Redis | 分布式爬取支持百万级数据抓取 |
| 存储模块 | MongoDB+Neo4j | 原始数据用MongoDB,图谱数据用Neo4j | |
| 处理层 | NLP处理 | Jieba+THULAC | 兼顾分词效率与准确率 |
| 关系抽取 | Bert-BiLSTM-CRF | 针对古诗特点微调的NER模型 | |
| 展示层 | 后端API | Flask-RESTful | 轻量级框架快速搭建接口 |
| 前端可视化 | Echarts+Vis.js | 分别应对统计图表与关系图谱 |
2.2 知识图谱Schema设计
诗词领域的本体设计需要特别注意文化特性:
python复制class PoetryKG:
class Node:
POET = {"name": str, "dynasty": str, "birth_year": int}
POEM = {"title": str, "content": str, "style": str}
IM
