一个功能完整的古诗词分析系统,包含Web应用、数据爬虫和词牌智能分析功能。系统可以智能识别词牌名、分析平仄合规性、标注韵脚韵部,并支持词牌介绍的自动获取与管理。
- 🔍 智能词牌识别:根据字数和分段自动识别800+词牌名
- 📊 平仄分析:基于钦定词谱精准标注平仄,实时计算合规得分
- 🎵 韵脚分析:多模式韵脚识别,支持用户选择最适合的韵脚模式
- 📚 多韵书支持:词林正韵与中华新韵双韵书系统
- 📖 词牌介绍:集成词牌详细介绍,包含历史、格律、代表作等
- 🎨 优雅界面:中式美学设计,使用霞鹜文楷字体,响应式布局
- ⚡ 实时交互:异步处理,流畅的用户体验
- 词牌谱库:完整的钦定词谱数据库(800+词牌)
- 韵书数据:词林正韵、中华新韵完整收录
- 词牌介绍:详细的词牌历史、格律、代表作信息
- 韵脚数据:精确的韵脚位置标注
chinese-poetry-analyzer/
├── app.py # Flask Web应用主文件
├── poetry_scraper.py # 词牌信息爬虫脚本
├── requirements.txt # Python依赖包
├── README.md # 项目说明文档
├── templates/
│ └── index.html # Web界面模板
├── static/
│ ├── css/
│ │ └── style.css # 样式文件(中式美学设计)
│ ├── js/
│ │ └── script.js # 前端交互逻辑
│ └── fonts/
│ └── LXGWWenKai-Regular.ttf # 霞鹜文楷字体
└── data/ # 数据文件目录
├── 词林正韵.json # 词林正韵韵书数据
├── 中华新韵.json # 中华新韵韵书数据
├── cipai_with_statistics_qdcp.csv # 钦定词谱完整数据
├── cipai_with_statistics_tscgl.csv # 唐宋词格律数据
├── cipai_detail.csv # 词牌名称列表
├── cipai_detail_with_intro.csv # 词牌详细介绍数据
├── yunjiao.csv # 韵脚位置数据
├── tone_patterns_all_pages.csv # 平仄模式数据
├── 词频分析.csv # 词频统计数据
└── clzy.html # 词林正韵网页源文件
- Python: 3.7+
- 浏览器: 支持ES6+的现代浏览器
- 操作系统: Windows / macOS / Linux
- 内存: 推荐2GB+
# 克隆项目(如果通过Git)
git clone [项目地址]
cd chinese-poetry-analyzer
# 创建Python虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate# 安装所有Python依赖
pip install -r requirements.txt# 启动Flask应用
python app.py成功启动后会看到:
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
* Running on http://[您的IP]:5000
打开浏览器访问:
- 本地访问:http://localhost:5000
- 局域网访问:http://您的IP地址:5000
# 运行词牌信息爬虫
python poetry_scraper.py
# 爬虫支持以下功能:
# - 从网页提取词牌格律信息
# - 批量获取词牌介绍
# - 自动数据清理和格式化- 输入诗词:在文本框中输入要分析的古诗词文本
- 选择韵书:
- 词林正韵:传统韵书,适合古典作品
- 中华新韵:现代韵书,推荐日常使用
- 开始分析:点击"开始分析"按钮,系统将自动处理
- 双击文本输入框可自动填入示例诗词
- 系统基于权威钦定词谱进行分析,确保结果准确性
📊 基础信息
- 词牌识别:自动识别的词牌名和代表作者
- 词牌介绍:显示词牌的历史、格律、别名等详细信息
- 文本统计:总字数和分段字数统计
📈 平仄分析
- 平仄得分:合规性评分(0-100%)
- 🟢 绿色(90%+):优秀
- 🟡 黄色(70%-89%):良好
- 🔴 红色(<70%):需要改进
- 平仄标注:逐字标注
- 🔵 青色:平声字
- 🔴 红色:仄声字
- ⚪ 灰色:未知声调
- 不合规提示:列出不符合格律的字及正确声调
🎵 韵脚分析
- 韵脚字识别:自动标识韵脚位置
- 韵部标注:显示韵脚字所属韵部
- 多模式选择:支持多种韵脚模式,用户可自由切换
- 支持从CSV文件读取词牌列表进行批量搜索
- 自动提取词牌介绍、格律信息、代表作等
- 智能去重和数据清理
- 结果自动保存为结构化数据
- 框架:Flask 2.3.3(轻量级Web框架)
- 数据处理:Pandas 2.1.4(数据分析和处理)
- 文本处理:正则表达式、Unicode处理
- 文件格式:JSON、CSV数据存储
核心模块:
app.py:Flask主应用,包含完整分析逻辑- 路由系统:
/:主页面渲染/analyze:诗词分析API(POST)/select_yunjiao:韵脚模式选择API(POST)
- HTML5:语义化页面结构
- CSS3:中式美学设计 + 响应式布局
- JavaScript ES6+:异步处理,动态交互
- 字体:霞鹜文楷(LXGW WenKai)增强阅读体验
- 爬虫框架:Requests + BeautifulSoup4
- 数据处理:自动化文本清理和格式化
- 并发处理:支持多标签页并行数据采集
- 智能解析:HTML结构智能识别和内容提取
数据层级结构:
├── 韵书数据 (JSON)
│ ├── 词林正韵.json - 传统韵书完整数据
│ └── 中华新韵.json - 现代韵书完整数据
├── 词牌谱数据 (CSV)
│ ├── cipai_with_statistics_qdcp.csv - 钦定词谱(800+词牌)
│ ├── cipai_with_statistics_tscgl.csv - 唐宋词格律
│ └── cipai_detail_with_intro.csv - 词牌详细介绍
├── 韵脚数据 (CSV)
│ └── yunjiao.csv - 多模式韵脚位置标注
└── 辅助数据
├── tone_patterns_all_pages.csv - 平仄模式
└── 词频分析.csv - 词频统计
Q: 启动时提示找不到数据文件?
A: 请检查以下项目:
- 确保
data/目录下有所有必需的数据文件 - 检查文件路径和文件名是否正确
- 确认当前工作目录是项目根目录
Q: 端口5000被占用无法启动?
A: 修改 app.py 最后一行:
app.run(debug=True, host='0.0.0.0', port=8080) # 改为其他端口Q: 分析结果显示"未能匹配到词牌名"?
A: 可能原因:
- 输入文本的字数或分段与数据库中的词牌不匹配
- 文本包含过多标点符号,影响字数统计
- 建议先清理文本,只保留汉字内容
Q: 平仄标注显示很多"未知"?
A: 解决方法:
- 可能使用了生僻字或异体字
- 尝试切换不同韵书(词林正韵 ↔ 中华新韵)
- 检查输入文本是否包含非汉字字符
Q: 韵脚识别不准确?
A: 优化建议:
- 使用系统提供的多韵脚模式选择功能
- 不同词牌可能有多种韵脚模式,选择最合适的
- 参考词牌介绍中的格律说明
修改默认韵书
在 templates/index.html 中:
<option value="1">词林正韵</option>
<option value="2" selected>中华新韵</option> <!-- 修改selected属性 -->添加新词牌数据
编辑 data/cipai_with_statistics_qdcp.csv,按现有格式添加:
词牌名,作者,总数,分段字数,韵律
新词牌,作者名,字数,[分段],平仄格式扩展韵书数据
编辑 data/词林正韵.json 或 data/中华新韵.json,按JSON格式添加新韵部。
- v2.0.0 (当前版本)
- ✨ 新增词牌介绍自动爬取功能
- ✨ 支持多韵脚模式选择
- ✨ 优化Web界面和用户体验
- ✨ 完善数据爬虫系统
- v1.0.0
- 🎯 基础词牌识别和平仄分析
- 📚 双韵书支持
- 🎨 Web界面初版
- 开发语言:Python 3.7+
- Web框架:Flask 2.3.3
- 前端技术:HTML5 + CSS3 + JavaScript ES6
- 数据格式:JSON + CSV
- 字体支持:霞鹜文楷
- 钦定词谱:权威格律数据库
- 词林正韵:传统韵书系统
- 中华新韵:现代韵书标准
- 百度百科:词牌介绍数据
本项目采用 MIT License 开源协议。
欢迎参与项目改进!您可以:
- 🐛 报告问题:发现Bug请提交Issue
- 💡 功能建议:提出新功能想法
- 🔧 代码贡献:提交Pull Request
- 📚 文档完善:改进文档说明
- 🎨 界面优化:提升用户体验
# Fork项目到自己的仓库
# 克隆Fork后的仓库
git clone https://github.com/your-username/chinese-poetry-analyzer.git
# 安装开发依赖
pip install -r requirements.txt
# 创建新分支进行开发
git checkout -b feature/your-feature-name如有任何问题或建议,欢迎通过Issue与我们交流。