这份**“数据预处理正则清单”**是确保 RAG 系统能够“读懂”《生命读经》的关键。
《生命读经》数据预处理正则清单
1. 核心层级导航提取 (Header Extraction)
用于识别篇目、信息号及小标题,构建层级上下文。
* 匹配目标:第…篇、一 …、1 …
* 正则表达式:
* 篇目:^第([一二三四五六七八九十百]+)篇\s+(.*)$
* 大纲:^[一二三四五六七八九十]+\s+(.*)$
* 中纲:^[1234567890]+\s+(.*)$ (注意使用全角数字,原始文本中常见)
* 作用:将提取到的标题注入该段落的 breadcrumb 字段。
2. 经节锚点归一化 (Scripture Anchor Normalization)
这是最关键的一步,用于实现经节检索 Boost。
* 匹配目标:罗一1、约三16、西二9~10
* 正则表达式:
* ([\u4e00-\u9fa5]{1,2})([
* 预处理逻辑:
* 提取简称(如“罗”)。
* 通过映射表转换为全称(“罗” -> “Romans”)。
* 将章节数字从中文转化为阿拉伯数字。
* 存储格式:{“related_verses”: [“Romans 1:1”, “Colossians 2:9”, “Colossians 2:10”]}
3. 脚注与注释清理 (Footnote Scrubbing)
原始文本中常有引用标注或脚注编号,这些会干扰向量模型的 embedding。
* 匹配目标:〔注一〕、(见注1)
* 正则表达式:
* 〔注[\u4e00-\u9fa5\d]+〕
* (见注[\u4e00-\u9fa5\d]+)
* 处理逻辑:建议将其提取并存入 footnotes 字段,但在生成向量的 content 字段中剔除,以减少语义噪音。
4. 语气词与冗余修饰清理 (Noise Reduction)
《生命读经》是口述释放的信息,含有大量语气引导词。
* 匹配目标:“阿们”、“弟兄们”、“我们要看到”、“在这里..
* 正则表达式:
* ^(阿们|弟兄们|哦|主耶稣)[,。!]
* 处理逻辑:在不破坏真理完整性的前提下,适当精简这些词汇,
5. 问答对自动生成标签 (Q&A Seed Extraction)
利用文本中的设问句生成潜在的 Query。
* 匹配目标:“…是什么意思?”、“为什么…?”
* 正则表达式:
* [^。!?]* (是什么意思|为什么|如何理解|怎能)[^。!?]* [?]
* 作用:将这些句子提取出来作为该 Chunk 的 suggested_queries 字段,帮助 Reranker 快速匹配意图。
自动化清洗流程 (Python 代码片段)
import re
def clean_ls_text(text):
# 1. 归一化经节锚点 (简单示例:罗一1 -> Romans 1:1)
# 这里需要配合一个详细的简称映射表
scripture_pattern = r'([\u4e00-\u9fa5]{1,2})([
def normalize_verse(match):
book, chap, verse = match.groups()
# 转换逻辑…
return f”[[{book}_{chap}_{verse}]]” # 使用特殊标记方便后续处理
text = re.sub(scripture_pattern, normalize_verse, text)
# 2. 清除多余空白与换行
text = re.sub(r’\n+’, ‘\n’, text)
text = text.strip()
return text
# 示例输入
raw_content = “我们在罗马书一章看到,罗一1说到了神的福音。”
print(clean_ls_text(raw_
预处理后的 JSON 对象示例
{
“content”: “我们在罗马书一章看到,基督在人性里是受造之物的首生者…
“metadata”: {
“book”: “歌罗西书生命读经”,
“message_no”: 15,
“hierarchy”: [“基督的包罗万有”, “受造之物的首生者”],
“verses”: [“Colossians 1:15”],
“lang”: “zh-CN”,
“keywords”: [“受造”, “人性”, “首生者”]
}
}
下一步建议
清单已为您备齐。您是否需要我为您提供一份“