古诗词作为中华文化瑰宝,蕴含着丰富的情感表达和思想内涵。传统古诗词研究多依赖人工解读,存在效率低、主观性强等问题。本项目创新性地将知识图谱技术与大语言模型相结合,构建了一套完整的古诗词情感分析与推荐系统。
这套系统的核心价值体现在三个维度:
我在开发过程中发现,现有开源诗词数据集存在标注不统一、情感维度单一等问题。为此,我们基于DeepSeek大模型重构了标注体系,新增"豪放-婉约""积极-消极"双维度情感标签,使分析结果更贴近文学理论。
系统采用分层架构设计,主要技术组件包括:
技术选型心得:初期考虑过Spring Boot方案,但Python生态在NLP任务中工具链更完整。最终选择Django因其ORM对图数据库支持良好,且与PySpark集成更顺畅。
系统数据处理流程包含四个关键环节:
python复制# 知识抽取示例代码
def extract_entities(text):
nlp = HanLP.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')
graph = {
'poets': [],
'dynasties': [],
'images': []
}
for term in nlp.analyze(text):
if 'nr' in term.nature: # 人名
graph['poets'].append(term.word)
elif 't' in term.nature: # 时间
graph['dynasties'].append(term.word)
elif 'n' in term.nature: # 名词
graph['images'].append(term.word)
return graph
采用双塔模型架构:
训练策略:
实测效果:
| 模型 | 准确率 | F1值 |
|---|---|---|
| LSTM | 72.3% | 70.1 |
| BERT | 81.6% | 79.8 |
| 本系统 | 87.2% | 85.4 |
图谱Schema设计包含5类实体和8类关系:
code复制实体类型:
- 诗人(姓名、朝代、字号)
- 诗词(标题、内容、创作时间)
- 意象(名称、类型)
- 情感(维度、强度)
- 流派(名称、代表诗人)
关系类型:
- 创作关系(诗人->诗词)
- 包含关系(诗词->意象)
- 表达关系(诗词->情感)
- 继承关系(诗人->流派)
使用Cypher查询示例:
cypher复制MATCH (p:Poet)-[:CREATED]->(po:Poem)-[r:EXPRESS]->(e:Emotion)
WHERE e.type = '豪放'
RETURN p.name, count(po) as count
ORDER BY count DESC
LIMIT 10
实现功能:
关键技术点:
混合推荐策略:
推荐公式:
$$
score = \alpha \cdot sim_{content} + \beta \cdot sim_{cf} + \gamma \cdot sim_{kg}
$$
其中α=0.4, β=0.3, γ=0.3,通过网格搜索确定最优权重
图数据库优化:
模型服务优化:
问题1:图谱查询响应慢(>5s)
cypher复制CREATE INDEX ON :Poet(name)
CREATE INDEX ON :Poem(title)
问题2:情感分析结果不稳定
系统主要功能界面:
评估指标:
实际教学中发现,使用本系统后:
这个项目最让我意外的是知识图谱在文学研究中的强大表现。通过图谱分析,我们发现了苏轼与辛弃疾之间被忽视的风格联系,这为后续研究提供了新的视角。建议后续开发者可以重点关注图谱质量建设,实体关系的准确性直接影响最终分析效果。