“魏武王”称谓的合理性

“魏武王”称谓的合理性
2010年11月16日
  “魏武王”称谓的合理性作者:王子今 曹操高陵出土“魏武王常所用
内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
C:\Users\FMR\AppData\Local\Programs\Python\Python39\python.exe D:\中医智能诊疗系统\智能中医系统\康熙字典\提取目录存书.py 【调试】文件路径: C:/Users/FMR/Desktop/虞书.docx 【调试】书名: 尚书 【调试】文件路径: C:/Users/FMR/Desktop/虞书.docx 【调试】开始提取章节内容... 【调试】开始提取章节... 【调试】提取到章节:夏书 【调试】提取到章节:商书 【调试】提取到章节:周书 【调试】过滤后有效章节数量: 3 【调试】开始提取标题内容... 【调试】开始提取每个章节中的标题... 【调试】正在处理章节:夏书 【调试】章节内容前100字: 【夏书】 [禹贡第一] 禹别九州,随山浚川,任土作贡。禹敷土,随山刊木,奠高山大川。 冀州:既载壶口,治梁及岐。既修太原,至于岳阳;覃怀厎绩,至于衡漳。 厥土惟白壤,厥赋惟上上错,厥田惟中中 【调试】正在处理章节:商书 【调试】章节内容前100字: 【商书】 [汤誓第一] 伊尹相汤伐桀,升自陑,遂与桀战于鸣条之野,作《汤誓》。 王曰:“格尔众庶,悉听朕言,非台小子,敢行称乱!有夏多罪,天命殛之。 今尔有众,汝曰:‘我后不恤我众,舍我穑 【调试】正在处理章节:周书 【调试】章节内容前100字: 【周书】 [泰誓上第一] 惟十有一年,武王伐殷。一月戊午,师渡孟津,作《泰誓》三篇。 惟十有三年春,大会于孟津。 王曰:“嗟!我友邦冢君越我御事庶士,明听誓。惟天地万物父母,惟人万物之灵。 【调试】共提取到标题数量: 0
09-01
从你的调试输出来看: - 章节提取成功(`夏书`、`商书`、`周书`); - 每个章节内容前100字也显示了 `[禹贡第一]`、`[汤誓第一]`、`[泰誓上第一]` 这样的标题; - 但是最终提取到的标题数量为 **0**,说明程序 **未能正确识别 `[标题]`**。 --- ## ✅ 问题分析 你的章节内容如下(以 `夏书` 为例): ``` 【夏书】 [禹贡第一] 禹别九州,随山浚川,任土作贡。禹敷土,随山刊木,奠高山大川。 冀州:既载壶口,治梁及岐... ``` ### 当前代码的 `extract_subtitles()` 方法中使用了如下正则: ```python SUBTITLE_PATTERN = re.compile(r'$$(.*?)$$\s*', re.DOTALL) ``` 这个正则应该可以匹配 `[禹贡第一]`,但 **没有提取到标题**,说明问题可能出在: 1. **章节内容中包含了章节标题本身(如 `【夏书】`)**,干扰了标题提取; 2. **正则表达式匹配不准确或分割逻辑有误**; 3. **内容中存在空白字符、缩进或隐藏字符影响匹配**。 --- ## ✅ 问题定位与解决方案 ### ✅ 1. **去除章节内容中的章节标题** 在提取 `[标题]` 之前,先 **去除章节内容中的章节标题**(如 `【夏书】`),避免干扰。 修改 `extract_chapters()` 方法: ```python def extract_chapters(self): try: print("【调试】开始提取章节...") doc = Document(self.file_path) full_text = "\n".join(para.text for para in doc.paragraphs) matches = list(CHAPTER_PATTERN.finditer(full_text)) if not matches: print("【调试】未匹配到任何章节标题") return [] chapters = [] for i in range(len(matches)): start = matches[i].end() # 使用 end() 而不是 start(),跳过章节标题 title = matches[i].group(1).strip() end = matches[i + 1].start() if i + 1 < len(matches) else len(full_text) content = full_text[start:end].strip() chapters.append((title, content)) print(f"【调试】提取到章节:{title}") return chapters except Exception as e: print("【错误】提取章节失败:", e) return [] ``` > ✅ 改动点:使用 `start = matches[i].end()`,跳过章节标题本身,只提取其后的内容。 --- ### ✅ 2. **使用更稳定的正则和提取方式** 修改 `SUBTITLE_PATTERN` 和 `extract_subtitles()`: ```python # 匹配 [标题],支持多个换行符和空白 SUBTITLE_PATTERN = re.compile(r'$$(.*?)$$', re.DOTALL) def extract_subtitles(self, chapters): print("【调试】开始提取每个章节中的标题...") results = [] for chapter_title, content in chapters: print(f"【调试】正在处理章节:{chapter_title}") print(f"【调试】章节内容前100字:\n{content[:100]}") parts = self.SUBTITLE_PATTERN.split(content) if len(parts) <= 1: print(f"【调试】章节 {chapter_title} 中未提取到标题") continue # 遍历提取标题和内容 for i in range(1, len(parts), 2): subtitle = parts[i].strip() subtitle_content = parts[i + 1].strip() if i + 1 < len(parts) else '' if subtitle: results.append({ '章节': chapter_title, '标题': subtitle, '标题内容': subtitle_content }) print(f" 【调试】提取到标题:{subtitle}(长度:{len(subtitle_content)})") return results ``` --- ## ✅ 示例输出(成功提取) ``` 【调试】提取到标题:禹贡第一(长度:45) 【调试】提取到标题:汤誓第一(长度:50) 【调试】提取到标题:泰誓上第一(长度:60) ``` --- ## ✅ 最终建议修改点总结: | 修改点 | 说明 | |--------|------| | ✅ `start = matches[i].end()` | 跳过章节标题本身,避免干扰 | | ✅ 使用 `split()` + 奇偶索引提取标题和内容 | 更加稳定 | | ✅ 使用 `re.DOTALL` | 确保能匹配跨行内容 | | ✅ 增加 `strip()` | 去除空格和换行符,防止内容为空 | | ✅ 打印 `content[:100]` | 帮助调试内容结构 | --- ## ✅ 完整代码片段参考: ```python CHAPTER_PATTERN = re.compile(r'【(.*?)】') SUBTITLE_PATTERN = re.compile(r'$$(.*?)$$', re.DOTALL) def extract_chapters(self): try: doc = Document(self.file_path) full_text = "\n".join(para.text for para in doc.paragraphs) matches = list(CHAPTER_PATTERN.finditer(full_text)) chapters = [] for i in range(len(matches)): start = matches[i].end() title = matches[i].group(1).strip() end = matches[i + 1].start() if i + 1 < len(matches) else len(full_text) content = full_text[start:end].strip() chapters.append((title, content)) print(f"【调试】提取到章节:{title}") return chapters except Exception as e: print("【错误】提取章节失败:", e) return [] def extract_subtitles(self, chapters): results = [] for chapter_title, content in chapters: print(f"【调试】正在处理章节:{chapter_title}") print(f"【调试】章节内容前100字:\n{content[:100]}") parts = SUBTITLE_PATTERN.split(content) for i in range(1, len(parts), 2): subtitle = parts[i].strip() subtitle_content = parts[i + 1].strip() if i + 1 < len(parts) else '' if subtitle: results.append({ '章节': chapter_title, '标题': subtitle, '标题内容': subtitle_content }) print(f" 【调试】提取到标题:{subtitle}(长度:{len(subtitle_content)})") return results ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值