3. 工程文本数据采集与预处理
在工程项目智能问答系统中,真正决定回答质量的往往不是模型本身,而是进入模型之前的文本数据。图纸说明、合同条款、施工规范、现场日志、会议纪要这五类资料,格式差异极大:图纸说明常以表格或图签形式存在,合同是带编号层级的法律文本,规范是条款化条文,日志是短句加时间戳,会议纪要则是口语化记录。它们共同的特点是非结构化或半结构化,无法直接送入检索或问答模块。本节围绕“采集—清洗—分词—标注”这条数据加工链,说明每一步实际要做什么、用什么方法、结果如何判断。
一、采集:先分清来源与载体
采集不是简单地把文件拷进一个文件夹,而是要先建立“来源—载体—字段”的对应关系。工程资料常见载体有 PDF(含扫描件)、Word、Excel、CAD 图纸导出的文本、OA 系统导出的日志、以及会议录音转写文本。采集阶段至少要记录四类元数据:文档类型、专业归属(建筑/结构/机电/合同)、时间、版本或编号。例如一份《XX 项目地下室防水技术交底纪要》,元数据应包含:类型=会议纪要,专业=建筑,日期=2024-03-12,编号=JL-2024-031。这些字段后续会成为问答过滤条件,缺失会导致检索时无法按专业或时间缩小范围。
对于扫描版 PDF,采集后需先做 OCR。OCR 结果必须保留页码和坐标信息,否则后续无法回溯原文位置。一个实用做法是:OCR 输出按“页—块—行”三级结构存储,每行附带页码和边界框,便于在问答结果中给出原文出处。
二、清洗:把噪声降到可检索水平
清洗的目标是去掉与语义无关的字符和格式,同时不破坏条款编号、数值和单位。工程文本中高频噪声包括:页眉页脚、水印、多余换行、全角半角混用、表格线残留、OCR 错字、以及“第 X 页 共 Y 页”这类重复串。清洗通常按以下顺序执行:
- 去页眉页脚与水印:按页统计重复出现的行,出现频率超过阈值(如 80% 页面)即判定为页眉页脚并删除。
- 统一字符:全角转半角、中文标点归一、去除连续空白与不可见字符。
- 合并断行:中文段落中被硬换行切断的句子要合并,但条款编号(如“3.2.1”)前的换行必须保留。
- 保留关键符号:直径符号 φ、钢筋等级 HRB400、标高 ±0.000、单位 mm/kPa 等不能误删。
三、分词:工程领域需要自定义词典
通用分词工具(如 jieba)在工程文本上容易切错,例如“后浇带”可能被切成“后/浇/带”,“HRB400”可能被拆开,“C30 混凝土”中的强度等级也可能被误分。解决办法是加载工程领域自定义词典,把规范术语、材料牌号、构件名称、专业缩写加入词典。示例词典条目如下:
后浇带 100 n
HRB400 100 nz
C30混凝土 100 n
止水钢板 100 n
筏板基础 100 n
抗震设防烈度 100 n
分词后还应做停用词过滤,但工程停用词表要谨慎:像“应”“宜”“可”“不得”这类规范用语承载强制程度,不能当普通停用词删掉。真正该过滤的是“的”“了”“我们”“这个”等无检索价值的词。分词结果建议保留词性,便于后续识别“数值+单位”“构件+动作”等模式。
四、标注:让文本可被检索和推理
标注是把非结构化文本转成结构化知识的关键一步。工程问答最常用的标注类型有三类:实体标注、关系标注、条款属性标注。实体包括构件(剪力墙、梁)、材料(C30、HRB400)、参数(厚度 250mm)、规范编号(GB 50204)、时间(2024-03-12)。关系包括“构件—材料”“条款—适用范围”“问题—整改要求”。条款属性则标注强制等级(应/宜/可/不得)和适用专业。
标注不必一开始就追求全量人工标注。可行路径是:先用规则和词典做预标注,再由专业人员校正。例如用正则匹配“厚度\s*(\d+)\s*mm”抽取参数,用词典匹配构件名,人工只处理边界和歧义。标注结果建议以“原文片段 + 实体 + 关系 + 来源页码”的形式存储,保证可追溯。
五、结果判断与常见问题
预处理是否合格,可以用三个可观察指标判断:条款编号保留率、关键实体召回率、检索命中率。条款编号保留率低于 95%,说明清洗过度;关键实体召回率低,说明词典或标注规则覆盖不足;检索命中率低,则要回查分词和标注是否把“后浇带”切碎或漏标。常见问题中,最隐蔽的是 OCR 把“HRB400”识别成“HRB4OO”,这类错误不会报错,但会让材料检索失效,因此清洗后应专门对材料牌号、强度等级、规范编号做一次正则校验。
完成上述四步后,每份工程文本都会变成“原文片段 + 元数据 + 实体 + 关系 + 来源页码”的结构化记录。这些记录既可以直接用于关键词检索,也可以作为向量化入库的输入,是后续智能问答与决策支持的基础数据层。