我总说,deep parsing 是NLP应用的核武器,有人以为夸张,今天就说说这道理儿。
NLP 的应用主要分两部分,一部分是对于 text input 的分析或“理解”,一部分是反映这种分析理解的 output(俗称语义落地,譬如 output 是另一个语言,就是MT;output 是 response,就是对话系统;output 是针对 input 问题的答案,就是问答系统;等等)。NLP 应用就是连接 input 到 output 的系统。其中第一部分是关键,核心就是 parsing,可以实现为作为条件的模式匹配,而第二部分很多时候不过是与第一部分对应的作为结论的 mapping 或 side effects。
在上述场景的抽象描述中,可以这样来看 parsing 对于处理text的作用。首先,input 的样本就是我们 parsing 的 dev corpus,样本中的语句相同或类似意义的是我们识别的对象。绝大多数情形,识别了就算 “理解” 了,系统就知道如何应对最合适。
自然语言的难点在于表达这些 input 的语句千变万化,因此用 ngram 枚举它们是不现实的。现实的办法是 parse 相同或类似意义的input语句成为结构树,然后在这些树上找共同 patterns,叫“最大公约树”吧(intuitively 叫最小才顺耳,就是这些树的common core,树大了的话就没有召回率了,白老师提议叫“最大公共子树”)。如果找不到,那就把这批句子分而治之 直到可以找到几个所谓子树 patterns,写成逻辑或的模式规则。
Patterns 的宽严度调试得恰到好处 就可以以有限的规则 应对无限的表达了。宽严不外是调整结构arc的条件 或 节点(node)的条件,deep parsing 说到底就是创造这些结构条件的机器。
以不变应万变,用有限的patterns抓住无限的语言变化,这就是自然语言核武器威力的表现。
【相关】
泥沙龙笔记:parsing 是引擎的核武器,再论NLP与搜索