前言正文参考文献
前言
写在前面,本文的内容主要基于12月2日在苏州大学举办的知识图谱前沿技术课程(感谢各位老师的talk,受益良多)以及本人在之前阅读的有关paper,对KG和QA的进一步认识还有待我继续阅读和学习有关paper与书籍。由于我知识水平有限,难免有些错误,如有错误还请赐教。
正文
知识图谱被谷歌提出之后,被广泛应用于各个领域。在图谱中,node一般代表entity或者concept,边一般代表关系,常见的有isA和subclassOf的关系,类属关系和子类关系实际上可以对应到语言学中的上下位词关系,如:姚明是一名篮球运动员,此时姚明是篮球运动员的下位词(hyponym)或者篮球运动员是姚明的上位词(hypernym)。这部分属于知识图谱的一些常识知识,我就不过多赘述了,之前我也写过参加其他课程和实习之后的一些见解,请参见之前的文章[传送门——关于知识图谱的一些见解]。
构建大规模concept graph实际上需要做到以下三点“规模足够大、粒度足够细、概念足够准”,在一定程度上就对应了三个衡量的指标即:Cost, Freshness和Quality,在实际的构建中对应着四个part,即Extraction(Cost), Completion(Quality), Correction(Quality)和Update(Freshness)。
在Extraction部分,语义关系通常来自常识和特定信息(如文本和视频等),之前常用的是人工标注语料加上机器学习方法如支持向量机(Support Vector Machine, SVM),但是这么做会带来几个问题:代价问题、在cross-domain的时候性能下降以及在抽取之前往往不知道要抽取什么关系,导致不能预先指定人工标注的语料。目前主要使用的是下面几个方法:
1. Hearst Pattern
基于一些规则或者模板去做抽取,例如“NP such as NP”可以抽取出上下位关系。
2. Bootstrapping
初始化种子entity pair,使用这些种子pair在文本中扩展新的entity pair,但是会导致语义漂移的问题。例如,对于首都这一关系,使用种子entity pair(北京,中国)、(首尔,韩国)、(东京,日本)等,在文本中扩展时遇到“北京位于中国”的情况,从而将“X位于Y”对应到了首都这一关系,产生(江苏,中国)这样的(语义漂移)错误。
解决语义漂移,有如下几个方法:
a. Mutual Exclusion Bootstrapping(利用互斥类别,一个实体只能属于一个类别)[1]
b. Coupled training(建模不同抽取关系之间的约束,寻找最大化满足这些约束的抽取结果)[2]
c. Co-Bootstrapping(引入负实例来限制漂移)[3]
3. Distant Supervision
这个部分有几项工作:
a. 多源弱监督知识协同建模(这篇论文应该发表在AAAI ,但是没找到),基于Markov Logic,使用多种不同的弱监督来提升关系抽取的性能。包括两个实体的一致性、具有特定关系的实体约束以及类似的表达具有相同的语义。
b. 引入Attention机制对实例做选择[4]
c. RL for Relation Classification from Noisy Data
这是清华大学黄民烈老师组的工作,已被AAAI 收录,是我前不久看的一个talk,将强化学习用于有噪声的数据去做关系分类(抽取),想要解决也是在噪声数据集的问题,因为Distant Supervision的两个假设会导致大量噪声数据。
Framework(取自作者talk的ppt)
4. Open IE
在本部分会遇到两个问题:
a. 复杂句子的处理
1) 定义分解规则,将复杂句子分解成简单句[5]
2) 使用句子句法结构+转换规则进行简单句分解,如Stanford OpenIE
b. 语义的归一化
1) DIRT[6]
2) Soft Set inclusion
3) Topic Model
例如,X得到Y,如果X是公司,“X得到Y”往往可能等价于“X收购了Y”,但X指人的时候往往不能将“X得到Y”和“X收购了Y”归一,这时候需要Topic Model。
4) Jaccard
在Completion和Correction部分,可以使用collaborative filtering和transitivity做知识图谱的completion,包括遗失的边(关系)等。关于correction,则可以通过观察在概念分类(层)出现的环,这种环的结构很大程度需要进行修正。这里举一个肖老师讲的例子,发现Paris有个下位词是exciting city,实际上是因为将“……Paris such an exciting city……”打成了“……Paris such as exciting city……”,计算机就将这个错误的上下位词关系抽取出来了。这个问题可以通在两条边的置信度来删除错误的关系,即可以统计两条边出现的频率等等。
在Update部分,实际上是为了保证Freshness,很general的想法是把整个数据来源(如百度百科等)遍历一遍,看哪些实体需要更新,但是这一过程可能需要很长时间,显然用这种方法更新图谱就成了伪命题,永远更新不完。“How to Keep a Knowledge Base Synchronized with Its Encyclopedia Source”是复旦肖仰华老师组的工作,发表在IJCAI (我曾经总结过这篇paper,详情见我之前的博文[传送门——论文阅读笔记之How to Keep a Knowledge Base Synchronized with Its Encyclopedia Source],内含paper原文链接),关于Update这部分就不再赘述。
知识图谱的构建实际还需要继续细分,使用诸如实体链接、命名实体识别、实体关系识别等等方法,与此同时还需要人工做一部分工作,也就有了众包(Crowdsourcing)。
Crowdsourcing方面主要讲两个方面,第一个方面是基于众包的信息标注,在实际情况中,专家标注语料往往需要很大的开销,而普通标注员往往开销小,但是标注的语料质量不高。同时在cross-domain和new domain,或者引入new class的时候,之前标注的语料对新任务的帮助并不大。苏州大学陈文亮老师组的一项工作,利用对抗学习构建了AI Crowd框架,去学习不同标注员(少量专家和大量普通标注员)标注语料的共性,最终使得计算机无法分辨哪部分语料来自专家,哪部分语料来自普通标注员。该工作的意义在于当遇到new domain或者new class,只需要少量专家和大量普通标注员进行标注得到语料(此时的语料中质量并不高),再通过AI crowd框架使得语料质量得到提升。
第二方面,是关于更general的众包问题,如何设计众包的方式等等。目前的众包方式实际上可以分为显式众包(Explicit Crowdsourcing)和隐式众包(Implicit Crowdsourcing)。在显式众包方面,如何设计问题,因为众包参与者的偏向如下:判断题>选择题>填空题;更倾向于回答简单问题,如将问题“在NBA获得总冠军戒指的中国球员是谁?”拆成“孙悦是不是中国篮球运动员”和“孙悦有没有在NBA获得总冠军戒指”这两个问题。与此同时,需要考虑到cost和accuracy的平衡,在SIGMOD 上有一篇文“An Adaptive Human Interface for Crowd Entity Resolution”去mix multi-choice and Yes-or-no。同时在主动众包方面,如何计算众包参与者的报酬,也成为一个问题,这个方面可以参见我暑假参加中国人工智能大会时听到的一个talk“众包中的统计推断与激励机制”[传送门],美国微软雷德蒙研究院周登勇研究员在这方面做了相关工作。在隐式众包方面,有些数据的质量往往高于显式众包。关于隐式众包有几个比较有意思的工作:
1. reCAPTCHA利用验证码去识别古文中难以识别的字符,每年可以识别数十亿的内容且正确率超过99%[7]。
2. Common sense knowledge acquisition
这项工作实际上是利用类似于“你画我猜”的游戏,在玩家游戏过程中去获取一些common sense,而common sense是计算机无法从语料中获取的(如太阳是圆的,很难从语料里得到,但是一旦获取这个知识可以在物体检测里面发挥比较重要的作用),同时common sense在做一些推理和理解时往往十分的关键。在这样一个游戏中,当要猜“太阳”时,玩家可能会描述“这个物体发光发热并且是圆形”,这样计算机就可能获得平时得不到的common sense。
3. 儿童外语学习认知数据收集的在线游戏框架acquisition
这个框架来自我看过的一篇论文,发表在CCL 上,是清华大学张敏老师组的工作。通过在线游戏去获取针对学龄前儿童的第二语言为英语的词汇认知数据,并且通过一些原则和措施在收集数据的同时满足测验者的兴趣和使用需求,确保不会对儿童的成长造成负面的影响和打击。
关于隐式众包的一些思路可以给以后的数据收集带来一些启发,包括如何设计数据收集的框架,是不是可以引入一些类似于游戏中等级的机制等等。
高质量知识图谱的构建,可以在一些方面有所应用。例如,意图的理解;实体相似性判断,比如清华和北大,这两个词没有互相重复的文字,但是具有很强的相似性,这个相似性就可以通过知识图谱去发现;可解释的推荐,目前的推荐系统很多都只是推荐商品、新闻等等,并不能给出推荐的理由;可解释的人工智能,这部分可以参见肖老师曾经做过的有关talk[传送门——基于知识图谱的可解释人工智能]。除这些应用之外,其实还有很多很多,比如问答系统,下面就来简单说下问答系统。
目前的问答系统很多是基于知识库的,即KB-QA(Knowledge Based Question Answering),可以将KB-QA分为Semantic Parsing-based KB-QA(SP-QA)和Information Retrieval-based KB-QA(IR-QA),两种QA的思路完全有很大的不同
IR-QA确定问题中的中心实体,然后挑选候选答案,对答案做一个排序后回答query。下面是一个例子,回答query“姚明是哪里人?”,通过实体链接发现中心实体是姚明,基于知识库很多三元组比如<姚明,出生地,上海>、<姚明,职业,篮球运动员>等去生成问题,例如“姚明在哪里出生?”、“姚明的职业是什么?”,这里使用了NLG技术,即自然语言生成。将生成的有关问题和答案做一个排序,然后去回答query[8-9]。
SP-QA实际上是根据Semantic Parsing如CCG, DCS, SMT等去解析,然后生成lamda表达式或者其他形式如SPARQL等,再去KB中寻找相关答案去回答问题[10-12]。Semantic Parsing有下面几种方法:
a.Constructed rules[13]
b.Grammar-based[14]
c.Supervised Learning[15]
IR-QA和SP-QA有着各自的优点,SP-QA是基于Semantic Parsing的,在一定程度上是通过解析语义来回答问题,而IR-QA往往Recall很多,在现实场景中往往将两者结合使用。
这里补充智言科技的一个工作:SPARQL Generation via rule based model and seq2seq + RL,通过使用规则(模板)将自然语言的query生成SPARQL语句,在复杂的情况下,rule-based model的效果不是很好,使用一个seq2seq+RL的框架去训练一个model实现qery2sparql的转换。
上面的部分主要和学术界更相关,但实际上技术是要真正落地,所以在落地过程中会产生一些问题以及实际经验(包括但不限于):
1.在学术界研究的时候,往往query是比较理想的,但是在工业界会遇到更实例化的问题。比如,保险领域中用户问的是“打仗了会理赔吗?”,实际的条款只出现了“战争”这个词,而没有出现“打仗”;或者,相关车险有不能异地办理的限制,而用户可能更实例化地去问“南京的汽车能不能在上海买这个车险?”,如何更好地去处理这些问题,去回答更实例化的问答。
2.面对数据量不足的时候,是否可以做迁移学习,将一个已经解决的方案或者数据迁移到另一个相近的问题上;或者利用一些model去产生一些可以使用的数据等等。
3.在做数据融合(Knowledge Fusion)的时候,如果某个数据源非常非常可靠、质量很高的时候,可以不做fusion而直接使用某个数据源。
参考文献
[1] Mcintosh T, Curran J R. Weighted Mutual Exclusion Bootstrapping for Domain Independent Lexicon and Template Acquisition[J]. Proceedings of the Australasian Language Technology Association Workshop, :97–105.
[2] Carlson A, Betteridge J, Wang R C, et al. Coupled semi-supervised learning for information extraction[J]. :101-110.
[3] Ye F, Shi H, Wu S. Research on Pattern Representation Method in Semi-supervised Semantic Relation Extraction Based on Bootstrapping[C]// International Symposium on Computational Intelligence & Design. IEEE, :568-572.
[4] Lin Y, Shen S, Liu Z, et al. Neural Relation Extraction with Selective Attention over Instances[C]// Meeting of the Association for Computational Linguistics. :2124-2133.
[5] Corro L D, Gemulla R. ClausIE: clause-based open information extraction[C]// International Conference on World Wide Web. ACM, :355-366.
[6] Lin D, Pantel P. DIRT @SBT@discovery of inference rules from text[C]// ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2001:323-328.
[7] Von A L, Maurer B, Mcmillen C, et al. reCAPTCHA: human-based character recognition via Web security measures.[J]. Science, , 321(5895):1465-1468.
[8] Bordes A, Chopra S, Weston J. Question Answering with Subgraph Embeddings[J]. Computer Science, .
[9] Dong L, Wei F, Zhou M, et al. Question Answering over Freebase with Multi-Column Convolutional Neural Networks[C]// Meeting of the Association for Computational Linguistics and the, International Joint Conference on Natural Language Processing. :260-269.
[10] Yih W T, Chang M W, He X, et al. Semantic Parsing via Staged Query Graph Generation: Question Answering with Knowledge Base[C]// Meeting of the Association for Computational Linguistics and the, International Joint Conference on Natural Language Processing. :1321-1331.
[11] Dong L, Lapata M. Language to Logical Form with Neural Attention[J]. :33-43.
[12] Zou L, Huang R, Wang H, et al. Natural language question answering over RDF: a graph data driven approach[M]. ACM, .
[13] Tunstall-Pedoe W. True Knowledge: Open-Domain Question Answering Using Structured Knowledge and Inference[J]. Ai Magazine, , 31(3):80-92.
[14] Zettlemoyer L S, Collins M. Learning to map sentences to logical form: structured classification with probabilistic categorial grammars[C]// Conference on Uncertainty in Artificial Intelligence. AUAI Press, :658-666.
[15] Berant J, Liang P. Semantic Parsing via Paraphrasing[C]// Meeting of the Association for Computational Linguistics. :1415-1425.