1. 项目概述:当古诗词遇上知识图谱与大模型
作为一名长期混迹在NLP和Web开发领域的工程师,最近完成了一个让我特别兴奋的项目——基于Django和大模型的中华古诗词知识图谱系统。这个项目最初源于我对传统文化和技术融合的兴趣,没想到最终实现的效果远超预期。简单来说,我们构建了一个能自动分析5万多首古诗词的智能系统,不仅能可视化展示诗人社交网络、诗词意象关联,还能回答"李白和杜甫共同描写过哪些意象"这类复杂问题。
传统古诗词数据库(如古诗文网)主要提供关键词搜索,而我们这个系统的突破性在于:
- 使用大模型自动识别诗词中的隐喻和典故(比如自动识别"明月"在李白诗中常代表思乡)
- 构建包含12类实体、38种关系的知识图谱(诗人、朝代、地点、意象、情感倾向等)
- 实现动态可视化探索,比如通过力导向图直观展示宋代词人社交圈层
这个系统的技术栈非常"硬核":前端用Vue+ECharts实现交互式可视化,后端Django处理业务逻辑,Neo4j存储知识图谱,大模型采用微调后的ERNIE-3.0处理文本分析。最让我自豪的是,系统在测试阶段就发现了传统研究中被忽略的关联——比如王维和孟浩然虽然同属田园诗派,但他们的意象使用存在明显地域特征差异。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计解析
2.1 系统技术选型背后的思考
选择Django作为后端框架绝非偶然。经过对比Flask和FastAPI后,我们发现Django ORM对图数据库的支持更完善,而且其自带的Admin系统能快速构建数据管理界面。实际开发中,我们用django-neomodel这个库实现了Django模型与Neo4j的无缝对接,一个典型的诗人节点定义如下:
python复制from neomodel import StructuredNode, StringProperty, IntegerProperty, RelationshipTo
class Poet(StructuredNode):
name = StringProperty(unique_index=True)
dynasty = StringProperty()
birth_year = IntegerProperty()
# 定义与诗词的关系
poems = Relation
