美章网 资料文库 基于统计词语关联度网络自动构建方法范文

基于统计词语关联度网络自动构建方法范文

本站小编为你精心准备了基于统计词语关联度网络自动构建方法参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

基于统计词语关联度网络自动构建方法

1引言

词语语义知识是众多的必要语言知识中一个重要的部分,它的丰富和完善对于计算机自然语言处理能力的提升具有重要的意义。目前较为成熟的语义词典在英语方面有WordNet[1]、FrameNet[2]、MindNet[3]等,汉语方面有How-Net[4]、同义词词林[5]等。这些语义词典从本质上可以看做概念以及概念之间各种关系的集合。它们均为人工开发,从开发到维护往往要耗费大量的人力和时间。自刘群[6]起,已有大量学者参与中文词语相似度技术的研究。目前被广泛研究与采用的两种方法是基于世界知识(Ontology)或某种分类体系(Taxonomy)的方法和基于统计的上下文向量空间模型方法。目前前者的研究更多一些。由于一些理论上以及运行条件的限制,现有的技术还存在很多问题,难以发挥理想的效果。基于语义词典的词语相似度计算方法是一种基于语言学和人工智能的理性主义方法,它利用语义词典,依据概念之间的上下位关系和同义关系,通过计算两个概念在树状概念层次体系中的距离来得到词语间的相似度。这种方法存在以下几点不足:1)人类语言的词语具有很强的模糊性,一个词语往往有很多种词性、词义,应用语境也是丰富多变。以层次关系明确的关系结构作为知识表示框架并人工添加信息很难表现模糊性的词语知识;2)词语语义知识复杂且含量巨大,只能由专业人员制定,进行知识密集的研究,希望全面细致地构建词典工作量是极为艰巨的,实际上目前的语义词典都还很不完备;3)规则的制定受人的主观影响比较大,不能准确反映客观现实;4)信息量固定,针对性较强,用户很难根据特定需要以及现实世界变化进行修改或扩展;5)应用困难,对结构性的知识进行分析处理需要复杂的人工智能技术理论支持以及大量的假设性强的人工规则制定,由于语言的模糊性,人工规则的假设实际上大部分都不是可以普遍使用的一致性假设,因此以人工语义词典为基础开发的语言处理系统泛化性、鲁棒性普遍不高,难以适应丰富多彩、千变万化的真实语言环境。基于统计的词语相似度研究,把结论建立在可观测、量经验证实的语言事实上,而不仅仅依赖于语言学家以及工程人员的直觉,可以较好地解决上面的问题,随着语料库的扩大,学习经验的增加,机器学习得到的知识可以逐渐趋于完美。其原理是:构造一个以属性词为维度的属性空间,属性词的个数小于真实词语数目,但具备完全描述或近似完全描述所有事物的能力,类似于HowNet中的义原。每个词语拥有一个属性向量作为它的语义表示,这个向量每一维的权重为属性词与待表示词在语义上的关系的大小(一般用在大规模语料中属性词在待表示词的一定范围的上下文中出现的频率来度量),两个词的相似度就等于它们的属性向量的相似度。由于一些理论及外部条件的限制,基于统计的方法也并没有得到广泛的研究和应用。秦春秀[7]对这种方法的缺点进行了总结。此外一个重要的技术问题是巨大数据存储的困难。统计而得的数量巨大的共现数据是很难在当前的计算机中存储的。为了发挥基于统计方法的优势同时克服它实现上的困难,本文对基于统计的方法在理论以及技术上进行了一定的改进和创新。

2词语相关度原理

本文提出领域、领域树、词语领域特性、词语相关度的概念,作为词语相关度网络技术的理论基础。定义1领域、领域树世间万物可以看做为具有层次关系的诸多领域,这些层次不同的领域构成一个树形结构,称为领域树,树的根节点囊括所有的子领域,而一个子领域还可以向下划分,得到若干个描述该领域一部分内容的更下层子领域。所有领域构成领域空间。定义2词语领域特性词语是具备领域特性的,抛开词语的词性以及在句子中充当成分的信息不看,一部分词语或强或弱地与一个或多个或大或小的领域关联,这种与领域关联的能力称为词语的领域特性。词语与领域关联可以看做词语空间的一部分词语具备到领域空间的一对一或一对多映射,而每个映射具有一个强度值,这个强度值与词语出现而传达出该领域的信息量成正比。词语到领域的映射可以通俗地表述为词语W“代表”领域D。与比如词语“篮球”,它只有一个映射,映射至的领域为名为“篮球”的一种人类体育活动,这种映射的强度值为最大,因为只要该词语出现就能确定该领域出现;对于词语“进攻”,它存在两个映射,一个映射至战争中的进攻行为,一个映射至体育运动中的进攻行为,一对多映射源于词语的多义现象,这种一对多映射分散了该词语传达一个领域的信息量,因此每个映射的强度较小;对于词语“优秀”,它可以映射到人类活动的多个领域,这些映射的强度更弱。一部分词语是不具备领域特性的,比如虚词,在语言表达中只起到辅助作用,它们不能传达任何与领域有关的信息。定义3词语相关度本文研究两个词语之间在代表领域上的相关程度,命名为词语相关度。词语相关度是一个相对性的量,是用来对不同的目的词语相对于一个源词语在领域上相关程度的大小进行比较,也就是说一对词语的相关度数值是没有使用价值的,只有对多个始于同一个源词语但终止于不同目的词语的相关度比较排序,从而获知哪些词语于源词语在领域上的相关程度更大,哪些更小。相关度可以根据两个词语代表领域在领域树中的节点的距离来计算,这种距离与两个节点和它们的公共祖先节点的距离有关。直观地看,父子节点以及同一父节点的若干个子节点之间距离最近。以“投篮”、“篮板”、“穿衣”三个词语为例,它们代表的领域也可称为“投篮”、“篮板”、“穿衣”,“投篮”和“篮板”为父子节点,距离很近,而“投篮”和“穿衣”、“篮板”和“穿衣”两对节点的公共祖先节点为“人类活动”,子节点距离公共祖先节点较远,因此第一对词语的相关度比后面两对的相关度高。词语相关度的概念相比于词语相似度更加精确、有针对性。本文的目标就是实现一种能够较为精确地计算词语相关度的方法。

3词语相关度网络原理

Matsuo等人[8]发现,将词语作为节点,根据词语在一定窗口内的共现关系将词语相连接可以构成一个词语网络,这个网络既不是完全随机的,也不是完全规则的,而是具备小世界特性的复杂网络。词语网络在全局上高度连接,且局部高度聚集。他们提出由词语网络表示文档的主要内容,节点表示文档中的词语,边表示文档中词语间的关系。词语网络不仅能反映文档的内容,还可反映文档的总体结构和语义结构。文档中能够强烈表现文档主题的关键词可以通过挖掘词语网络的中心节点—即对图中小团体的紧密度起重要作用的节点来获得。如果将这种面向单文本的词语网络扩展,将它应用于多文本,来挖掘词语间的语义关系是否可行呢?不考虑文学作品比如散文、小说等,按照人类的语言习惯,在书写一篇应用文本时一般只围绕一个主题。因此文本中出现的词语除了一些领域特性弱或没有领域特性的之外,领域特性强的词语往往都共同涉及一个较高层的领域,本文称为全文主领域。而文本的每个段落经常会围绕一个全文主领域所包含的子领域,一个句子则围绕某个更下层的划分。所以可以假设,随着考察窗口的缩小,窗口中的强领域特性词语是共同涉及一个逐渐缩小的公共领域的,这些词语的相关度较高。我们知道贝叶斯定理的原理:一个事件越是频繁出现,是事实的可能性就越大。由此可以推导出一个更重要的假设,称为词语相关度假设:设定一个文本窗口,对大量文本进行分析,频繁在文本窗口中共现的一对词语相关度较高。如果这个假设是正确的,那么将单文本词语网络扩展到多文本,据此挖掘词语的相关度知识就是可行的。由词语相关度假设可知,词语相关度与词语对的共现频数成正比,与每个词语单独出现的频数成反比,由此得到词语相关度公式定义,由词语相关度可以构建词语相关度网络。定义4词语相关度公式假设词语wx和wy,Fxy表示词语对在窗口内共现的频数,Fx和Fy表示每个词语单独出现的频数,那么词语wx和wy的相关度Cor为Cor(wx,wy)=Fxy/Fx槡Fy(1)定义5词语相关度网络以所有领域特性较强的词语为节点,如果两个节点相关度大于零,就在两个节点之间建立权值为二者相关度的无向边,所有节点和边一起构成一个复杂的无向加权网络,称为词语相关度网络。可以运用多种图与网络的理论对词语相关度网络进行分析,以获取更多的词语语义知识。下面构建一个词语相关度网络,通过实验验证词语相关度假设。

4词语相关度网络自动构建技术实现

4.1总体步骤从整体上看构建词语相关度网络可分为以下几个大的步骤:1)选择适当的词语作为网络的节点,设节点数目为N,建立一个N×N的二元组数据库,用于保存每两个词语共现的频数。2)将数据库的所有元素先置零,遍历语料库中的文档,对文档进行分词处理,当词语wi和wj在文本窗口中共同出现,就将二元组中i行j列以及j行i列位置的元素加1。由此统计节点词语共现频数,获得共现数据库。3)根据共现数据库,根据词语相关度公式计算每两个词语间的相关度,获得相关度数据库(同样也是N×N的二元组)。

4.2节点词语选择本着尽可能降低网络数据的空间复杂度同时又尽量维持数据完整的原则,节点集不宜包含所有中文词语,应选择领域特性较强的一部分词语。经过观察发现,绝大多数名词、动词和缩略语领域特性很强,而形容词的领域特性也相对较强,此外单字词相比于多字词领域特性较弱。据此,实验拟从中科院ICTCLAS分词系统的词典中选取所有词性为名词、动词、缩略语、形容词的多字词(共65165个)作为网络节点。

4.3文本窗口选择我们的文本窗口选择为段落,因为与句子、文章相比,段落表达对主题的表达更为全面(与句子相比),并且能够避免较多的噪音(与文章相比)。句子虽然能避免更多的噪音,但是表达的内容往往只局限于很小的一点,除非训练集十分庞大,否则很容易引起数据稀疏问题;文章虽然对主题的表达更加宽泛,但不同段落关注的内容很有可能有较大差别,尤其是对于训练集中很大一部分的网页文本,在一篇文本中很有可能出现一些与主题无关的附加信息,这就会带来大量的噪音。因此综合考虑的结果还是以段落为窗口最佳。在实际的代码中,可以取空格符为段落间隔符,以回车或换行符为段落间隔符是不恰当的,因为有很多文本为了便于浏览或其他原因,在一个段落结束前就使用一些换行符以保持显示时每行的长度为某一固定大小,如果以换行符为段落间隔符,就会错误地划分出很多段。几乎所有的段落在开头都会有首行缩进,也就是增加空格符,因此以空格符作为段落间隔符是合理的。基于上面所说的情况,在文本分析前应把所有回车及换行符去掉,以免造成分词错误。

4.4数据存储的困难可以看出,词语相关度网络与基于统计的词语相似度计算是类似的,都需要对语料库的词语共现信息进行统计,统计学习得到的知识具有基于规则的语义词典无法比拟的优点。但如上文所述,就目前条件来说共现数据的存储存在很大困难。图和网络的存储方法主要有两种:无压缩的矩阵数组或压缩性质的链表(包括邻接表和十字链表等)。假设网络的节点为N,如果网络用矩阵数组表示,这个数组为一个N×N的二元组,空间复杂度将达到O(N2)。本实验节点的个数为65165,此时数组元素的个数达到4G以上,如果元素用int整型(int型变量占4字节空间)表示,整个数组占用存储空间的大小将达到16GB以上,目前占主流地位的32位个人PC机整个内存空间的大小只有4GB,这么大的数组是无法存储在内存中的。而且数组数据实际上较为稀疏,完全存储会造成较多的空间浪费。稀疏数组可以采用压缩性质的链表存储来节约空间。对于本实验,每行或列的元素仅使用普通的链表存储是不恰当的,这样就会失去随机存取的功能,对于本网络节点数目达到万级的情况,时间复杂度将不可接受。每行或列的数据存储可以采用动态查找表,如平衡二叉树、红黑树等等,这也是一种以链表为基础的压缩存储方法,同时随机存取的效率不至于损失过大。实验拟采用这种方法:每行元素使用C++标准库的map容器(此容器内部实现方式为红黑树)存储,这样既能够节约空间,又能够保持较高的存取效率。但在语料库学习的过程中,随着网络边数的不断增多,当分析的文档数达到一万多个时,计算机依然不能承受巨大的内存开销而产生内存不足的情况。也就是说即使压缩,内存也无法完整地存储词语共现信息。那么是否可以通过筛选共现数据来实现进一步的压缩呢?章志凌[9]在为计算词语相似度而进行共现信息的统计时,为了减少空间复杂度,设计了两种方法进行空间约简:一是减少属性词语的数量,只取二字及二字以上的名词,然而词语节点只包含名词则忽略了大量强领域特性的词语,比如动词、形容词的领域特性也较强,这样必然会遗漏大量的语义信息;二是设计了在统计学习的过程中不断裁剪共现数据的算法,但裁剪算法较为复杂,大量增加了时间复杂度,而且不完全准确,最终得到的数据与真实情况存在误差。由此可见,在内存中存储数据并保持较高的准确性是不可能的。目前外存硬盘的容量已达到TB级,完全足够容纳共现数据,所以将数据移至硬盘中。

4.5硬盘存储方法硬盘有一个致命的问题是存取速度很慢,因此网络应当采用数组表示法,来尽量较少效率的损失。本实验的数组大小为16GB,那么应该怎样存储和操作呢?实验首先采取一种简单的可以直接想到的方法:建立一个与数组相同大小的大文件,文件的地址从低到高依次存储数组的各行元素,在分析语料库的过程中不断地随机读写,来实现共现频数的添加。但是对大文件频繁的随机读写因为需要不停地转动磁盘盘面,效率是极为低下的,对于一个大语料库,读写操作很可能达到上亿次。实验证明采用这种方法平均处理每一篇文本需要几秒钟,这样的速度是不可接受的,与尽可能增大语料库规模以较少数据噪声的愿望完全违背,因此不宜采用。实验设计了一种数组分割的方法。虽然数组不可以完全放入内存,但是将数组分割成内存可以容纳的n个子块,学习语料库的过程相应的增加为n次,第i次学习时,内存中存储数组第i子块的数据,学习中对内存进行操作,学完一遍后将内存中数据保存至硬盘。这样在学习中均为内存操作,只是学习的次数增加了n倍,只要n足够小,学习过程的时间复杂度就是可以接受的。

5效率及性能测试

5.1效率测试本实验的硬件环境为:CPU:IntelCeleronE3300双核主频:2.5GHz/前端总线频率:800MHz;内存:DDR23GB双通道工作频率:400MHz;硬盘:7200转。语料库包含文档33087篇,数据量为152MB。文档分词采用中科院ICT-CLAS词法分析系统。共现数据库采用数组分割法,实验发现内存中最大可分配6000行元素,而数组总共有65165行,所以子块数n为11,一次遍历语料库耗时23分钟,11次遍历的最终学时间为4小时,在效率上能够较好地满足需求。

5.2性能测试给定一个词语,得到与该词语在领域上关系最大的若干个词语的集合,可称为“语义扩展”。下面对本实验系统进行语义扩展测试,首先选取词语“财政”、“计算机”、“环保”、“教育”、“就业”、“军事”作为核心词,分别获取与每个核心词相关度最大的20词,结果列表如表1所示。可以看出,每个核心词列出的扩展词基本上均为领域关系较大的,词语相关度的计算结果与真实情况较为符合。

6结语

本文提出了词语相关度的概念以及基于统计的词语相关度计算方法,并以此为基础构建了一个基于强领域特性中文词语的词语相关度网络,设计了数组分割的硬盘储存方法把网络数组存放在硬盘中,使海量数据的分析处理可以在目前的个人PC上完成。实验证实了数据的有效性,词语相关度知识具有广阔的应用前景:1)词语相关度网络是一个规模与信息含量很大的复杂网络,可以对这个网络应用多种图和复杂网络的理论和算法,以获取更加丰富的语义知识。2)统计方法与规则方法相互结合,综合使用,往往可以彼此扬长避短,优势互补。因此可以利用词语相关度网络蕴含的语义知识简化语义词典的构建工作,方便专家在短时间内构建知识准确且丰富的语义词典。3)强大的语义扩展能力可以应用在文本分类、检索、过滤等自然语言处理技术中,为语言处理系统提供丰富的词语语义知识,既可以以此为基础设计新的算法机制,也可以作为某些成型算法机制的知识扩充,从而提升计算机中文处理的能力。

但当前工作还存在一些问题,有进一步改进的空间,总结如下:1)节点词语集存在改进的空间,存储方式有灵活变通的可能。实验的节点词语是从ICTCLAS分词系统中抽取的,实际上词数较为有限,还有很多领域特性强的词语没有包含。中文词语数量十分巨大,如果算上专业术语,领域特性强的词语至少有几十万。除此之外,一些常用的或用作专业术语的词组短语也具有很强的领域特性,如“管状组织”、“产值结构”等等,它们也符合加入节点词语集的条件,有助于扩充计算机的认知。综合考虑各种情况,中文中领域特性强的词及短语的总数很可能达到百万级,希望网络囊括所有这些词当然不可能,但可以根据应用环境的特点选取应用环境需要的一部分,比如诸多的专业术语在大众化的应用环境就不需要,可以除去。另外实验中仅根据词性来判断词语领域特性的强弱是不充分的,很多符合实验条件的词语诸如“进行”、“认为”、“可能”显然领域特性较低,加入节点集不仅增加了空间消耗甚至带来了噪音,应该分析找到这类弱领域特性词并去除。另外,针对不同的应用,网络的结构以及存储方式可以相应改变以减少空间复杂度。比如如果不需要很多复杂的网络分析而只对部分词语进行语义扩展,可以减少数组行或列的数目,设定一个核心词集和领域词集,核心词集中仅加入需要进行语义扩展的一部分词语,是领域词集中的一个子集,用领域词集中的词语对核心词进行语义扩展。设核心词集的词数为NR,领域词集的词数为NC,NR<NC,此时的数组大小NR×NC小于完整网络的大小NC2,这样也给领域词集的扩展提供了空间。2)数据噪音。经过观察发现,一个核心词语的相关词语列表在相关度大的部分较为准确,随着相关度的减小,就会越来越多地出现无关词混杂在相关词之间的情况,这就是数据噪音。这与语料库、文本窗口、计算公式等多种因素相关。实际上文本窗口的选取是与语料库大小相关的,语料库当然是越大越好,如果语料库很大,文本窗口就可以小些,可以提高准确性;但是如果条件有限,语料库比较小,文本窗口应该大一些以提升完备性。此外,应当更深入研究词语的统计规律,设计更准确的计算公式。3)语义关系有待扩展。本文是基于词语在文本窗口中的共现情况挖掘词语的领域相关性,实际上词语还有很多更细致的语义关系,挖掘这些语义关系需要句法分析的支持,目前中文处理中的句法分析技术还不够完善,未来当句法分析技术条件完备时,就可以深入挖掘这些丰富的语义关系。