首页> 中国专利> 一种基于通用百科网站的领域百科构建系统

一种基于通用百科网站的领域百科构建系统

摘要

本发明属于开放知识抽取技术领域,具体为一种基于通用百科网站的领域百科构建系统。该系统分为以下几个模块:百科数据爬取模块,百科数据预处理模块,相关实体搜索及排序模块和实体聚类模块。本发明的有益效果在于:领域百科的构建目前大多为手工构建,费时费力,且人工不可能发现所有相关实体,因此覆盖率低;而以本发明找出的领域相关实体为基础建立领域百科,能极大地减少领域百科的构建的人力,并大幅提升覆盖率。同时,利用本发明系统所构建出的领域百科,将极大地方便用户获取特定领域的知识,省去了繁琐地搜索及筛选过程,把“用户被动地搜索信息”变成了“系统主动地提供信息”。

著录项

  • 公开/公告号CN104408148A

    专利类型发明专利

  • 公开/公告日2015-03-11

    原文格式PDF

  • 申请/专利权人 复旦大学;

    申请/专利号CN201410723613.8

  • 发明设计人 覃华峥;肖仰华;汪卫;

    申请日2014-12-03

  • 分类号G06F17/30(20060101);G06K9/62(20060101);

  • 代理机构31200 上海正旦专利代理有限公司;

  • 代理人陆飞;王洁平

  • 地址 200433 上海市杨浦区邯郸路220号

  • 入库时间 2023-12-17 04:27:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-01

    授权

    授权

  • 2015-08-19

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20141203

    实质审查的生效

  • 2015-03-11

    公开

    公开

说明书

技术领域

本发明涉及一种基于通用百科网站的领域百科构建系统,属于开放知识抽取技术领域。

背景技术

如今,很多在线百科类网站,如百度百科、Wikipedia等近年来不断出现,它们极大地方便 了用户获得信息。用户可以在上面通过内置的搜索引擎搜索所需要的信息。通常来说,当一个 用户查询一个实体时,他常常对与该实体相关的实体感兴趣,或者搜索的目的就直接是与一个 实体相关的所有实体,例如希望搜索到和复旦大学相关的所有人物。而现在的百科类网站中, 并不能实现这一目的,例如搜索和复旦大学相关的所有人物,只能在复旦大学对应的网页中, 自己查找其中出现的人物,并自己判断是否是与复旦大学相关,并浏览,或者直接查找含有“复 旦大学”标签的实体,并筛选出其中是人物的实体。这些方法都不能快速且完整地找出所需实 体,因此迫切需要一个领域百科来供查询一个领域下的所有实体,即与领域实体相关的所有实 体。

当前存在一些人工构建的领域百科,不仅费时费力,而且数据正在呈爆炸式的增长,人工 构建的速度将无法追赶上数据增长的速度,因为急需一种机器自动构建的方法。

发明内容

本发明针对现在有百科数据知识零散,而人工构建领域百科代价过高,不能 大量构建的缺点,提出了一种基于通用百科网站的领域百科构建系统。。利用本发明的系统进 行领域百科网站构建时,其首先利用分布式网络爬虫将互联网上的开放百科网站数据爬取到本 地,然后对所爬取的数据进行预处理,使数据能够更好地被利用,之后再针对特定领域,搜索 与之相关的实体词条,并进行相关度排序、聚类。

本发明提供的一种基于通用百科网站的领域百科构建系统,由四大模块组成:百科数据爬 取模块、百科数据预处理模块、相关实体搜索及排序模块、实体聚类模块;其中:

百科数据爬取模块,利用分布式网络爬虫将海量在线百科数据爬取到本地;

百科数据预处理模块,对网络爬虫所爬取到的页面预处理;所述预处理依次包括去噪、文 字区域提取、分词及词频处理统计和构建索引这几个步骤;

相关实体搜索及排序模块,在预处理后的页面中搜索和一个领域相关的实体并按相关度排 序;

实体聚类模块,根据相关实体搜索及排序模块结果,聚类同一个领域下的相似实体。

本发明的技术方案具体介绍如下。

一、百科数据爬取模块

1.1利用分布式网络爬虫爬取在线百科数据

网络爬虫,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。利用网络爬 虫,可以自动爬取指定网站的数据。由于本发明需要用到海量地在线百科数据以构建出高质量 的领域百科,因此利用分布式地爬虫来高效地爬取海量的在线百科数据。

二、百科数据预处理模块

2.1去噪子模块

利用网络爬虫所爬取到的页面,往往是页面的源文件,里面有很多的噪声,如各种html 标签,标点符号,乱码等。这些噪声将严重地影响数据的有效利用,因此需要将数据中的噪声 去除,用预先定义好的一些正则表达式匹配噪声数据,并将它们删除。经过去噪处理的数据, 质量比没有经过去噪处理的数据有显著的提高。

2.2文字区域提取子模块

本发明充分利用百科页面中各个文字区域的特点,将文字按区域提取。所谓文字区域是指 一个百科页面中的标题、摘要、属性框(infobox)、正文和分类信息等。这些文字区域各有其 特点,不能一概而论,要区别对待,例如对一个领域实体“复旦大学”,那些实体页面的标题 中包含“复旦大学”的实体将与“复旦大学”密切相关,如“复旦大学计算机科学技术学院”。 又例如,如果一个实体的摘要中包含了“复旦大学”,那么该实体将比那些仅在正文中包含“复 旦大学”的实体与“复旦大学”的关系更为紧密。因此,不同的文字区域的重要性是不一样的, 这正是符合用户写实体词条页面的习惯,例如通常来说会把重要的信息写在摘要中,如果现代 战争实体词条页面的摘要中出现了领域实体,则该实体与领域实体很有可能是密切相关的。为 了充分利用不通文字区域的重要性不同,本发明在数据预处理后,对每个实体词条页面按标题、 摘要、infobox、正文、分类信息这些区域提取出其中的文本数据。

每一个实体词条页面对应着百科数据中的一个词条,对每一个实体词条页面进行实体提 取,以获取百科数据中的所有实体集合,构成一个词典,为后面利用实体进行分词做好准备, 同时也为后面通过实体名称或者其id找到其对应的页面文件提供了便利。在一个实体词条页 面中,一般来说标题就是该实体的名字或者包含该实体的名字,例如在百度百科中,实体词条 页面的标题是如下的形式<title>实体名称_百度百科</title>,如<title>复旦大学_百度百科 </title>。由于在同一个百科数据集中,每一个实体词条的标题都符合同一格式,因此可以用正 则表达式提取出实体名称,对一个百科数据集中所有页面都提取出实体名称,这就构建出了一 个百科实体集合,也即是要用来分词的词典。

实体的分类信息是指描述一个实体属于哪个类别的信息,例如对于实体“复旦大学”,其 在百度百科中的分类信息是教育、学校、上海、大学、机构等,分集信息对实体聚类有着重要 作用,因为它描述实体的类别,有利于聚类算法将相似类别的实体聚到一类中,因此分类信息 的提取也是至关重要一步。与实体名称类似,实体的分类信息在实体词条页面中的格式也是比 较固定的,例如在百度百科中,实体的分类信息是如下的形式:<a href="/fenlei/%E6%95%99%E8%82%B2"target="_blank"class="open-tag nslog:7336">教育 </a>,用正则表达式可以方便地提取出每个实体所对应的分类信息。

2.3分词及词频统计子模块

由于实体词条页面中的文本都是纯文本,因此要对其进行分词,分解出其中所包含的实体。 目前主要有两种比较常用的处理方法,一种是直接在实体词条页面中提取被链接的实体,例如 在“复旦大学”这个实体词条页面中,“211工程”是一个被链接的实体(即点击“211工程” 时,会跳转到“211工程”所对应的实体词条页面),“211工程”即被当作“复旦大学”这个 实体词条页面中所包含的实体提取出来。还有一种方法是用分词工具对实体词条页面中的文本 进行分词,这时分词的结果就取决于所采用的分词工具。第一种方法完全依赖于用户在编写词 条的时候给实体添加的超链接,而用户不可能对一个页面中所有的实体都添加超链接,所以采 用第一种方法对实体词条页面进行分词会造成很多遗漏。而第二种方法由于分词工具独立于百 科数据集,因此分词工具不能很好地判断分词的位置,以至于会把那些比较长的实体分割,例 如对于“复旦大学计算机学院”这个实体,分词工具很可能会将其分割成“复旦大学、计算机、 学院”三个实体,从而不能发现名称较长的实体。

本发明所采用的分词方法避免了以上两个问题,本发明以从百科数据集中抽取出的实体名 称作为词库,对实体词条页面上出现的所有实体进行识别,保证了不遗漏实体。同时,采用逆 向最大匹配的方法进行分词,例如对于“复旦大学计算机学院”这个实体,由于“复旦大学计算 机学院”是一个百科中的实体,因此存在于词库中,虽然“复旦大学、计算机、学院”分别也 是实体,同样也在词库中,但是由于匹配字数不及“复旦大学计算机学院”,因此不会把它分 割成为“复旦大学、计算机、学院”,大大提高了实体词条页面的分词准确性。

在计算实体相关性的算法中,要用到一个实体在一个实体词条页面中所出现的次数,为了 高效地利用这些信息,先要预先对每个页面统计词频。前面提到,一个页面是由若干个区域组 成的,如标题、摘要、属性框(infobox)等,这些不同的区域的权重是不一样的,因此在对 一个实体词条页面统计词频时,也是各种区域分别统计。

2.4索引构建子模块

本系统中要多次查询某个实体在哪些页面中出现及页面中出现次数等等,为了有效地支持 这些类似的查询,本系统中采用lucene开源搜索引擎来对分词后的整个百科数据集建立索引, 索引单位为每个文档的每个词,该索引可以实现快速查询一个实体在多少文档中出现、在哪些 文档中出现、多个实体的共现次数等等功能。

三、相关实体搜索排序模块

3.1候选实体搜索子模块

为了找到和一个领域实体相关的其他实体,首先找到页面中包含领域实体或者领域实体的 同义实体的页面,例如对于领域实体“复旦大学”,则与它相关的候选实体为实体页面中包含 “复旦大学”或者“复旦”的页面,将这些页面对应的实体称作候选实体,本发明中将不包含 领域实体的页面对应的实体看作是和领域实体不相关的实体。

3.2相关性度量子模块

本模块用一个相关性度量函数衡量一个实体与查询实体的相关性,相关的实体对之间有些 某些特征可以表明它们是有关系的,本发明中采用了下列特征:

其中SIM_abstract,SIM_infobox,SIM_maintext的计算方法为分别计算查询实体与候选 实体对应区域(即摘要,属性框,正文)中的实体词频向量,然后用余弦相似度计算两个向量 的相似度来得到对应区域的相似度,例如即设ve,vqe分别代表候选实体与查询实体的摘要区域 的实体词频向量,则两区域的相似度计算如下:

SIM_abstract=ve·vqe|ve||vqe|

SIM_infobox,SIM_maintext 的计算方法同上。

其中CatSIM_abstract,CatSIM_infobox,CatSIM_maintext,CatSIM_entity的计算方法为分别 计算查询实体与候选实体对应区域(即摘要,属性框,正文)的实体的类别集合,然后求两个 集合的Jaccard系数相确定两个区域的相似性,即例如设Sqe_cat,Se_cat分别代表查询实体qe和候 选实体e的摘要区域的实体集合,则两区域的相似度计算如下:

CatSIM_abstract=|SeSqe||SeSqe|

CatSIM_infobox,CatSIM_maintext的相似度计算方法同上。

其中Normalized Google Distance(NGD)的计算方法为:

NGD(e,qe)=max{logf(e),logf(qe)}-logf(e,qe)logM-min{logf(e),logf(qe)}

f(e)为候选实体e在整个百科文档集中现的次数,f(qe)为查询实体e在整个百科文档集中现的 次数,f(e,qe)为候选实体e和查询实体qe在整个百科文档集中共同出现的次数。

为每个候选实体计算上述表格上所列特征值,然后用下面的函数将这些特征值整合,得到 候选实体与查询实体的相关性:

relj(i)=11+e-Σuλufju

其中i表示查询实体i,j表示候选实体j,fju表示候选实体j的第u个特征,λu是第u个特征的权 值,也即相关性度量函数的参数,参数的确定方法为下一节中所述方法。

3.3参数训练子模块

为了确定相关性度量函数中的参数,本发明中采用了基于列表级别学习排序(Listwise  Learning to Rank)的方法来训练参数。首先构造训练集,本发明中利用互联网在线搜索引擎帮 助构造训练集,对于用来构造训练的一个领域实体,首先在百科文档集中获取页面中包含该领 域实体的那些实体,将领域实体、各个页面中包含该领域实体的那些实体分别输入到搜索引擎, 看返回的结果数,以及将领域实体和各个页面中包含该领域实体的那些实体分别同时输入搜索 引擎,看返回的结果数,然后用PMI计算相关性,其中PMI的定义如下:

PMI(x,y)=logp(x,y)p(x)p(y)

其中p(x)是搜索引擎返回的实体x的搜索结果数,p(y)是搜索引擎返回的实体y的搜索结果数, p(x,y)是搜索引擎返回的同时搜索实体x和实体y时返回的搜索结果数。

本发明中用基于学习排序(Learning to Ranking)的方法来训练实体排序模型,训练中需要 衡量模型排列结果和训练集中的排序结果的误差,本发明中定义两个相关性得分排序列表的损 失函数为:

L(rel(i),TR(i))=ΣjTRj(i)logTRj(i)relj(i)

其中rel(i)是模型计算出来的关于领域实体i的领域实体相关度排序列表,是模型计算 出来的关于领域实体i的领域实体中的实体j的相关度得分。TR(i)是训练集中关于领域实体i的 领域实体相关度排序列表,TR(t)是训练集中关于领域实体i的领域实体中的实体j的相关度得 分;

对于训练集,本发明中定义总的损失函数为:

LF(θ)=ΣiL(rel(i),TR(i))+Σiλi2

其中θ={λi},Σiλi2是正则化项,防止过拟合,λi是相关性度量函数中特征i的权重。训 练的目标是寻找一组最优的参数λi,使得LF(θ)最小,本发明中用梯度下降求解最优参数,求 解过程如下:

λk=λk-η·LF(θ)λk

其中:

LF(θ)λk=ΣiΣjTRj(i)·relj(i)TRj(i)·relj(i)λk=ΣiΣjrelj(i)TRj(i)·fk·e-Σuλufu(1+e-Σuλufu)2

η是学习率。

3.4实体相关度排序子模块

该模块根据参数训练子模块训练出的实体相关性度量函数的参数,确定实体相关性度量函 数,进而计算出候选实体与查询实体的相关性,并按相关性从大到小排序,得到一个排序列表。

四、实体聚类模块

4.1相似性度量子模块

要对实体进行聚类,首先要定义实体之间相似性的度量,由于实体的分类信息很好地刻画 了一个实体所属的类别,因此本发明中借助实体本身的分类信息来量度实体之间的相似性,但 仅仅根据分类信息,难免有些不足,例如有些实体的分类信息比较少,不能很好地刻画其所属 的类别,本发明又利用IsA关系抽取来抽取一个实体的分类信息,对实体本身的分类信息来做 进一步的扩充。

一个实体通常会有分类信息,例如在百度百科中,对于实体“复旦大学”,有以下的分类 信息:

教育,学校,上海,大学,机构,2012年中国大学50强,211工程,985工程,上海高等 院校。

可以看到,实体的分类信息可以在某种程度上刻画该实体“是什么”,因此可以用来做相 似性的度量。本发明还利用IsA关系抽取来抽取一个实体的分类信息,即在一个实体词条页面 中抽取形如“A是B”的句子,其中A是该实体,B则是抽取出的分类信息,例如在百度百科 的“复旦大学”页面中,有以下的IsA形式的句子:

复旦大学是教育部与上海市共建的首批全国重点大学。

即可以抽取出“复旦大学”的一个分类“全国重点大学”,而该分类在“复旦大学”本身 的分类信息中并不存在,把该分类添加到实体本身的分类信息中,即对实体本身的分类信息进 行了一个扩充。

得到了扩充之后的实体分类信息,下面对实体间的相似性进行度量,设两实体的扩充后的 分类标签向量为别分为和向量每一维的值为1或者0,分别代表一个类别是否 出现。两个实体的相似度定义如下:

Sim(e1,e2)=vCate1·vCate2|vCate1||vCate2|

4.2实体相似性约束构建子模块

有了实体间相似性度量之后,下面对按相关度排序好的实体进行聚类。本发明中的聚类采 用基于半监督学习的聚类,即先给出部分约束信息,指定什么样的实体是应该在一个类里的(称 为must-link),以及什么样的实体是不应该在一个类的(称为cannot-links)。例如给定分类为 “全国重点大学”的实体和“985工程大学”的实体应该在一个类,因此它们描述的都是大 学。又例如给定分类为“全国重点大学”的实体和“人物”的实体不应该在一个类,因一个对 应的是大学,一个对应的是人物,二者类型完全不相似。

对于must-link中的实体,如果A与B是must-link,如果C与C是must-link,那么A与 C也是must-link的,对must-link矩阵计算传递闭包可以计算出上述关系。

另一方面,对上述传递闭包中的两个连通分量,如果一个连通分量中的任意一个实体和另 一个连通分量中的任意一个是cannot-links关系,那么这两个连通分量中的任意两个实体都是 cannot-links关系。

4.3半监督聚类子模块

这样一来,所期望的聚类结果就是尽可能少得违背约束的结果,下面定义把一个实体ei聚 到类Ck中所产生的代价:

E(ei,Ck)=D(ei,Ck)+Σ(ei,ej)MSim(ei,ej)·fM(ei,ej)+Σ(ei,ej)C[1-Sim(ei,ej)]·fC(ei,ej)

其中D(ei,Ck)实体ei与类Ck中所有成员的平均距离,它衡量了实体ei和类Ck的接近程度, 它的定义如下:

D(ei,Ck)=1NCkΣejCk[1-Sim(ei,ej)]

M是must-link的约束对集合,C是cannot-link的约束对集合,fM和fC分别是两个指示函 数,依据约束来指示两个实体是否违反了must-link或者cannot-link约束,它们的定义如下:

考虑到本发明中是先得到实体相关度排序列表,然后再进行聚类,而一般来说,排名靠前 的实体,其质量、影响力、重要性等都较高,本发明在聚类时,采取按排名从高到低的顺序依 次将实体聚类,而不是通常的不考虑次序的做法。这样可以使质量高的实体先加入类中,使聚 类的初始阶段各类中有高质量的实体,以引导聚类算法得到好的结果。本算法按实体相关度排 序列表中从高到低的顺序将实体聚类,每聚类一个实体ei时,将它聚到类Ck中,使得E(ei,Ck)比 将实体ei聚到别的类要小,即:

Ck=aug>minCiE(ei,Ci)

然后重复以上步骤一定的次数,得到聚类结果。

本发明的有益效果在于:

1、大幅提升获取知识的效率

在传统的百科系统中,用户很难获取关于某一领域下的所有知识。例如,用户想查看与复 旦大学相关的所有词条,这在传统的百科系统中非常困难,因为当在复旦大学的词条页面中, 并没有明确列出其它哪些词条与之相关,虽然说页面中也有些带链接词条,可以直接链接到该 词条对应的页面,这些词条具有某种程度上的相关性,但像这样带有链接的词条毕竟十分有限, 用户若想知道其他还有哪些相关词条几乎不可能。本系统的发明在极大程度上解决了这个问 题,本系统可以自动找到和一个实体相关的其他实体,使相关的知识都聚集在一起,当用户查 看一个实体词条时,可以很轻易地再查看与之相关的其他实体词条,免去了用户繁琐的枚举、 查询过程,更重要的是能发现一些人工很难发现的潜在关联,毕竟百科数据动辄几百万条数据, 有大量潜在的关联不可能靠人工去发现。

2、拥有一张互联网名片

利用本系统所构建出的领域百科,可以作为一张互联网名片。例如为一个大学构建该学校 的领域百科,那么就是把与该大学相关的所有实体找到并聚集起来分好类,可以把这个领域百 科放到互联网上,当有用户想查询与该大学相关的信息时,这个领域百科就可以利用实体词条 之间的关联性,充分地向用户介绍这个大学,相比用户自己去搜索,要全面得多,尽最大程度 利用了已有知识,使用户对一个实体的信息一揽无余。若是为一个公司建立领域百科,该公司 也可以同样拥有了一张互联网名片,公司的产品、业务等信息都可以通过领域百科充分地向用 户展示,具有不可估量的商业价值。

附图说明

图1:系统模块图。

图2:爬取下来的在线百科数据示例。

图3:经过去噪和文字区域提取的百科数据示例。

图4:经过分词及词频统计子模块处理后的百科数据示例。

图5:复旦大学领域候选实体示例。

图6:复旦大学领域实体排序示例。

图7:复旦大学领域实体聚类结果示例。

具体实施方式

以利用百度百科数据建立复旦大学领域百科(即百科中的实体词条与复旦大学相关)为 例,进一步描述本发明,系统模块图请见图1。依次使用系统各模块进行处理,具体如下:

1.百科数据爬取模块

利用分布式网络爬虫爬取在线百科数据(这里爬取的是所有的百科数据,而不是只爬针对 某领域的百科数据),爬取下来的页面是网页的源码,见图2所示样例。可以看到,原始页面 中的数据充斥着大量噪声,使用之前必须对其进行预处理。

2.百科数据预处理模块

该模块对爬取到的在线百科页面进行去噪等预处理,使数据满足使用的要求。

(1)经过去噪子模块、文字区域提取子模块处理后的页面见图3,该图中展示了三个文 字区域,从上至下分别为标题、摘要和正文。

(2)经过分词子模块、词频统计子模块处理后的页面见图4,每一行的第一个数代表该 区域中一共有多少个词,接着是一个词,后面再跟一个该区域中该词的词频。

(3)对上述处理过的页面建立倒排索引。

3.相关实体搜索及排序模块

(1)构造训练集,将一些领域实体与其候选实体通过在线搜索引擎计算出其相关度。

(2)根据训练集训练出实体相关度函数中的参数。

(3)通过候选实体搜索子模块,搜索出包含“复旦大学”或者“复旦”的页面,共16949 个,部分结果见图5,可见,这样搜索出了一些潜在的和复旦大学相关的实体,此 时并未按相关度排序,因为有些相关性较弱的实体,排在了前面,下步进行相关 性排序

(4)经过相关实体排序子模块处理,对16949个实体按相关度排序,实体相关度排序 的部分结果见图6,所示出的实体是按其与“复旦大学”的相关度排列。可见,经 过实体排序子模块处理后,实体按照其与复旦大学的相关程度排了序,虽然有个 别可能有误,但比起人工去寻找这些实体,代价将大大降低。

4.实体聚类模块

(1)实体相似性约束构建子模块构建出一些聚类时的约束,供聚类算法参考。

(2)半监督聚类子模块根据相似性度量子模块所提供的相似性以及相关性约束构建子 模块构建出的约束,对领域实体进行聚类,部分结果见图7。图7中所示的结果是 聚成了三个类的结果,可见其已达到了相当程度的效果,如果在此基础上再进行 少许的人工修正,比起完全人工构建领域百科,代价将大大降低,这使得构建大 规模的领域百科成为可能。

本发明中所构建的领域百科已经基本达到了实用的准确度,部分实体再经过人工的少量修 改,即可达到纯人工构建的准确度,另外,由于本发明依靠机器自动发现相关实体,本发明所 构建出的领域百科的覆盖率将远远超过纯人工构建的领域百科。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号