3. 工程文本数据采集与预处理

在工程项目智能问答系统中,真正决定回答质量的往往不是模型本身,而是进入模型之前的文本数据。图纸说明、合同条款、施工规范、现场日志、会议纪要这五类资料,格式差异极大:图纸说明常以表格或图签形式存在,合同是带编号层级的法律文本,规范是条款化条文,日志是短句加时间戳,会议纪要则是口语化记录。它们共同的特点是非结构化或半结构化,无法直接送入检索或问答模块。本节围绕“采集—清洗—分词—标注”这条数据加工链,说明每一步实际要做什么、用什么方法、结果如何判断。

一、采集:先分清来源与载体

采集不是简单地把文件拷进一个文件夹,而是要先建立“来源—载体—字段”的对应关系。工程资料常见载体有 PDF(含扫描件)、Word、Excel、CAD 图纸导出的文本、OA 系统导出的日志、以及会议录音转写文本。采集阶段至少要记录四类元数据:文档类型、专业归属(建筑/结构/机电/合同)、时间、版本或编号。例如一份《XX 项目地下室防水技术交底纪要》,元数据应包含:类型=会议纪要,专业=建筑,日期=2024-03-12,编号=JL-2024-031。这些字段后续会成为问答过滤条件,缺失会导致检索时无法按专业或时间缩小范围。

对于扫描版 PDF,采集后需先做 OCR。OCR 结果必须保留页码和坐标信息,否则后续无法回溯原文位置。一个实用做法是:OCR 输出按“页—块—行”三级结构存储,每行附带页码和边界框,便于在问答结果中给出原文出处。

二、清洗:把噪声降到可检索水平

清洗的目标是去掉与语义无关的字符和格式,同时不破坏条款编号、数值和单位。工程文本中高频噪声包括:页眉页脚、水印、多余换行、全角半角混用、表格线残留、OCR 错字、以及“第 X 页 共 Y 页”这类重复串。清洗通常按以下顺序执行:

  1. 去页眉页脚与水印:按页统计重复出现的行,出现频率超过阈值(如 80% 页面)即判定为页眉页脚并删除。
  2. 统一字符:全角转半角、中文标点归一、去除连续空白与不可见字符。
  3. 合并断行:中文段落中被硬换行切断的句子要合并,但条款编号(如“3.2.1”)前的换行必须保留。
  4. 保留关键符号:直径符号 φ、钢筋等级 HRB400、标高 ±0.000、单位 mm/kPa 等不能误删。
清洗后应做一次抽样核对:随机抽取 20 条文本,检查条款编号、数值、单位是否完整。若编号丢失,后续按条款检索会直接失效。

三、分词:工程领域需要自定义词典

通用分词工具(如 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”抽取参数,用词典匹配构件名,人工只处理边界和歧义。标注结果建议以“原文片段 + 实体 + 关系 + 来源页码”的形式存储,保证可追溯。

工程文本采集与预处理数据流 采集来源 图纸说明 / 图签 合同条款 施工规范 现场日志 / 会议纪要 元数据:类型·专业·时间·编号 清洗 去页眉页脚 / 水印 全角半角统一 合并断行(保留编号) 保留 φ / HRB400 / ±0.000 抽样核对:编号·数值·单位 分词 加载工程自定义词典 后浇带 / 止水钢板 C30混凝土 / HRB400 保留“应/宜/可/不得” 输出:词 + 词性 标注 实体:构件·材料·参数·规范号 关系:构件—材料·条款—范围 属性:强制等级·适用专业 规则预标注 + 人工校正 输出:原文片段+实体+页码 示例:一条会议纪要的加工过程 原文:2024-03-12 地下室防水技术交底,后浇带两侧止水钢板厚度 3mm,C30 混凝土浇筑前应清理浮浆。 清洗后:2024-03-12 地下室防水技术交底,后浇带两侧止水钢板厚度 3mm,C30混凝土浇筑前应清理浮浆。 分词:2024-03-12 / 地下室 / 防水 / 技术交底 / 后浇带 / 止水钢板 / 厚度 / 3mm / C30混凝土 / 浇筑 / 应 / 清理 / 浮浆 标注结果(结构化) 实体:构件=后浇带;材料=止水钢板、C30混凝土;参数=厚度 3mm;时间=2024-03-12 关系:后浇带—止水钢板(设置);C30混凝土—浇筑(工艺);浇筑前—清理浮浆(前置条件) 属性:强制等级=应;适用专业=建筑/防水;来源=会议纪要 JL-2024-031 第 2 页

五、结果判断与常见问题

预处理是否合格,可以用三个可观察指标判断:条款编号保留率、关键实体召回率、检索命中率。条款编号保留率低于 95%,说明清洗过度;关键实体召回率低,说明词典或标注规则覆盖不足;检索命中率低,则要回查分词和标注是否把“后浇带”切碎或漏标。常见问题中,最隐蔽的是 OCR 把“HRB400”识别成“HRB4OO”,这类错误不会报错,但会让材料检索失效,因此清洗后应专门对材料牌号、强度等级、规范编号做一次正则校验。

不要把“应”“宜”“可”“不得”当作停用词删除。它们决定条款是强制还是推荐,删除后问答系统可能把推荐性做法当成强制要求回答,造成误导。

完成上述四步后,每份工程文本都会变成“原文片段 + 元数据 + 实体 + 关系 + 来源页码”的结构化记录。这些记录既可以直接用于关键词检索,也可以作为向量化入库的输入,是后续智能问答与决策支持的基础数据层。