天天看点

信息抽取(Information Extraction)涵盖了哪些内容?

本文参考了Mayank Kejriwal的新著《Domain-Specific Knowledge Graph Construction》(2019年)

写在前面

        信息抽取(Information Extraction,简称IE),这篇文章主要介绍了IE的任务范围,以及每种任务的介绍。

信息抽取(Information Extraction)涵盖了哪些内容?

信息抽取的任务范围

        IE是一个非常广泛的任务,主要分为了以下四个部分(本文接下来将分别讲述这四个部分,大家可以挑自己想看的部分看。其中一些名词的定义在比较靠前的篇幅里):

  1. 命名实体识别(Named Entity Recognition,NER)
  2. 关系抽取(Relation Extraction,RE)
  3. 事件抽取(Event Extraction,EE)
  4. 网络信息抽取(Web IE)

        其中NER、RE和EE是自然语言处理(natural language processing,简称NLP)的关键研究方向。而Web IE是所有AI(人工智能)领域都在研究的内容。

        举一个实际应用的例子:如果我们要抽取文字较多的网页(如一篇博客),我们就要先运行一个wrapper(Web IE的一种技术),把网页的各项HTML内容分开,再取得里面的文本内容,接下来,就使用训练调整过的IE,来进行NER和RE。

        当然,我们有很多组合方式可以用来进行信息抽取,这取决于设计者的经验和想象力。

        接下来的所有技术都不是相互排斥,而是相辅相成的。

1. 命名实体识别(Named Entity Recognition, NER)

        NER通常是在解决IE问题时第一个使用的方法。给定一篇文档和一个包含了n种实体类型的集合 T = {t1, ..., tn}(集合 T 通常由ontology定义)之后,一个NER系统通常是返回一系列抽取到的mention。

        比如这个句子:“Tom Cruise shot the latest Mission Impossible movie in Dubai”(汤姆克鲁斯在迪拜拍摄了最新的《碟中谍》),这里我们要提取的metion用粗体字显示,另有规定好的类型集合 {Person, Location}。

        很明显“Tom Cruise”这个mention是Person类型,“Dubai”这个mention是Location类型。mention被通常认为就是命名实体(named entities)。可是,有时候不同的mention指向同一个实体,那就要对其进行判断,确认它是同一个实体,这个过程叫做entity resolution。

        NER可以分成两个部分:

  1. 发现命名实体(detection of named entities)
  2. 分类命名实体(classification of the named entities)

        第一部分,发现命名实体似于分割(segmentation),用于判断固定词组(tokens),例如,“President Barack Obama”(美国总统巴拉克奥巴马)就是一个命名实体,而不用管其中的“Barack Obama”也是同一个意思。

        第二部分,分类命名实体需要将类型(属于集合 T )分配到发现到的命名实体上。

        在实践中,NER会变得非常复杂,比如抽取某一个事件的时候,有一些规定事件的ontology包含了非常细的分类(如“reject accusation”,拒绝指控;“deny responsibility”,否认责任;“express accord”;表示同意;“appeal for diplomatic”,呼吁外交)。这样的话大家就会想用最精确的类型来描述发现到的实体,而这比起用粗粒度的分类(如“Location”,地点;“Person”,人物)来表示要困难得多。

        我们可以假想一个具有细分类的ontology,它包含了:“Politician”(政治家),“Businessman”(商人);“Celebrity”(名人),这些类别包含在更高层的类别 “Person”(人)当中。这样,我们既可以给“Tom Cruise”(汤姆克鲁斯)打上“Businessman”(商人)标签,也可以给他打上“Celebrity”(名人),可是到底怎么才算正确呢?

        所以,精确定义命名实体在理论上很重要,但是命名实体在上下文中几乎总是很明显的。一个在实际中常用的定义就是,命名实体就是一段文字,这段文字能被预先定义好的ontology定义类型。而判断这个命名实体是否正确,就取决于一些标准,考虑到人工错误和标注者意见的不同意,这个标准必须有一定的容错性。

信息抽取(Information Extraction)涵盖了哪些内容?

        (关于NER中用到的方法,以及前沿的问题,我会单独写一篇,敬请期待~)

2. 关系抽取(Relation Extraction, RE)

        关系抽取(RE)是发现和分类命名实体(named entities,NEs)之间的关系(relationships)的问题。

        关系(relation)表示了定义好的两个或多个实体之间相互关系(relationships)。

        我们来看几个表示关系的具体例子(方括号中的是实体):

  1. 个人/社会:[Mary, Queen of Scots](玛丽,苏格兰女王)是[Elizabeth I](伊丽莎白一世)的皇室表亲。
  2. 雇佣/所属:[Albert Einstein](阿尔伯特・爱因斯坦)是[Princeton, New Jersey](普林斯顿大学,新泽西州)的[Institute for Advanced Study](高级研究所)最杰出的教师之一。
  3. 物理:[Josephine](约瑟芬)把[couch](沙发)从房间的左边角落移到右边角落,这样就在她[aunt's portrait](姨妈的肖像)旁边了。(※注意这个句子同时隐含了next-to关系)
  4. 地理:[India](印度)和[Nepal](尼泊尔)是邻国。

        与命名实体识别(NER)一样,RE系统中关系类型(relationship types)的集合范围是用预先规定好的ontology来定义的。而现在很多RE的研究倾向于在评价时依赖较少的ontology,例如Automatic Content Extraction(ACE)。

        ACE主要研究binary关系(两个实体之间的关系)。这两个实体通常被称作arguments。ACE的ontology规定了一系列主要的关系类型以及他们的子类型,例如:物理类型(一个实体在另一个实体旁边);个人/社会类型(一个人是另一个人的家庭成员);雇佣/所属类型(一个人被一个组织所雇佣)。

        ACE同时区别了关系抽取(relation extraction)和关系表示抽取(relation mention extraction,这里的中文翻译可能不准确)。前者指的是基于语料库中的信息识别实体之间的语义关系(semantic relation),而后者指的是识别每一个实体关系的mention。一个有趣现象是:大家会先把精力放在抽取mention上,然后用coreference resolution和entity resolution来把不同的mentions聚类为同一个实体。

        在实践中,语料库级别(corpus-level)的关系很大程度上取决于正确的mention-level关系的抽取,所以大家都非常关心mention-level关系的抽取。

        这些例子同时还说明了RE问题在关系中的实体(arguments),关系类型(relation types)和粒度(granularities)上的开放性。意思是,即使在简单的地理类型关系的句子中,都会存在很多关系的子类型(如“neighbor-of”,与...接壤;“has-continent”,拥有大陆;“located-in-country”,位于XX国家;等等),而每一个子类型都能被不同的方式所表达(例如,我们也可以把"neighbor-of"叫做 "share borders"),这就造成了在信息抽取(IE)时的歧义(ambiguity)。

        由于以上的原因,尽管进行基于领域(domain-specific)构建知识图谱(knowledge graph,KG)十分重要,但是关系抽取系统不能达到目前NER系统的水平。一般来说,抽取的定义越复杂,抽取的效果就越糟糕。例如,事件抽取的效果往往比单纯的关系抽取要差。

        成功的RE取决于发现关系中实体(argument)的表示(mention)(例如,"Barack Obama",巴拉克・奥巴马; United States",美国),以及把这些mention关联到ontology类型的实体类型(例如,"Politician",政治家;"Country",国家),还有实体关系的关系类型(如"PresidentOf",XX的总统)。

        RE面临着很多挑战,有一部分与之前NER中提到的很类似。首先,RE更依赖于领域、语言、以及NER的效果。在RE中的监督机器学习(supervised machine learning)技术同样受限于缺乏训练数据(training data)。另外一个有趣的问题在于,对关系的理解(notion)在本质上就有歧义,这意味着定义关系本来就是一件非常困难的工作,在多人一起定义的时候往往会产生分歧。

       把二元关系抽取(binary RE)扩展到多元(arity)关系抽取也有很多问题,就像我们刚刚所说的,事件抽取往往比普通关系抽取要难。例如,我们可以很快判断出“奥巴马是美国总统”这个关系,但是判断“奥巴马是2009年至2016年的美国总统”就要困难一些。在复杂的问题当中,噪声数据(noise)就会让结果完全没法用了。

       很多用于NER的技术,包括监督学习(supervised learning),半监督学习(semi-supervised learning)和非监督学习(unsupervised learning),都可以应用于RE。有很多经典的RE系统都使用了半监督学习,如DIPRE,Snowball,KnowItAll 和 TextRunner。

       然而针对不同的问题,建模的方式也不同,假设我们有一组二元关系(binary relation),其中一种给RE建模的方式就是训练每一组binary关系,或者把所有抽取到的关系用multi-calass的分类器分类。当然,如果你对每一对从文本当中抽取的关系都这么做的话,复杂度将会陡增,效果也会骤降。所以,通常需要加上一些限制条件,例如:从给定的一段文本里抽取关系,或者从一个句子里抽出关系。

       由于RE问题的复杂度且又比较新,所以与NER相比,它的整体性能较低;其次,与NER相比,随着监督学习水平的降低,效果往往会下降得更为激烈。如果想了解更多关于RE的内容,可以参考以下几篇survey论文:

  1. A survey on relation extraction methodologies from unstructured text (付费论文)
  2. A survey of deep learning methods for relation extraction
  3. A Review of Relation Extraction

       就像作者们在文中描述的那样,RE领域比起NER相对较新,还有很多工作需要做,特别是在多语言RE(multi-lingual RE),多元关系RE(n-ary RE)以及提升新方法的效果等方面。

信息抽取(Information Extraction)涵盖了哪些内容?

3. 事件抽取(Event Extraction)

       事件抽取(EE)是指从文本中识别事件,然后生成详细的结构数据,在理想情况下能够识别出“谁对谁做了什么,在哪里,在什么时候,用什么方式/工具,以及为什么”。EE涉及到多个实体和实体间关系的抽取。

       例如,从以下文本抽取恐怖袭击事件:“Masked gunmen armed with assault rifles and grenades attacked a wedding party in mainly Kurdish southeast Turkey, killing at least 44 people.” (一群戴着突击步枪和手榴弹的蒙面枪手袭击了土耳其东南部库尔德人的一场婚礼,造成至少44人死亡)。这里需要识别出肇事者(“masked gunmen”,一群蒙面枪手),受害者(“people”,人),受伤/受害人数(“at least 44”,至少44人),武器及方式(“rifles and grenades”,步枪和手榴弹),以及地点(“southeast Turkey”,土耳其东南部)。

       与关系抽取(RE)类似,这个问题非常domain-specific(基于特定领域)。例如,在兼并和收购领域,一个事件可以是刚刚发生的一个企业兼并,这时候就需要抽取出要进行兼并的公司,承销商,兼并日期,具体合并条款,律师等等。EE是NER,RE和EE三个之中最困难的。

       EE是一个年轻的领域,暂时还不能说哪种方法比较好,不过已经有了一些大家都开始效仿的方法,例如,为了降低EE任务的难度,在任务刚开始的时候设计一系列的classifiers(分类器),用于抽取事件的trigger(触发器),然后定义trigger argument(触发实体)。随着深度学习网络的发展,卷积网络(CNNs)经常被用作classifiers。然而,pipline方法(由几种方法合并而成的方法)都会受到级联错误传播的影响,因此joint extraction(联合提取)方法成为了最先进的技术。就像它的名字,joint IE方法将会同时提取出事件中的trigger和argument,其使用的方法是structured perceptron和dependency parsing算法。

       我们发现,在joint IE中,events(事件)和entities(实体)紧密相连;实体通常是事件的参与者,没有实体的事件非常少见。对于事件和实体的解释非常依赖于上下文。现有的关于IE的工作主要将事件与实体分开,然后在sentence-level进行推理。

       另一个最近很热门的方法就是对各种事件和实体,及其之间的dependencies(依赖关系)进行建模。然后在整个文本当中应用联合推理(joint inference)。实际上,这个机器学习任务包含了三个简单的子任务:学习within-event结构,学习event-event关系,学习实体抽取。我们要做的就是先学习所有这些子任务的概率模型,再用joint inference框架将学习的模型集成到单个模型中,接着联合提取文本中的事件和实体。

       上面这个方法的实验结果非常棒,可以说是使用了ACE ontology的在EE上实现的最好结果。更重要的是,这些子任务能够相互提升性能,例如,就算是很成熟的实体抽取,在使用联合推理框架时,都会得到更好的结果。这也说明了事件的triggers和arguments有很紧密的语义(semantic)关系,最好在提取框架本身的时候明确地建模这种连接(connection)。

       就像所有的joint和collective方法一样,joint IE方法可能在遇到困难问题时表现不佳。为了解决这个问题,一些方法倾向于缩小研究的范围。一个复杂的方法是,在保证运行时间的同时,使用双重分解(dual decomposition)进行联合推理。还有一些方法在做减轻复杂度的joint IE。

       总的来说,相对NER,EE的表现非常糟糕。现在主要有以下研究热点:

  1. 利用document-level的上下文提高EE表现。
  2. 有研究使用了生物学领域中经常出现的event-event的关系(因果关系,抑制关系等),但这样的关系十分基于某个领域。
  3. 在一般文本的事件抽取中,有研究注意到利用暂时性的事件关联(事件的时间关系)。
  4. 在ACE领域中,有研究使用同时出现(co-occurren)的事件类型的模式来进行事件分类决策,因为同时出现的事件是很有用的一个特征(feature)(例如,“死亡”这个事件与“袭击”这个事件关系很强。)在最近几年,很多一般方法通过合理的特征设计(feature design)来处理广泛领域的事件关系。
  5.  与其他抽取问题类似,规定ontology的范围的方法也有应用,但是正在探索阶段。
信息抽取(Information Extraction)涵盖了哪些内容?

4. 网络信息抽取(Web IE)

       网络已经是很多领域唯一且最大的数据源,像评论,电子商务,学术文献,还有一些调研领域,例如投资诈骗和人口贩卖。在给定一个领域之后,问题就是要找到相关的网页。这个问题被称作domain discovery(领域发现)。通过近年的研究(比如强化学习和网页分类),解决这个问题的方法有了新的突破。但仍然还留存了很多困难且复杂的问题。       

       Web IE主要就是用于处理这个问题,它还有一段悠久的历史:Web IE中经常使用的一个技术叫做“wrapper”,它本来是指是在网页信息集成系统(web information integration system)中,用于统一查询接口,同时访问多个信息源的一个组件。在信息源是Web服务器的时候,wrapper通过HTTP协议来向Web服务器发送请求,以获得生成的网页,然后使用IE来抽取HTML文档中的内容,最后与其他数据源集成。

       wrapper induction(WI)是生成wrapper的处理过程。广泛地来讲,wrapper使用了基于抽取规则(extraction rules)的模式匹配(pattern matching)。根据新任务来裁剪一个WI系统是一个挑战,根据文本的类型,领域,以及脚本。为了最大化重用性和最小化运维成本,设计可训练的WI成为了一个重要课题。

       与基于NLP的IE不同,Web IE主要处理半结构化的线上文档,然后利用服务器上的应用,将这些文档中的信息存储在KG数据库中。而且Web IE通常不能使用一些IE中经常使用的技术,因为HTML的解析与文本解析非常不同,所以在Web IE当中,经常使用的技术是句法模式,文档模板的排版结构等等。

       与NER类似,WI系统也可以被分为监督,半监督,非监督三种。

到这里《信息抽取(Information Extraction)涵盖了哪些内容?》就全部结束了

下一篇文章是《实体解析(Entity Resolution)涵盖了哪些内容?》,敬请期待~

本人也在边总结这本书边学习知识图谱,如果有错误还请指正^_^

这一系列文章主要是提取一些最最最关键内容,想仔细阅读的朋友们还请移步原书哟~

(last but not least:转载请注明出处)

继续阅读