Day 3

第二天,我专注于系统的前端处理模块——自然语言理解。故障树生成的第一步是将用户的自然语言描述转化为结构化的系统表示。
我选择采用分层的处理方法。第一层是基础文本处理,包括分词、词性标注和命名实体识别。由于工程领域有大量专业术语,我扩展了标准词典,加入了常见的工程组件(传感器、执行器、控制器)、故障类型(泄漏、断裂、短路)和性能指标(压力、温度、流量)。
第二层是依存关系分析,识别句子中组件之间的功能关系。例如,在“泵A向容器B输送液体”这样的描述中,需要识别出“泵A”是主动组件,“容器B”是被动组件,它们通过“输送”动作连接。我采用了基于Transformer的预训练模型,并在少量工程文本上进行了微调。
第三层是语义角色标注,确定每个组件在系统中的角色。这是故障树构建的关键,因为相同组件在不同角色下可能对应不同的故障模式。例如,一个阀门在控制角色和控制对象角色下,其故障对系统的影响完全不同。
我遇到了几个挑战。首先是歧义处理,工程描述中常有多义词,如“开关”既可以指物理组件,也可以指操作动作。我通过上下文分析和领域知识解决了这个问题。其次是隐含关系的识别,许多工程系统的关键关系在描述中并未明确说明,需要基于常识推理补充。
今天实现了基础版本的解析器,在测试集上达到了72%的准确率。这个结果还有很大提升空间,但已经能够处理大部分简单系统描述。我计划明天加入规则引擎,将解析结果转化为初步的系统模型表示。
一个有趣的发现是,故障树的构建质量极大依赖于输入描述的完整性和精确性。这提示我可能需要设计一个交互式界面,引导用户提供更全面的系统信息。

posted @ 2026-03-23 21:49  软工李文轩  阅读(17)  评论(0)    收藏  举报