1. 项目背景与核心价值
作为一名长期从事知识图谱与自然语言处理方向的技术开发者,我注意到历史类问答系统存在明显的知识碎片化问题。以《明朝那些事儿》为例,这部作品虽然生动有趣,但其中的历史事件、人物关系往往分散在不同章节,读者很难快速建立系统化的认知。这正是知识图谱技术能够大显身手的场景——通过结构化表示和关联查询,让机器真正"理解"历史脉络。
这个毕业设计项目的核心价值在于:
- 实现了从非结构化文本到结构化知识的完整转化流程
- 构建了包含3.7万+实体和12万+关系的明朝历史知识图谱
- 开发了支持多轮对话的智能问答接口
- 验证了BERT+图神经网络在历史领域的应用效果
提示:知识图谱构建过程中最关键的挑战是实体消歧——比如"王守仁"和"王阳明"需要映射到同一实体。我们采用了基于规则和统计的混合消歧策略。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术栈选型
code复制前端:Vue.js + Element UI
后端:Spring Boot + Neo4j
算法层:BERT-ZH + GAT
数据处理:Spark + HanLP
选择这套技术栈主要基于三点考虑:
- Neo4j的图数据库特性完美适配知识图谱的存储和查询需求
- BERT-ZH在中文NER任务上的F1值达到92.3%,远优于传统CRF模型
- GAT(图注意力网络)能有效捕捉知识图谱中的高阶关系
2.2 数据处理流水线
原始文本需要经过以下处理步骤:
- 文本清洗:去除特殊字符、统一时间格式(如"嘉靖年间"→"1522-1566")
- 分句处理:采用正则匹配句末标点,准确率98.7%
- 实体识别:使用我们微调的BERT-ZH模型(在历史文本上F1提升6.2%)
- 关系抽取:基于依存句法分析的模式匹配+远程监督
3. 核心实现细节
3.1 知识图谱构建
实体类型包括:
- 人物(如朱元璋、张居正)
- 事件(靖难之役、土木堡之变)
- 机构(锦衣卫、东厂)
- 地点(应天府、北京城)
关系类型设计为7大类28小类,包括:
code复制人物-人物:父子、君臣、敌对
人物-事件:发起、参与、受害
事件-事件:因果、时序
3.2 问答系统实现
问答流程采用三层架构:
- 问句解析:BERT分类器判断意图
