基于PARADISE平台论文检索系统.docx

上传人:b****6 文档编号:16799302 上传时间:2023-07-17 格式:DOCX 页数:30 大小:422.20KB
下载 相关 举报
基于PARADISE平台论文检索系统.docx_第1页
第1页 / 共30页
基于PARADISE平台论文检索系统.docx_第2页
第2页 / 共30页
基于PARADISE平台论文检索系统.docx_第3页
第3页 / 共30页
基于PARADISE平台论文检索系统.docx_第4页
第4页 / 共30页
基于PARADISE平台论文检索系统.docx_第5页
第5页 / 共30页
基于PARADISE平台论文检索系统.docx_第6页
第6页 / 共30页
基于PARADISE平台论文检索系统.docx_第7页
第7页 / 共30页
基于PARADISE平台论文检索系统.docx_第8页
第8页 / 共30页
基于PARADISE平台论文检索系统.docx_第9页
第9页 / 共30页
基于PARADISE平台论文检索系统.docx_第10页
第10页 / 共30页
基于PARADISE平台论文检索系统.docx_第11页
第11页 / 共30页
基于PARADISE平台论文检索系统.docx_第12页
第12页 / 共30页
基于PARADISE平台论文检索系统.docx_第13页
第13页 / 共30页
基于PARADISE平台论文检索系统.docx_第14页
第14页 / 共30页
基于PARADISE平台论文检索系统.docx_第15页
第15页 / 共30页
基于PARADISE平台论文检索系统.docx_第16页
第16页 / 共30页
基于PARADISE平台论文检索系统.docx_第17页
第17页 / 共30页
基于PARADISE平台论文检索系统.docx_第18页
第18页 / 共30页
基于PARADISE平台论文检索系统.docx_第19页
第19页 / 共30页
基于PARADISE平台论文检索系统.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于PARADISE平台论文检索系统.docx

《基于PARADISE平台论文检索系统.docx》由会员分享,可在线阅读,更多相关《基于PARADISE平台论文检索系统.docx(30页珍藏版)》请在冰点文库上搜索。

基于PARADISE平台论文检索系统.docx

基于PARADISE平台论文检索系统

本科生毕业论文

题目:

基于PARADISE平台论文检索系统

LiteratureSearchDesignbasedonPARADISE

姓名:

李峰

学号:

院系:

信息科学技术学院

专业:

计算机科学与技术系

指导教师:

闫宏飞副教授

二〇一八年十月二十三日

 

摘要:

本文基于天网实验室的PlatformforApplying,ResearchingAndDevelopingIntelligentSearchEngine(PARADISE)搜索引擎平台,通过以从portal.acm.org抓取的计算机网络方向的2500多篇论文为数据,搭建成一个论文搜索系统,最终目的是通过论文之间的引用关系,获得其他引用这篇论文的作者对这篇论文的评价,形成一个小的评价段落,以及Impact-basedSummaries,从而使得我们能够从专业级的角度获得这篇论文的内容以及优劣。

我们首先根据portal.acm.org上面抓取了文章之间的引用关系,然后通过一个算法获得了对一篇文章评价的候选句子集,根据这些句子的重要程度进行排序,获得一个评价短文。

并且构建了一个语言模型,通过这些候选句子集对原文的句子进行评分,取得分最高的几个句子,获得原文基于影响的概括。

关键词

搜索引擎,论文评价,语言模型,KL-divergence算法,基于影响的概括

 

Abstract

Inthispaper,basedonthePARADISE(PlatformforApplying,ResearchingandDevelopingIntelligentSearchEngine)andthedataof2500paperinareaofcomputernetwork,weconstructasearchengineofpapers.Ourgoalistogetthecommentandimpact-basedsummariesofonepaperbasedonthereferencerelationsbetweenthepapers.Wefirstlygetcandidatesentencewhichcommentonthepreviouspaperandgenerateacitationcontext.ThenweconstructaLanguageModel,throughthecitationcontext,wecanscorethesentenceinthepreviouspaper,andgettheimpact-basedsummaries.

 

Keywords

SearchEngine,PaperComment,LanguageModel,KL-divergenceScoring,Impact-basedSummaries

目录

第1章引言1

1.1研究背景1

1.2工作内容2

1.2.1抓取所需要的论文数据2

1.2.2获得一篇论文的评价并较好的显示出来2

1.2.3获得一篇论文基于影响的总结段落3

1.2.4基于PARADISE平台搭建搜索平台3

1.3实验的意义3

第2章数据的收集5

2.1如何提取数据5

2.2数据抓取的过程6

2.3数据的存储及解析7

第3章生成评论集10

3.1获得评价的候选句子集10

3.2获得评论段落11

第4章建立模型并生成基于影响的概括13

4.1建模之前我们所有的数据13

4.2建模算法13

4.3算法的实现14

4.4获得基于影响的概括15

第5章搭建搜索引擎16

5.1paradise结构简介16

5.2修改索引部分17

5.3修改前台部分18

5.4系统示意图19

5.4.1主界面19

5.4.2搜索结果界面20

5.4.3评论界面21

第6章实验结果与分析22

6.1实验结果22

6.2具体分析22

第7章后续工作26

第8章致谢27

第1章引言

1.1研究背景    

如今,全世界范围内学术活动日益积极,所产生的论文也在不断增多,因此,如何搜索到自己所需要的论文,以及自动获取一些关于论文的信息,是客观需要的。

学术检索,绝不简简单单的检索出所要查找的论文,这样就和普通的通用搜索引擎如google等一样了。

学术检索,更侧重于深层次的内容挖掘。

例如,可以通过一篇论文所引用的文章以及所属领域,寻找出这个文章所在领域的主要论文,这对了解一篇论文的背景知识以及理解一个领域的发展非常重要。

在[1](L.GwennVolkert)中提到了文献检索现在主要的发展方向,有以下几点:

1.提高检索的质量,这是从语言模型的角度,让人们更加准确的找到所需要的论文。

2.找到相关领域的最主要论文,以及一些较权威的作者,帮助读者了解相关知识。

3.从reference和citation角度,挖掘出一些知识,最常见的,就是通过一篇论文的被引用次数确定它的排名以及影响力。

我们知道,国外的PHD学生在第一年的学习之后都是要通过QE考试的,考试的形式一般是先读几十篇论文,然后根据这些论文的内容进行一些答辩。

这时候,他们往往很想知道别人是如何评价这篇论文的,这篇论文有什么优点和缺点,有什么后续的研究等等。

这就像我们准备去一个地方去旅游,不仅需要该景点本身的介绍(有点类似于摘要),往往更想知道去过这个地方的人都是如何评价这些地方的。

通过对这篇论文的评价,我们可以从更专业并且更加广阔的角度获得这篇论文的一些信息,并且可以知道这篇论文之后可以做哪些事情。

基于上面的观点,我们就准备做出这样一个知识提取系统,通过这个系统,可以自动获得别人对这篇论文的评价[2],以及论文中的一些较有影响力的信息,从而帮助人们更好的理解这篇论文。

整体流程如[图表1]。

在[3](QiaozhuMei,ChengXiangZhai)中,作者利用KL-divergence算法建立了一个模型,生成了一篇论文基于影响的概括,但是它并没有强调评论的重要性(这里的评论,是指别的作者对它引用的一篇文章的评论),它只讲评论当成一个中间状态,当成一个求得基于影响的概括的手段。

实际上,这些评论和最终经过KL算法形成的概括是同等重要的,有时候,它甚至比后者更加清晰易懂。

本文相对于[3]3的优点是,赋予评论以及概括同等重要的意义,并且形成了一个实际的系统供人使用,而不仅仅是用于研究。

图表1

1.2工作内容

1.2.1抓取所需要的论文数据

要进行论文搜索,首先需要一批实验数据,我是从portal.acm.org上抓取下来的。

之所以选择从这上面抓取,是因为我们不仅需要论文的pdf文档,还需要从中自动提取摘要、引用等信息,而这本身就应该是一个挺复杂的算法了,而且不是我们工作的目的,而上述网站已经人工的将论文的摘要、引用信息提取了出来,并且对于每一个引用还有相应的链接,因此会节省我们抓取数据所要花费的工作量。

最终我们会将抓取的数据存储在BerkeleyDB中。

1.2.2获得一篇论文的评价并较好的显示出来

 我们这个系统的主要工作是通过别的论文对原论文的评论,来获得一些不能直接从原论文中获得的信息,因此,最基础的,就是如何获得这些评论。

关于这一点,我们通过上面的数据收集工作,会获得一个论文之间的引用图,然后通过引用的倒置,能够获得引用一篇论文的所有文章,然后,通过一个算法,可以从这些文章中提取出对原文进行评价的句子。

最终,为了便于使用者观看,还需要对这些句子进行一些整理,进行排序、整理成一个段落出来。

1.2.3获得一篇论文基于影响的总结段落

  在获得对原文进行评论的句子之后,将原文划分成一个一个的句子,我们利用了KL-divergence算法([3]3),对这些句子进行打分,这里分数的高低,代表了原文中每一个句子影响程度的高低,显然,影响越大的句子,在别的文章中提及的越多,其分数就越高。

最后,我们取一定数量得分最高的句子,组成一个段落,这个段落是对原文的一个概括,而且会获摘要所不能获得一些信息的一些信息。

1.2.4基于PARADISE平台搭建搜索平台

我们基于PARADISE搜索引擎平台搭建成了一个关于pdf的全文搜索系统。

PARADISE由预处理,简历索引,检索,前台四部分组成。

由于我们的数据是论文,并且已经转化为了txt文本格式,预处理这一部就略去了,需要继承一个建立索引的类,并且修改一些前台的接口就可以了,这样就搭建成了一个论文搜索系统。

这一过程也体现出了paradise的可扩展性以及易用性,paradise中的每一个组件都是可以通过继承一个自定义的新类来完成的,其中包括预处理、索引、检索、语言模型、排序、压缩等等所有的模块都可以自己选择或者自己重新定义来完成。

1.3实验的意义

我们在读一篇论文之前,一般能简单的看到它的摘要、作者等信息。

而在读完一篇论文之后,我们能获得什么信息呢?

主要有以下几种:

(1)这篇文章做了什么事情,这可以从摘要中获得。

(2)这篇文章中涉及到的核心算法,这个只有在细致的读完了这篇文章之后才能理解,应该是没法依靠辅助来获得的。

(3)这篇文章哪些部分比较重要,哪些部分比较好,哪些部分需要改正,我们可以从哪些方向进行扩展。

  对于第三点,如果完全自己理解,可能会比较困难,而且对读者自己的要求也比较高,可能要读了很多这方面的背景知识、后续论文等等才可能获得,而通过我们做的这个系统,就可以帮助大家更简单的获得一些从文章中不能直接获得信息。

  一般来说,作者如果想从自己的角度归纳本文的大体内容,通过阅读摘要,我们可以看到作者写这篇文章大体做了什么。

但是文章中很有可能有一些作者没有发现,或者作者当前没有重视但是以后被别人发掘出来很重要的意义。

通过将那些对文章进行引用的句子,与本文建模,对原文中的句子进行排序,从而获得文章中一些有特殊意义,影响较大的句子,这样,我们可以获得文章中最重要的信息,而这些重要信息和摘要的区别就是,它们不是作者提出来的,而是别的作者在读了这篇文章以及其他的文章,经过很多思考之后,总结出来的这篇文章最重要的地方。

  此外,别的文章中对原文进行评论的句子([4]),本身就是很重要的信息,可以让我们知道原文都做了那些后续工作,或者那些部分比较好,哪些部分需要改正。

  简单来说,我们这个系统的意义,就是通过数据挖掘的方法,获得一些直接从原论文很难发现的信息,并且结合paradise系统,以搜索引擎的方式呈现出来,便于大家检索查找。

 

第2章数据的收集

  我们这个系统的目的是为了方便读者理解论文,因此除了需要基本的论文的pdf格式,还需要提取发表期刊、作者、摘要、被应用次数,引用文章这些信息。

其中,发表期刊、作者以及被引用次数是用来在后面获得comment以及impact-basedsummary进行排序的时候加权用的,显而易见,较好的期刊,较有名的作者,引用次数较高的文章,它做出的评价应该要重要一些(当然,这里只是预留着为以后的扩展用,而我们的系统实际上并没有用到作者的知名度信息)。

当然,其中最重要的是提取引用的信息。

我们的目标是通过获得每篇文章所引用过的文章,建立一个映射表,然后将映射表倒置过来,从而获得每篇文章被哪些文章引用过。

2.1如何提取数据

  首先,是如何提取文章的摘要等各种信息了。

本来我是准备直接从文章中提取的,随着工作的深入,发现这样做有很多的缺点,首先,从paper中提取各种信息就是一个很繁重的工作,这本身就可以当做一个毕业设计来做了,会消耗我大量的时间,但却不一定能够达到工作的目的;其次,最重要的是,在每一篇文章里,reference是以(作者,文章名,发表期刊,年份)的形式表现出来的,例如:

G.Luecke,H.Chen,J.Coyle,J.Hoekstra,M.Kraeva,andY.Zou.MPI-CHECK:

AtoolforcheckingFortran90MPIprograms.ConcurrencyandComputation:

PracticeandExperience,15:

93–100,2003.

 而我们存储每篇文章的时候,是以期刊作为文件夹,以文章作文文件名来存储的,例如这篇论文,以下面的形式存储的。

pdf/Concurrency_and_Computation:

Practice_and_Experience/MPI-CHECK:

_A_tool_for_checking_Fortran90_MPI_programs.

 因此,我们需要从上面的那句话中提取会议名以及文章名,才能获得文章之间的引用关系,建立一个FromTo表,这之中甚至是相差一个空格都不行的,会直接导致整个系统的失败。

  于是,我们想出了一个简单的办法。

可以看到,在portal.acm.org上,每一篇论文的格式都是规整的,从上面可以很容易的提取出摘要、文章名、期刊等信息,可以下载到pdf版的文件;更重要的是,对于论文的引用信息,在该网页上该出了一个超链接,点击之后就可以进入引用的文章的信息。

因此,可以利用递归的方法,进入引用的文章,从中提取出会议名以及文章名,这样,每篇文章的引用就可以形成上面的格式,并且是完全正确的,方便我们建立引用映射表。

  接着,要设定递归的种子以及递归的层数。

因为我们的实验所需要的数据最好是在一个领域里面的一个方向的论文,并且需要引用关系较紧密的,以便于后续的工作,因此,这里采用www会议的文章作为种子,对于每一篇文章递归三层。

如果递归四层,就会太多了。

假设一篇文章又十个引用,那么递归四层,就会导致没从www会议中抓取一篇文章,就需要抓取1000篇相应的其他文章,这个数量实在是太大了;如果递归两层,就会导致每篇文章只能抓取其引用的文章,这样引用的层次较浅,很有可能导致最后引用倒置时,每一篇文章只被一两篇文章引用,这样不利于我们的实验。

最后,我们需要将pdf转化为txt格式,这是利用linux自带的pdf2txt工具来实现的,但是这个工具并不支持对文件夹的递归操作,因此,我用python写了一个脚本,通过递归操作,可以将一个sourceDir里面的所有pdf文件递归转化为txt文件,并按照原来的相对路径存在destDir里面。

2.2数据抓取的过程

  已经确定抓取数据的大体方法了,下面就要开始正式的抓取数据了。

所用的工具比较简单,就是利用linux下的wget工具,将网页下载到文本文件里进行分析。

另外我们这里利用了第三方库boost:

:

regex,这种正则表达式非常适合从网页中进行模式匹配并且提取出数据。

有了前面的两项工具,我们只需要分析好网页的模式,尽量正确的提取数据既可以了,需要注意的是,由于网页并不是完全规整的,因此,有时候,对于同一个数据,往往要写多种匹配的公式才可以,这其中,最麻烦的当属提取引用部分了(我们不仅要提取引用,还要提取这个引用对应得url,从而递归进入提取它的论文名)。

以提取作者信息为例:

id=81100472691&coll=portal&dl=ACM&trk=0&CFID=23904299&CFTOKEN=88670161"target="_self">YongYu

我们需要从上面得公式中提取出作者名,需要以下几步:

(1)利用boostregex公式写一个正则表达式匹配上面的文本

boost:

:

regexePaperAuthors(

"\\s*

author[^\"]*\"target=\"_self\">([^<>]*?

)\\s*"

boost:

:

regex:

:

normal|boost:

:

regbase:

:

icase);

其中引号中的内容为匹配的正则表达式,注意其中的一对小括号,其中的内容就是我们需要提取的信息

(2)利用split函数,将结果存入list里面

listauthors;

boost:

:

regex_split(std:

:

back_inserter(authors),content,ePaperAuthors);

这样,文章中所有匹配上面正则表达式的字符串,其中的作者信息(即上面括号中的内容),都会存在authors这个容器里面

  还需要注意的一点就是,由于网页的不规整性,所以要排除一些错误的情况。

还有一些文章,确实没有摘要、引用或者其他信息(这些文章多出现在引用链的顶层,主要是一些书籍等参考资料,所以也比较正常),遇到这些情况我们就不抓取下来了。

2.3数据的存储及解析

  在将数据从网页下载下来之后,需要存储起来。

首先,对于pdf的格式,只能存在文件系统里,按正常的方式存储。

对于其他的信息,这里选择存储在berkeleyDB里面。

berkeleyDB是一种轻量级的数据库,Mysql等数据库底层就是利用berkeleyDB来完成的。

它的有点是可移动性,不用想Mysql那样搭建服务器,而且读取数据时较快。

对于每一篇文章的基本信息metadata,按照【表格1】中的形式存入berkeleyDB中:

表格1

Key

int64_t的一个整数

Value

字符流,存储元数据信息,按如下格式:

**************************************************name

**************************************************source

**************************************************abstract

**************************************************citationCount

**************************************************authors

**************************************************references

**************************************************referenceName

**************************************************url

获得这些基本信息之后,我们还要根据这些元信息,陆续建立一些berkeleyDB文件,用于存储其他信息,如[表格2]:

表格2

文件名

Key

Value

content.dpt

int64_t的整数,论文ID

这篇论文的全部文本内容

fromto.dpt

int64_t的整数,论文ID

用于存储一篇论文所引用的所有文章

tofrom.dpt

int64_t的整数,论文ID

用于存储一篇论文被哪些文章所引用

comment.dpt

int64_t的整数,论文ID

存储最终要显示在页面上的文章的评价

summary.dpt

int64_t的整数,论文ID

存储最终要显示在页面上的基于影响的文章的概括

其中content.dpt是通过将pdf格式转化为txt之后获得的。

fromto.dpt是对整个论文的引用关系图进行解析获得的,从上面的元数据中,我们可以获得每个论文所引用的论文的名称,这样,我们可以通过这些名称,来获得这个论文所引用的所有论文的ID号,并且存储到数据库中。

获得fromto.dpt之后,对其进行倒置,就可以获得tofrom.dpt的内容

这里之所以选择BerkeleyDB进行存储,是因为它有以下这些优点:

Ø嵌入式(Embedded):

它直接链接到应用程序中,与应用程序运行于同样的地址空间中,因此,无论是在网络上不同计算机之间还是在同一台计算机的不同进程之间,数据库操作并不要求进程间通讯。

ØBerkeleyDB为多种编程语言提供了API接口,其中包括C、C++、Java、Perl、Tcl、Python和PHP,所有的数据库操作都在程序库内部发生。

对于我们这个系统,后台程序是由c++完成,而前台程序是由python完成,他们都会共同访问一些文件,通过存储在BerkeleyDB进行存储,就解决了不同语言之间兼容的问题。

Ø轻便灵活(Portable):

它可以运行于几乎所有的UNIX和Linux系统及其变种系统、Windows操作系统以及多种嵌入式实时操作系统之下。

它并不需要搭建一个数据库服务器,以用户、服务器形式访问数据库,而是以函数调用的形式。

一旦BerkeleyDB被链接到应用程序中,终端用户一般根本感觉不到有一个数据库系统存在。

这样提高了我们的系统的实用性,当用户需要自己搭建一个我们的论文系统时,不用再去搭建数据库服务器,进行各种繁琐的配置。

第3章生成评论集

通过上面的内容之后,我们获得了所有基本的信息,其中,最重要的,获得了tofrom表,该表的key是一篇论文A的ID,value是引用A的所有论文ID的集合。

下面我们就要结合前面获得的数据,包括论文的文本、元数据,来获得一篇论文的评论集。

3.1获得评价的候选句子集

  通过tofrom表,我们可以获得一个集合{B1,B2,B3...},其中Bi对A进行了引用。

我们相信,如果Bi对A进行了引用,那么Bi中可能会有一些句子对A进行了评价。

一般有以下几种情况:

(1)Bi中的句子出现了A的论文名

(2)Bi中的句子出现了A的作者名

(3)在Bi的reference列表中,如果A出现在第k个位置,那么通常在文章中会利用"[k]"来对A进行引用。

(4).对于(3)的情况,有时候并不只是对k进行引用,可能文章中的一句话代表的是好几篇文章的工作概括,因此会出现“[i,k,j]”这种类型的符号来对A进行引用,而且出现的概率很高。

(5)(如果Bi中的某句话对A进行了评论,那么通常它的前一句话和后一句话也会出现评价的信息

通过上面的5点,我们就可以获得了Bi中对A进行评价的句子,从而获得了一个候选句子集,里面的每一句话都不同程度的对A进行了评价。

图表2

 如[图表2]所示流程,具体实现的时候,先要将Bi按句子进行划分为一个句子序列{Bis1,Bis2,Bis3.....},然后遍历这个句子序列,对于每一个句子,按照上面的前四条规则进行评判,如果满足其中任意一条,则这个句子是候选句子集合中的一个,并将其前后两个句子也合到一起,添加的候选句子集合中。

   最终,得到对A进行评论的候选句子集{e1,e2,e3...},这里面可能会有一些评价来自同一篇论文。

3.2获得评论段落

  获得了候选句子集之后,我们需要对其进行适当的排序,从中选出较好的几个句子,最终显示在页面上。

由于不同的人,对这篇论文的评价可能也不太一样,因此,就不能简单的按照这些评价句子与原文的相似度来进行打分排序了,因为这样会造成和原文观点相近的评分较高,不是我们希望获得的结果。

实际上,有时候越是和原文的观点不同,反而可能越重要,它可能是对这篇文章的批判,也有可能是原文的作者并在

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2