news 2026/10/28 5:48:05

AI与古诗词融合:智能问答与情感分析系统开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI与古诗词融合:智能问答与情感分析系统开发

1. 项目概述:当古诗词遇上AI技术栈

这个毕业设计项目将传统中华古诗词文化与现代AI技术深度融合,打造了一个功能完整的智能诗词系统。作为一套技术集成方案,它涵盖了从数据采集处理到前端展示的全流程,特别适合计算机相关专业学生作为综合性练手项目。

我在实际开发中发现,这类文化类技术项目有三个独特优势:一是数据获取相对容易(古诗文属于公开文化遗产),二是技术展示维度丰富(可结合多种AI技术),三是最终成果可视化效果好(容易做出让答辩老师眼前一亮的界面)。下面我就从技术选型到实现细节,分享这个项目的完整开发经验。

2. 核心模块技术解析

2.1 知识图谱构建全流程

古诗知识图谱是本项目的基石,其构建过程可分为四个关键阶段:

  1. 数据采集与清洗
  • 使用Scrapy爬取古诗文网、全唐诗数据库等权威来源
  • 数据清洗时特别注意处理古文字符(如通假字、异体字)
  • 示例代码:处理特殊字符的正则表达式
import re def clean_text(text): # 处理常见古文特殊字符 text = re.sub(r'[⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻]', '', text) # 统一全角/半角标点 text = text.translate(str.maketrans(',。!?;:‘’“”', ',.!?;:\'\""')) return text
  1. 实体关系定义
  • 核心实体类型:诗人、朝代、诗作、地点、意象(梅兰竹菊等)
  • 关系定义示例:
    • 诗人-[属于]->朝代
    • 诗作-[包含]->意象
    • 诗作-[创作于]->地点
  1. 图谱存储方案
  • 对比了Neo4j与Nebula Graph后,最终选择Neo4j社区版
  • 优势:可视化工具完善,Cypher查询语言学习曲线平缓
  • 存储结构示例:
CREATE (p:Poet {name:"李白", era:"唐"}) CREATE (w:Work {title:"静夜思", content:"床前明月光..."}) CREATE (i:Image {name:"明月"}) CREATE (p)-[:CREATED]->(w) CREATE (w)-[:CONTAINS]->(i)
  1. 图谱质量优化
  • 采用人工校验+规则校验双重机制
  • 开发了专用的图谱验证工具检查常见问题:
    • 孤立节点检测
    • 关系环路检测
    • 属性完整性检查

避坑提示:古诗中的地名需要特别注意古今对照,建议使用历史GIS数据库进行校验,避免将古代地点错误关联到现代地理位置。

2.2 情感分析模块实现

古诗情感分析面临两个特殊挑战:一是古今语义差异,二是诗歌特有的含蓄表达方式。我们采用多维度分析方法:

  1. 词典构建
  • 基础词典:整合知网Hownet、台湾大学简体中文情感词典
  • 自定义古诗情感词典:
    • 正向词:欢、喜、乐、欣等
    • 负向词:愁、哀、悲、凄等
    • 通过TF-IDF提取高频情感词
  1. 模型训练
  • 比较了LSTM、BERT和RoBERTa三种模型
  • 最终方案:RoBERTa-base + 古诗微调
  • 微调数据:人工标注的5000首古诗情感标签
  • 关键训练参数:
training_args = TrainingArguments( output_dir='./results', num_train_epochs=5, per_device_train_batch_size=16, evaluation_strategy="steps", eval_steps=500, save_steps=1000, logging_dir='./logs', learning_rate=3e-5, weight_decay=0.01, )
  1. 混合分析策略
graph TD A[输入诗句] --> B{是否含明确情感词} B -->|是| C[词典匹配打分] B -->|否| D[模型预测] C --> E[结果融合] D --> E E --> F[情感强度计算]

实测发现,对于"感时花溅泪,恨别鸟惊心"这类复杂表达,混合方法的准确率比单一方法提高约23%。

2.3 智能问答系统设计

问答系统采用混合架构,同时支持基于规则的模板匹配和基于模型的语义理解:

  1. 问题分类体系
  • 诗人相关:生平、风格、代表作等
  • 诗作相关:创作背景、释义、名句等
  • 文学常识:格律、体裁、流派等
  1. 技术实现方案
class QASystem: def __init__(self): self.rule_matcher = RuleMatcher() # 规则匹配器 self.kg_searcher = KgSearcher() # 图谱查询 self.model = load_qa_model() # 预训练QA模型 def answer(self, question): # 先尝试规则匹配 result = self.rule_matcher.match(question) if result: return result # 再尝试知识图谱查询 cypher = self.generate_cypher(question) kg_result = self.kg_searcher.query(cypher) if kg_result: return kg_result # 最后使用模型生成 return self.model.generate(question)
  1. 性能优化技巧
  • 高频问题缓存:使用Redis缓存Top 100问答对
  • 异步查询:对复杂查询使用Celery异步任务
  • 超时机制:设置500ms超时,避免用户长时间等待

3. AI写诗模块深度剖析

3.1 模型选型对比

测试了三种主流文本生成模型:

模型类型优点缺点古诗生成适用性
GPT-2创意性强容易偏离格律一般
GPT-3语义连贯需大量微调较好
悟道·文源中文特性好资源消耗大优秀

最终选择悟道·文源作为基础模型,原因有三:

  1. 专为中文文本优化
  2. 支持多任务学习
  3. 提供诗歌生成专用接口

3.2 微调策略

  1. 数据准备
  • 清洗后的全唐诗+宋词作为训练集
  • 按主题分类:山水、边塞、咏物等
  • 添加平仄标注作为特殊token
  1. 关键训练代码
# 自定义损失函数,鼓励符合格律 def poetic_loss(outputs, labels): base_loss = F.cross_entropy(outputs.logits, labels) # 获取生成的平仄序列 tones = detect_tones(outputs.logits) # 计算格律符合度 rhythm_score = compute_rhythm_score(tones) return base_loss - 0.3 * rhythm_score
  1. 生成控制参数
generation_config = { "temperature": 0.7, "top_k": 50, "top_p": 0.9, "repetition_penalty": 1.2, "max_length": 64, "num_return_sequences": 3, "do_sample": True, }

3.3 质量评估方案

设计了三重评估机制:

  1. 自动校验
  • 平仄检查
  • 押韵检测
  • 意象连贯性分析
  1. 人工评分
  • 邀请中文系学生组成评审团
  • 评分维度:
    • 意境(40%)
    • 格律(30%)
    • 创新性(20%)
    • 语言(10%)
  1. 用户反馈
  • 设计AB测试界面
  • 收集用户偏好数据
  • 建立持续优化闭环

4. 可视化系统实现

4.1 技术选型对比

方案优点缺点适用场景
ECharts图表丰富3D支持弱数据图表
D3.js高度灵活学习曲线陡复杂关系图
Three.js3D效果好性能要求高沉浸式展示
AntV专业可视化社区资源少企业级应用

最终采用混合方案:

  • 主界面:Vue + ECharts
  • 知识图谱展示:D3.js force-directed graph
  • 时空分布:Leaflet历史地图

4.2 核心可视化组件

  1. 诗人关系图
function renderPoetGraph(data) { const chart = new G6.Graph({ container: 'poet-graph', modes: { default: ['drag-canvas', 'zoom-canvas'] }, layout: { type: 'force', preventOverlap: true, linkDistance: 150 }, defaultNode: { size: 30, style: { fill: '#4e79a7', stroke: '#2e5785' } } }); chart.data(data); chart.render(); }
  1. 情感趋势图
  • 使用ECharts的折线图展示诗人情感变化
  • 特别处理时间轴:将朝代转换为时间线
  • 交互功能:点击查看具体诗作
  1. 意象关联图
  • 桑基图展示意象共现关系
  • 颜色编码区分意象类别(自然、人文等)
  • 动态过滤功能

4.3 性能优化实践

  1. 数据分片加载
  • 超过1000节点时启用懒加载
  • 可视区域检测动态加载
  1. Web Worker应用
// 主线程 const worker = new Worker('./graphWorker.js'); worker.postMessage({cmd: 'process', data: rawData}); // Worker线程 self.onmessage = function(e) { if (e.data.cmd === 'process') { const result = heavyProcessing(e.data.data); self.postMessage(result); } };
  1. 缓存策略
  • IndexDB存储历史查询结果
  • 智能预加载:根据用户行为预测下一步操作

5. 工程化实践与部署方案

5.1 系统架构设计

┌───────────────────────────────────────┐ │ 客户端 │ │ ┌───────────┐ ┌───────────┐ │ │ │ Vue.js │ │ ECharts │ │ │ └───────────┘ └───────────┘ │ └───────────────┬───────────────────────┘ │ HTTP/WebSocket ┌───────────────▼───────────────────────┐ │ API Gateway │ │ ┌───────────┐ ┌───────────┐ │ │ │ REST API │ │ GraphQL │ │ │ └───────────┘ └───────────┘ │ └───────────────┬───────────────────────┘ │ gRPC ┌───────────────▼───────────────────────┐ │ 微服务集群 │ │ ┌───────────┐ ┌───────────┐ │ │ │ 知识图谱 │ │ 情感分析 │ │ │ └───────────┘ └───────────┘ │ │ ┌───────────┐ ┌───────────┐ │ │ │ 问答系统 │ │ AI写诗 │ │ │ └───────────┘ └───────────┘ │ └───────────────┬───────────────────────┘ │ JDBC/NoSQL ┌───────────────▼───────────────────────┐ │ 数据存储 │ │ ┌───────────┐ ┌───────────┐ │ │ │ Neo4j │ │ MongoDB │ │ │ └───────────┘ └───────────┘ │ │ ┌─────────────────────────┐ │ │ │ Redis │ │ │ └─────────────────────────┘ │ └───────────────────────────────────────┘

5.2 关键部署配置

  1. Docker编排示例
version: '3' services: kg-service: image: kg-service:v1.2 ports: - "50051:50051" environment: - NEO4J_URI=bolt://neo4j:7687 depends_on: - neo4j neo4j: image: neo4j:4.4 ports: - "7474:7474" - "7687:7687" volumes: - neo4j_data:/data environment: - NEO4J_AUTH=neo4j/password volumes: neo4j_data:
  1. 性能监控方案
  • Prometheus + Grafana监控系统
  • 关键指标:
    • API响应时间
    • 知识图谱查询延迟
    • GPU利用率(AI服务)
  • 报警阈值设置
  1. 安全防护措施
  • API网关层添加JWT验证
  • 知识图谱查询添加防注入检测
  • 敏感操作日志审计

6. 毕业设计答辩要点

6.1 技术亮点提炼

  1. 多技术融合
  • 传统NLP与知识图谱结合
  • 规则系统与AI模型互补
  1. 文化传承创新
  • 古籍数字化方法创新
  • 传统文化的新媒体表达
  1. 工程实践价值
  • 完整的AI项目开发流程
  • 可复用的技术方案

6.2 答辩演示技巧

  1. 演示脚本设计
  • 开场:快速展示系统整体功能(1分钟)
  • 主体:分模块演示技术亮点(3分钟/模块)
  • 收尾:强调创新点和个人贡献(2分钟)
  1. 常见问题准备
  • 技术选型依据
  • 数据获取方式
  • 算法创新点
  • 系统局限性
  1. 视觉辅助建议
  • 使用对比图表展示性能提升
  • 准备技术架构动图
  • 关键代码片段高亮显示

6.3 文档撰写规范

  1. 论文结构建议
  • 第一章:研究背景与意义
  • 第二章:相关技术综述
  • 第三章:系统需求分析
  • 第四章:系统设计
  • 第五章:系统实现
  • 第六章:系统测试
  • 第七章:总结展望
  1. 图表规范
  • 统一使用矢量图格式
  • 图表编号采用"章-序号"格式
  • 每个图表需有明确标题
  1. 代码附录要求
  • 只包含核心算法代码
  • 添加必要的注释说明
  • 注明引用的开源代码

在完成这个项目的过程中,我最大的体会是:技术项目的文化内涵同样重要。当我们在古诗中成功识别出一个跨越千年的情感表达时,那种连接古今的震撼感,是纯技术项目无法带来的。这也让我更加坚信,技术人文学科交叉融合有着广阔的发展空间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 5:47:26

OpenClaw:多代理协同系统的智能自动化工具

1. OpenClaw项目概述OpenClaw是一款集成了自动化流程与智能代理技术的开源工具,被开发者社区形象地称为"数字龙虾"——既能像龙虾钳子一样精准抓取处理任务,又具备持续进化的智能特性。这个项目本质上是一个多代理协同系统,通过模块…

作者头像 李华
网站建设 2026/10/28 5:47:26

MROD-YOLO:多模态目标检测的早期深度融合技术解析

1. 项目背景与核心价值在目标检测领域,YOLO系列算法始终保持着迭代创新的活力。这次我们要讨论的MROD-YOLO改进方案,针对传统多模态处理中的关键痛点提出了创新解法。现有的多模态目标检测系统往往面临两个主要问题:一是模态间信息融合时机较…

作者头像 李华
网站建设 2026/10/28 5:46:11

SEO竞争对手分析:提升排名的核心策略

1. 为什么竞争对手分析是SEO优化的核心战场在搜索引擎优化领域,我们常常陷入一个误区——只关注自身网站的数据指标,而忽略了同行在做什么。实际上,竞争对手分析就像一面镜子,能照出我们策略中的盲点。我见过太多案例,…

作者头像 李华
网站建设 2026/10/28 5:42:54

用Node.js和Handlebars打造自己的代码生成器,告别重复CRUD

是不是每个搞开发的,都会在某个深夜冒出一个念头:这破代码我不想再写一遍了。我在带一个后端小组的时候,这种念头几乎每周都要出现几次。业务系统越做越复杂,但代码增长的套路却高度重复:每新加一张业务表,…

作者头像 李华
网站建设 2026/10/28 5:42:18

自动化控制系统开发流程图:从立项到验收的完整流程与避坑指南

简介:这份资源是面向工业自动化从业者与项目管理人员的一份控制系统开发流程参考文档,以流程图形式梳理从项目立项、需求评审、签订合同、制定设计计划、任务分工、需求调研、系统设计,到评审反馈、程序编写与测试、验收交付及维护升级的完整…

作者头像 李华
网站建设 2026/10/28 5:42:18

三种基础排序算法:冒泡、选择与插入排序详解

1. 排序算法入门:为什么我们需要它们?在编程的世界里,排序算法就像厨房里的刀具——不同的刀适合处理不同的食材。作为一名有十年经验的开发者,我见过太多新手一上来就死记硬背各种排序算法,却不知道它们各自的应用场景…

作者头像 李华