基于维基百科的中文文本分层路径生成研究_语义分析论文

基于维基百科的中文文本层次路径生成研究,本文主要内容关键词为:中文论文,路径论文,维基百科论文,层次论文,文本论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

       分类号:G353

       1 引言

       文本的语义描述是文本分析的常见任务,根据描述粒度的不同可以分为三个层次:以词袋法为主的细粒度表示,将文本看作是由相互独立且具有不同权重的词语构成的集合,权重计算有布尔逻辑、TF-IDF等方法;以分类为代表的粗粒度表示,通过构建朴素贝叶斯、SVM、决策树等分类模型,自动从预定义的类别集合中选择最相关的分类;介于前二者之间的描述方式,以图结构和主题模型最为常见,前者把文本表示为由概念节点及关联边构成的语义图[1],后者以LDA为典型代表[2],把文本看作是由若干个主题按照某种分布生成的结果,主题本身又是由词语根据特定分布生成。

       在三种不同粒度的处理方式中,分类对于文本的语义描述最为概括,人工可读性最强。然而,传统分类技术所处理的类别集合数量固定,各分类之间在语义上处于相同等级,不存在上下位层次关系,无法深度刻画文本的语义信息,如能引入多级分类,通过带层次结构的语义路径对文本进行描述,将有利于更好地快速获取文本的主要语义。

       因此,本文围绕如何识别自由文本的层次语义路径进行研究,基于维基百科中文导出数据,构建了带有大规模层级结构的树状图,借助显性语义分析将任意文本的语义信息映射到树状图中,进而通过节点信息扩散和路径求解与优化,生成文本对应的层次分类路径。

       2 相关工作

       文本的层次语义描述可以借助层次分类实现,即按照一个规模巨大的类别层次,指定未知对象在层次中所隶属的类别[3]。层次分类需要良好的层次结构和一定规模的训练数据,通过将层次分类问题转换为传统分类,再利用常规分类算法实现[4-5]。然而,人工维护一棵组织严谨的大规模层次树难度较大,分类节点数量众多使得分类算法的效率较低,从而限制了层次分类的应用范围。

       相比层次分类而言,利用维基百科现有的文章和分类网络识别文本的层次语义更具优势:一方面,维基百科已经形成了开放的、动态增长的分类体系;另一方面,维基百科的分类与文章之间的链接引用关系提供了更多的显性语义信息,在此之上已有部分较为有效的文本语义分析技术[6]。

       其中,Muchnik等[7]利用维基百科的文章链接网络,自动构建术语在网络中的潜在层次结构,但该研究未使用维基百科的分类信息。Gabrilovich等[8]提出的显性语义分析(Explicit Semantic Analysis,ESA)是基于维基百科的文本语义表示的经典方法,该方法使用维基百科的文章及其之间的链接信息,把文本表示为由概念(文章标题)构成的向量,在词语相关度计算[9]、查询扩展[10]、文本分类[11]等应用中得到了广泛应用。ESA表达的是文本与维基概念之间在统计意义上的相关性,概念向量中的各元素之间与词袋法一样维持了独立性假设,因此,ESA对文本实际语义的直观解释能力依然较弱,以本文所用数据集构建的ESA模型和待分析文本“新浪微博”为例,ESA输出的前5篇最相关文章分别为“腾讯微博”、“长微博”、“微博AIR”、“自由微博”和“对新浪微博的争议”,而通过本文的路径识别技术所输出的前两个层次路径为“社会/大众媒体/全球资讯网/Web2.0”和“社会/文化/网络文化/虚拟社群”,显然,层次路径更能准确描述文本的语义信息。

       总体而言,借助于词条概念描述文本的语义已有较好的研究进展,但如何生成任意文本的层次语义路径尚无公开有效的方法。

       本文直接面向开放的维基百科分类体系,在由文章与分类、分类之间共同构成的巨大网络中,抽取可表达文本主要语义的层次路径。与层次分类法不同,本文方法所处理的分类数量巨大,分类网络复杂;路径识别不需要构建复杂的分类器,而是在简化网络中借助于信息扩散动态完成,最终生成可读性强的层次语义路径。

       3 基于维基百科的层次分类树状图构建

       维基百科提供了开放的层次分类体系,用于对以文章为单位概念的世界知识进行多维度标注,中文分类形式上以杜威十进位图书分类法为主,同时参考《中国图书馆分类法》以及赖永祥《中国图书分类法》。维基百科数据由人工编纂而成,凝聚了群体智慧,内容相对丰富完整,并且可自由获取使用,因此,笔者采用维基百科数据构建大规模层次分类体系。

      

      

       图1 维基百科分类图子图

       维基百科的中文分类体系以“页面分类”为总入口,该分类下拥有22个直接子分类,也是维基百科有实际意义的第一级分类,如表1所示。

      

       为便于描述,对

做如下设定:

       (1)令“页面分类”为

的根节点,记为root(

)。

       (2)对于一条弧e=〈

〉,称

的父节点,

的子节点,令parents(v)表示v的所有父节点集合,children(v)表示v的所有子节点集合。例如,图1中有:

       children(“自然科学”)={“物理科学”,“数学”,…}

       parents(“物理科学”)={“科学学科”,“自然科学”,…}

       (3)对每个节点v赋予一个相对于根节点位置的深度属性depth,当v是根节点时,深度为0,其他情况递归定义如下:

      

       例如,在图1中,有:

       depth(“科学”)=depth(“自然科学”)=1

       depth(“科学学科”)=depth(“物理科学”)=2

       (4)将从第一级节点开始到类别节点v为止的任一条简单路径称为v的一条层次分类路径,简称路径,记为

,并令|

|表示路径的长度,即

所包含的分类节点数量,如图1中,“自然科学→物理科学”是节点“物理科学”的一条分类路径,其长度为2。

       完整的维基百科分类图

存在许多不利于算法自动分析的方面:首先,维基百科拥有大量以不同侧面对概念进行分类的情况,如“总类→分类→直接命名的分类→以人物命名的分类→以各职业人物命名的分类→以商人命名的分类→比尔·盖茨”,去除这些以导航为主要目的的分类,可以提高路径自动识别的效果。其次,经拓扑排序发现图

中存在大量环路,不利于分类体系的递归处理,如“社会科学→刑事学→罪案→侵犯人权→宗教迫害→宗教多元主义→宗教迫害”。再次,部分节点存在路径包含现象,该现象是指节点有两条以上长度不等的路径,并且长路径包含了短路径的所有类别,如图1中,路径“科学→自然科学→物理科学”和“自然科学→物理科学”均为“物理科学”的路径,通常情况下,仅保留短路径不破坏分类体系的主要语义信息,并能简化图的复杂程度。另外,

中存在分类引用缺失、无有效路径以及类别重复等少量异常现象。例如,实验数据中的分类“佛教法器”,其父类指向了并不存在的“法器”分类;类别“各类型智慧”没有父分类,即不存在有效路径;“俄罗斯探险家”和“俄羅斯探險家”表达了相同的意义,但却对应两个完全独立的分类页面。

       为解决以上问题,笔者提出了层次分类图构建算法,通过对

进行剪枝,移除部分节点和边,消除环路和路径包含现象,得到简化后的层次分类图

,算法如下所示:

       输入:原始维基百科分类关系图

       输出:用于层次路径识别的树状图

      

       算法借助于队列结构自根节点对

进行广度优先遍历,对于当前被访问的节点v(行5),通过忽略“跨学科领域”、“总类”和“词汇列表”三个一级类别节点以消除侧面分类(行6);然后处理v的每一个子节点child,当其深度为v的深度值加1时,把子节点child和边v→child分别加到节点集

和边集

中(行9,行10),否则,说明

中有除v之外的节点指向child,且距离根节点更近,此时忽略边v→child。最终,

分别保存了精简后的层次分类图的节点集和边集,共同构成了的树状图

       算法保证了

拥有一个无入边的根节点,且图中每一个节点v的入边只来自上层节点,它们的深度为v的深度减1,出边只指向下层节点,深度为v的深度加1。

具有树结构的多数特性:拥有根节点、子节点、叶子节点和分层结构,但

中节点的父节点不唯一,所以称之为树状图(Tree like Graph)。

       4 层次分类路径识别方法

       基于维基百科的语义层次分类路径识别分为三个部分:将自由文本表示为由维基文章构成的显性概念;将显性概念映射到树状图并求解层次分类路径集合;综合考虑相关度和新颖度,优化层次分类路径的选择。

       4.1 文本的显性概念表示

      

       如文献[8]所述,并非所有的文档对于ESA都有相同的效果,笔者从内容和链接关系两个方面对维基百科的原始文章进行过滤。在内容方面,如文章a是跳转页面、消歧页面、列表页面,或者文章a所包含的词语数量少于200,则作为非重要文章予以过滤;在链接关系方面,如果文章a的出入链之和小于20,则予以过滤。

       为建立ESA模型,笔者对过滤后的维基百科数据进行扫描,计算每对“词语→文章”的TF-IDF值,形成最终的ESA矩阵T,并进一步维护了文章到类别的隶属关系,用于后续的种子类别选取,从而构成了自由文本到层次路径之间的桥梁关系。

       在构建矩阵T之后,给定文本t,其显性语义概念向量可由以下公式计算得到:

      

       为获取文本的主要语义概念,笔者对向量

按照其元素得分进行降序排序,并挑选前n个元素作为文本最终的显性语义分析结果,形式化表示为

表示文章

与文本t的语义相关程度。

       4.2 分类节点的语义关联与扩散及分类路径求解

       令CS(

)表示文章

所隶属的关联分类,对于文本t和

中的分类c,如存在

,使得c∈CS(

),则称分类c为文本t在树状图

上的初始种子类别节点,简称种子节点。令

表示种子节点

与文本t相关程度的权重大小,计算公式如下:

      

       其中,

表示文章

隶属于类别

表示

所关联的分类集合的大小。公式(4)表明,种子节点的分类权重由所关联文章的ESA分值按比例累加得到。进一步,为保证所有种子节点的权重之和为1,笔者对种子节点的权重进行归一化处理,记为

,公式如下:

      

       其中,Δ表示所有种子节点集合。为保持定义的完整性,如果

,令

=0。

       做如下假设:任一文本t均可以由维基百科的分类加以描述,描述时由根节点开始,经中间层级的分类自顶向下逐级细化描述,直至到达维基编纂人员认可的细粒度分类为止;令

表示分类

与文本t的语义相关程度,对每一个分类进行相关度赋值后,就可以按照一定的策略从图中挑选出自根节点达到终止节点的最相关路径,作为文本t的语义层次路径。

       在表现形式上,人们仅观察到与文章直接关联的种子分类节点,而自根节点到达种子节点所经过的中间节点隐藏在层次树

中,为求解中间节点及其相关度值,笔者提出反向扩散方法,自种子节点开始,将每个节点的相关度值向父节点扩散,直至根节点为止,此时有

,即所有种子节点的信息最终汇集到根节点,任一文本均隶属于维基百科的根分类。

      

       即节点

与文本t的语义相关度由直接关联的文章所传递的ESA权重和所有子节点所传递的信息量共同决定。从种子节点开始,自底向上依次计算,即可求解所有中间节点及根节点与文本t的语义相关度值。然后,从根节点开始,通过所有相关度大于0的中间节点,到种子节点为止,即可获取到所有可能的分类路径。对于任一分类路径

,定义其与文本t的语义相关度PR(

)如下:

      

       根据公式(8)对每条层次分类路径按其关联度由高到低排序,并挑选得分最高的前N个作为候选结果,即可实现对文本t的语义路径识别。

       4.3 层次分类路径的优化选择

      

       根据如下贪心策略挑选独立路径:

       (1)从图

中选取权重最大的节点v作为有效路径并予以标记,删除与v相邻的节点及边,并把v添加到队列Q的尾部;

       (2)重复以上过程直至图

中的所有节点被挑选或删除完毕。

       此时,队列Q中保存了所有互不依赖的层次路径,并按照语义相关度由高到低排列。

       在上述步骤中,如何计算任意两路径之间的相似度至关重要,笔者采用如下方式:

      

       5 实验

       为验证本文方法的效果,笔者构建了维基百科训练数据集和测试数据集,以算法生成的层次分类路径有序列表作为测试对象,对比生成路径和文章自带的原始类别的相关度,以反映自动生成路径的实际效果。

       5.1 实验数据

       选取维基百科2015年6月发布的中文导出数据“zhwiki-20150602-pagesarticles-multistream.xml.bz”①,该数据集共包含2648029个页面,其中,文章页面占55.93%,分类页面占7.47%,文档附件、图片等其他类型资源页面占36.60%,具体组成如表2所示。通过数据清洗处理,最终保留了184968个文章页面和176484个分类页面,分别用于构建ESA模型和层次分类树状图。

       清洗后的维基百科分类图

共拥有176484个节点和335329条边,通过树状图构建算法进行过滤处理,去除环路和孤立点后,形成最终的层次分类图

,包含171681个节点和220861条边,分别为

的97.28%和65.86%,即

基本保留了原图的分类名称,但去除了大量冗余路径。

       为构建测试集,笔者从维基百科原始数据中去除184968条训练数据,从剩余的637911个非跳转文章页面中以1.5%的概率随机抽样,去除字数少于50的文章,最终构成了包含6629个文章的测试集②,测试集以XML格式保存,每个文章包含页面Id、标题、去除标签后的文本和所隶属的分类。

      

       5.2 实验数据

      

       5.3 实验结果与分析

       取测试文章的标题和正文文本的前300个汉字作为自由文本,计算其显性概念向量,保留前20个主要概念用于生成种子分类节点,生成层次语义路径集合。为便于获得路径识别的感性认识,下面给出了测试集中的“中国古典典籍”和“邻接矩阵”两篇文章人工给出的分类信息和自动识别出的前5条路径,以及每条路径与文章的相关度R和k-平均相关度(k∈[1,5]),如表3所示。

       由表3可看出,本文所提方法能够从层次分类知识体系中对文本内容进行合适的语义定位,所输出的层次路径能够从不同侧面反映文本的主要语义信息,与人工标注的细粒度分类具有较高的关联关系,能够为文章编纂人员对文本进行合理分类提供有效的参考借鉴。

       为反映整体情况,根据公式(12)计算前k条路径与测试文章自带分类的k-平均相关度,k取不同数值时的实验结果如图2所示。

       图2的右侧给出了k取值从1到5时,在整个测试数据集上的R@k,左侧曲线则给出了k取值在1到20之间的整体变化情况。相关度均值随着k的增大而显著降低,说明识别结果整体上能够按照与原始文本的语义相关度由高到低排序;当k=1时,平均相关度值达到0.541,则表明超过一半的情况下首条路径与人工标注的类别保持一致。部分测试文章的相关度较低的原因,一方面是由于方法本身和数据质量的局限,采用显性语义分析表示自由文本会引入噪声,另一方面则是人工标记的分类不够全面(见表3),使得有较高语义相关度的路径在测试中的实际得分较低。

      

      

       图2 k-平均相关度实验结果(k∈[1,20])

       6 结语

       本文提出了一种基于维基百科的语义层次路径识别方法,该方法首先利用显性语义分析技术将自由文本表示为维基百科词条概念向量,进而通过词条与类别之间的隶属关系,将其关联到层次分类树状图之中,通过自种子分类节点向根节点的语义扩散和自顶向下的分类路径求解与优化,实现了对任意文本的语义层次路径标记。实验结果表明本方法自动生成的路径与人工标记的类别具有较高的关联度。

       下一步研究包括:

       (1)探索新的分类节点在图中的信息扩散计算方式,进一步提高层次路径识别效果;

       (2)层次路径识别技术在相似度计算和分类等文本挖掘任务当中的应用。

       注释:

       ①http://dumps.wikimedia.org/zhwiki/20150602/。

       ②https://github.com/iamxiatian/data/blob/master/zh.wiki6629.zip。

标签:;  ;  ;  ;  ;  ;  

基于维基百科的中文文本分层路径生成研究_语义分析论文
下载Doc文档

猜你喜欢