基于PARADISE平台论文检索系统LiteratureSearchDesignbasedonPARADISE重点本科毕业论文_第1页
基于PARADISE平台论文检索系统LiteratureSearchDesignbasedonPARADISE重点本科毕业论文_第2页
基于PARADISE平台论文检索系统LiteratureSearchDesignbasedonPARADISE重点本科毕业论文_第3页
基于PARADISE平台论文检索系统LiteratureSearchDesignbasedonPARADISE重点本科毕业论文_第4页
基于PARADISE平台论文检索系统LiteratureSearchDesignbasedonPARADISE重点本科毕业论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科生毕业论文题目:基于PARADISE平台论文检索系统LiteratureSearch Desig n based on PARADISE姓 名:学 号:院 系:信息科学技术学院专 业:计算机科学与技术系指导教师:摘要:本文基于天 网实验室的 Platform for Applyi ng. Researchi ng And Developi ng In tellige nt Search Engine(PARADISE)搜索引擎平台,通过以从抓取的计算机网络方向的2500多篇论文为数据,搭建成一个论文搜索系统,最终目的是通过论文之间的引用关系,获得其他引用这篇论文

2、的作者对这篇论文的评价,形成一个小的评价段落,以及Impact-based Summaries,从而使得我们能够从专业级的角度获得这篇论文的内容以及优劣。我们首先根据上面抓取了文章之间的引用关系,然后通过一个算法获得了对一篇文章评价的候选句子集,根据这些句子的重要程度进行排序,获得一个评价短文。并且构建了一个语言模型,通过这些候选句子集对原文的句子进行评分, 取得分最高的几个句子,获得原文基于影响的概括。关键词搜索引擎,论文评价,语言模型,KL-divergenee 算法,基于影响的概括6AbstractIn this paper, based on the PAR

3、ADISE (Platform for Applying. Researching and Developing Intelligent Search Engine) and the data of 2500 paper in area of computer network, weconstruct a search engine of papers. Our goal is to get the comme nt and impact-based summaries of one paper based on the refere nee relati ons betwee n the p

4、apers. We firstly get can didate sentence which comme nt on the previous paper and gen erate a citati oncon text. Then wec on struct a Lan guage Model, through the citati oncon text, we can score the sentence in the previous paper, and get the impact-based summaries.Key words Search Engine, Paper Co

5、mme nt, Lan guage Model, KL-diverge nee Scori ng, Impact-based Summaries目录第1章引言51.1研究背景51.2工作内容21.2.1抓取所需要的论文数据 21.2.2获得一篇论文的评价并较好的显示出来 21.2.3获得一篇论文基于影响的总结段落 31.2.4基于PARADISE平台搭建搜索平台 31.3实验的意义3第2章数据的收集52.1如何提取数据52.2数据抓取的过程62.3数据的存储及解析7第3章生成评论集 103.1获得评价的候选句子集103.2获得评论段落11第4章建立模型并生成基于影响的概括 134.1建模之前我

6、们所有的数据134.2建模算法134.3算法的实现144.4获得基于影响的概括 15第5章搭建搜索引擎165.1paradise 结构简介165.2修改索引部分175.3修改前台部分185.4系统示意图195.4.1主界面195.4.2 搜索结果界面 205.4.3评论界面21第6章实验结果与分析 226.1实验结果226.2具体分析22第7章后续工作26第8章致谢27第1章引言1.1研究背景如今,全世界范围内学术活动日益积极, 所产生的论文也在不断增多,因此, 如何搜索到自己所需要的论文,以及自动获取一些关于论文的信息, 是客观需要 的。学术检索,绝不简简单单的检索出所要查找的论文, 这样就

7、和普通的通用搜 索引擎如google等一样了。学术检索,更侧重于深层次的内容挖掘。例如,可以通过一篇论文所引用的文章以及所属领域,寻找出这个文章所在 领域的主要论文,这对了解一篇论文的背景知识以及理解一个领域的发展非常重 要。在1 1(L. Gwenn Volkert)中提到了文献检索现在主要的发展方向,有以下 几点:1提高检索的质量,这是从语言模型的角度,让人们更加准确的找到所需 要的论文。2.找到相关领域的最主要论文,以及一些较权威的作者,帮助读者了解相关知识。3.从referenee和citation 角度,挖掘出一些知识,最常见的, 就是通过一篇论文的被引用次数确定它的排名以及影响力。

8、我们知道,国外的PHD学生在第一年的学习之后都是要通过 QE考试的,考 试的形式一般是先读几十篇论文,然后根据这些论文的内容进行一些答辩。 这时 候,他们往往很想知道别人是如何评价这篇论文的,这篇论文有什么优点和缺点,有什么后续的研究等等。这就像我们准备去一个地方去旅游,不仅需要该景点本 身的介绍(有点类似于摘要),往往更想知道去过这个地方的人都是如何评价这 些地方的。通过对这篇论文的评价,我们可以从更专业并且更加广阔的角度获得 这篇论文的一些信息,并且可以知道这篇论文之后可以做哪些事情。基于上面的观点,我们就准备做出这样一个知识提取系统,通过这个系统, 可以自动获得别人对这篇论文的评价2 2

9、,以及论文中的一些较有影响力的信息,从而帮助人们更好的理解这篇论文。整体流程如 图表1 。在3 3(Qiaozhu Mei, ChengXiang Zhai)中,作者利用 KL-divergenee 算法建立了一个模型,生成了一篇论文基于影响的概括,但是它并没有强调评论的重 要性(这里的评论,是指别的作者对它引用的一篇文章的评论),它只讲评论当成一个中间状态,当成一个求得基于影响的概括的手段。实际上,这些评论和最终经过KL算法形成的概括是同等重要的,有时候,它甚至比后者更加清晰易 懂。本文相对于3 3的优点是,赋予评论以及概括同等重要的意义,并且形成了 了一个实际的系统供人使用,而不仅仅是用于

10、研究。图表1评论句子i|句子2句子3句子4源论文论文1评论止文引用基于影响的概括论文2正文评论引用1引用1引用2J引用1引用2321.2工作内容1.2.1抓取所需要的论文数据要进行论文搜索,首先需要一批实验数据,我是从 上抓取 下来的。之所以选择从这上面抓取,是因为我们不仅需要论文的pdf文档,还需 要从中自动提取摘要、引用等信息,而这本身就应该是一个挺复杂的算法了,而且不是我们工作的目的,而上述网站已经人工的将论文的摘要、 引用信息提取了 出来,并且对于每一个引用还有相应的链接,因此会节省我们抓取数据所要花费 的工作量。最终我们会将抓取的数据存储在Berkele

11、yDB中。1.2.2获得一篇论文的评价并较好的显示出来我们这个系统的主要工作是通过别的论文对原论文的评论,来获得一些不能 直接从原论文中获得的信息,因此,最基础的,就是如何获得这些评论。关于这 一点,我们通过上面的数据收集工作, 会获得一个论文之间的引用图,然后通过 引用的倒置,能够获得引用一篇论文的所有文章,然后,通过一个算法,可以从 这些文章中提取出对原文进行评价的句子。最终,为了便于使用者观看,还需要对这些句子进行一些整理,进行排序、整理成一个段落出来。123获得一篇论文基于影响的总结段落在获得对原文进行评论的句子之后,将原文划分成一个一个的句子,我们利用 了 KL-divergenee

12、算法(3 3),对这些句子进行打分,这里分数的高低,代表 表了原文中每一个句子影响程度的高低,显然,影响越大的句子,在别的文章中提及的越多,其分数就越高。最后,我们取一定数量得分最高的句子,组成一个 段落,这个段落是对原文的一个概括,而且会获摘要所不能获得一些信息的一些 信息。124基于PARADISE平台搭建搜索平台我们基于PARADISE搜索引擎平台搭建成了一个关于 pdf的全文搜索系统。 PARADISE由预处理,简历索引,检索,前台四部分组成。由于我们的数据是论 文,并且已经转化为了 txt文本格式,预处理这一部就略去了,需要继承一个建 立索引的类,并且修改一些前台的接口就可以了, 这

13、样就搭建成了一个论文搜索 系统。这一过程也体现出了 paradise的可扩展性以及易用性,paradise中的每 一个组件都是可以通过继承一个自定义的新类来完成的,其中包括预处理、索引、检索、语言模型、排序、压缩等等所有的模块都可以自己选择或者自己重新定义1.3实验的意义我们在读一篇论文之前,一般能简单的看到它的摘要、作者等信息。而在读 完一篇论文之后,我们能获得什么信息呢?主要有以下几种:(1) 这篇文章做了什么事情,这可以从摘要中获得。(2) 这篇文章中涉及到的核心算法,这个只有在细致的读完了这篇文章之后 才能理解,应该是没法依靠辅助来获得的。(3) 这篇文章哪些部分比较重要,哪些部分比较

14、好,哪些部分需要改正,我 们可以从哪些方向进行扩展。对于第三点,如果完全自己理解,可能会比较困难,而且对读者自己的要求也 比较高,可能要读了很多这方面的背景知识、 后续论文等等才可能获得,而通过 我们做的这个系统,就可以帮助大家更简单的获得一些从文章中不能直接获得信 息。一般来说,作者如果想从自己的角度归纳本文的大体内容,通过阅读摘要,我们可以看到作者写这篇文章大体做了什么。但是文章中很有可能有一些作者没有 发现,或者作者当前没有重视但是以后被别人发掘出来很重要的意义。通过将那些对文章进行引用的句子,与本文建模,对原文中的句子进行排序,从而获得文章中一些有特殊意义,影响较大的句子,这样,我们可

15、以获得文章中最重要的信 息,而这些重要信息和摘要的区别就是,它们不是作者提出来的,而是别的作者在读了这篇文章以及其他的文章,经过很多思考之后,总结出来的这篇文章最重 要的地方。此外,别的文章中对原文进行评论的句子(4 4),本身就是很重要的信息,可 以让我们知道原文都做了那些后续工作, 或者那些部分比较好,哪些部分需要改 正。简单来说,我们这个系统的意义,就是通过数据挖掘的方法,获得一些直接从 原论文很难发现的信息,并且结合paradise系统,以搜索引擎的方式呈现出来, 便于大家检索查找。第2章数据的收集我们这个系统的目的是为了方便读者理解论文,因此除了需要基本的论文的 pdf格式,还需要提

16、取发表期刊、作者、摘要、被应用次数,引用文章这些信息。 其中,发表期刊、作者以及被引用次数是用来在后面获得comment以及impact-based summary进行排序的时候加权用的,显而易见,较好的期刊,较 有名的作者,引用次数较高的文章,它做出的评价应该要重要一些(当然,这里 只是预留着为以后的扩展用,而我们的系统实际上并没有用到作者的知名度信 息)。当然,其中最重要的是提取引用的信息。我们的目标是通过获得每篇文章 所引用过的文章,建立一个映射表,然后将映射表倒置过来,从而获得每篇文章 被哪些文章引用过。2.1如何提取数据首先,是如何提取文章的摘要等各种信息了。本来我是准备直接从文章中

17、提取的,随着工作的深入,发现这样做有很多的缺点,首先,从paper中提取各种信息就是一个很繁重的工作,这本身就可以当做一个毕业设计来做了,会消耗我大量的时间,但却不一定能够达到工作的目的;其次,最重要的是,在每一篇文章 里,reference是以(作者,文章名,发表期刊,年份)的形式表现出来的,例 如:G. Luecke, H. Chen,J. Coyle, J. Hoekstra, M. Kraeva,and Y. Zou. MPI-CHECK:A tool for check ing Fortra n90 MPI programs. Con curre ncy and Computatio

18、 n:Practice and Experie nce, 15:93- 100, 2003.而我们存储每篇文章的时候,是以期刊作为文件夹,以文章作文文件名来存 储的,例如这篇论文,以下面的形式存储的。pdf/C on curre ncy_a nd_Computatio n:Practice_a nd_Experie nce/MPI-CHECK:_A_ tool_for_checki ng_Fortra n90_MPI_programs.因此,我们需要从上面的那句话中提取会议名以及文章名,才能获得文章之 间的引用关系,建立一个FromT o表,这之中甚至是相差一个空格都不行的,会 直接导致整个系

19、统的失败。于是,我们想出了一个简单的办法。可以看到,在 上,每一篇论文的格式都是规整的,从上面可以很容易的提取出摘要、文章名、期刊等信息,可以下载到pdf版的文件;更重要的是,对于论文的引用信息,在该网页上 该出了一个超链接,点击之后就可以进入引用的文章的信息。因此,可以利用递归的方法,进入引用的文章,从中提取出会议名以及文章名,这样,每篇文章的 引用就可以形成上面的格式,并且是完全正确的,方便我们建立引用映射表。接着,要设定递归的种子以及递归的层数。 因为我们的实验所需要的数据最好 是在一个领域里面的一个方向的论文,并且需要引用关系较紧密的,以便于后续 的工作,因

20、此,这里采用 www会议的文章作为种子,对于每一篇文章递归三层。 如果递归四层,就会太多了。假设一篇文章又十个引用,那么递归四层,就会导 致没从www会议中抓取一篇文章,就需要抓取 1000篇相应的其他文章,这个数 量实在是太大了;如果递归两层,就会导致每篇文章只能抓取其引用的文章,这样引用的层次较浅,很有可能导致最后引用倒置时,每一篇文章只被一两篇文章 引用,这样不利于我们的实验。最后,我们需要将pdf转化为txt格式,这是利用linux自带的pdf2txt 工具来实现的,但是这个工具并不支持对文件夹的递归操作, 因此,我用python 写了一个脚本,通过递归操作,可以将一个sourceDi

21、r里面的所有pdf文件递归 转化为txt文件,并按照原来的相对路径存在 destDir里面。2.2数据抓取的过程已经确定抓取数据的大体方法了,下面就要开始正式的抓取数据了。所用的工 具比较简单,就是利用linux下的wget工具,将网页下载到文本文件里进行分 析。另外我们这里利用了第三方库boost:regex ,这种正则表达式非常适合从网页中进行模式匹配并且提取出数据。有了前面的两项工具,我们只需要分析好网页的模式,尽量正确的提取数据既可以了,需要注意的是,由于网页并不是完 全规整的,因此,有时候,对于同一个数据,往往要写多种匹配的公式才可以, 这其中,最麻烦的当属提取引用部分了(我们不仅要

22、提取引用,还要提取这个引用对应得url,从而递归进入提取它的论文名)。以提取作者信息为例:<ahref="author_page.cfm?id=81100472691 &coll=portal&dl=ACM &trk=0&CFID=23904299&CFTOKEN=88670161" target="_self">Yo ng Yu</a>我们需要从上面得公式中提取出作者名,需要以下几步:(1)利用boost regex公式写一个正则表达式匹配上面的文本boost:regex ePaperAu

23、thors("<td class="small-text">s*<ahref="A"*?authorA"*"target="_self">(A<>*? ) v/a>s*v/td>",boost:regex: no rmal |boost:regbase:icase);其中引号中的内容为匹配的正则表达式,注意其中的一对小括号,其中的内容就是我们需要提取的信息利用split函数,将结果存入list里面list<stri ng> author

24、s;boost:regex_split(std:back_i nserter(authors),content,ePaperAuthors);这样,文章中所有匹配上面正则表达式的字符串,其中的作者信息(即上面括号 中的内容),都会存在authors这个容器里面还需要注意的一点就是,由于网页的不规整性,所以要排除一些错误的情况。 还有一些文章,确实没有摘要、引用或者其他信息(这些文章多出现在引用链的 顶层,主要是一些书籍等参考资料,所以也比较正常),遇到这些情况我们就不 抓取下来了。2.3数据的存储及解析在将数据从网页下载下来之后,需要存储起来。首先,对于pdf的格式,只能存在文件系统里,按正常

25、的方式存储。对于其他的信息,这里选择存储在 berkeleyDB里面。berkeleyDB是一种轻量级的数据库,Mysql等数据库底层就 是利用berkeleyDB来完成的。它的有点是可移动性,不用想 Mysql那样搭建服 务器,而且读取数据时较快。对于每一篇文章的基本信息metadata,按照【表格1】中的形式存入berkeleyDB中:表格1Keyin t64_t的一个整数字符流,存储元数据信息,按如下格式:* name*sourceValue*abstract*citati onCount*authors*refe ren ces*refe ren ceName*url获得这些基本信息之

26、后,我们还要根据这些元信息,陆续建立一些 berkeleyDB文件,用于存储其他信息,如表格2:表格2文件名KeyValueconten t.dptint64_t的整数,论文ID这篇论文的全部文本内容fromto.dptint64_t的整数,论文ID用于存储一篇论文所引用的所有文章tofrom.dptint64_t的整数,论文ID用于存储一篇论文被哪些文章所引用comme nt.dptint64_t的整数,论文ID存储最终要显小在页面上的文章的评价summary.dptint64_t的整数,论文ID存储最终要显小在页面上的基于影响的文章的概括其中content.dpt 是通过将pdf格式转化为

27、txt之后获得的。fromto.dpt 是对整个论文的引用关系图进行解析获得的,从上面的元数据中,我们可以获得每个论文所引用的论文的名称,这样,我们可以通过这些名称,来获得这个论文 所引用的所有论文的ID号,并且存储到数据库中。获得fromto.dpt之后,对其 进行倒置,就可以获得tofrom.dpt的内容这里之所以选择BerkeleyDB进行存储,是因为它有以下这些优点:嵌入式(Embedded:它直接链接到应用程序中,与应用程序运行于同样 的地址空间中,因此,无论是在网络上不同计算机之间还是在同一台计算 机的不同进程之间,数据库操作并不要求进程间通讯。Berkeley DB为多种编程语言

28、提供了 API接口,其中包括C、C+ Java、 Perl、Tcl、Python和PHP所有的数据库操作都在程序库内部发生。对 于我们这个系统,后台程序是由C+完成,而前台程序是由python完成, 他们都会共同访问一些文件,通过存储在BerkeleyDB进行存储,就解决了不同语言之间兼容的问题。轻便灵活(Portable ):它可以运行于几乎所有的UNIX和Linux系统及其 变种系统、Windows操作系统以及多种嵌入式实时操作系统之下。它并不 需要搭建一个数据库服务器,以用户、服务器形式访问数据库,而是以函 数调用的形式。一旦Berkeley DB被链接到应用程序中,终端用户一般根 本感

29、觉不到有一个数据库系统存在。 这样提高了我们的系统的实用性,当 用户需要自己搭建一个我们的论文系统时,不用再去搭建数据库服务器, 进行各种繁琐的配置。第3章生成评论集通过上面的内容之后,我们获得了所有基本的信息,其中,最重要的,获得 了 tofrom表,该表的key是一篇论文A的ID,value是引用A的所有论文ID 的集合。下面我们就要结合前面获得的数据,包括论文的文本、元数据,来获得 一篇论文的评论集。3.1获得评价的候选句子集通过tofrom 表,我们可以获得一个集合B1,B2,B3.,其中Bi对A进行了 引用。我们相信,如果 Bi对A进行了引用,那么Bi中可能会有一些句子对 A 进行了

30、评价。一般有以下几种情况:(1) Bi中的句子出现了 A的论文名(2) Bi中的句子出现了 A的作者名(3) 在Bi的referenee列表中,如果A出现在第k个位置,那么通常在文章 中会利用"k"来对A进行引用。(4) .对于(3)的情况,有时候并不只是对k进行引用,可能文章中的一句话代表的是好几篇文章的工作概括,因此会出现“i,k,j”这种类型的符号来对A进行引用,而且出现的概率很高。(5) (如果Bi中的某句话对A进行了评论,那么通常它的前一句话和后一句 话也会出现评价的信息通过上面的5点,我们就可以获得了 Bi中对A进行评价的句子,从而获得 了一个候选句子集,里面的

31、每一句话都不同程度的对A进行了评价。图表2II输入八篇论文的ID号通过ID号以及tofrom表获得所有引用它的论文列表对每个引用它的论文将其切分成各个旬子毎个句子*利用上面前4个规则判断它是否对输入的论文进行評论如果确实评论了源论文则将论文的序号替换cited paper以示区别并 将它前面及后面的句子也加入,从而获得这篇论文对源论文的评诊对第一步中获得的每一个论文列表运用上面的操作最综获得一个对源论文逍 行评论的所有句子.将上面获得的句子列表,很据每个句子所在论文的被引用次数逍行排序,选择 前k个输出,作为最终获得的段落"如图表2所示流程,具体实现的时候,先要将 Bi按句子进行划分

32、为一个句 子序列Bis1,Bis2,Bis3.,然后遍历这个句子序列,对于每一个句子,按照上面的前四条规则进行评判,如果满足其中任意一条,则这个句子是候选句子 集合中的一个,并将其前后两个句子也合到一起,添加的候选句子集合中。最终,得到对A进行评论的候选句子集e1,e2,e3.,这里面可能会有一 些评价来自同一篇论文。3.2获得评论段落获得了候选句子集之后,我们需要对其进行适当的排序,从中选出较好的几个 句子,最终显示在页面上。由于不同的人,对这篇论文的评价可能也不太一样, 因此,就不能简单的按照这些评价句子与原文的相似度来进行打分排序了,因为这样会造成和原文观点相近的评分较高, 不是我们希望

33、获得的结果。实际上,有 时候越是和原文的观点不同,反而可能越重要,它可能是对这篇文章的批判,也 有可能是原文的作者并在写paper是并没有发现的一些问题,这对我们寻找后续 工作时可能会非常重要。我们在提取数据的同时,会获得每一篇文章的 citati on 信息,代表这篇文 章被引用的次数,一般,一个较好的文章,被引用的次数也应当比较多,因此, 对于每一个评价,根据它所在文章的被引用次数进行排序,可以获得较为专业,也较为合理的结果同时,需要注意的是,如果一个篇论文的被引用次数很高, 而且它又有两段评 论原文的句子时,那么这两段会一起出现在最终的结果里, 在这里我们就需要对 结果进行调整,保证在权

34、重相同的情况下,尽可能选择尽量不同的文章的评论。第4章 建立模型并生成基于影响的概括通过获得了对源论文的评论集合, 下面就可以与源论文建立模型来获得基于 影响的概括。所谓基于影响的概括,简单来说,就是某句话与评论之间的关系越 紧密,那么这句话的影响力就越大。最终将影响力最大的几个句子合在一起, 就 形成了基于影响的概括。4.1建模之前我们所有的数据在建模之前,我们先来看看我们已经获得了哪些数据:(1) 所有论文集合D,以及D里所出现的所有单词,构成一个单词表V,并且可以 统计出每个单词w出现的次数C(w,D)(2) 对于一篇论文d,将其划分为多个句子si, s2, s3,已经获得了这片论文进行

35、评论的所有句子e1, e2, e3,把他们的集合成为 C (Citatio n Con text)。下面,我 们就可 以参照 KL-divergenee 算法(3 3, Qiaozhu Mei andChengXiang Zhai),对d中的句子s进行打分。这里的打分,主要是基于词频 以及相似度来做的。4.2建模算法首先,为任何一个句子打分的公式 Seore(s)如下:Score(s)D(s |亠)八 p(wpi)log( p(w|j)八p(wpi)log( p(w|s)w Vw V从信息理论的观点,其中Di IPs)即为KL-divergenee,可以被解释为通过 句子s来表示基于影响的段落

36、,需要从文章中删除的信息量。显然,其值越小, Score则越大,它也越能代表文章以及其他文章对它的评价的意思(因为它只要 删除较少的信息)可以看出,公式中最重要的是求出 p(w|m)和p(w|vs)(1)P(Wps)c(w,s)气* P(w| D)|S| P(wpi)二c(w,d) I P(w|C)|dc对于公式(1),其中,c(w,s)表示一个单词w在句子s中出现的次数,p(w|D) 表示单词w出现在所有论文空间中出现的概率,D为我们的整个论文空间。而 为平滑参数。我们假设为|s|的n倍,则 式可以看成是 宜心 p(w|D)*门, 可见,Js越大,表示w与整个论文空间的关系越大,而与这个句子

37、的关系则较 少。W等于1时,则表示二者一样,各占1/2。我在这里将J设置为了 1对于公式(2),其中c(w,d)表示一个单词w在当前要求的这篇论文中出现的次数, 而p(w| C)表示单词w在我们为这篇论文求出的评价句子的集合 C中出现的概率JC为平滑参数。我们仍然假设u为w的n倍,则式可以看成 p(w|d) - p(w |C) * n,可见,n越大时,表示这个单词 w与C的关系越大,而n 小于T时,则与 1论文本身关系较大。可以看出,极端的情况,当n为0时,则w只与原论文有关系了,与我们获得的那些评价都没有关系了, 因此获得的句子实 际上对其他论文也没有什么影响了。 因此,对于本实验,应当将n

38、设置的越大越 好。4.3算法的实现具体实现算法时,会出现一些问题:我们假设一篇论文可以划分成 1000个 句子,每个句子有20个不同单词,我们总共有2000篇论文,那就有4亿个单词。 那么,对于每一个句子s,我们在进行上面的算法时,需要进行如下一步'(P(w|r)log( p(w|s) - p(w|r)log( p(w i)w三V这就需要对这4亿个单词进行遍历一遍,并且分别计算括号中的那一步。而 每篇论文有1000个句子,就相当于要计算4000亿次,这个计算量对我们来说太 庞大了,因此,我在这里选取了一个简便一点的方法,就是在上面的一步时,并 不是对整个单词空间进行计算,而只是对论文d

39、和评论集合C中出现的所有单词 进行遍历计算打分。可以看出,对于一个既不在d中又不在C中的单词,p(w|3) = 0.对结果也 没有影响。因此,上面的公式只是理论的公式,具体应用时,只需要对d和C中出现的单词进行计算即可,这就节省了大量的计算量。整个流程如 图表3,需要用到图表2中的前三部算法获得的评论列表。这里之所以不用 图表2 的最终结果,是因为我们需要更多的信息,信息越多,获得的概括越具有影响力。 图表4.4获得基于影响的概括通过上面的模型,可以对A中的每个句子进行打分,然后根据所打得分数进行 从打到小排序。这里因为每篇论文只有 1000左右的句子,数量级并不是很大, 就自己写了一个简单的

40、冒泡排序算法来排序。 之后,选择其中得分最高的k个句 子,组合在一起,就获得了原文基于影响的概括了。 从整个建模的过程中也可以 看出,所谓基于影响,就是通过哪些对 A进行评价的句子集C,分别获得Si与 这些句子的相似程度,与其相似程度最高的,证明这个句子被其他作者提及的最 多,影响最大。而这个概括与摘要的区别就是,影响较大的句子,可能原来的作 者并没有想到,因此在摘要中并没有提及(正所谓无心插柳柳成荫);而摘要中提及的部分,影响可能反而没有那么大。图表3统计整个论文集合中所有的莹词出现的血数组成词空间V愉入一篇派论文m菽得其各种元信息以盘全文,并划分威不同的句子根据【图表门 中的第三歩,菽得对

41、源论文评论的所有句于集合对于涯论文的每一个句子“分别利用Score Cs)算法逬行打分,具惮过程如下:(1)统计在£中和匸中出现的所有单词,新城革词空间也对毎个单词w,需要统计下面8个烦据:单词在中的个数,站中单词总个数,单词在乞中个数,节中单词总个数 单词在D中的个数.D中单词总个数,单词在中个数,中单词总个数 利用上面名个數据就可求出毎个列的打井 将说中所有单词求和.即可得到轨o呵可義得原论文中每i个句干的分数之后,对这些句子进行从大到小排虑选取前k个得分最高的句干,摄终得到源论文的基于影响的槻括第5章搭建搜索引擎本段内容主要介绍如何利用 paradise搜索引擎平台来搭建我们的

42、论文检索 系统。通过这段内容,我们可以了解到 paradise使用的基本过程,最终我们会 发现,如果想搭建其他方向的搜索引擎,使用 paradise也是非常方便的。5.1 paradise 结构简介paradise 系统,全称是 Platform for Applying.Researching AndDevelopi ng In tellige nt Search Engine , 是网络实验室搜索引擎组耗时一年 多开发的一个国家863项目,其目的是建立一个搜索引擎平台,将搜索引擎的各 个部分模块化,使得这个搜索引擎不在针对专一的某一个领域,而是可以针对各个领域。其功能有点类似于lucene

43、系统,与其不同的是paradise是用C+编 写的。paradiese有以下几大的模块,见表格3表格3an alysisindexsearchfron t_evide nee(1)analysis是预处理模块,用于对网页进行去噪、消重以及编码转换等等处 理,如果是对网页构建搜索引擎,这一步骤就可以省略了。(2)index是索引模块,用于将需要检索的部分建立倒排索引。具体如何使用 5.2会提到(3) search是搜索模块,将index建成之后,就可以利用index数据开启搜索 服务,对于每一个词,去倒排索引里面查找包含它的文档中的id号(网页中为 url),从而完成检索。(4)front_ev

44、idenee是前台模块,完成一个类似于天网搜索引擎的前台界面。 除了现实结果之外,还进行摘要处理,一个文档的摘要。这个地方需要注意的就 是与index部分有一定的结合,会在后面提到。除了以上4个大的模块之外,paradise还提供了很多可供选择以及继承修改 的小模块例如,在search的语言模型这个部分,可以选择需要的模型,也可以自己 重写一些语言模型。压缩的时候,可以选择vint、pfordelta 等等各种压缩算法 paradise系统接口设计得非常好,当需要对上面任何一个模块进行修改时,不 需要修改源代码,只需要自己重写一些继承的类就可以了。5.2修改索引部分对于本次的文献检索部分,只需

45、要继承一个索引部分的类就可以了,具体代 码如下(这里只贴出最关键的两端代码,中间还省略了一些代码),其中黄色背景 的是需要我们修改的部分。void main()Analyzer * analyzer = newNaiveAnalyzer ();compressorFactory = new PForDeltaCompressorFactory ();IndexWriter * writer = new IndexWriter (fsdir,analyzer,compressorFactory);writer->setMergeThreshold(mergesize);PDFParser

46、parser;if (begi n != 0) while (begi n > 0) parser.hasNext();begi n-;int doc_id = 1;Timer t;while (parser.hasNext() shared_ptr<paradise:PDFC ontent>pContent=parser.getC onten t();addDocument(pContent, writer, doc_id);if (num >= 0 && doc_id >= num) break;在上面的这段代码中,可以看出,首先建立了一个分析

47、模块,然后选择压缩 方式为pfordata ,然后建立一个IndexWriter ,这个是建立索引的类。而我们需 要做的事情,就是:(1) 重写一个 Parser类,这里的名称为 PDFParser,这个parser需要有 hasNext,getContent这两个函数即可。(2) 重写一个Content类,里面存有所需要建立索引的document的内容,由 上面的getContent类返回。(3) 重写adddocument函数,如下,其中关键部分黄色背景标注int addDocument(shared_ptr<paradise:PDFContent> pContent,Inde

48、xWriter * pWriter, int & doc id) paradise :index : document:Docume ntdocume nt;shared_ptr<Field >field_c ontentField : TextStatistics("Content");shared_ptr<FieldData >field_co nten t_data( newFieldData (pContent->getContentToken();field_c onten t.get()->setFieldData(f

49、ield_c onten t_data); docume nt.addField(field_co nte nt, NONSTATIC);shared_ptr<Field > fieldD =Field : Keywords" Url ");shared_ptr<FieldData >field_ID_data( newFieldData (PDFFunction:Int2Str(pContent->getID();field_ID->setFieldData(field_ID_data);docume nt.addField(field

50、_ID, NONSTATIC);Jdocume nt.setDocld(doc_id);pWriter->addDocume nt(docume nt);doc_id+;上面的代码中,首先建立一个 Content域,内容为我们的文献全文形成的字 符串。然后建立了一个url域。其中,url域及其重要,是必须有的一个域,而 且必须名为Url。我们知道,所谓倒排索引,是指对一系列文本的内容简历索引, 通过这些内容,可以获得这些文本的ID号,就如网页搜索一样,我们通过那些 网页的内容,搜索到网页的 url。这里我们将文献的文本内容存在BerkeleyDB中的,因此需要获得每个文章的id号。Par

51、adise系统的设置是,在我们开启一个搜索服务时,一个请求发向服务器 端之后,服务器端会将搜索到得结果的url列表返回给前端,这个url列表必须 是来自上面的Url域。因为Paradise主要是针对网页搜索的,所以称这个域为 Url,实际上应该叫DocumentID更确切一点。5.3修改前台部分Paradise的前台部分也设计的很好,特别是摘要算法也已经完成,因此对于 前台部分,只需要修改一点,就是提供一个候选摘要的数据库。我们知道,不可 能对整篇文章进行摘要算法,那样会耗费大量的时间,最终会导致前段所耗费的 时间比后端检索所花费的时间还多,这显然是用户无法接受的。因此,前台部分唯一需要修改的

52、部分,就是给定一个ID号,获得它的摘要。这里,我们利用了 前面获得的metadata.dpt文件,里面存有一篇论文的摘要,获得摘要段落之后, 对其利用摘要算法,可以获取较好的效果。另外,我们这个系统不是简单的一个论文检索系统,检索只是方便使用的工 具,更重要的,它是一个知识提取系统,因此,还需要自己编写一些界面用来显 示知识,这些就不再赘述。5.4系统示意图5.4.1主界面斜 TIANWANGSearchC2008 About usFriend Link:Net 匸訪TianWan吕5.4.2搜索结果界面TIANWANGnetworksearchTiSearch ResultsTopic nr

53、iciTeliriq 術th ntwokjL导worJi structure (TMN). We propose a nw salution to this problem, which regularizes a statiistical topic model .nelwork analysis, which leverages the power of bath slatistict topic models and discreie regularization. The output./p d1?l nte rnati onal=World_Wide=We b=Con(er

54、. - mmrnmnlForcEhttps: potmctinq hiqhs$c.一.networks proJiferate, web browsers oprt in increasingly hostile netwarik environment. The HTTPS protocol has wurk attacker§! buL ireabworld deployrrients must cope with misconfigured servers, causing imperfect web site ./pdi?l nte rnati onal=WGfld_Wide

55、_We bConfer. -. - smmBMStatistical 日nElysis of the soc network emergiing from the user comment activily on th目 website Slashdot The netwarlk prssenls common features of works such as 目 giant 匚omponent, small average path length and high clustering, but differs from them showing /pdi?l nte rnatiional=World_Wide_We b_Con(er. - mirimEnlMininq diwet日(J social network .network from a message1 board on the Internet where vertices denote individuals and directed links ckncite: th a1 flow of influence. The influence is measured bsised on pirapagati ng terms amarig individuals via messages. Th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论