相关标签

基于自学习机制的同类实体挖掘系统构建

发布时间:2019-12-05 09:03

  摘 要

  近年来,知识图谱(Knowledge Graph)在搜索引擎和自动问答等领域获得了广泛的应用。在通用知识方面,已经出现了很多较为成熟的知识图谱产品,比如 DBpedia、Freebase[9]。但在专业领域,相关知识还很稀缺。实体是构建知识图谱的基本元素, 因此,知识图谱的开发和完善离不开实体挖掘。

  随着命名实体识别技术日趋成熟,它的衍生任务——同类实体识别成为了研究热点。本文以同类实体挖掘为主题,完成了如下工作。

  (1) 本文分析同类实体挖掘的难点,并举例介绍和学习现有的同类实体挖掘技术。

  (2) 设计并实现了一套模式创建和模式匹配方法,并通过一些泛化手段来提高模式的灵活性和普适性。

  (3) 设计并实现了同类实体自学习系统框架。基于该框架,借助预测未标注实体正误和引入若干特征训练逻辑回归分类器,成功提高同类实体挖掘的正确率;通过数据预处理过程,降低时间成本。

  (4) 构建完成基于自学习机制的同类实体挖掘系统。在无标注文本上进行的测试表明, 本系统能够获得正确率较高的扩展实体集合。

  关键词:知识图谱;未标注文本;实体挖掘;模式匹配;自举学习

      前 言

  知识图谱,作为一种知识表示形式,在如今人工智能火热的时代,是计算机领域内一大研究热点。知识图谱使用<实体,关系,实体>这样的三元组结构来保存现实世界中的知识。近年来,知识图谱在知识表示和知识推理方面展现出了惊人的优势,并因此在搜索引擎和自动问答领域得到了广泛的应用。通用领域的知识图谱已经得到了较好的构建,但是在专业领域上,知识图谱的构建和完善还面临着很多挑战。作为知识图谱的基本元素,实体对于知识图谱的重要性不言而喻。要想完善知识图谱,首先要解决的问题就是对实体的识别和挖掘。

  按照所需要监督的多少,现有的实体挖掘技术可以划分为全监督学习技术和半监督学习技术。按照所使用的模式,可以划分为基于规则的和不是基于规则的[19]。但由于专业领域的实体标注需要一定的专业知识积累,语料标注将会非常困难,导致全监督学习技术没有很强的可用性。虽然全监督学习技术在全标注语料上的性能非常出色,但是在上述情况下,半监督学习方法相比于全监督学习方法,能够取得更好的效果。

  本文主要以同类实体挖掘为研究对象,举例介绍并分析了现有的同类实体挖掘技术。在半监督学习的设定下,实现了在无标注文本上的同类实体挖掘,解决了模式匹配过于缓慢的问题。通过尝试不同的方法,我们提高了系统挖掘实体的准确率,并实验验证了我们最终所使用方法的优势。最终,我们得到了一个完整的同类实体自学习系统。第一章 绪 论

  本章首先介绍了同类实体挖掘的研究背景和意义,接着简单阐述了实体挖掘任务, 并概述了本文所做的工作。最后,介绍了论文的组织结构。

  1.1 研究背景及意义

  知识图谱,作为一种知识表示形式,使用三元组<实体,关系,实体>这样的结构化数据来保存现实世界中的各种知识。近年来,知识图谱在搜索引擎和知识问答领域得到了广泛应用。利用知识图谱,搜索引擎能够探索更加深入、广泛和完整的知识体系,从而为用户提供更具条理的信息,甚至让用户发现他们意想不到的知识。而在自动问答中,无论是理解问题意图,还是搜索答案,都无一例外地需要进行语义理解和知识推理,这都少不了大规模、高质量的知识图谱的有力支持[10]。

  为了获得高质量的知识,知识图谱通过收集来自百科类站点和各类垂直站点的结构化数据来覆盖大部分知识。但是,知识覆盖率和更新速度都是非常不够的,这就需要从非结构化数据(如自由文本)中学习知识,补全知识库[24]。

  人对文本的知识获取可以分为两个部分,首先识别文本中的实体,并对实体分类, 然后,给这些实体建立关系,进而形成语义[17]。类似的,信息抽取即从无结构的文本中获得知识,如实体、实体间关系。最常见的实体类别是人名、地名、机构名和组织名。早期的系统使用手写正则表达式和规则来抽取实体。随着技术的发展,研究领域更多地使用基于机器学习的模型,并且取得了相当不错的效果,如条件随机场方法。但是这些机器学习方法出色的性能都基于一个前提条件——大规模高质量的标注数据。然而,大多数现实世界中的实体抽取任务没有任何的标注语料。标注数据不仅代价昂贵,而且消耗时间,一些专业领域的标注任务甚至无法保证标注正确率。

  这种情况在现实世界场景中是很常见的,人们需要从文本中提取具体的信息,但他们没有完全标注的数据。手动列出一些需求样例或者是使用现存知识库中的知识作为实体类别的样例,是一种相对简单的方法。这些样例作为“种子集合”,作为仅有的一点监督,系统便能不需要任何其它监督地从数据中学到更多的同类别实体,补足现有的知识[16]。这是我们所期望的情况,也是本文研究的内容。

  1.2 同类实体挖掘

  同类实体挖掘,也称作实体集合扩展。给定查询语句,即种子实体集合,同类实体挖掘能够自动给出更多的和种子实体同类型的实体,扩充种子实体集合,使种子实体所定义的实体类型集合更加完整[15]。一个著名的同类实体挖掘的应用,就是Google Sets。Google Sets 应用相当广泛,例如,当用户输入关键词“奔驰”和“大众”,用户将会看到一个包含很多汽车品牌名的关键词列表。挖掘的来源较为多样,如网页数据[22],Wikipedia 数据集,知识图谱,用户查询日志[18]等等。在很多数据上,都能找到一些特定类型的实体集合。

  本文主要讨论在非结构化数据——自由文本上的同类实体挖掘,图 1.1 举例给出了我们系统的输入和输出。

  图 1.1 系统输入、输出示意图

  1.3 主要工作

  本文的主要工作如下:

  (1) 本文列举了同类实体挖掘技术的难点所在,并在此基础上,举例介绍了现有的一些同类实体挖掘技术。

  (2) 本文详细介绍了我们所完成的基于自学习机制的同类实体挖掘系统,大到系统的框架设计,小到每一个部分的实现方法,都一一阐述了想法和原因。

  为了证明系统所使用的方法的有效性,并探索一些变量对系统的影响,我们进行

  了若干对比实验,并且在无标注文本上测试了系统性能,分析了实验结果。

  1.4 文章结构

  本文共分为五章,各章内容安排如下:

  第一章:绪论。本章介绍了课题的研究背景和意义,及本文完成的主要工作,最后,罗列了本文的篇章结构。

  第二章:同类实体挖掘技术。本章介绍了相比于命名实体识别,同类实体挖掘任务的难点所在,分析、对比了现有的同类实体挖掘技术,并举例说明了这些技术在实际系统中的应用。

  第三章:相关背景知识。本章介绍了我们定义的模式(规则)形式和理解、匹配方式,描述了一个基于规则自学习系统的框架流程。然后,说明了我们系统中用到的不是我们自己代码实现的工具。

  第四章:系统实现。本章具体介绍了系统各个阶段的实现步骤和实现方法,并说明了为什么这么实现和实现过程中的细节注意点。

  第五章:实验。本章详细描述了我们的实验过程,比较了不同方法下系统性能的差异。最后,展示了我们的系统在挖掘同类实体时的输出和输出的正确率。第二章 同类实体挖掘技术

  本章论述了同类实体挖掘的难点,并详细介绍了现有的几种实体挖掘技术,举例说明了这些技术在实际系统中的应用。

  2.1 同类实体挖掘的难点

  同类实体挖掘和命名实体识别有所不同,存在如下难点:

  (1) 标注语料困难

  由于实体类别过于繁多,而且一些专业领域的实体标注需要相关的专业知识支撑, 例如,生物领域的蛋白质和 DNA[11][23];化学领域的化学物质名称,仪器名称;医疗领域的药物名、治疗方法名[20][21]等等。这些标注任务对普通人来说过于困难,即 使聘请专家标注,进展也会非常缓慢。因此,语料标注将非常地耗费时间和金钱,标 注正确率也无法有效地保障。

  虽然某些全监督的机器学习方法已经能够在命名实体识别的任务上达到 90 几的F1 值,但是无法确保标注数量和标注质量对机器学习模型来说是一件非常影响可行性和性能的事情。

  (2) 类别定义困难

  命名实体识别中所有的实体类别都有明确的类别定义,但在用户自定义的实体类别中,要想进行科学性的定义比较困难。通常,用户只会给出需求集合的样例实体, 而这些样例实体提供的定义和监督非常有限。

  例如,用户给出种子实体集合{梅西,罗纳尔多,内马尔},这三个实体即属于西班牙足球甲级联赛运动员,又属于足球运动员,又属于体育明星。可能用户希望挖掘的是足球运动员,但是系统根据这三个实体,无法确定定义边界在哪儿,可能会学出来一些篮球界的体育明星,篮球界的体育明星确实和种子实体同类,都属于体育明星, 但是这和用户的实际定义已经相差甚远。

  2.2 同类实体挖掘技术

  2.2.1 基于机器学习的技术

  目前,在解决“命名”实体方面,全监督学习方法是具有统治地位的。全监督学习方法的思路就是在一个大型的标注语料中,抓住命名实体的正确实例和错误实例的

  某些特征,来学习并确定新的样例的正误。

  全监督学习方法将实体抽取问题看作序列标注问题,通过观察标注的训练样本, 训练出一个分类器,顺序地从左到右扫描文本,给每个字打标签,确定这个字应该被抽取还是不被抽取。一个典型的标注规则就是使用“BIO”,“B”标签意味着是一个意向抽取词的第一个字,“I”标签意味着是一个意向抽取词的内部,“O”标签意味着意向抽取词的外部。下面这句话就是使用“BIO”标签标注“PERSON”实体的句子。

  例:习 近 平 会 见 美 国 总 统 奥 巴 马 。

  B I I O O O O O O B I I O

  在上面的样例中,“BIO”标签表示两个实体应该抽取,分别是“奥巴马”和“习近平”。注意“B”标签是很重要的,当两个实体连接在一起时,“B”能够区分这两个实体。根据所使用的模型不同,取得成功的分类器包括隐马尔可夫模型、决策树、最大熵模型、支持向量机和条件随机场等等。下面比较详细地将介绍一下条件随机场。

  条件随机场是用于序列标注的概率统计模型[1]。条件随机场第一次在 Lafferty et al. [8]中被引入。给定观测序列为 X= (x_1,x_2,…,x_n),标签序列 Y= (y_1,y_2,…,y_n), 条件随机场定义如下:G = ( V, E ),Y = 〖〖(Y〗_v)〗_(v∈V),这样,Y 即以 G 中结点作为索引。这样,(X,Y)就是一个条件随机场,随机变量 Y_v 在条件 X 下,符合关于图的马尔科夫属性,并且:

  p(Y_v│X,Y_w,w≠v)=p(Y_v│X,Y_w,w~v)

  其中 w~v 意思是 w 和 v 在图 G 中是相邻结点。这就意味着一个条件随机场是一个无向图结构,图中的结点分为两个不想交的集合 X 和 Y,然后对条件概率 p(Y|X) 建模。通常,在模型训练过程中,可以通过极大化训练数据的对数似然函数来完成模型参数的学习,参数优化可采用的方法有随机梯度下降算法。

  2.2.2 基于规则的技术

  基于规则的学习,无论是远程监督形式的还是全监督形式的,最近几年都是热点话题之一。基于规则的方法在信息抽取领域被广泛使用,这些系统的不同之处在于它们创建规则的方式、学习规则的方法和学习规则挖掘的实体的方法。规则的用处在于两个方面:第一,它们在实体分类中可以作为非常好的特征;第二,它们能够鉴别出大概率正确的候选实体。规则学习可以理解为一种特征选取方法,规则其实就是特征模板的实例。下面,我将举例说明基于规则的全监督学习、远程学习过程。

  1、基于规则的全监督学习

  系统 RAPIER[2],是一种自下而上的学习系统,使用一种更喜欢较为一般的规则的学习算法。一个规则(模式)定义为目标填充符(目标实体)、前填充符(左侧上文)和右填充符(右侧下文)的组合。最开始,通过考虑已知实体的所有上下文词, 来创建最大化具体的模式。然后,RAPIER 将模式对通用化,专攻前填充符和后填充符。通过考虑模式抽取正确、错误实体的多少、模式的复杂程度来评判一个模式的好坏,其中算法更加喜欢较为通用的模式。注意,由于该系统是全监督的,对于每个模式来说,模式抽取的正确实体数、错误实体数都是已知的。

  2、基于规则的远程监督学习

  最近,有很多工作使用远程监督学习来解决实体抽取和关系抽取问题。远程监督学习有一些变种,比如基于规则的学习、自我训练学习、协同训练和标签传播。

  系统 Snowball 使用种子样例集合[3],学习模式来从文本中抽取<机构名,机构总部所在地>这样的二元组。这些种子样例元组被用来生成规则,生成的规则用来在文档中抽取新的元组,形成一种循环。在抽取过程的每轮循环中,Snowball 不使用任何的人工介入来评判模式和元组的质量。Snowball 的规则表示和其它大多数基于规则的系统不同,规则将实体周围的词语表示成向量形式,向量的构成和每个词语的重要程度有关。例子如下:

  <{},LOCATION, {<-, 0.5>, }, ORGANIZATION,{}>

  这个模式能够匹配的句子,如“the Irving- based ExxonCorporation”

  2.2.3 基于规则和机器学习混合的技术

  有多种方式来混合基于规则的和基于特征的学习系统[25]。例如,一个基于规则的学习系统的各个部分,可以使用基于特征的学习方法来学习好的模式或者是给实体排序[12]。下面以一个开放式信息抽取系统为例,具体阐述怎么样混合技术地学习。

  Never-Ending Language Learning(NELL) [4]系统从一些标注好的训练数据和大量的网页文档开始,解决通过半监督学习来从网页中抽取类别和类别间关系的问题。为了获得更高的准确率,该系统耦合许多不同类别和关系的抽取器来进行半监督训练。NELL 使用规则作为抽取器,在判断实体标签时使用到了机器学习方法。网页中的名词可能出现在两种上下文中,一种是自由文本式的上下文,另一种是半结构化的上下文。如“美国”出现在“总统”这样的上下文中,也可能出现在半结构化上下文中,

  例如特定 URL 中列表项的 HTML 标签。因此,NELL 训练两个名词分类器,每个使用一种上下文作为特征,并要求这两个分类器在对给定名词短语的标签判别上达成一致。

  2.3 本章小结

  总的来说,虽然在近几年,基于模式的方法没有基于特征的序列标注模型流行, 但是在全监督实体学习和自举实体学习中,基于模式的方法已经被证明是有效且成功的。而最近几年渐渐流行的混合型系统通常都有一个模式学习的部分,提高模式学习的有效性理论上来说也会改善混合型系统的性能,这也是我们在系统开发中所关注的内容。比较了上述方法后,我们认为,在标注文本中挖掘同类实体,序列标注模型是首选,而在未标注文本中进行同类实体挖掘,尤其是特殊类别的实体,还是基于规则的方法可行性更高,而合理地加入特征能够帮助基于规则的方法获得更好的性能。

  第三章 同类实体自学习系统框架设计

  为了更好地理解本章的剩余内容,本章包含了一些必要的背景知识。首先,我解释了我设计的模式(规则)的形式、意义及构建方式。然后,我描述了一个自学习系统的大致结构,同时也是本文所实现系统的架构。最后,我介绍了一些系统中使用的工具和一些分类器的使用。

  3.1 模式和规则

  有很多定义模式和规则的方式,有利用上下文词的模式和规则定义[13],也有利用句法分析树定义模式和规则的。在本系统中,我主要使用了模式的上下文词来构建相应的模式和规则。表 3.1 展示了 1 个模式的例子,和这个模式是怎么样匹配到句子中去的。

  如表 3.1 中所示,为了便于解码和程序理解,每个词之间以符号“##”分隔开, 每个上下文词是 json 形式的字符串,包含着该上下文词所需要满足的约束,如“{“word”:花岗岩}”表示这个词必须是“花岗岩”,{“class”:GPE}表示这个词必须是 GPE(Geopolitical Entity)类别的实体。

  (1) 对目标实体的约束

  “{?term}”表示匹配项,即该模式匹配到句子中后,这个位置的词就是该模式挖掘出来的目标实体。当然,当约束存在的时候,这个词还需要满足模式所规定的约束。如表 3.1 的第二个样例模式中,要求这个词满足词性约束,必须是个名词。对目标实体是否有约束,有什么约束,取决于所挖掘实体的类型。

  第一个模式,面向的是“颜色”类实体的挖掘,“颜色”类实体可以是名词,也可以是形容词,如句子“这个苹果是红色的。”中,“红色”是形容词;句子“彩虹中的颜色有红色、橙色、黄色、绿色、蓝色和紫色。”中,“红色”是名词。因此,定义

  词性约束只会减少目标实体的挖掘,没有任何意义。

  第二个模式,面向的是“山岳”类实体的挖掘,“山岳”类实体绝大多数情况下是名词,因此,加入词性约束可以过滤掉词性不是名词的实体,提高挖掘正确率。

  系统支持的约束包含词性约束和 NER 约束,对实体的约束要求,都由系统用户手动提供。

  (2) 上下文长度

  构建模式的过程,是通过考虑核心实体的上文和下文窗口内的词语。窗口大小是系统参数,包含最大窗口值,最小窗口值。表 3.1 中所示的模式,是在最大窗口为 4、最小窗口为 1 的情况下生成的,模式 1 包含 4 个上文词,模式 2 包含 2 个下文词。

  (3) 模式通用化

  将一个模式的上下文通用化,能够使模式匹配到更多的实体,从而减轻稀疏性, 提高学习性能[14]。常用的词通用化方法有,把这个词换成词性标签、停用词标记、NER 标签,这在之前类似的工作中都广泛使用过。除此之外,我采取的策略是,利用给定字典中的标签进行通用化。如表 3.1 模式 2 所示,种子字典给定了两种实体—— 山岳和省份。出现了句子:黄山 位于 安徽省 。

  围绕实体“黄山”有

  模式 A:(? term {“pos”: NN})##{“word”: 位于}##{“word”: 安徽省}

  模式 B:(? term {“pos”: NN})##{“word”: 位于}##{“class”: 省份}

  B 是 A 的通用化后的结果,根据给定的种子词典不难从 A 得到 B。而模式 B 应该比模式 A 更好,因为 B 可能还匹配到句子“华山 位于 陕西省 渭南市”,然而这句话 A 无法匹配到。因此,模式的通用化可以提高模式的适应能力,学到更多的实体,及时在较稀疏的数据上也能保持较好的系统性能。

  3.2 基于自学习的系统框架

  基于规则的自学习实体挖掘系统通常以种子集合开始[5],种子集合通常指给定的样例实体或者样例模式,然后迭代地从未标注文本中学习新的实体。每次迭代,系统给每个给定类别学习若干模式和实体。图 3.1 展示了系统的主要流程。模式评分部分,模式挖掘出的正确实体越多、错误实体越少,得分越高。高得分的候选实体将被加入种子集合,下一轮迭代被用来生成更多的模式。

  自学习过程包含如下几个步骤,迭代运行,直到挖掘不到更多的实体和模式。为了便于理解,下面举一个例子来具体演示系统流程。

  给定未标注文本:我有一条狗。我经常和我的宠物狗一起跑步,和我的宠物猫一起睡觉。同时,我还有一条毛巾。种子实体集合:{狗}

  (1) 步骤 1:数据标注

  使用现有的种子字典标注数据,将所有出现的词“狗”都标注为“动物”类别。

  (2) 步骤 2:模式生成

  根据所有“动物”类别词的上下文,创建若干的候选模式,具体的模式创建策略将在章节 4.1 中阐述。此处,只列举所有生成模式中的两个。

  模式 A:{“word”: 有}##{“word”: 一}##{“word”: 条}##{? term}

  模式 B:{“word”: 宠物}##{? term}

  (3) 步骤 3:模式评分

  在全标注数据上,模式的好坏非常好判断,抽取的每一个实体都可以明确地判断正误,从而根据正确数、错误数的多少来判断一个模式的好坏。但是在无标注数据上, 除了种子实体集合中的实体,所有其他实体的正误都是不明确的。通常的做法是假设所有未标注实体是错误的,这种做法的缺点太过保守,区分能力很低。对于步骤 2 中的 2 个模式,A 抽取的实体为:狗、毛巾;B 抽取的实体为:狗、猫。基于对比正确

  数和错误数的模式评分方法,会认为 A 和 B 的分数相同,即 A、B 抽取目标实体的能力相同。但是,实际上,模式 B 抽取动物实体的能力比模式 A 强。如果简单地认为 A、B 能力相同,后面可能会引入更多如“毛巾”之类的错误实体,从而导致噪音的传播,大大降低系统性能。

  因此,我采取的方法是尝试预测未标注实体的类别[6]。因为,某些特征能够区分出实体更加倾向于正确还是错误,例如:“狗”和“猫”的分布式相似度应该大于“狗”和“毛巾”的分布式相似度,即“猫”相较于“毛巾”,有更大的可能性是正确的实体。基于上述特征的比较,给模式 A 的分数应该比给模式 B 的分数更高,这种比较激进大胆的评分方式,不仅正确地区分出了模式 A 和模式 B 的好坏,而且能够进而减少错误的学习,提高系统的正确率。系统中具体使用了哪些特征和评分机制详见章节 4.2。

  (4) 步骤 4:实体学习

  将之前学习到的模式应用到文本中去,挖掘出一些候选实体。有些系统会将所有候选实体加入种子字典中。但是,再优秀的模式,也不能保证抽取的实体 100%正确, 语言的多样性决定了这种情况是十分少见的。因此,选取所有候选实体的做法会引入大量的噪音。更好的做法是设计一个实体评分器,给每个候选实体打分,只有分数最高或者分数大于某个阈值的几个实体才能加入种子字典。关于每次选取的实体数量, 在本系统中,每次只选取 5 个实体。因为选取的实体过多虽然学习地更快,但是可能会引入噪音。具体的实体评分器设计详见章节 4.3。

  (5) 循环迭代

  步骤 1-4 重复指定次数。通常来说,随着每轮迭代的进行,准确率降低,而召回率会升高。可以通过正确率来决定系统的迭代数量,例如:当所挖掘到的实体正确率低于某个阈值时,即停止迭代。也可以将迭代次数作为事先设置好的系统变量。本系统采取的方法是事先设置好迭代次数。

  (6) 系统参数

  和任何学习系统一样,自学习系统也可以通过调整一些参数来提高系统的性能。有两类系统参数,第一类参数和系统本身有关,包括每轮迭代学习的最大模式数量, 模式分数阈值,每轮迭代学习的最大实体数量,实体分数阈值,系统迭代次数。第二类参数和模式的建立有关,如核心词上下文的窗口大小,是否考虑上下文词和目标实体的词性约束、语义类别约束、NER 约束。

  上面的某些参数可以在开发集上手动调整,如某些阈值。我们可以从高阈值开始, 当系统挖掘不到更多的实体和模式时,降低阈值。这么做的好处是,系统刚开始只学习高置信度的模式和实体,减少了语义偏移的可能性。语义偏移现象,是指当系统学到了一点错误的实体,随着迭代的继续进行,这一点错误的实体可能会导致系统学到更多的错误模式和错误实体。

  3.3 分类器和实体特征

  本章将介绍一些使用工具计算的实体特征,和借助工具完成的分类器。

  (1) 布朗聚类

  我使用了布朗聚类算法[7]来以一种无监督的方式,将目标语料中的词语聚成若干簇。这是一种自下而上的基于 n 元语言模型的层次聚类方法。我使用的是实现好的版本[8]。我没有使用一些通用的词聚类,因为它们可能不包含特定领域的某些词。

  (2) 编辑距离

  我使用了编辑距离作为实体特征之一,用来预测未标注实体是否属于目标实体类别。编辑距离(Edit Distance),是指两个字串之间,由一个转成另一个所需要的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符吗,插入一个字符, 删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。

  我选取“编辑距离”作为实体特征集合之一的原因如下,对于有些实体类型,正确实体之间的字形常常极为相似。如颜色类实体,“红色”和“蓝色”编辑距离仅为 1;山岳类实体,“泰山”和“华山”编辑距离仅为 1;药物类实体,常以“XX 口服液”、“XX 胶囊”出现。因此,编辑距离可以作为一个有力的特征。

  (3) 逻辑回归分类器

  我实现的系统中,使用的所有分类器都是逻辑回归分类器,因为逻辑回归分类器是最常使用的分类器之一,并且在试点实验中,逻辑回归分类器的性能比支持向量机和随机森林的性能都要好。

  系统实现上,我使用的是 python 包 scikit-learn 中实现的逻辑回归分类器接口,。系统中所有的逻辑回归分类器,都是二分类器,无论给定实体类别有多少。对于每类实体,将所有种子实体集合中该类别的实体作为分类器的正例。负例包括所有种子实体集合中其它类别的实体和一些停用词,为了平衡分类器的性能,我会随机从负例集合中选取和正例数量相等的负例,作为真正喂给分类器的负例[6]。

  3.4 本章小结

  本章介绍了我们设计的模式的形式,以及怎样在文本中通过模式匹配来挖掘目标实体。为了增强模式的灵活性和普适性,我们引入了几种模式通用化的方法。有了模式之后,我们设计并完成了一个迭代形式的系统框架,使得系统中途不需要任何监督和人为介入,就能够自动地学习同类型实体。

  最后,对于不是我们代码完成的部分,我们做出了说明,即我们使用了别人的工具或是现成的 API 来完成相关的功能。

  第四章 系统实现

  本系统以迭代的方式学习未标注文本中属于特定类别的实体,算法 1 给出了系统

  的运行过程。本章将详细介绍算法 1 中的步骤,并通过一些例子说明具体实现方法的原因。

  算法 1:基于自学习机制的同类实体学习系统

  给定文本 D,对 D 进行预处理,生成模式和实体相对应的索引文件给定标签集合 L,种子实体集合?? ?? ∈ ?

  1. 查询索引文件,得到能匹配??的模式集合??

  2. 根据??所抽取的实体,对??中的模式评分

  3. 选取 Top k 个模式,将它们抽取的实体作为候选实体集合??

  4. 训练实体分类器,并对??评分,选取 Top n 个新实体加入??

  4.1 数据预处理

  由于字符串匹配是一个非常缓慢的过程,以扫描文本的方式生成模式并进行模式匹配会耗费特别多的时间,尤其是当遇到大批量句子的时候。因此,需要对数据进行预处理,预先对所有可能的词生成模式,并保存成索引形式,便于之后的查找和匹配。图 4.1 描述了数据预处理的概观。

  4.1.1 分词和词性标注

  我使用了苏州大学人类语言技术研究所的分词和词性标注工具,对数据文本进行标注。工具分为网页版和离线版,我使用的是网页版,即通过和服务器的目标端口建立连接来交换数据。工具提供分词、词性标注、依存关系分析三种功能,我们每次上传一句话,句子前面加入特殊的符号来标明需要使用哪些标注功能。接受到的返回数

  据依次包括分词结果、分词准确率、词性标注结果、词性标注准确率和依存关系,经过过滤,我们仅保存分词结果和词性标注结果。为了减少文件读写次数,加快程序的运行速度,我们将处理结果缓存下来,每 100 句写一次文件,并清空缓存区。

  我们假定系统需要的分词粒度即是工具的默认分词粒度大小。例如,对于句子“许多 革命党人 在 黄花岗 起义 中 英勇 牺牲 。”,如果要抽取起义名称,起义名称应为“黄花岗起义”,但是系统会简单处理这种情况,忽略多个词组成一个词组的情况, 只抽取一个词“黄花岗”,假定需要挖掘的实体仅由分词结果中的一个词构成。

  4.1.2 模式构建

  对于每个词,考虑该词的上下文窗口内的词,最大窗口大小为 4,最小窗口大小为 1。为了模式的多样性,为了充分利用核心词周围的信息,系统将构建三类形式不同的模式。以下面这句话中的词语“蓝色”为例。

  4.1.3 模式过滤和归档

  为了减少搜索空间,提高构建模式的质量,构建模式后需要对模式集合进行基于一定规则的过滤。下面是一些过滤规则及原因。

  (1) 如果该模式的上文或下文中只包含停用词,则删除。停用词表的生成是统计词频后,选取 Top100 个词作为停用词。这些词出现频率过于频繁,只包含停用词的模式有很大概率匹配到非常多的词语,例如上面一节提到的模式,“{“word”:是}##{? term}”、“{? term}##{“word”: 的}”。如果考虑这类模式,不仅会带入很多的噪音,而且没有任何意义,这种模式没有任何的知识性。

  (2) 如果该模式只匹配到了一个词,则删除。这种情况的出现,说明该模式的约束过于强烈了,这类模式可能质量是很高的,但是自学习的系统框架和任务的性质决定了这类模式没有任何意义。因为,自学习系统是借助“模式”这个桥梁来发掘更多的同类别实体,桥梁的两边一定是两个不同的实体,仅抽取一个实体的模式无法担当“桥梁”的作用。如上面一节提到的模式:{“word”: 水}##{“word”: 的}##{“word”:

  颜色}##{“word”: 是}##{? term}##{“word”: 的}##{“word”: ,}##

  {“word”: 而且}##{“word”: 山谷}

  过滤完成后,需要将模式进行归档。为了查找的方便,归档文件以二维 hash 表形式构建。第一份归档文件用于模式应用,第一维以模式字符串作为键,第二维以模式匹配到的所有词为键,值为对应的模式、匹配词所出现的次数。第二份归档文件用于根据种子实体生成模式,第一维以词作为键,第二位以所有能够匹配该词的模式为键,值为对应的词、匹配模式出现的次数。

  这样,在后面的模式生成和模式匹配操作中,时间复杂度都为 O(1),能够将时间节省出来,用于其它的计算过程和分类器训练过程。

  4.2 模式评分

  根据种子实体完成模式的生成和匹配后,一个基于规则的自学习系统最核心的部分之一就是对模式进行评分,一个好的模式评分策略可以筛选出高分辨度的模式,进而得到好的实体候选集。

  不使用全标注数据来判断模式的有效性会受困于两种问题。第一,如果一个模式抽取出少量的正确种子实体和大量的正确未标注实体,这种模式的得分会偏低。第二,

  如果一个模式抽取出平均数量的正确种子实体和大量的错误未标注实体,这种模式的得分会偏高。假设所有未标注实体是错误的会受到第一种问题的困扰,在忽视所有未标注实体的系统中上述两个问题都会存在。

  在本系统中,为了提高模式之间的区分度,为了得到更高质量的模式,我没有假设所有未标注实体为错误的,或是在模式评分阶段忽略所有未标注实体,而是采取了一种更加激进有效的方法——预测未标注实体的标签[6]。

  对于一个模式 r 来说,集合 ??、??和 ??分别表示模式 r 抽出的正确实体、错误实体和未标注实体。其中,|.|表示一个集合的元素数量。函数?????(?)给出了实体 e 属于类别 C 的概率。?????(?)根据下面介绍四种特征值计算,每种特征给出一个 0 到 1 之间的分数。公式中的√|??|鼓励模式抽出更多的正确实体。下面我提到的“正确实体”指属于属于种子实体字典中该类别的词语,用集合 P 表示;“错误实体”指属于种子实体字典中其他类别的词语或者是停用词,用集合 U 表示。

  (4.4 中间过程

  得到所有候选实体的得分后,选出得分最高的若干实体加入种子实体集合,此时, 便可以准备新一轮的迭代。在新一轮迭代开始之前,需要考虑一些问题,比如本次迭代没有被选取的候选实体该怎么处理。为了学到更多的实体,下一轮迭代肯定不会重复学习已经学到的模式,如果不进行记录,可能会导致上一轮遗留的实体被永远地遗忘,再也无法参与竞争。而,这么做显然会略过很多潜在的正确实体。

  因此,我会保留这些未被选取的实体,参与下一轮的竞争。同时,随着正确实体的增加,我会动态更新所有模式的分数,进而更新所有新老实体的分数,而不是仅仅着眼于当前的一轮迭代生成的数据。相当于是一个学习的过程。随着知识的积累,系统对实体正误的判断能够越来越清晰。

  4.5 参数读入形式和特征权重调整

  1、参数读入形式

  由于系统包含很多参数,为了便于修改系统参数和代码的整洁性,我建立了一个单独的配置文件,将系统参数全部放在配置文件里,并代码完成了一个配置参数的读入过程。

  参数格式为:参数名=参数。如有多个参数并列,以封号作为间隔符。如,可以用如下形式指定种子实体的类别名称和每类种子实体类别的文件路径:

  seedWordsFiles=GPE,data/gpe.txt;Mountain,data/mountain.txt

  上面的内容表示共有两类实体,第一类实体类别名称为“GPE”,种子实体存放在 data 目录下的 gpe.txt 文件中;第二类实体类别名称为“Mountain”,种子实体存在 data 目录下的 mountain.txt 文件中。

  参数支持整数类型、字符串类型和布尔类型,支持以‘#’开头的注释行。在配置文件中,实际上所有类型的参数值都是字符串形式的,但是配置读入模块会自动判别类型,并将字符串转换为相应的类型,形成系统内的参数。

  2、特征权重的调整

  上文提到,我们使用分类器学习到的特征权重作为计算加权特征分数和的权重, 但是存在一个问题。逻辑回归分类器学到的特征权重和可能大于 1,而每种特征分数根据实验结果可以发现,种子词的变化大部分情况下不是特别影响系统性能,但当种子词次数出现比较少时,会导致正确率骤降。原因可能是出现次数少,导致系统根据种子词抽取的模式普适性较差,抽取的实体噪音较大,进而错误传播,使后面学习的实体也会有偏差。

  (2) 为了探究预测未标注实体正误方法和封闭世界假设方法的差异,我们选用相同的种子词【德国,广州,菲律宾】,使用上述两种方法分别迭代 10 轮、20 轮、30 轮、40 轮、50 轮,每轮最多学习 5 个实体。下面先介绍一下封闭世界假设方法,封闭世

  界假设方法即为假设所有未标注实体为错误的,其模式评分和实体评分方式有所不同, 其它系统部分保持不变。对比结果如表 5.2。

  我们人工对上述结果进行了评估,前 50 个词准确率为 71.4%。通过结果可以看到,结果发生了一定程度的语义偏移,学到了湖泊类的实体。这是我们需要解决的问题之一,怎样控制学习实体的语义边界,使系统理解用户对类别的定义。例如, 在这个任务中,虽然种子实体既属于山岳类实体,也属于旅游景点,但是我们希望系统理解是学习山岳类实体,而不是学习旅游景点。

  5.3 本章小结

  本章所示的实验结果表明,降低种子实体的噪声,提高种子实体的覆盖面,能够提高所挖掘实体的准确率。而充分利用模式挖掘出的未标注实体,使我们的系统性能优于传统的基于封闭世界假设的方法。在探究单独特征对性能的影响时,实验结果较为模糊,需要在其他数据和实体上进行更多的实验来验证,什么特征适合怎样的实体。在未标注文本上的实验证明了我们系统的有效性,仅给定 3 个种子实体,便可以挖掘出正确率较高的其他几十个实体。第六章 总结和未来展望

  6.1 本文总结

  由于特定领域的标注文本少,但是又有知识图谱构建的需求,在未标注文本中挖掘用户定制类别的实体就显得很有价值。

  本文主要研究了同类实体挖掘技术,分析了同类实体挖掘的难点,举例介绍了现有的实体挖掘技术。我们设计并实现了一套模式创建和模式匹配方法,成功使用我们定义的模式来挖掘实体,并通过模式的泛化提高了我们模式的灵活性和通用性。参照半监督学习的设置,我们设计、完成了同类实体自学习系统框架,通过迭代和过滤, 尽量减少了噪声的蔓延,提高了系统的挖掘正确率。

  我们选取了 4 种特征来预测未标注实体的正确性,提高了模式间的区分度,使系统能够分辨出更好的模式。我们使用逻辑回归分类器来学习特征权重,成功解决了不同情况下不同特征重要性不等的问题。我们完成了基于自学习机制的同类实体挖掘系统的构建,给定需求类别实体的样例和未标注文本,系统便可以无其它监督地学习出和给定样本同类的其它实体。通过使用不同的种子实体,我们探究并分析了种子实体对系统性能的影响。

  6.2 未来展望

  实验证明,我们的系统在抽取同类实体上可以得到较高的正确率。但是从未标注文本中挖掘同类实体仍然面临着很多的挑战。我们的系统主要存在以下的问题:

  (1) 有些模式会抽取出很多正确的实体,和个别错误的实体,在这种情况下, 特征(模式得分对实体的支持)在实体评分阶段会给该实体很高的分数,导致系统挖掘出错误的实体。

  (2) 当种子实体集合没有覆盖整个需求集合时,系统的任务域就变得很模糊。例如,用户给出的种子实体集合是两个足球运动员的名字,系统便无法辨别是学习所有运动员的名字还是仅挖掘足球运动员的名字。

  (3) 基于分词的结果,我们的系统假定实体只包含单个词,但是实际上,实体可能会包含分词结果中的多个词,我们无法发掘这类较长的实体。并且分词的结果可能会出现错误,而此时系统只能跟着犯错。

  为了解决第一个问题,我们未来工作的一个部分就是,扩展特征种类,或者是采

  取更复杂的评分策略,来提高系统对错误实体的鉴别能力。

  为了解决第二个问题,我们将来在进行实体挖掘前,可以根据用户需求,对种子实体集合的质量进行评估,尝试减少歧义,提高覆盖面。必要的话,可以聘请专家, 来完成种子实体集合的构建。

  为了解决第三个问题,我们将来可以在现有的系统基础上进行改进,也可以基于字来完成同类实体挖掘任务。

  除上述内容之外,学习其它形式的模式(规则),如依存句法树,可能也会提高同类实体挖掘的效果。

毕业论文:http://www.3lunwen.com/jsj/dzjs/5430.html

上一篇:基于自适应FEC分配策略的光网络的优化设计

下一篇:没有了

     移动版:基于自学习机制的同类实体挖掘系统构建

本文标签:
最新论文