《基于维基百科的语义web搜索技术研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
分类号:TP393520.6099密级:天津理工大学研究生学位论文基于维基百科的语义Web搜索技术研究(申请硕士学位)学科专业:计算机应用技术研究方向:信息检索作者姓名:刘朋杰指导教师:赵德新 ThesisSubmittedtoTianjinUniversityofTechnologyfortheMaster’sDegreeSemanticWebsearchtechnologybasedonWikipediaByPengjieLiuSupervisorDexinZhao 独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得天津理工大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。学位论文作者签名:签字日期:年月日学位论文版权使用授权书本学位论文作者完全了解天津理工大学有关保留、使用学位论文的规定。特授权天津理工大学可以将学位论文的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描等复制手段保存、汇编,以供查阅和借阅。同意学校向国家有关部门或机构送交论文的复本和电子文件。(保密的学位论文在解密后适用本授权说明)学位论文作者签名:导师签名: 摘要目前的Web搜索技术是基于关键词的搜索,信息的查全率和精确度仍然不能满足用户的需求,其效果常常不能使人满意。这是由于在Web搜索过程中,缺乏搜索引擎可读的语义信息,因而限制了计算机自动分析处理以及进一步的智能化处理的能力。因此,为了提高搜索引擎检索信息的精准度和智能性,传统的基于关键字的搜索引擎要向更智能的语义检索方向发展。语义搜索要有一个概念的语义空间网络作为支撑,维基百科(Wikipedia)是一个开放式的在线百科全书,它是世界最大的包含了大量人类知识和语义关系的知识库资源。如何充分利用维基百科的知识,为现有的搜索技术添加语义处理能力,优化信息检索过程,即成为本论文的研究课题。本文主要的工作如下:首先,针对维基百科中的信息组织及结构特点,抽取出语义信息。对维基百科数据的处理,我们应用了大数据处理的技术,构建了基于Hadoop的维基数据包处理云平台。通过建立一套基于对象模型的应用程序接口,得到了维基百科主题页面中我们感兴趣的语义信息,包括概念、类别、链接、摘要段(主题页面的第一段),这为后续的语义相关度计算提供了必要的结构性和内涵性信息。本文的处理技术还能为以后的维基百科大数据处理提供借鉴。其次,提出了一种计算词条语义相关度的新方法,称为WLA算法(WikipediaLinkandAbstract)。在上述对维基百科抽取出相关信息的基础上,我们重点研究了链接关系和摘要段的内容。链接关系(包括入链和出链)与摘要段公共词的特征能很好地反映出概念之间的联系,通过对其分别赋以不同的权重,实验结果显示WLA的Spearman相关系数达到了0.68,取得了令人满意的结果。最后,开发了语义搜索系统的原型。将我们提出的WLA算法集成到系统中,实现了能够提供普通用户和语义研究人员进行语义搜索的平台。该搜索系统以维基百科对词语的解释为背景知识,包括语义计算,语义概念查询和文本注释三大功能。语义计算功能可计算出词条语义相关性;语义概念查询系统提供基于维基百科的语义词典功能,对偏生词,多义词,歧义词进行语义解释,可以帮助用户扩展知识,能够增强搜索引擎处理查询的能力;文本注释功能对短文本中的专有名称进行注解,只要文本中的词条在维基百科有与之对应的主题页面,那么系统会对该词条进行注解并加入链接功能。该原型可作为语义搜索相关研究的测试平台。关键词:维基百科语义计算搜索引擎 AbstractBecausethecurrentWebsearchtechnologyisbasedonkeywords,itoftenfailstomeetuser’sneedsduetoinformation’srecallratioandaccuracyfarbelowpeople’sexpectancy.ForlackingofreadablesemanticinformationduringWebsearch,thereforeitlimitstheabilityofcomputertoautomaticallyanalyzeandfurtherprocessintelligently.Thence,aimingatimprovingtheaccuracyandintelligenceofsearchengine,wewouldliketoshiftoursearchenginefromatraditionalbasedonkeywordstoamoreintelligentbasedonsemanticsearching.Semanticsearchneedstobesupportedbyasemanticspacenetworkhavingconcepts.Wikipedia,asanopenonlineencyclopedia,isthelargestknowledgeresourceincludingagreatamountofhumanknowledgeandsemanticrelationshipsintheworld.SohowtotakefullyadvantageoftheWikipediatoaddsemanticprocessingabilityforthepresentsearchtechnologyandoptimizetheinformationretrievalprocess,isbeingstudiedinthispaper.Themainworkofthispaperisasfollows:Firstly,weextractsemanticinformationaccordingtoWikipedia’sinformationorganizationandstructuralcharacteristic.Wikipedia’sdataprocessingtechniqueoriginsfromthetechniqueusedbyprocessingthebigdata,soweconstructacloudplatformbasedonHadoop.Byestablishingasetofapplicationprogramminginterfacesbasedonobjectmodel,somesemanticinformationwhichweareinterestedinarefetchedfromtheWikipediatopicpages,includingconcept,category,linkandabstractparagraph(thefirstparagraphofthetopicpages).Thisprovidesnecessarystructuralandcontentinformationforthefollowingcalculationonsemanticrelatedness.Inaddition,italsocouldgiveresearcherssomeguidanceonprocessingtheWikipedia’sbigdatainthefuture.Secondly,aclevermethod,namedWLAalgorithm(WikipediaLinkandAbstract)isproposedtocalculatesemanticsimilarity.OntheabovebasisoftheextractedrelevantinformationfromWikipedia,wefocusonthelinkrelationandthecontentoftheabstractparagraph.Thecharacterofcommonwordsbetweenlinkrelationships(includinglink-inandlink-out)andabstractparagraphwellreflectstheconnectionofconcepts.Byendowingdifferentweights,itturnsouttobearathersatisfactoryresult,namingthattheSpearmancorrelationcoefficientcanreach0.68.Finally,wedevelopaprototypeofsemanticsearchsystem.ByintegratingtheproposedWLAalgorithmintothesystem,itmakestheplatformbeabletoservethenormaluserandsemanticresearchers.AgainstthebackgroundofthesemanticexplanationofWikipediatowords,thesystemincludesthreeparts,namelysemanticcomputing,semanticconceptqueryandtextannotation.Thefunctionofsemanticcomputingcancomputethesemanticrelevanceofterms;thesystemofsemanticconceptqueryworksjustlikethedictionaryofWikipedia,itnotonlycanexplainpartialwords,polysemy,ambiguouswordstohelppeopleenlargeknowledge,butalsocanimprovethesearchengine’sabilitytoprocessquery;textannotation istonoteforthepropernounappearedinshorttext.Inotherwords,aslongasthetextentryhasacorrespondingtopicpageinWikipedia,thenthesystemwillannotatetheentriesandaddthefunctionoflink.Thisprototypecanbeusedasatestplatformfortherelatedsemanticsearchresearch.Keywords:Wikipediasemanticcomputingsearchengine 目录第一章绪论...............................................................11.1研究背景及意义.....................................................11.2国内外研究现状.....................................................21.3研究内容和方案.....................................................41.4本文组织结构.......................................................5第二章相关技术研究.......................................................72.1维基百科...........................................................72.2Lucene技术.......................................................112.3Nutch技术........................................................142.4Hadoop技术.......................................................16第三章语义相关度的研究..................................................193.1基于文本的语义相关度..............................................193.2基于链接的语义相关度..............................................203.3基于文本和链接的WLA语义相关度....................................213.3.1数据处理....................................................223.3.2WLA语义计算算法............................................233.3.3算法测试....................................................25第四章基于维基百科的语义搜索系统设计....................................294.1系统设计..........................................................294.1.1系统总体设计................................................294.1.2功能设计....................................................304.1.3中间处理模型设计............................................304.2系统实施..........................................................314.2.1系统运行平台................................................314.2.2系统开发及展现..............................................314.3系统测试..........................................................36第五章总结与展望........................................................405.1总结..............................................................405.2展望..............................................................40参考文献.................................................................42发表论文和科研情况说明...................................................45致谢.................................................................46 第一章绪论1.1研究背景及意义目前大多数的语义研究都是依赖于人工构建语义知识的方法,这种人工构建需要大量时间和物力,在人工构建之前还需要大量分析文本语料进行语义挖掘,无论在覆盖范围和挖掘构建效率上都不满足现阶段的要求。语义知识本身具有复杂性,构建人工语义知识库,不仅在维护和更新方面需要大量人力,而且构建的知识库覆盖范围小。维基百科的出现,正好克服了人工构建知识库的缺点。维基百科是现存规模最大且是一个动态、自由访问和编辑的网站。它采用群体在线合作的Wiki机制,现已成为多语言网络百科全书[1]之一,具有质量高、覆盖广、实时演化和半结构化等特点的全球知识库。这种运行特点使自身迅猛发展,条目数量不断增加,每个条目都对应唯一页面,该页面对该条目做出相应的解析,每个页面包括了很多链接,例如锚点、超链接等。把每个页面看成一个点,把指向该页面的入链和指向其它页面的出链看成一条有向边,就会形成巨大复杂的页面链接有向图,即文档图。每个条目同时属于一个或者多个分类,每个分类都有唯一的父类,这种分类形成了维基百科另一种分类链接,同样将每个分类看成点,分类链接看成一条有向边,那么就会形成有向无环的分类图,文档图和分类图含有丰富的语义关系,同时维基百科文本信息中也含有大量的语义信息,所以把维基百科当作语义知识的最优质来源。随着互联网的信息不断增长,新知识新概念不断的出现,网络上的数据成指数增长,将我们带入了大数据时代。值得关注的是,如何有效快速从这些大数据中获取有效的信息为我们的搜索提供可靠的服务,对于目前的Web搜索技术来讲是基于关键词的搜索,只是部分地解决海量信息资源的发现问题,信息的查全率和精确度仍然不能满足用户的[2]需求,其效果远不能使人满意。这是由于互联网技术本身存在缺陷,其设计初衷是面向用户的直接阅读和处理,没有提供机器可读的语义信息,因而限制了计算机自动分析处理以及进一步的智能化处理的能力。因此,为了提高搜索引擎检索信息的精准度和智能性,要从知识共享的层次上去解决,传统的基于关键字的搜索引擎必然向更智能的语义检索方向发展,从丰富的网络数据中智能处理获取语义成为一个非常的重要的研究课题。为了实现基于语义知识的智能信息处理,提高搜索引擎检索信息的精准度和智能性,以此为背景本文主要研究了怎样抽取维基百科中的语义信息,并结合目前语义计算的有关方法,提出了使用抽取维基百科的文本信息和链接信息来计算词语语义相关度,并将提出的算法集成到语义搜索系统中。本文的抽取过程,语义计算及语义抽取过程都有重要的研究意义。 1.2国内外研究现状在语义知识库方面,国际上有名的知识库有DouglasLenat等人发起的CYC人工智[3]能的项目,该项目由美国CYC公司开发目的建立一个基于知识库的推理引擎,之后[4]美国普林斯顿大学通过手工建立了英语语义知识库WordNet,该语义知识库囊括上下位关系,整体部分关系,反义词关系等等。1997年,美国加州大学伯克分校通过手工建[5]立了英语知识库FrameNet,利用框架语义学的知识,对词语的语义使用框架来进行描[6][6]述。国内梅家驹先生在1983年手工建立了同义词词林,该词林提供大量的同义词语,并且提供了一定数量的同类词,尤其在类别关系定义方面,对信息检索和文本分类的性能上通过特征词条进行扩充或者替来提高。山西大学在2007年参照FrameNet和汉语语义的特点,以框架语义学为理论基础,提出了汉语框架语义知识库的构建方法,该框架共含有四方面的含义:框架的定义,框架的元素,框架之间的关系,所涉及的词语。之后武汉大学信息资源研究中心提出了一种从维基分类系统自动构建中文语义词典的方[7]法。该方法结合中文语言的特点,充分利用维基中的分类系统,对维基百科数据资源预处理,识别语义关系及类与实例关系等一系列操作,能对维基百科概念“IS-a”和“Not[8]ISa”判断,构建维基百科概念上下位关系表示的语义知识。董强利用知网知识HowNet构建基于知网的相关概念场库,并对知网的概念,大规模,双语种的词语进行了深入的研究,并成功开发了相关概念的激发器,同时还阐述了基于知网的相关概念场的实现原理,实现方法,并阐述了相关概念场在排歧,文本自动聚类中的作用。在语义抽取方面,许多语义研究者把维基百科文本作为高质量的语料库,最初使用模式匹配的方法抽取维基百科文本中的语义信息,但是在抽取过程中实体识别造成的错[9]误将会造成语义关系的不准确,同时使用这种方法产生的语义关系效率低。为了解决[10]这个问题,Ruiz-CAsado首先借助用WordNet作为正例的数据源,如果两个名词在维基百科文本中出现,将这两个词映射到WordNet中,如果这两个词在WordNet中有语义关系,那么就将这两个词语义从文本中挖掘出来,通过这种方法作者挖掘出来的语义关[11]系正确率约60%-69%。[12]DBpedia项目主要利用的是维基百科主题页面的信息盒,作者Christianbizer通过自己开发的信息抽取框架来抽取信息盒的语义信息,将抽取的语义信息转化为RDF三元组。该抽取方法能够实时获取维基百科更新种子及时更新本地库的语义信息,并且通过后数据类型检测,启发式清理规则后处理等算法来提高抽取的质量。但是维基百科中的信息盒对于文章的覆盖率很有限,据统计含有信息盒的文章占全部维基百科文章的[13]50%,这样就导致了许多文章缺少对应的语义关系。信息盒的信息基本涵盖了对应文章的内容,但有些信息盒本身的数据缺少过期等因素造成信息盒的质量不高。YAGO不同于DBpedia抽取方式,而是使用自然处理语言处理维基语义信息,分别[14]抽取信息盒和分类网页的语义信息构建本体,作者FabianM在描述本体时没有使用[15]OWL,因为OWL语言中OWL-site及OWL—DL在描述大量的本体关系时不能表达 复杂的本体关系。作者也没有使用RDFS,因为RDFS是基于OWL描述语言的,虽然能够描述本体之间的复杂关系,但是只提供了原始的语义,不能提供动词的描述。作者通过自定义实体模型和二元关系,将构建的本体存储在数据库中。所以使用YAGO模型来表达本体之间的语义知识,这样不仅能描述复杂的关系而且克服了RDFS的单一性。[16]苏小康使用语义标签语义指纹来抽取维基百科中的语义,提出了使用语义标签和语义指纹来对语义知识进行形式化描述的方法。作者使用语义标签来表示维基百科中概念。用语义指纹来描述概念中的语义。每个指纹的大小通过使用统计的方法得到相关词群及每个词语对来刻画。在抽取过程前,为了保证语义知识提取的质量,作者利用空间向量模型对计算的主题进行了筛选。在抽取过程中作者考虑到维基百科重定向的特性提出了一种决定匹配模式,目的是能够提高匹配结果的准确性,但是维基百科其它许多相关概念并不是以重定向特性存在的,为了不忽略主题页面的其它重要链接信息,针对这个问题又提出了一种相关性匹配模式来克服绝对匹配的缺陷,该方法主要分为三部分,首先将主题页面建立“主题-概念矩阵”,再次用矩阵来计算相关度,最后根据阙值选取相关概念。[17]伍成志主要使用数据库法来抽取维基百科中的语义,作者直接从维基百科站点下载维基百科转存数据,将下载的数据利用数据库管理技术,由SQL脚本导入到数据库中,作者最终获取了五个重要的数据库表,通过对五个表进行链接关系转化和分离,去歧及无关数据过滤等一系列操作。在语义计算方面,使用SQL语言来选择找到链接语义,用条目间链接和条目分类链接来计算语义。虽然数据库法来抽取语义能够保证数据的完整性,但是数据的组织格式需要作者在进行研究前进行大量的处理工作。[18]在语义计算研究方面,Strube和Ponzetto首先使用WordNet语义知识库来计算语义,但是WordNet知识库是由人工构建,具有覆盖面积小等缺点,不足以满足现阶段的语义研究。之后Strube和Ponzetto用维基百科替代WordNet作为语义数据源,算法使用维基百科的目录信息和文档的重叠度等信息来计算语义相关度。2007年,Gabrilovich[19]和Markovitch提出了明确语义分析ESA(ExplicitSemanticAnalysis)算法,该算法仿[20]照VSM(VectorSpaceModel,向量空间模型)的做法,把维基百科条目的解释文档转化为一个带有权重的由维基百科中的概念组成的向量,然后利用向量乘积的方式来计算条目间的语义相关度。有实验表明,基于维基百科的ESA算法在准确性上有更出色的表现(Spearman系数达0.72),该方法思想主要将文本分词后映射到维基百科概念,通过计算这些概念构成的空间向量的余弦值来计算语义度,但是对于较长的文本,其特征向量的维度也是不可预测的,并且需要对文本进行分词处理,时间和空间开销大。MichaelStrube对基于维基百科的两个节点的最短路径、文本信息和文本重叠三种算算进行改进,提出了WikiRelate语义计算算法。但是该方法只使用了分类目录的链接信息,忽略了页面包含的大量语义信息,而且计算的相关系数为0.59。DavidMilne分析了维基百科条目的解释文档中出现的内部链接结构,提出了一种只[21]使用链接关系来计算两个词语的语义相关度的方法。该算法首先将两个词语映射到维基百科的主题页面,在计算相关度时,主题页面入链使用基于维基百科链接的GoogleDistance方法。在链出方面,使用的是基于空间向量模型来计算。虽然该算法在语义计 算发面取得了不错的效果(Spearman相关系数0.69),但是该方法忽略的主题页面的文本信息的语义,不能进行一些语义概念的文本查询,扩展性有限。汪祥等人使用维基百科链接关系计算语义关系,主题页面含有大量的内部链接,作者将两个概念映射到主题页面,通过加工处理得到主题页面的页内链接和目录链接计算[22]两个概念的语义,并提出了WLT算法(WikipedialinkandTaxonomybasedmeasure),该算法在WS-353测试集上取得很好的结果。杨柳利用维基百科条目解释文档的内部链接,提出了基于互动百科的链接结构和分[23]类系统来计算语义的方法,该方法与Milne不同的是她把这些内部链接映射到链接所属的分类,利用形成的链接分类向量来计算词条间的相关度。国内对维基百科语义研究最突出的是北京邮电大学的李赟在他的博士论文中结合维[24]基百科多条关联路径来计算语义的方法,李赟提出的结合多条关联路径的语义相关度计算方法是对路径长度算法的一种改进,综合考虑了链接关系图中节点间的路径数、每条路径的长度以及不同节点或链接关系的权重等要素。李赟认为“如果两节点有较强的语义关系,那么这两点一定有多个关联路径,并且大部分路径的长度相对较短,路径所经过的中间节点或边拥有较高的权重”。1.3研究内容和方案1.研究内容(1)在数据预处理方面,由于维基百科语义数据源大,我们搭建了基于Hadoop云平台,将大数据处理技术应用到维基百科上,使用对象模型,得到维基百科主题页面所有相关信息,例如所有链入链出,主题页面的第一段(摘要段)等相关信息,为下一步的语义计算提供了语义知识。大数据处理是现阶段前沿的研究,本文的大数据处理技术希望能够为将来维基百科大数据处理方面提供借鉴。(2)在语义计算方面,通过建立对象模型抽取维基百科的链接结构信息及文本信息,提出一种基于链接结构和文本公共词条计算语义的新方法,我们命名为WLA算法(WikipediaLinkandAbstract)。WLA方法同其它语义计算方法进行实验对比,得出我们的方法在Spearman相关系数上令人满意。最后我们开发了语义搜索平台,并将WLA语义算法集成到平台中。(3)在语义搜索系统方面,开发了语义搜索系统的原型。将我们提出的WLA算法集成到系统中,实现了能够提供普通用户和语义研究人员进行语义搜索的平台。该搜索系统以维基百科对词语的解释为背景知识,包括语义计算,语义概念查询和文本注释三大功能。语义计算功能可计算出词条语义相关性;语义概念查询系统提供基于维基百科的语义词典功能,对偏生词,多义词,歧义词进行语义解释,可以帮助用户扩展知识,能够增强搜索引擎处理查询的能力;文本注释功能对短文本中的专有名称进行注解,只要文本中的词条在维基百科有与之对应的主题页面,那么系统会对该词条进行注解并加入链接功能。该原型可作为语义搜索相关研究的测试平台。 2.研究方案:(1)平台搭建通过查阅资料和阅读相关文献,了解国内外研究现状,深刻理解维基百科数据的处理方法。由于维基百科提供的离线数据巨大,单台机器无法处理,必须结合现有的Hadoop技术,搭建云平台进行处理。(2)语义抽取维基百科语义信息大数据处理问题涉及到Linux下Hadoop云平台集群的搭建及对维基百科数据处理方式及方法,通过现有的图书馆、中国期刊网、EBSCO等中英文文献数据库检索、阅读和分析,了解国内外和本论文研究相关的数据处理及语义研究现状的参考文献和资料。并结合开源的Wikipedia-miner项目及改进模型,将改进模型集成在云平台中,抽取语义信息,为下一步语义计算提供数据。(3)算法提出根据现有的知识及资料分析语义计算方法,以此知识为基础,形成本文的具体研究思路和概念模型及其研究假设。通过分析现阶段语义计算方法,结合维基百科的结构,利用维基百科主题页面的第一段(即摘要段)和链入和链出语义信息提出新的语义计算方法-WLA。(4)平台实现将提出的语义算法集成在语义搜索平台中,语义搜索平台开发需要收集相关的优秀平台案例、学习其先进的技术与经验以便进行进一步的分析和研究。对于相关平台进行拓展分析,进行系统规划,在Linux系统下搭建了我们的开发平台,使用IntellijIDEA开发工具,用Java语言设计了一个基于WLA算法的维基百科语义搜索系统(WLA系统)能够给普通用户和语义研究人员提供一个进行语义计算的语义检索平台。1.4本文组织结构本文共分五章,文章结构以及各章主要内容简单说明如下:第一章为绪论,论述了本文的研究背景及意义,介绍了处理语义知识的需求、存在的难点,及现有的语义知识资源及其特点,并简述了语义相关度计算方向的国外研究现状以及国内在这个领域的研究进展,并分析了国内外研究的典型成果,最后说明了本文的研究内容,研究方案。第二章相关技术介绍,主要包括与本文研究相关的四个方面的技术,首先对维基百科的发展及结构进行了详细的介绍,尤其是维基百科的主题页面,特殊页面及分类系统结构进行了详细介绍。之后对信息检索Lucene,Nutch,Hadoop技术的发展及结构做了详细的介绍。第三章详细介绍了利用维基百科计算语义相关度的方法,包括利用文档文本信息,维基百科的链接信息等。最后提出WLA语义计算方法,详细介绍了语义计算的数据抽取过程,WLA语义计算公式,并进行了实验分析。第四章基于维基百科的语义搜索系统的设计,依赖第三章提出的WLA语义计算算 法,并将该算法集成到系统中,实现了语义搜索的三大功能,主要有语义概念查询,词条语义相关计算及文本注释,并对每个功能界面功能进行了详细说明。第五章主要是总结与展望,对全文所做的工作进行总结,总结实现过程中遇到的重点难点,并对下一步的工作进行展望。 第二章相关技术研究随着计算机技术的不断发展,尤其是Web2.0突飞猛进,各种技术及应用应运而生,本章主要介绍了四个与本文相关的应用技术,分别是维基百科结构,Lucene分词与检索原理,Nutch的内核爬虫及结构,Hadoop结构及运行原理等相关内容。2.1维基百科随着互联网的快速发展及普及,出现了各种各样的Web应用,维基百科是最著名的Web2.0应用之一。维基百科的英文名字为Wikipedia,是Wiki和encyclopedia的结合形式,Wiki全称为WikiWiki,来源于夏威夷语的WeekeeWeekee一词,原为“快点快点”的意思。中文多译为维基,“维”字义为系物大绳,扩展意思为网,可做互联网之意,[25]“基”为万物之本,维基百科的含义解释为互联网中装载万物的百科全书。维基百科不是专家学者完成的,而是在大量的志愿者协作下完成的在线百科全书。维基百科是一个动态、自由访问和编辑开放网站,具有质量高、覆盖广、实时演化和半结构化等特点,这种运行特点使自身迅猛发展,条目数量不断增加。截止2014年10月,条目数最多的英文语言版本已有460万个条目,而全球271种语言的总条目数达到2000万个,网站内容修订次数累计达8.6亿次,在线注册人数约3000万人。维基百科各语言版本发展并[26]不均衡,其中前15名语言版本总条数占的维基百科总条目的71%,主要语言版本及条目数量如图2-1所示。现在成为规模最大且可在线编辑的多语言网络百科全书之一。维基百科网站搭建在MediaWiki引擎上,是一个知识共享平台。维基百科主要有三个特点,第一是自由编辑,任何用户都可以能够简单快捷的编辑页面,无需注册并且不受语言限制,能够简单快捷的编辑页面;第二个特点使更新速度快,尤其是世界上发生的大事都会被社会高度关注,并且内容不断更新,并且每次更新都保留历史编辑记录;三是数据量大,知识记忆性强,信息全面,涵盖了地理,历史社会科学等各个领域,并对每个事件详细记录发生过程及结果。 图2-1维基百科主要语言版本及条目数量维基百科里包含许多页面(也做条目),页面是维基百科的基本单位。页面存储格式由维基百科的贡献者合作编辑完成并采用符合WIKI规范的文本源代码形式,在维基百科中以网页形式发布,每个网页对一个实体进行了详细介绍(如下图2-2所示),该页面是对天津理工大学实体的详尽描述,该页面主要由标题,文本信息,目录结构,信息盒,链接及分类等信息组成。标题在维基百科中用唯一的ID(数据库中用字段page_id表示)来表示,页面开头的第一段(我们称为摘要段)是对主题关键词概念的定义和基本描述。而本文中就是使用摘要段的文本信息进行语义计算,我们使用公共词条进行语义计算,例如两个主题页面的摘要段同时出现“计算机”词条,那么我们就认为这两个主题页面有一定的语义关系。目录结构是对后续章节文本段落概括,每个章节分别围绕主题从各个角度展开具体阐述。页面右半部分是由固定格式的信息框(也做信息盒)来保存结构化信息,信息框通常会附带一个与实体有一定关联的图片,图片下有两列数据,其中第一列为属性名,第二列为属性值。页面还包含指向分类图或其他解释文档的超级链接等信息。 图2-2天津理工大学主页维基百科中的页面还含有两种特别的页面--歧义和重定向页面,这两种特别的页面在维基百科中起到重要的引导性的作用。歧义页面起到消除歧义的作用,该页面含有对一词多义的多种解释,例如“天花”通常指有天花病毒引起的烈性传染病(如下图2-3所示),也可以指建筑物的房顶,还可以指玉米的雄蕊,所以这种情况需一个消歧页面列出所有的词条解释供浏览者选择阅读。图2-3歧义页面在现实世界中,由于人们语言、习惯、行为方式不同对某一个实体称呼也不同,导致一个实体可能会有多个同义词、别名、简称等多个概念。维基百科中重定向页面就是 用于处理这种情况的,将相同含义不同表述的概念用同一个页面来显示。例如用户输入“燕京”时,系统能够自动导航到北京市页面中,从而实现相关页面可以以多个名称进行访问,具体的重定向举例及页面如表2-1所示表2-1重定向举例维基百科中采用了自由分类条目定义的方法,页面都属于一个或者多个分类,每个分类又属于另一个或者多个分类,分类关系较为灵活,但是不会出现环路现象。如果把每个分类条目看成点,继承关系看成边,就会形成有向无环的分类图。同样每个页面主题看成一个点,把指向该页面的入链和指向其它页面的出链看成一条有向边,就会形成巨大复杂的页面链接有向图,如果以某两点为中心将维基百科抽象看成分类和页面链接有向图,那么维基百科的结构如图2-4所示。图中黑色圆圈是我们任意选取主题页面作为图形结构的参考点,该结构图排除了维基百科中的信息盒、图片、多媒体、工具、帮助、讨论页面及已损坏的链接等信息。从下图我们可以看出维基百科有丰富的链接信息,本文计算语义时也充分利用了这些链接信息,借用GoogleDistance距离算法思想来计算语义。 图2-4维基百科结构图2.2Lucene技术在语义研究方面,我们使用的是维基百科数据做语义源,但是维基百科数据之大,无论性能多高的单节点机器来处理数据都很吃力,所以我们借助目前最流行的Hadoop技术来处理数据,这样能对大数据轻而易举的进行处理。另外,在处理数据后我们还需要对数据进行检索,我们使用了全文搜索引擎包Lucene技术进行语义检索,并对Lucene应用之一Nutch做了详细的介绍。下面我们简单的介绍这三种技术。(1)Lucene简介Lucene最初是由资探全文检索专家DougCutting负责编写的,DougCutting曾经在Apple,Yahoo等许多大公司任职,发表过大量的有关信息检索方向的论文,拥有信息检索(IR)领域的丰富知识和实践经验。Lucene的名字源于DougCutting的妻子Middle[27]Name,发音为“Loo-seen”。随着项目的不断发展和应用,在2001年9月,DougCutting将Lucene捐献给了Apache软件基金会的一个子项目Jakarta,在该子项目的不断支持发展下,成为一个高质量的Java开源软件。开始该软件是使用Java开发的,不过由于开源和它的强大优势,吸引了很多的志愿者或开发者参与其开发,逐渐被翻译成C#,C++多种语言版本,目前官网的Java版本已经达到4.8.0,考虑高版本的不稳定性,本文使用最稳定的版本3.5.0。同时基于Lucene的各种应用也随即出现,最著名的如Nutch(网络爬虫),Hadoop(分布式计算云平台),这样增加了Lucene社区无穷的魅力。 (2)Lucene结构Lucene的建立索引和检索处理过程如图2-5所示,首先对带索引文件进行语法分析等一系列处理后,对处理后的文件建立索引,将建立的索引存储到索引库。用户通过查询语句对文件内容进行检索,Lucene会对查询语句进行语法分析,分析后对索引库进行检索,将符合条件的检索结果根据相关性大小返回到用户。索引1-4查询语句带索引文件搜索a-f1a语言处理返回结果语法分析索引2f4db3ce索引创建索引存储索引搜索排序图2-5Lucene建立索引和索引搜索流程图Lucene的语法分析工具位于org.lecene.analysis包中,该包中包括了一套完整分析体系以及可扩展性良好的结构。这里需要涉及到语言的自然处理的知识,需要对文档内容进行词汇单元化处理,将文本的每个单词转化为基本形式(词形归并),例如对文本取词,去标点,去掉停用词,大小写转换,词干还原等,分词后得到的词项可以作为倒[28]排序结构中词项词典的部分。语法分析中最重要的是分析器,Lucene提供了几个主要的分析器,分析器的名称及分析原理图表2-2所示。表2-2Lucene主要的四种分析器虽然Lucene提供了四种分析器,但是各有优缺点,下面我们拿对英文文本做一个示例,对文本“TianJinuniversityoftechnology,myemailisliupengjielove@126.com,myisQQ123456788”进行分析处理得到的词项如下表2-3所示 表2-3英文分词结果分析器分析结果WhitespaceAnalyzer[TianJin][university][of][technology,my][email][is][liupengjielove@126.com,my][is][QQ][123456788]SimpleAnalyzer[tianjin][university][of][technology][my][email][is][liupengjielove][com][my][is][qq]StopAnalyzer[tianjin][university][technology][my][email][liupengjielove][com][my][qq]StandarAnalyzer[TianJin][university][of][technology,my][email][is][liupengjielove@126.com,my][is][QQ][123456788]中括号中内容为分词后得到的每个词项,由上表我们得出,WhitespaceAnalyzer分析器在英文文本分析中,只根据空格拆分单词,不能进行大写小转换,去停用词等。SimpleAnalyzer能进行大写转换,但是将TianJin专有名称转化为小写,而且不能去停用词。StopAnayzer虽然能去停用词,但是它的缺点同SimpleAnalyzer,将TianJin专有名词转换为小写,而且对邮箱,数字等信息当做停用词去掉了。StandarAnalyzer分析能识别邮箱,数字等专有名字,在整个分析中,StandarAnalyzer分析效果最好,但是也存在着缺点就是没有去除停用词,在分词后会产生大量的无用信息,会减慢检索速度,所以需要对其改进,需要自定义停用词。由于Lucene是国外开发的,主要用于英文文本分析,对汉语的分析却不尽人意,下边是这四种分析器对汉语“天津理工大学,我的邮箱是liupengjielove@126.com,我的QQ号为123456788”语句的分析结果如下表2-4所示表2-4中文分词结果分析器分析结果WhitespaceAnalyzer[天津理工大学,我的邮箱是liupengjielove@126.com,我的QQ号为123456788]SimpleAnalyzer[天津理工大学][我的邮箱是liupengjielove][com][我的qq号为]StopAnalyzer[天津理工大学][我的邮箱是liupengjielove][com][我的qq号为]StandarAnalyzer[天][津][理][工][大][学][我][的][邮][箱][是][liupengjielove][126][com][我][的][qq][号][为][123456788]从表中我们看出,Lucene的分析器不适合中文分析,即使效果最好的StanderAnakyzer分析器对中文分析的结果显然不适合,在使用Lucene对中文分词时需要借助第三方分析器来进行,比较成熟的中文分析器如庖丁解牛分析器,或者借用搜狗词库进行分词。对文本进行分词后,下一步Lucene需要对分词后结果建立索引,建立索引最重要的两个概念是文档(Document)和域(Field),文档是Lucene索引和搜索的原子单位,代表一种逻辑文件,经常和一个物理文件对应,例如.txt文件,.doc文件,为Lucene提 [29]供要索引的文本内容。文档包含一个或者多个域,域是“真正的”检索内容,存储来自数据源的数据内容。事实上,这种Document-Filed的结构,和许多关系型数据的存储格式差不多,将Lucene的索引看成数据库中一张表,文档看成表中一条记录,域看成每条记录中每一个段。当对多文档建立索引时,为了减少索引数量及提高检索速度,Lucene整个索引的存储格式使用倒排序索引。倒排序索引的基本思想见下图2-6所示,左部分称为词项词典,也即是域的具体取值,右边是是文档的ID号,在倒排序索引中,每个文档都有唯一ID号来表示文档。本文对主题页面的摘要段文本信息使用Lucene进行分词并建立索引,详细内容在下一章节中讲解。图2-6Lucene倒排序结构Lucene在检索索引时,提供了基本搜索方式和高级搜索方式,基本的搜索方式主要通过Lucene提供的API来实现,例如对索引中的特定项进行搜索(TermQuery类),缺少对某些字母的通配符查询(WildcardQuery类),模糊查询(FuzzyQuery类)等。但是有些项目使用基本的搜索方式仍然无法实现,例如按照特定的域来排列搜索结果,而不是根据搜索结果的相关性来排列,这事需要使用高级的搜索功能,高级搜索功能包括对多个域进行排序,跨度查询及搜索过滤等。2.3Nutch技术随着Lucene开源项目的不断发展,DougCutting在Lucene基础上开发了搜索引擎Nutch,该项目首先发布在自己的主页上,之后又发布在SourceForge。现在已经成为Apache基金Lucene下一个子项目。Lucene不是一个完整的应用程序,只是一个全文检索的软件包,提供开发接口,而Nutch是一个完整的应用程序,纯Java开发,具有平台无关性等优点。Nutch的核心包括一个网络蜘蛛,网络中蜘蛛有三大功能:HTTP下载模块,链接分析模块和下载控制模块。HTTP下载模块使用HTTP协议下载,获取网页 [30]内容并存取;链接分析模块能够提取下载网页中的超链接,用于后续页面入口;下载控制模块主页负责访问队列调度,更新策略及网页下载顺序。网络蜘蛛的操作流程如下图2-7所示。链接分析模块URL数据库网页数据库访问队列HTTP下载模块结果队列HTTP下载模块下载控制模块HTTP下载模块图2-7网络爬虫流程图网络爬虫首先从URL数据库中获取爬取入口,进入访问队列,下载控制模块根据空闲HTTP模块分配URL,这时模块会新建下载任务并启动,获取相应的网页存入网页数据库,为后续建立索引做准备。链接分析模块会分析网页数据库网页内的链接,并将[31]获取的链接加入到URL数据库中。在Nutch体系中还存在一系列的操作命令,例如admin用来创建一个新的web数据库,inject命令用来添加入口链接,fetch按照HTTP协议访问互联网,获取网页数据内容等。Nutch中使用广度优先和深度优先算法对互联网链接网状结构进行访问,从广度算法角度来说广度优先是为获取更多的不同网站,从深度优先算法来讲为获取更多的站内搜索。下图2-8是我们搭建Nutch系统后对天津理工大学网站爬取分析后的检索结果,从对Nutch检索结果来看,检索结果只是关键字匹配结果。 图2-8Nutch检索结果2.4Hadoop技术今天我们生活在一个大数据时代,无论在科学研究还是应用开发方面,分析海量数据需求的应用越来越变的普遍。2004年,搜索引擎和开源全文检索包Lucene之父DougCutting一直困扰检索系统平台的性能的可靠性,在这时Google公司发表了GFS文件系[32]统和MapReduce编程模型论文,在学术界引起了非常大轰动。DougCutting历时2年开发了Hadoop,Hadoop名字由来是他儿子的玩具大象名字。Hadoop的实现使搜索引擎和开源全文检索包Lucene性能大大提高。经过不断的发展,越来越受到人们喜爱,因其该技术采用是无共享大规模集群系统,具有良好的性价比和可伸缩性,易于理解和使用,目前Hadoop已经成为云计算最常用的技术。国内外大大小小的公司都加入其行列之中,在国外Google在全球知名大学开设Google模式云计算编程课程,并直接使用Hadoop技术搭建实验环境供学生做实验。在国内淘宝,腾讯等大型互联网公司也都在进行Hadoop的研究和应用 Hadoop是一个能够对大数据分布处理的软件框架,主要有HDFS文件系统和MapReduce分布式数据模型处理。Hadoop框架主要使用的是主/从模式。在一个配置完整的集群中要有NameNode,DataNode,SecondaryNameNode,JobTracker,TaskTracker等角色。在主节点主要是运行的是NameNode,SecondaryNameNode,JobTracker后台程序,NameNode,JobTracker在大型集群中会被分布在不同的节点上,DateNode,TaskTracker运行在从节点上,如图2-9所示,NameNode主要对内存及I/O进行管理,是HDFS的守护线程,负责数据块的分割记录及在数据节点的分布情况,但是NameNode是单节点的,如果该节点宕机会影响整个集群的运行,为了避免在这种情况的发生,用SecondaryNameNode来监控辅助集群正常运行,它与NameNode实时进行通信并保存HDFS元数据的快照,当NameNode出现故障时用手动切换,使数据损失降低到最小。DataNode是运行在每个服务器的后台程序,主要负责数据的读取操作。JobTracker主要负责Hadoop集群的任务分配,并且监控所有运行的Task,一旦Task出现故障,会重新开启这个Task保证该任务顺利完成。TaskTracker与负责数据存储的DataNode相结合,主要管理Task任务,每个节点仅有一个TaskTracker,但是每个TaskTracker可以产生多[33]个Java虚拟机用于并行处理多个任务。SecondaryNameNodeJobTrackerTaskTracker浏览器NameNodeDataNodeJava虚拟机HadooptoolJava虚拟机Linux/Windows操作系统Linux/Windows操作系统服务器服务器图2-9Hadoop结构图Hadoop并行处理主要数据主要使用MapReduce分布式模式来处理,采用“分而治之”的思想,将大数据切分成小数据分发给每个节点,每个节点处理完数据后整合最终得到结果。中间的处理过程主要有两个函数来负责,一个是map函数,将大规模数据分解成多个数据,将多个数据进一步分解成键值对
此文档下载收益归作者所有