交互式自然语言调试:让语义解析器自我诊断与修复
摘要
本文介绍了一种名为交互式自然语言调试(INLD)的框架,旨在通过向用户提出一系列自然语言问题来诊断和修正手工编制的自然语言系统中的错误。INLD将调试过程视为一个推理问题,通过用户的回答来定位系统知识中的错误并进行修正。本文详细介绍了INLD框架的前两个阶段:症状识别和错误定位,并展示了其在CNLU语义解析器中的应用,特别是在诊断合成示例中的语义错误方面的能力。此外,本文还讨论了INLD的设计挑战和未来工作的方向。
原理
INLD的工作原理基于模型诊断框架,通过比较用户对句子的理解与解析器的行为来识别不一致之处。系统将用户的理解视为真理,任何与解析器解释的不一致都被视为模型中的故障,对应于解析器知识中的缺口或错误。系统通过向用户提问来捕捉相关方面的理解,如用户对词义或词性的判断。这些问题的答案被视为测量值,用于诊断故障。系统使用一个基于假设的真理维护系统(ATMS)来跟踪其假设,并通过计算最佳测量来区分当前最小诊断集。此外,系统还使用了一个压缩的ATMS(CATMS)来保持标签大小的可管理性,通过将问题分解为可分离的部分来防止组合爆炸。
流程
INLD的工作流程包括四个阶段:症状识别、错误定位、错误修正和验证。在症状识别阶段,系统对输入句子进行解析,并识别出一系列症状,这些症状指导调试过程。在错误定位阶段,系统根据症状尝试定位导致这些症状的错误。定位过程涉及多种策略,如内省和向用户提问。在错误修正阶段,系统与用户合作修复在前一阶段诊断出的错误。最后,在验证阶段,系统接受或拒绝提出的修复,确保修复对当前句子有效,并可能对其他句子进行测试以检查副作用。
应用
INLD的应用前景广泛,适用于任何依赖手工编制语言资源的语言系统。它不仅有助于提高这些系统的可维护性,还使得非专家用户能够参与系统的维护和扩展,这对于系统的长期使用和在终身学习场景中的应用至关重要。此外,INLD的框架和方法可以应用于其他领域,如知识库的维护和调试,具有广泛的潜在应用价值。
