1.7 问句理解
有了知识还不够,智能问答还需要理解人提出的问题,问题理解就是将自然语言转化为计算机可以理解的形式化语言。让计算机理解自然语言是非常困的,这也是自然语言处理技术的核心问题。解决这一问题有两种不同的思路。
第一种是语义解析方法 (semantic parsing)。这种方法符合人们的直觉,它将一个自然语言句子,按照特定的语法,解析成逻辑表达式,这些逻辑表达式可以容易地转变为知识库的查询语言,因为它们已经是没有歧义的表达语句。
研 究 人 员 设 计 了 很 多 方 法 来 完 成 这 样 的 转换[13-16] 。其中,比较常见的是利用组合范畴语法Combinatory Categorical Grammars (CCG) [13, 17] 。CCG 的核心是词汇,将自然语言的词汇映射到逻辑表达式的词汇。除了词汇之外,CCG 还有一系列的语法规则,按照这些规则将词汇组合起来,就得到了最终的逻辑表达式。
然而,在这类方法中起到至关重要作用的词汇一般都是人工生成的,这样的词汇缺乏领域适应性,如果问答系统从一个领域换到另外一个领域,就要重新生成一批特定词汇。自动学习这种词汇成为了研究的重点[16-18] 。另一方面,CCG有多种语法组合规则,有时,一个问句会有不同的解析方式,因此,如何选择正确的解析方式也成为一个问题,使用概率化的 CCG [19]可以解决这一问题。
第二种是基于信息检索的方法。这种方法避开了最难的自然语言理解部分,将语义解析问题转化为检索问题。首先,找到问句中所涉及到的知识库资源;然后,按一定的规则(可以是学习得到的规则),将这些资源组合成规范查询语言。这种方法相对来说比较简单易用,而且通常不用人工去设计词汇,所以适用于多个领域,相应的缺点是不如语义解析方法精确。
如 果 我 们 只 针 对 一 个 特 定 的 知 识 库( 例 如Freebase)来做简单的事实性问答,那么可以使用更加简单但效果明显的检索式方法[20] 。即先用命名实体识别工具得到问句中的主实体,然后再找出问句中所提问的关系,或者说属性。一般来说,命名实体识别这个步骤相对容易,因为一个实体的表示方式有限。而找到关系则更困难,因为自然语言描述同一关系的表达方式多种多样。例如,中文里表达“配偶”这一关系的说法就有妻子、丈夫、结婚等等多种说法,因此重点就是找到问句所询问的关系。好在知识库中和某一实体相关的关系数量是有限的,可以排除很多无关的关系。在 Freebase这样的知识库问答中,这种方法是很有优势的。当然,这种方法的缺点也明显,就是无法处理复杂的问句。
受其启发,近年来有很多工作利用神经网络的方法继续对其进行了改进。文献 [21] 使用了卷积神经网络来映射关系。值得一提的是,最近的一些工作[22-23]更进一步地利用端到端的方法,直接将问句和最终的答案做匹配,络在其中起到了重要作用,并且这种方法也取得了不俗的效果。
综上,问句理解是问答系统中最核心的环节,因为正是这个过程将人类的自然语言转化为计算机可以处理的形式。这种困难不只是智能问答所需要克服的,而是整个人工智能领域所面对的共同难题。