引言
下图是问答系统的发展历史。从2010年起,基于知识库的问答就起步了,所以这个领域已经有八年的研究历史了。
图1 问答的历史发展
知识库问答
知识库问答(KBQA)是以自然语言的形式给出问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。
图2 问题“姚明的老婆的国籍是?”最终得到回答“中国”
语义解析将问题转化为语义表示,语义表示有两种:基于符号的表示方法和基于分布式的表示方法。
基于符号表示的知识库问答(传统)
首先将问句转化为逻辑表达式、Lambda Calculus等符号语义表示形式,林德康在知识图谱与问答系统前沿技术研讨会暨清华大学“计算未来” 博士生论坛上举例,问题"Who was Tom Cruise's wife in 2007?" 将会被转化为“λx.∃e.Marriage(x, e) ∧ Spouse(e, TomCruise) ∧ Year(MarriageFrom(e)) =2007”的语义表示,然后将语义表示转化为SQL、SPARQL等数据库检索语句,并最终得到问题的答案。
语义解析的方法至今研究成果挺多:
- Zettlemoyer在1995年提出组合范畴语法(Combinatory Categorical Grammars)
- Zelle在1995年提出“移位-规约”推导(Shift-reduce Derivations)
- Wong在2007年提出同步语法(Synchronous Grammars)
- Lu在2008年提出混合树(Hybrid Tree)
- Clarke在2010年提出类CFG语法(CFG-like Grammars)
- Liang在2011年提出类CYK方法(CYK-like Grammars)
在这些研究成果基础上总结出语义解析的基本过程:短语检测+资源映射+语义组合,并最终生成逻辑表达式。如下图3所示。
图3 语义解析的过程
语义解析的两个关键点就是如何获得短语到资源的映射和如何解决歧义问题。前者是将文本中的类别、关系和实体映射到知识库中对应的类别、关系和实体。
基于分布式表示的知识库问答(End to End DL-based)
这里给出5篇论文:
- Bordes et al. Open Question Answering with Weakly Supervised Embedding Models, In Proceedings of ECML-PKDD 2014
- Bordes et al. Question Answering with Subgraph Embedding, In Proceedings of EMNLP 2014
- Yang et al. Joint Relational Embeddings for Knowledge-Based Question Answering, In Proceedings of EMNLP 2014
- Dong et al. Question Answering over Freebase with Multi-Column Convolutional Neural Network, In Proceedings of ACL 2015
- Bordes et al. Large-scale Simple Question Answering with Memory Network, In Proceedings of ICIR 2015
公开的评测数据集
【1】林德康,Singulariti联合创始人,前Google高级科学家