




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用领域词典构建词典网络知识图谱
摘要在日常的图书馆、银行、股票交易、搜索引擎以及社交网络等各种服务中,我们在不断地消费各种信息并产生相关数据。然而,近95%的数据都以非结构化的文本形式出现,这就意味着一些有价值的信息被隐藏,我们尚未探索利用。语义网络的重要目标就是将非结构化文本转换为格式化表示,以便于信息的集成和检索。知识图谱就是一种形式化描述实体以及实体间关系的语义网络。此外,开放信息提取(OpenIE)指的是从纯文本中提取关系元组,通常是二元关系,例如(BarackObama;wasbornin;Hawaii),关系名称是链接两个参数的文本。在本文中,我们基于OpenIE方法生成的二元关系,提出了一种构建词典网络知识图谱的方法。本文从选取的领域词典(牛津法律词典)出发,提取词条中的实体、属性等相关文本信息,构建词典网络图谱;接着以词典中词条的释义信息为根据,使用斯坦福的OpenIE方法进行关系提取,整理和筛选后得到相关三元组信息;最后使用bert将三元组向量化,进行TransE实验,以进一步描述和评估得到的领域词典网络。关键词:领域知识图谱;关系提取;词典网络可视化;TransE算法
AbstractInoureverydayservicessuchaslibraries,banks,stocktradings,searchenginesandsocialnetworks,weareconstantlyconsumingallkindsofinformationandgeneratingrelevantdata.However,nearly95%ofthedataappearsinunstructuredtext,whichmeansthatsomevaluableinformationishiddenandwehavenotexploredityet.TheimportantgoaloftheSemanticWebistotransformunstructuredtextintoaformattedrepresentationforinformationintegrationandretrieval.KnowledgeGraphisaSemanticWebthatdescribesentitiesandtherelationshipsbetweenthemformally.Inaddition,openinformationextraction(OpenIE)referstoextractingrelationaltuplesfromplaintext,usuallybinaryrelationships,suchas(BarackObama;wasbornin;Hawaii),wheretherelationshipnameistextthatlinkstwoparameters.Inthispaper,weproposeamethodforconstructingadictionarynetworkknowledgegraphbasedonthebinaryrelationshipgeneratedbytheOpenIEmethod.Startingfromtheselecteddomaindictionary(OxfordLawDictionary),thispaperextractstherelatedtextinformationofentitiesandattributesintheentry,andconstructsthedictionarynetworkgraph.Then,basedonthedefinitioninformationofthedictionaryentries,Stanford'sOpenIEmethodisusedtoextracttherelationship.Afterextracting,sortingandfiltering,therelevanttripletinformationisobtained.Finally,weuseberttovectorizethetriples,andtheTransEexperimentisperformedtofurtherdescribeandevaluatetheobtaineddomaindictionarynetwork.KeyWords:Domain-specificKnowledgeGraph;RelationExtraction;dictionarynetworkvisualization;TranslatingEmbeddingalgorithm
目录图清单 I表清单 Ⅱ第一章绪论 11.1选题背景 11.2研究意义 11.3文献综述 21.3.1知识图谱基础发展 21.3.2基于自由文本的开放信息提取 31.3.3基于OpenIE的关系提取与链接 41.4本文研究方法 4第二章实验相关技术说明 62.1StanfordToolkit 62.1.1StanfordCoreNLP 62.1.2StanfordOpenIE 82.2Python图形化显示库 102.3BERT 122.4TransE算法 13第三章实验过程 153.1词典选择 153.2文本提取及预处理 163.3词形还原 173.4基于实体对进行初步网络显示 193.5关系提取及关系定义 203.6词典网络的图形化显示 223.7使用BERT进行文本向量化 233.8TransE实验部分 25第四章结论 26参考文献 27致谢 30中国地质大学学士学位论文PAGE48祝钰莹:利用领域词典构建词典网络知识图谱第一章绪论1.1选题背景知识图谱(KnowledgeGraph;KG)这个概念是Google公司在2012年5月提出的[1],是Google公司用来提高其搜索引擎性能的知识库。知识图谱的提出是人工智能领域对知识的需求而导致的必然结果,其发展又得益于像数据库、语义网、信息抽取及专家系统等众多研究领域,从这个角度来说,知识图谱是交叉融合的产物而非一脉相承。本质上,知识图谱可以认为是一种揭示实体之间各种关系的语义网络,它可以对目标事物以及事物间相互关系进行形式化描述,一般通过三元组形式(triple(subject_entity,relation,object_entity))表示。知识图谱可以分通用知识图谱(General-purposeKnowledgeGrap;GKG;不限领域)以及领域知识图谱(Domain-specificKnowledgeGraph;DKG;限定领域)两类,类似医学知识库、工商知识库、电商知识库、军事知识库都是常见的领域知识图谱。通用知识图谱涵盖的广度明显大于领域知识图谱,而领域知识图谱往往需要指出的是区别于基本概念的层次较深的细粒度概念,更偏向专业性。另外,从知识应用方面说,领域知识图谱相对密集,考虑到知识边界,其推理链条可以较长。也就是说,在一个相对稠密的领域知识图谱上,经过长距离推理后的结果仍可能还有意义,而通用知识图谱相对稀疏,多步推理之后很可能语义漂移严重,以至于“离题千里”。因此,随着近些年知识图谱相关技术的进步,知识图谱的研究与落地工作发生了一些转向。越来越多的研究与落地从通用知识图谱转向领域或行业知识图谱,或转向企业知识图谱,将知识图谱相关技术与各行业进行深度融合已成为一个重要趋势。1.2研究意义宏观意义上说,知识图谱为互联网上各种海量、动态、异构的大数据组织、表达、管理及利用提供了一种更有效的方式,提高了网络的智能化水平,使其更接近于人类的认知思维。知识图谱的重要意义不仅在于它是个全局知识库,而且它更是支撑智能搜索、深度问答等智能应用的基础[2],诸如谷歌公司的GoogleSearch、微软公司的BingSearch、百度公司的小度机器人、Facebook公司的GraphSearch等等都引用了知识图谱。目前,知识图谱已经在深度问答、智能搜索、社交网络以及一些相关垂直行业中有所应用,并逐渐成为这些应用发展的动力源泉。知识图谱侧重表达实体与实体之间的语义关联,大部分的语义关联是客观明确的,而在实际运用中,支持我们进行决策的语义关联需要考虑一定的过程,具有动态性和一定主观性,例如投资决策、疾病诊断等。传统知识图谱工程专家构建、规模有限、代价高昂。在大数据的赋能下,知识图谱已经能解决很多实际问题,但鉴于人力成本持续提高,我们期望构建过程尽可能自动化,从一定程度上降低对专家的依赖。一方面,由于我们对目标图谱的质量要求,知识的验证过程需要大量的人工操作;另一方面,大量的人工干预又决定了领域知识图谱建立过程的自动化程度相对较低。这样,本文尝试基于特定的领域词典,尽可能以自动化的方式构架词典网络图谱,并基于构建的网络图谱进行实验以评估整个网络图谱。1.3文献综述1.3.1知识图谱基础发展 20世纪70年代,专家系统(ExpertSystems;ES)是人工智能的重要分支,它指的是用知识和推理过程来解决那些借助专家知识才能得以解决的现实问题的计算机程序[3],它由两部分组成:知识库与推理引擎。其中,人类专家提供知识,将这种显式的知识映射并存储到知识库中用以推理。对词汇的理解是解读人类自然语言的关键,MillerGA(1985)在新牛津词典的第一次UW中心会议上提出开始建立和维护一个名为WordNet的英语词典,旨在更有效地结合词典信息和现代计算[4]。国内类似的《同义词词林》[5]及HowNet知网[6]都是构建的可被计算机处理的、以概念为基本语义单元的汉语词典。Berners-LeeT(1998)提出语义网(SemanticWeb),是旨在建立根据语义进行决策的智能网络,以实现人机之间的无障碍沟通[7]。Berners-LeeT(2006)提出链接数据(LinkedData),提出按照4条原则建立起数据之间的链接以形成巨大的链接数据网[8]。2007年开始的DBpedia知识库利用RDF等语义网技术,与WordNet等众多知识库建立链接,是第一个大规模的开放域链接数据网络[9]。类似的还有基于维基百科的Wikipedia(全球性多语言)[10]、Yago(多源背景知识)[11]以及Freebase(社区成员贡献结构化知识)[12]。国内中文知识图谱主要都是基于百度百科及维基百科的结构化信息构建的,如百度知识图谱(/)、搜狗知立方(/v66616234.htm)、清华大学的XLore(中英文、跨语言链接技术)[13]、上海交通大学的zhishi.me[14]、复旦大学GDM实验室的CN-pedia[15]。国内的相关领域知识图谱有中医药学语言系统(TraditionalChineseMedicineLanguageSystem;TCMLS;/),词库涵盖了中医药学科系统以及与中医药学科相关的生物、化工等自然与人文科学专业词汇,共收录大概10万个概念、30万个术语及127万条语义关系。相关领域图谱还有国外的Kinships(亲属关系)、UMLS(医学领域;/research/umls/)、Geonames(地理信息领域;/)以及国内的“天眼查”(企业信息)(/)。2017年7月,国内多所高校发起cnS(/),旨在通过社区力量来维护开放域知识图谱的Schema标准。具体来说,cnS是个基于社群的数据标准,它结合中文特定场景的应用需求,连接了、WikiData等开放数据接口标准,为中文领域的知识图谱、网页开发、聊天机器人等在线服务提供了数据接口标准。1.3.2基于自由文本的开放信息提取 近年来,由于链接开放数据的发展与支持,解析和处理机器数据相对方便,其中已发布超过800亿个RDF三元组,这些数据的来源主要是关系数据库、元数据、HTML表格或者维基百科信息框这样的结构化或半结构化原始信息。由于互联网中大部分信息都是用非结构化的自由文本的形式呈现的,而自动抽取方法又都主要是基于在线各种百科中的结构化的信息,因此,在链接数据发展的同时,大量基于自然语言处理(NaturalLanguageProcessing;NLP)、信息抽取(InformationExtraction;IE)技术来获取知识的方法被提出,这样可以来构建基于自由文本的开放域知识图谱。Banko和Cafarella等(2007)提出开放信息提取(OIE),指出直接从大规模自由文本中抽取实体关系三元组(头实体、关系指示词、尾实体),类似与语义网的RDF规范的SPO结构[16]。基于开放信息提取,华盛顿大学陆续推出TextRunner(2007)[16]、Reverb(2011)[17]、OLLIE(2012)[18]等基于自由文本的开放域三元组抽取系统。Carlson和Betteridge等(2010)提出NELL系统[19],NELL即never-endinglanguagelearning,它通过不断阅读网页抽取知识事实来填充知识库、不断提升学习能力、移除知识库中之前的不正确知识事实来保证每个知识都有一定的置信度及参考来源、利用所学的知识进行相关推理等逻辑思维。Nakashole和Weikum等(2012)提出PATTY[20],PATTY是一种用于表示实体之间二元关系的文本模式的大型资源,这些文本模式在语义上被定义类型并组织成包含分类法,PATTY分类共包括350,569个模式同义词。PATTY系统基于频繁项集挖掘的高效算法,它可以处理Web规模的语料库。国内的自动构建的OIE中文知识图谱有哈尔滨工业大学HIT-SCIR发起的《大词林》(/),它也是一个开放域命名实体知识库的自动构建系统,不需要专家系统参与,《大词林》借鉴《同义词词林(扩展版)》的顶层结构,系统从命名实体字面、在线百科和Web检索结果等多个信息源来挖掘命名实体的类别,并从Apriori关联项、分类层次化、后缀上位词及词汇分布表示等诸多角度学习,获取类别之间的层次化关系。部分系统需要自动构建标注的训练语料,然后从训练语料中提取关系模板或者训练分类器,部分系统则依据语法及句法特征,直接从分析结果中抽取关系三元组。1.3.3基于OpenIE的关系提取与链接关系提取和链接(relationshipextractionandlinking;REL)部分的处理方法有三种:基于话语、基于远程监督及基于OpenIE。基于话语的方法分析语言在口头交流和书面结构方面的使用,它的目标是对文本进行无监督的理解[21]。基于远程监督的方法用来自KG的信息训练机器学习算法,因此,它能提取出文本中与KG表达相似的事实,但其使用参数调整复杂而且它的效果局限于使用的KG。基于OpenIE的方法不受域限制,也不需要去训练数据,它通常获得二元关系[22],允许通过谓词语句进行语义表示(动词为关系核心)[23]。 为了涵盖广泛的关系,Banko和Cafarella等(2007)提出了开放信息提取概念,旨在不限制特定域条件下提取语义关系[24]。Liu和He等(2013)提出了一种结合实例和语义扩展的开放关系映射方法,文章将自由文本中提及的开放关系映射到知识库中的属性名称,以找到每个提及的开放关系的真实语义。文章使用PATTY获得关系,然后用知识图谱之间的关系及属性之间的语义相似度过滤得到的关系。实验结果表明该方法有效地挖掘了超出所提及关系的文本表面语义扩展,可以实现开放关系映射的平均准确率为74.4%[25]。Dutta和Meilicke等(2014)将NELL和REVERB这些无监督知识提取系统汇集在一起,使用OpenIE获得关系,用DBPEDIA来表示NELL三元组,这种策略依赖于用规则和直接的关联将OpenIE系统生成的关系映射到DBpedia,以便用后来的高精度新事实来丰富DBpedia事实,文章还提出一种发现新知识的统计方法[26]。OpenIE已经在依赖于模式匹配或机器学习的实现下被使用。Dutta和Meilicke等(2015)依靠OpenIE系统提取关系,之后分别映射到YAGO和DBpedia知识图谱[27]。1.4本文研究方法本节介绍从词典文本构建知识图谱的建议方法。由1.2研究意义部分可知,本文尝试基于特定的领域词典,从英文纯文本出发,尽可能地以自动化的方式(基于OpenIE)构架词典网络图谱,并对构建的网络图谱进行实验以评估整个网络。整个方法包括NLP/IE工具及语义网络技术的集成,用以处理和表示文本元素。此外,本文提出了重定义一些语义关联的方式,即允许在得到的RDF三元组的基础上进一步提取和归纳以定义我们需要的一定数目的语义关系。在关系提取的环节我们对比其他的方式选择了Stanford的OpenIE,因为它不仅能够提供用于传达事实信息的原子单元的二元关系,而且它不需要培训和其他配置,这样就能简化数据的查询和表示。本文的方法概述如图1.1所示,方法细节具体如下:1.相关文献研究。查找相关国内外论文文献,参照一些博客指南,咨询导师意见,搞清楚整个的研究过程及具体思路,以及尝试归纳国内外学者论文的研究成果。实验过程中尝试运行不同的实验程序或者不同相关库及相关方法,进行对比试验以获得新的思路;2.首先是词典选取,我们需要选取领域上专业性强且较为封闭的词典且词典要足够大,这样才能获取足够的关系,最后生成的图才有一定的联通度;3.从词典pdf中获取目标文本并进行文本预处理,需要截取的重要组件有词条、实体、属性及释义等相关文本信息;4.将整个词典和实体文件进行词形还原,然后使用斯坦福的OpenIE方法进行关系提取,将得到的三元组排序去重,并进一步整理和筛选后得到相关目标三元组信息;5.将目标三元组进行符号化表示。即根据之前提取的实体、属性等相关文本信息以及目标三元组信息,构建词典网络图谱,并通过Networkx和PyGraphviz进行图形化显示和基本分析;6.将目标三元组进行分布式表示。即用bert将目标三元组向量化后,分为训练集和测试集跑TransE程序,深入分析,进一步描述和评估得到的领域词典网络。图1.1提出的方法概述第二章实验相关技术说明2.1StanfordToolkit我们使用斯坦福的CoreNLP、OpenIE对文本语料进行词形还原和关系抽取操作。词形还原(Lemmatization)是文本预处理中的必要步骤,特别在处理对象为英文文本时。简单说,词形还原就是去掉单词的词缀,不考虑单词的数、时态以及比较级、最高级等,恢复单词原形,一般词形还原处理后的单词会是字典中的单词。例如,“peaches”会被处理成“peach”,“driving”被处理成“drive”,“best”变成“good”。使用词形还原的目的是为了减少单词由于时态、单复数或者变形等对于处理精度的影响。关系抽取的必要性在于,在得到一系列的离散命名实体后,为了得到语义信息,我们还需要从相关语料中提取出实体与其他实体间的关联关系,通过这些关系将实体都联系起来,才能进一步处理以形成网状的知识结构。本节对这两个工具包进行具体介绍。2.1.1StanfordCoreNLPManning和Christopher等(2014)在文章中描述了StanfordCoreNLP工具包的设计和使用[28],CoreNLP即CoreNaturalLanguageProcessing,它是一个提供核心的自然语言分析的可扩展管道,具有很强的灵活性和可扩展性,在开源NLP技术的商业和政府用户以及研究NLP的社区中都有着广泛应用。StanfordCoreNLP整合了大量的Stanford的自然语言处理工具,有着众多语法分析工具,包括分词(Tokenization)、断句(SentenceSplitting)、词性标注(Part-of-speechTagging)、词元化(MorphologicalAnalysis)、命名实体识别(NamedEntityRecognition)、语法分析(SyntacticParsing)、同义词分辨(CoreferenceResolution)以及情感分析(SentimentAnalysis)等,这些注释器在程序中分别对应tokenize、ssplit、pos、lemma、ner、parse、dcoref以及sentiment等。具体来说,tokenize将文本标记为一系列标记,标记生成器保存输入文本中每个标记的字符偏移量;ssplit将一系列令牌拆分成句子;pos使用最大熵词性标签标记令牌;lemma为注释中的所有标记生成基本形式;ner从文本数据中识别出命名实体,识别命名(PERSON,ORGANIZATION,LOCATION,MISC)及数字(NUMBER,DATE,TIME,MONEY,DURATION,SET)实体;parse基于概率解析器提供包括成分和依赖表示的完整句法分析;sentiment用深度学习树组成模型进行情感分析,给予情感分数;dcoref实现提及检测以及代词和名词的共指消解。其整体系统架构如图2.1。原始文本从右边输入,经过注释对象及一系列如tokenize、ssplit等注释器的扩展流,在分析管道中添加信息。最后生成的注释包含注释器添加的所有分析信息,以XML格式或纯文本格式输出.图2.1CoreNLP整体系统架构CoreNLP是一个基于JVM的一体化完备注释管道框架,源代码使用java,提供Server方式进行交互,它需要JDK1.8及以上版本。编辑代码使用前需要到官网下载StanfordCoreNLP文件并解压,下载对应语言模型jar文件,放到stanford-corenlp-full-2018-02-27根目录下,最后将指定的7个jar文件及语言模型jar文件导入到工程中,并修改VMarguments值,本文设置-Xmx3096m。CoreNLP支持多种自然语言,处理英文外语言只需要下载对应语言模型;CoreNLP支持编程的接口丰富,有提供给Python及其他编程语言的接口,也能作为简单的web服务运行。在线演示的网址有http://corenlp.run/、:8080/parser/index.jsp(语法分析效果、解析树及依赖关系)、:8080/parser/parser.html(解析树图示)。corenlp.run对句子“兰兰是中国地质大学的一名大四学生。”的运行效果如下(图2.2)。图2.2CoreNLP在线运行效果2.1.2StanfordOpenIE由开放域信息提取(OIE)系统生成的关系三元组对于推理、问答和其他IE任务是有用的。传统上,这些是使用大量的模式提取的,但传统方法在远程依赖性和域外文本方面很脆弱,并且它没有深入了解参数子结构。GaborAngeli和MelvinJohnsonPremkumar等(2015)提出的OpenIE方法用一定量规范结构化句子的模式替换此大模式集,并将焦点转移到一个分类器上边,该分类器学习从较长的主句中提取自包含的分句,然后基于短分句进行自然逻辑推理,来确定每个候选三元组的最大特定参数。实验结果表明,该方法在端到端的TAC-KBP2013插槽填充任务中的表现优于最先进的开放式IE系统[29]。StanfordOpenIE的使用基于前边介绍的StanfordCoreNLP。图2.3OpenIE与Ollie提取对比 由图2.3可以看到,Ollie系统在处理BorninHonolulu从句时,Hawaii被当作BorninHonolulu的主语,产生了虚假匹配(标红部分),由此可知,在应用模式之前生成连贯的子句有助于减少错误匹配。因此,StanfordOpenIE将定义能提取信息丰富并广泛覆盖三元组的大模式集的负担转移了,转而先以语言结构推动的方式预处理句子,来产生符合原始句子逻辑、易于分割成OpenIE三元组的连贯子句。这些连贯子句被进一步分类,然后诉诸自然逻辑以最大限度地缩短,来产生一组较短的句子片段,一旦这些片段与定义的14种原子模式匹配,就将他们分段为OpenIE三元组从系统输出。具体示例情况如图2.4所示(红框为产生的两个子句)。图2.4OpenIE三元组产生过程实例 其中,产生连贯子句被处理成一个贪婪的搜索问题,我们通过递归遍历句子的依赖解析树,并在每个步骤都预测该边是否应该产生一个独立子句,来学习分类器以将句子分成一组逻辑上合理的较短分句。数据的训练用的是朴素贝叶斯分类器,这里不详细展开。对于产生的不完整从句,系统通过分类器捕获各种各样的远程依赖,根据控制关系,允许从属节点继承主导节点的主语或宾语。考虑依赖解析树中的弧:ⅇ=p→lc(e:输出弧;p:控制节点;c:依赖节点;l:具有斯坦福依赖关系的标签)。依赖弧上定义了执行的三个操作,分别是:Yield操作、Recurse操作、Stop操作。Yield操作控制在依赖关系弧上产生一个新子句。示例如图2.5,suggest→ccompbrusℎ弧,由动词VBPsuggest指向动词VBbrush,ccomp即clausalcomplement,从句补充决定产生Yield操作,产生从句youshouldbrushyourteeth,进而产生三元关系。Recurse操作控制对此依赖关系弧执行递归,而不将其作为一个新子句产生。示例如图2.6,whereIlostmybike,对于field指向lost的弧,我们必须通过中间成分递归我丢失自行车的地方,而这与前边的句子成分没有关系,此时以产生Recurse操作,以lost为新的root继续分析。Stop操作控制停止递归。这样,树的搜索路径将成为Recurse操作和Yield操作的序列,由Stop操作或叶节点终止。例如,搜索序列A图2.5Yield操作实例图2.6Recurse操作实例2.2Python图形化显示库 在得到三元组文本并构建词典网络图后,我们需要进一步在PyCharm中图形化显示,以更好地描述词典网络特征。NumPy是一个科学计算库,它支持线性函数和多维数组,在某些标记、概率计算、度处理、聚类及分类任务时发挥作用,给我们的图形化显示以数据支持。Matplotlib库是一个实现数据可视化的2D绘图库,主要在我们产生线图及条形图的一些程序例子中会用到。Matplotlib库支持MATLAB风格接口的复杂绘图函数,具体可参考网址/。NetworkX库是一个用于存储和操作一些由节点和边组成的网络结构(图结构)的函数库,可以和Matplotlib结合起来使用来可视化,具体可参考网址https://networkx.github.io/documentation/latest/,另外,实现可视化语义网络我们还需要安装PyGraphviz库。本文的实验利用Matplotlib和NetworkX录入文本并创建有向图网络及进行基本的图形操作,更多的图形属性和风格通过PyGraphviz显示。下面将详细介绍networkx库及PyGraphviz库的相关内容。 NetworkX2002年5月产生,是python语言编写的软件包,它能以标准化和非标准化的数据格式存储网络、生成多种经典网络及随机网络、建立网络模型、分析网络结构、进行网络绘制、编写新的网络算法等。NetworkX可以创建四种图,分别是无重边的无向图(Graph)、无重边的有向图(DiGraph)、有重边的无向图(MultiGraph)、有重边的有向图(MultiDiGraph)。可以逐个或以列表形式添加节点和边,点的种类可以是任何哈希对象,例如字符串、图像、XML对象、图等。NetworkX提供例如BFS、DFS、最短路径、最小生成树等常用的图论经典算法。相关画图参数如表2.1,NetworkX布局如表2.2。表2.1NetworkX画图参数画图参数注释node_size指定节点的尺寸大小,默认300node_color指定节点的颜色,默认红色,可以直接用字符串标记颜色node_shape指定节点的形状,默认圆形alpha透明度,默认1.0,即不透明,0为完全透明width边的宽度,默认1.0edge_color边的颜色,默认黑色style边的样式,默认实线with_labels节点是否带标签,默认Truefont_size节点标签字体大小,默认12font_color节点标签字体颜色,默认黑色表2.2NetworkX布局布局注释bipartite_layout节点定位在两条直线上circular_layout节点在一个圆环上均匀分布kamada_kawai_layout节点根据Kamada-Kawai路径长度成本函数定位plannar_layout定位没有边缘交点的节点random_layout节点随机均匀分布rescale_layout在所有轴中缩放位置数组shell_layout节点在同心圆上分布spring_layout节点呈中心放射状(用Fruchterman-Reingold算法排列)spectral_layout节点根据拉普拉斯算子的特征向量定位 除了使用draw的相关参数把整个图画出来,也可以用draw_networkx_nodes、draw_networkx_edges、draw_networkx_labels等有选择性地画出网络的部分点、边、标签等。NetworkX提供了图形可视化的一些基本功能,但其主要的目标是启用图形分析而非执行图形可视化。在实验过程中我们发现,用NetworkX编程很难得到符合我们的原始意图的结果图像,因此,我们选用了来自贝尔实验室的专用全功能图形可视化工具PyGraphviz。Graphviz布局程序以dot语言来编写脚本并描述图形,并以网页图像或SVG等格式制作图表,在交互式图形浏览器中显示。Graphviz为具体图表提供了很多有用的功能选项,如字体、颜色、线条样式、表格节点布局、超链接以及自定义形状的选项等等。具体使用参考网址/,下表(表2.3)给出PyGraphviz的主要几个强大布局。另外,结合NetworkX库和PyGraphviz库可得到许多各式各样结构的图形化显示,如下图(图2.7),具体图片说明及示例样本可到NetworkX和Graphviz的官方说明文档获取学习,相关参考网址有/gallery/以及https://networkx.github.io/documentation/latest/auto_examples/index.html#drawing。表2.3PyGraphviz布局布局注释dot分层图布局,有向图中默认dotneato弹簧模型布局,试图最小化全局能量函数,不太大的图(约100节点)默认neatotwopi径向布局,节点根据它们与给定根节点的距离分布在同心圆上circo圆形布局,适用于多种环状结构,如某些特定的电信网络图fdp类似于neato,但这是通过减少力而不是使用能量来实现的sfdp用于大图形布局fdp的多尺度版本图2.7示例图样2.3BERT2018年10月11日,GoogleAILanguage团队提出BERT模型[30],它是一个用于预训练语言表示的NLP模型,全称BidirectionalEncoderRepresentationsfromTransformers。BERT模型在机器阅读理解顶级水平测试SQuAD1.1中表现惊人,全部两个衡量指标上全面超越人类,并且在11种不同NLP测试中创出最佳成绩,其中有将GLUE基准推至80.4%(绝对改进率7.6%),MultiNLI准确度达到86.7%(绝对改进率5.6%)。总的来说,BERT使用超多层Transformer、双任务预训练及后期微调的训练策略。 BERT的创新点在于,将双向Transformer用于语言模型(如图2.8),区别于从左向右输入文本序列(OpenAIGPT)或者将从左到右和从右到左两部分的训练结合起来(ELMo),实验结果表明双向训练的语言模型会比单向训练的对语境的理解更深刻。其中,Transformer是种注意力机制,它能学习文本里单词间的上下文关系。Transformer原型包括encoder(负责接收文本作为输入)和decoder(负责预测任务的结果)两个独立的机制,由于BERT是要生成语言模型,它只需要encoder机制。encoder一次性读取整个文本序列,这样模型就能够基于单词的两侧学习,输入是一个token序列,进行嵌入后输入给神经网络,输出是大小为H(H即输出维度)的向量序列,每个向量对应着具有相同索引的token。训练语言模型时需要在单词序列中预测下一个单词,为了克服双向方法在此类型任务中的限制,BERT使用MaskedLM(MLM)和NextSentencePrediction(NSP)策略。MLM的主要思路是在将单词序列输入前,每个序列中有15%的单词被掩盖;然后,模型尝试基于序列中其他未被掩盖的单词的上下文来预测被掩盖的原单词。NSP的主要思路是BERT模型的训练过程中接收成对的句子作为输入,来预测第二个句子是否是第一个句子在原始文档中的后续句子。在训练BERT模型时,MLM和NSP是一起训练的,目标就是要最小化两种策略的组合损失函数。图2.8预训练模型结构差异 BERT模型的训练分预训练(Pre-training)和微调(Fine-tuning)两步,预训练是个复杂的过程,谷歌表示,对BERT的预训练一般需要4~16块TPU一周的时间,才能训练完成。我们可以从/google-research/bert#pre-trained-models网站下载谷歌发布的预训练BERT模型。微调相对来说是个轻量级任务,我们只需要相应地扩展网络而不需要改变BERT模型本身。微调取决于下游的具体任务,例如要对句子进行情感分类,微调需要在BERT的输出层向量上接入几个Dense层走softmax;对于SQuAD上的阅读理解任务,则需要在BERT的输出层向量上增加match层和softmax。bert-as-service将BERT模型作为一个独立的句子编码,部署在一台GPU服务器上,我们可以使用多台机器作为客户端从远程同时连接实时获取定长向量,当做特征信息输入到下游模型。具体参数参见网址/hanxiao/bert-as-service。2.4TransE算法TransE算法由Bordes和Usunier等(2013)提出[31],它基于实体与关系的分布式向量表示,利用了词向量的平移不变现象。如图2.9,TransE将每个三元组实例(head、relation、tail)中的relation关系看作从head实体到taill实体的翻译,通过不断调整向量h、r、t,使(h+r)尽可能地与t相等。图2.9TransE优化目标 TransE定义了一个距离函数d(h+r,t),用它来衡量h+r、t之间的距离,函数值越小,置信度越高。实际应用可以用L1(曼哈顿距离)或者L2(欧几里得距离)范数。transE在模型的训练过程中采用最大间隔方法,其目标函数为公式(2.1)。L=ℎ,r,tϵSℎ式中,S为知识库中的三元组,S’为负采样的三元组(通过替换h或t得到,不同时替换),γ是取值为正的间隔距离参数,x+表示正值函数(x>0时x+=x,x≤0时图2.10TransE算法伪代码
第三章实验过程3.1词典选择在考虑知识图谱的数据来源时,应该尽量选择结构化程度相对高、质量较好的数据源,以尽可能降低知识获取的代价。本课题的研究对象是领域词典,词典具有结构系统规整、实体对象明确的优点。词典选择方面我们要求词典领域专业性较强且较为封闭,另外,词典必须足够大,这样才能保证足够的关系以及进一步生成的网络的连通度。实验初期考虑的相关领域及词典列表如图3.1所示。└──词典样本 #主要词典来源网站/├──field #考虑过的领域├──哲学类│└──《牛津哲学词典》、《西方哲学对照词典》、《现代西方哲学辞典》├──心理学类│└──《简明心理学词典》、《剑桥心理学词典》、《心理学专业英语词汇翻译》├──生物化学类│├──《牛津生物化学词典》 #推荐,结构性较好,分类明确│└──《世界最新英汉双解生物化学词典》├──金融类│├──《路透金融词典简明版》 #推荐,汉语,有Category分类│├──《证券及期货条例》 #仅词条版│└──《牛津英汉双解商务词典》、《新编英汉路透金融词典》、《会计金融词典》(汉语)├──法律类│├──《牛津法律词典》 #推荐,结构性较好,大小合适,释义丰富│├──《布莱克法律词典》、《韦氏法律词典》、《柯林斯法律词典》│└──《朗文法律词典》、《简明英汉法律词典》、《牛津法律大辞典》(汉语)├──建筑类│├──《汉英-英汉建筑工程分类词汇》 #仅词条版│└──《建筑英语词典》、《西方建筑图解词典》、《中国建筑图解词典》├──航空航天类│└──《英汉对照民用航空词典》、《英汉航空图解词典》├──地质类│└──《地球物理勘探词典》、《英汉地质词典》、《英汉常用地质学词汇》├──医学类│└──《英汉双解医学词典》、《英汉汉英医学分科词典(中医药学分册)》└──计算机类└──《汉英计算机词典》图3.1考虑过的词典列表 关于领域,就目前找到的词典综合来看,计算机领域知识大都以在线网站的形式呈现,相关的词典难找,且计算机相关知识更新过快,词典中相关内容缺失现象明显;地质、地球科学、地球物理词典版本相对较老,扫描很不清晰,格式转换困难;哲学、心理学属于同种类型,不够封闭,词典花大量篇幅介绍起源、出处、讲故事,人文气息太重,另外部分实体之间的关系太过抽象,连接它们的边很难用一两个词概括定义;建筑、航空航天属于同种类型,词典中多为术语概念,对很多器件、样式、结构采用图解方式,这对我们通过文本处理提取关系很不利,另外,建筑词典将中国古建筑及外国建筑分得很开,不利于图的联通度;医学词典内容太大、多、杂。最后我们从图3.1标注推荐的几个词典里选择了牛津法律词典(OxfordDictionaryofLaw),551页,共4031个词条。3.2文本提取及预处理HTML文本和ASCII码文本是可读格式,而PDF文本和MSWord文本常以二进制格式出现,打开它们只能用专门的软件。Python中提供了第三方函数库来访问这些格式,如pywin32、pypdf、pdfminer等,我们可以使用这些函数库从多列文档中提取文本。提取结果对比说明pdfminer库对我们的词典pdf文件的提取效果最佳,提取结果如图3.2。图3.2文本提取结果 从图中可以看出,提取后的txt文件中有较多转行且存在格式错乱的情况,我们需要手工对错乱部分进行调整及结合strip()方法和正则表达式处理输入行结尾的换行符。处理好的文本格式中每个词条占一行,词条与词条之间通过空行隔开,实体与属性释义之间用特定字符“&$”隔开,以便进行下一步的匹配提取,如图3.3。图3.3词典txt结构图 一旦从目标文档中获取了纯文本,下一步就应该对其进行预处理,以便于解析出对提取实体及语义关系有用的信息。由于词典的实体容易确定,可以直接从词条中提取,我们可以省去命名实体提取的相关过程。对于我们要进行预处理的文本,每个词条单独成行,这样在编程时通过行cache遍历就可以完成对整个文本词条的一次扫描。我们提取前面黑色部分的单词或词组作为实体,提取后边的词性标注作为属性,提取释义用作后面进行关系提取的依据,具体见图3.4。图3.4文本预处理3.3词形还原 文本处理的结果是一系列txt文件,包括所有词条、所有实体及分属性的实体文件,如图3.5,我们有两方面工作,一个是利用Networkx和PyGraphviz将构建的词典网络图形化显示,另一个需要通过BERT进行文本向量化处理,再进行向量化训练。图3.5对文本预处理结果的两方面工作对于单独词条,首先要进行词形还原,这样进一步文本处理的时候,实体才能准确地跟释义中内容对应。词形还原利用的工具是2.1.1节介绍的StanfordCoreNLP。下载解压StanfordCoreNLP文件,将其中指定的jar文件及另外下载的语言模型jar文件导入到目标工程中,由于实验处理的是英文词典文本,本文使用的语言模型为stanford-english-kbp-corenlp-models,452MB。CoreNLP需要JDK1.8及以上版本,另外,由于相关程序加载的数据量过于庞大,实验时经常出现Java内存溢出(java.lang.OutOfMemoryError)的报错,我们需要增加JVM的内存大小,并在程序的运行设置中修改VMarguments值,如图3.6。对实体文本及整个词典文本的词形还原需要较长时间,我们的实验从开始到得到结果文本约5~6小时,运行过程如图3.7,可以看到程序运行时加载各种解释器的过程。具体的代码学习可从官方网站的示例入手,这里再推荐两个学习网站,/java-api-examples/?api=edu.stanford.nlp.pipeline.Annotation和/java/api/edu.stanford.nlp.naturalli.OpenIE。图3.6JVM内存设置图3.7词形还原运行过程3.4基于实体对进行初步网络显示 在进行关系提取前,由上一步词形还原得到的结果,我们可以提取每个词条中实体和释义中的实体组成的实体对,先不考虑实体之间的关系,基于得到的实体对建立初步网络,以初步显示网络的大小及连通情况,以及节点度分布情况,并为我们之后定义关系探索思路。将所有实体读入一个列表,一旦某个实体的释义部分与列表中的实体忽略大小写匹配,就将它们存为一个实体对,实体不可以跟自己配对。配对之前去除实体中像aim、CE、CO、EAT这样的容易被其他单词包含的较短词语或缩写,以免产生很多无意义的错误匹配。程序通过先遍历实体再遍历实体列表的双重循环实现。将产生的所有实体对存入文件,用特定字符“&$”隔开,并进一步通过它们构建并显示实体网络。实验表明,使用这种方法一共得到44582条实体对,部分实体对和局部网络图如图3.8所示。图3.8部分实体对和局部网络图 由上图的可以看出,节点符合集群分布,即少部分节点拥有大量的连接。NetworkX可以返回图中所有节点或某个节点的度(如图3.9),也可以通过简单的程序来生成图中节点的度分布序列(如图3.10),横轴为度数,从零到最大度,纵轴为度数对应的频率,最后在双对数坐标轴上绘制整体的度分布曲线。图3.9输出所有节点的度及按度数降序输出结果图3.10基于实体对网络图的节点度分布序列3.5关系提取及关系定义对词典文本和实体文本进行词性还原操作后,就可以进入下一步的关系提取,关系提取基于StanfordOpenIE。以词典提供的释义为语料库,程序从中提取相关的三元组,通过(实体、关系、另一个实体)的形式展现,其中,要求实体和另一个实体都在我们之前定义的实体列表中。经过词形还原和关系提取后得到4545个三元组,我们将这些三元组去重,按照中间关系的出现频率降序排列(如图3.11),对前排出现频率较大的关系名进行筛选和合并,定义了40种关系,涵盖1203个实体、2124个三元组。由于词典本身的特征,我们可以比较方便地提取同义词(145个)及缩写(97个),另外,同义关系是双向的,缩写关系对应全称关系,算上这三种关系,我们得到的词典网络覆盖1565个实体、2608个三元组。两种情况的程序运行结果分别如图3.12、3.13,图中程序的输出依次是节点列表、节点数、边列表、边数、节点度列表、节点度列表降序。图3.11关系提取流程图3.1240种关系时图的相关数据图3.1343种关系时图的相关数据 下面说明筛选和合并关系的过程。经过OpenIE进行关系提取得到候选三元组后,并不是直接就能用于构建词典网络,因为程序运行的结果会出现defendant,canpleadin,case这种无意义的三元组输出,我们需要将这些三元组筛掉。从一定意义上说,此类三元组的关系词一般比较特殊,例如上例中的canpleadin,基于这种特殊性,该关系词不会在结果三元组中普遍出现。此时,我们编写程序对所有候选三元组按照中间关系出现的频率降序排列,整个结果呈长尾现象,我们去掉后边大量频率为1、2的关系词,就能有效地解决无意义三元组问题。另外,三元组的关系词存在等效或者包含或者相近的现象,例如bein、becontainin及partof,再例如include、alsoinclude、mayinclude等,再如grant、giveeffectto、conferpoweron、conferrighton等。我们需要对其进行归纳和合并,并选取其中一个关键词作为我们定义的关系词。实验中的整合结果如图3.14。图3.14整合的40种自定义关系3.6词典网络的图形化显示得到了目标三元组我们就可以用它们构建词典网络图结构,并结合NetworkX库和PyGraphviz库对其进一步图形化显示。Graphviz库及PyGraphviz库的安装用了整个半天,直接通过pipinstall安装会出现各种报错,按照报错提示安装python下VC++的编译器依然报错,如图3.15。最后正确安装需要下载Python扩展包的非官方Windows二进制文件,从网站/~gohlke/pythonlibs/#pygraphviz上下载.whl文件并配置PATH环境变量,可以用twopi-V检验安装成功。图3.15PyGraphviz安装报错 考虑以官方示例CircularTree为框架,在python中生成环形树状图,分属性显示词典网络中节点的分布。词典文本预处理中,进行词条扫描的同时提取了词性标注作为属性信息,词典样本涉及的属性有n.、pl.n.、vb.、adj、French、Latin六种。当某个实体的注释中有词性标注时,我们将其加入相应属性的实体链表中。六种属性信息与其对应实体链表中的所有实体组成成元组,形成树状图中的边,另外以dictionary命名为根节点,依次与六种属性建立连接。用NetworkX构建关系图,json_graph.tree_data转换数据字典结构,graphviz_layout进行整体布局并绘图,结果效果如图3.16左所示。由于属性为n.的节点占据绝大多数,我们进行全局节点的分布展示效果很差,合理随机去除大量属性为n.的节点后,效果如图3.16右所示。其中,圆形树的最外圈都是节点,颜色透明度与节点的度有关,中间一圈是6个属性信息,中间是dictionary根节点。图3.16节点分属性分布图为了方便显示图的连通度情况,利用Graphviz中有向图的neato布局,显示所有节点的分布情况如图3.17左。图中可以得出,绝大多数的节点都在中间集合体中,四周会有一些落单的实体对或小团体,属于正常情况,与3.4节类似的节点度分布序列如图3.17右,可以看到,少部分节点拥有大量的连接的结论也是成立的。图3.17整体词典网络图连通情况3.7使用BERT进行文本向量化 第二步的工作是词典网络的分布式显示,以便于进行词典网络的定量分析与评估,首先我们需要使用2.3节介绍的BERT进行文本向量化处理。实验环境为Windows10,128G内存,anaconda3-5.2.0,Python3.6.7,tensorflow1.13.1,需到指定网站下载谷歌发布的预训练BERT模型,本文选择cased_L-24_H-1024_A-16,模型会对每个输入文本输出1024维向量。另外下载安装bert-serving-server和bert-serving-client,为实验的服务器端及客户端,bert-as-service将BERT模型作为一个独立的句子编码(sequenceencoding)服务,我们在客户端获取句子向量编码(词或句子级别的定长向量表示)。bert-as-service默认使用GPU,服务器端有提供CPU的参数选项,但在其他环境相同、使用CPU的ubuntu-18.04.2虚拟机上实验发现,启动服务器时会出现问题。实验数据文本如果太大,需要提前拆分成几个小部分然后输入,运行时输入文本个数超过256,服务器也会自动切分成几个最大为256的部分,通过多个socket处理。另外,程序输入时需要先将所有文本读入列表,然后直接对列表操作,把读入文本放入处理循环中会消耗大量资源,程序运行会很慢。实验过程图和实验结果分别如图3.18、3.19所示。最后输出结果的数据类型为numpy.ndarray,全部实验结果可以通过numpy库的相关函数输出到文本文件中。图3.18BERT向量化实验过程图3.19BERT向量化实验结果3.8TransE实验部分第四章结论本文给出一种从词典文本构建网络图谱的建议方法,尝试基于选定的领域词典,从英文纯文本出发,尽可能地以自动化的方式(基于StanfordOpenIE)构建词典网络图谱,并对构建的网络图谱进行实验以评估整个网络。此外,本文提出了重定义一些语义关联的方式,即允许在得到的RDF三元组的基础上进一步提取和归纳以定义我们需要的一定数目的语义关系。本文基于构建的词典网络图谱定义了40种关系,涵盖1203个实体、2124个三元组。(通过TransE实验表明,……)
参考文献[1]SinghalA.Introducingtheknowledgegraph:things,notstrings.Officialgoogleblog.2012May16;5.[2]刘峤,李杨,段宏,刘瑶,秦志光.知识图谱构建技术综述[J].计算机研究与发展,2016,53(03):582-600.[3]FeigenbaumEA.Expertsystemsinthe1980s[J].Stateoftheartreportonmachineintelligence.Maidenhead:Pergamon-Infotech,1981.[4]MillerGA.Wordnet:DictionaryBrowser'inInformationinData.InProceedingsoftheFirstConferenceoftheUWCentrefottheNewOxfordDictionary.Waterloo,Canada:UniversityofWaterloo.1985.[5]梅家驹.同义詞詞林[M].上海辞书出版社,1983.[6]董振东,董强.知网简介[J].1999-09-23.[2004-03-06].,1999.[7]Berners-LeeT.Semanticwebroadmap.1998.[8]Berners-LeeT,LinkedData—DesignIssues,2006,[online]Available:/DesignIssues/LinkedData.html.[9]AuerS,BizerC,KobilarovG,LehmannJ,CyganiakR,IvesZ.Dbpedia:Anucleusforawebofopendata.InThesemanticweb2007Nov11:722-735.[10]WalesJ,SangerL.Wikipedia:Thefreeencyclopedia[J].Accessedvia/wiki/Main_Page(27November2011),2001.[11]SuchanekFM,KasneciG,WeikumG.Yago:acoreofsemanticknowledge.InProceedingsofthe16thinternationalconferenceonWorldWideWeb.ACM.2007:697-706.[12]BollackerK,CookR,TuftsP.Freebase:Ashareddatabaseofstructuredgeneralhumanknowledge.InAAAI2007Jul22,7:1962-1963.[13]WangZ,LiJ,WangZ,LiS,LiM,ZhangD,ShiY,LiuY,ZhangP,TangJ.XLore:ALarge-scaleEnglish-ChineseBilingualKnowledgeGraph.InInternationalsemanticwebconference(Posters&Demos)2013Oct23,1035:121-124.[14]NiuX,SunX,WangH,RongS,QiG,YuY.Zhishi.me-weavingchineselinkingopendata.InInternationalSemanticWebConference2011Oct23:205-220.[15]XuB,XuY,LiangJ,XieC,LiangB,CuiW,XiaoY.CN-DBpedia:anever-endingChineseknowledgeextractionsystem.InInternationalConferenceonIndustrial,EngineeringandOtherApplicationsofAppliedIntelligentSystems2017Jun27:428-438.[16]BankoM,CafarellaMJ,SoderlandS,BroadheadM,EtzioniO.Openinformationextractionfromtheweb.InIJCAI2007Jan6,7:2670-2676.[17]FaderA,SoderlandS,EtzioniO.Identifyingrelationsforopeninformationextraction.InProceedingsoftheconferenceonempiricalmethodsinnaturallanguageprocessing2011Jul27:1535-1545.AssociationforComputationalLinguistics.[18]SchmitzM,BartR,SoderlandS,EtzioniO.Openlanguagelearningforinformationextraction.InProceedingsofthe2012JointConferenceonEmpiricalMethodsinNaturalLanguageProcessingandComputationalNaturalLanguageLearning2012Jul12:523-534.AssociationforComputationalLinguistics.[19]CarlsonA,BetteridgeJ,KisielB,SettlesB,HruschkaER,MitchellTM.Towardanarchitecturefornever-endinglanguagelearning.InTwenty-FourthAAAIConferenceonArtificialInt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疗养院护理职业素养与礼仪考核试卷
- 环境监测方法与标准考核试卷
- 物流设备在国际物流中心的运作考核试卷
- 电动机在智能家居控制系统的应用考核试卷
- 消防金属制品安全生产法律法规考核试卷
- 石棉废弃物清理和处置工程的经济效益评估考核试卷
- 漆器工艺品行业政策与法规解析考核试卷
- 百货零售企业可持续发展与社会责任报告分析与实践考核试卷
- 智能制造装备的模块化设计考核试卷
- 2025土地征收补偿安置合同协议书
- 2024年中国资源循环集团有限公司招聘笔试真题
- 2025年春季四年级下册语文第15课《白鹅》课件(统编版)
- 17J008挡土墙(重力式、衡重式、悬臂式)图示图集
- 2024北京市大兴初二(下)期中数学试卷及答案
- 中央八项规定实施细则解读课件
- 自学考试——军人心理咨询与治疗
- 二正丁胺MSDS危险化学品安全技术说明书
- 北大刑法分论期末考题甲的一生前传
- 荥阳崔庙镇土地利用总体规划
- 实际问题与二元一次方程组说课稿12
- 高压线下道路安全施工专项施工管理方案
评论
0/150
提交评论