Chinese Whispers-一个有效的图聚类算法及其在自然语言处理问题中的应用
克里斯.比曼
莱比锡大学,自然语言处理学院
注:由于这里不好复制图片和公式,展示并不理想,可在我的github:https://github.com/ouprince/CW
里面有CW聚类算法的论文原稿和我的翻译版。
摘要:
首先介绍一下Chinese Whispers ,一种边数是时间线性的随机图聚集算法。在对算法进行了详细定义后,讨论了算法的优缺点,Chinese Whispers 的表现是由多种多样的在自然语言分离处理中的问题来体现的,获得语法词类和词义与消除歧义。在此事实表明,small-world的处理适用于许多自然语言处理中的图形。
1. 简介
聚类是根据它们之间的相似性将对象分组在一起的过程。在自然语言处理领域,聚类有很多很多种方式,最受欢迎的是在与检索和词群相关的应用中,寻找类似的词或概念结构,进行文本聚类。
传统上来说,语言对象可以用一个特征向量来描述。这些特征向量可以被解释为多维空间中的点。聚类使用距离度量,比如两个特征向量之间夹角的余弦。在自然语言处理中往往有上千个特征,但在一个时间里,只有少数几个互相关联--想想不同单词的数量,而不是每个句子中出现的单词数量--降维技术可以大大减少复杂性,而不会很大的降低准确性。
在空间中不处理维度的另一个表现形式是图形表示。用图中的节点表示对象,用边表示对象之间的联系。在自然语言处理中,有各种各样的结构可以很自然的表示成图形,比如文章单词网,依赖树,共生图形以及超链接文档。
在多维空间中,聚类图是一种不同于聚集对象的任务:没有距离度量;对象之间的相似性由边表示。不包含共同边的对象无法进行比较,于是产生了优化技术。图中并没有所谓的重心或“平均节点”,允许基于重心的算法。
由于自然语言处理中的数据集通常很大,人们强烈要求有效的方法以降低计算的复杂性。在这篇文章中,介绍一种高效的图形聚类算法,该算法能够在较短的时间内分割出非常大的图形,特别是small-world图(Watts,1999),在质量和速度上都达到了很高的性能。在解释了下一节的算法后,在第三节中报告了合成图的试验,这让我们了解了算法的过程。在第四节报道了三种自然语言处理任务的实验,在第五节,通过讨论扩展和进一步的应用来总结。
2. Chinese Whispers 算法
在这一节,概述一下Chinese Whispers (CW)算法。通过回顾图形理论中的重要概念(cf.Bollobas 1998),里面了描述两个算法的观点。其中第二点就是用于将CW关联到另一个图形聚类算法,命名为 MCL(van Dongen,2000)。
我们在文本中使用以下符号:G = (V,E) 表示一个具有节点 和加权边 的加权图。如果 意味着 ,那么叫做无向图。如果所有的权重都是1,G叫做非加权图。
节点的等级取决于节点所连接的边的数量,节点v的邻域由全部节点(或)确定。它由所有连接到v的节点组成。
一个n个节点的图所形成的是一个的相邻矩阵,其中表示节点和之间边的权重,其他用0表示。
一个n个节点的图所形成的也是一个的类矩阵,行代表节点,列代表类别。第i行第j列的值表示属于类的数量。对于约定,类矩阵行是标准化的,第i行表示在C 中的概率分布。如果所有的行只有一个非零值选项,值为1。表示V的硬分割,而不是软分割。
2.1 Chinese Whispers 算法
CW是一种非常基础的,但有效的算法,用来分割加权的无向图节点。它来源于同名的儿童游戏,孩子们在哪里低声互相耳语?游戏的目标是通过几个带干扰的通道传递后,将原来的信息衍生成一些更有趣的信息。CW算法的目标就是查找传播相同信息到相邻节点的节点组。它可以被看做一个基于代理的社交网络的模拟,关于这个领域的研究,参见(Amblard 2002)。
算法如图1所示:
图1:Chinese Whispers 算法
直观的说,该算法的原理如下:首先,所有的节点都分成不同的类。然后对节点进行少量的迭代处理,并继承它邻近节点中最大的类别,即对当前节点的边权重值最大的节点所在的类。如果有多个最大的类别,则随机选择一个。同一类的区域在迭代过程中趋于稳定,直到到达另一个类的稳定区域边界为止。注意类会立即更新:一个节点可以从同一个迭代中引入的邻域取类。
图2展示了一个小的未加权图如何在三次迭代中聚成了两类。不同的类用不同的阴影表示。
图2:在两个迭代中将11个节点的图与CW进行聚类
译者注:以下是对图2的解释,并非原文翻译:在0时,11个节点初始化为11个不同的类,所以有11中不同的阴影。现在开始迭代,因为是无权图,所以权重都是一样的,10先随机取7的类别,8取6的类别时,立即更新,于是9取8的类别跟6同类,7和11也取6的类别,4取3的类别,5取3的类别,1取2的类别。再进行一轮迭代到2时,可以看到已经到达了稳定。这只是很理想的情况,事实上可能不一定这么快达到稳定,但经过迭代后稳定都是在2的状态,设想假设2中的结构8是白色,那么在下一轮迭代也会变成黑色。
可以引入一个随机的突变率,在迭代次数减少的情况下,分配新的类,在(Biemann & Teresniak 2005)中有所表述。由于早期的迭代收敛速度较慢,因此对小图形有积极的影响。
CW算法不能跨越组件边界,因为不同组件的节点之间没有边。进一步说,没有被任何边连接的节点将会从聚类过程中被丢弃。因为孤立的节点会导致难以集中。
形式上,CW不收敛,如图3所示:在这里,中间节点的邻域由一条连接组成,可以在任何迭代中随机选择左边或右边的类,也就是永远不可能收敛。但是连接关系并不在加权图中发挥主要作用。
图3:中间节点得到黑色或灰色类,小数字表示边的权重
除了以上连接关系,在经过几个迭代之后,类通常不会再进行更改。迭代的次数取决于图的直径:两个节点之间的距离越大,从一个到另一个渗透信息的迭代次数越多。
CW的结果是将给定的图形分割成多个在过程中出现的分区-CW是无参的。通过为每个节点分配一个类,基于(硬)类在最后一步在其附近的权重分布,可以获得一个软分区。
CW的结果与Min-cut(Wu & Leahy 1993)的结果相似:图中的密集区域被划分成一个簇,而稀疏的连接区域则被分离。相比于Min-cut,CW并没有找到一个最优的层次聚类,而是生成一个非层次化的分区。此外,CW不需要任何阈值作为输入参数,而且效率更高。
另一种只使用局部上下文的时间线性聚类的算法是DBSCAN,描述于(Ester et al.1996)。需要两个输入参数(尽管作者提出了一种交互式的方法来确定它们)。DBSCAN尤其适用于具有几何解释的图形,即对象在多维空间中具有坐标。一个基于可比性的与CW很相似的算法是主要的(Stein & Niggemann 1996),但是收敛速度较慢。
2.2 Chinese Whispers 的矩阵运算
正如CW是markov - chain(MCL) (van Dongen, 2000)的一个特例,我们花几句话来解释它。MCL是在基于有限的长度图G上运行的一个对所有随机性的并行模拟。想法是一个随机漫步者更可能在与一开始相同的场景中结束而不是穿越到其他场景。MCL通过不断更新所有节点之间的转移概率来模拟图的流向,最终收敛于K步之后的转移矩阵,也可以被称之为G的聚类。这是通过交替扩张和膨胀的步骤来实现的。扩张步骤是Mg与当前转移矩阵相乘,膨胀步骤是一种列式非线性运算符,它增加了小的和大的转换概率之间的对比,并将列数相加归1。MCL扩张步骤的k次矩阵乘法导致了时间复杂性()
根据观察(van Dongen,2000),只有前几次迭代在密集矩阵上运行-当使用强膨胀操作时,在后面的步骤中,矩阵往往是稀疏的。作者进一步讨论了仅保留每个列中一些最大记录的修剪方案,这可以带来极大优化的可能性。但最激进的修剪方法是不考虑的:只保留最大的单一的元素。假设 maxrow(.)是一个操作符,在一个矩阵上执行行变换,那么就会将所有的元素变成0,只保留最大的元素,然后设成1。该算法表示为:
图4:Chinese Whispers矩阵转换过程。t是时间步骤,是n阶单位矩阵,是图G的相邻矩阵。
译者注:根据图中的矩阵变换,可以很清晰的重新体现前面提到的算法原理,以及类总是选择邻域的最大类。
通过maxrow(.)方法的应用,正好有n个非零元素。这使得时间复杂度取决于边数,。在一个全连接图的最坏情况下,这就是MCL的时间复杂度。
在CW算法过程中矩阵出现的一个问题是,它不一定会收敛于一个迭代不变的矩阵D,也可能是一个动荡的类矩阵。图5展示了一个示例。
图5:CW中一个处于震荡状态的未加权图矩阵
这是由于类矩阵的逐步更新引起的。恰恰相反的是,图1所示的CW算法在每个节点处理后不断的更新类矩阵D。(译者注:意思是这里的更新是同步而不是不间断的异步)。为了避免这种震荡,可以采取下列措施之一:
• 随机突变:在一定概率上,maxrow操作符随机将1放置在其他未使用的类中。
• 类保持:在一定概率上,将行的元素从拷贝到。
• 不间断更新:(像2.1小节所描述)
以上措施中,当收敛到同样的极限,不间断更新的策略收敛速度最快,因为会使得在早期的迭代中突出的类传播得更快。
3. 图合成的试验
由于CW算法的非线性特征,使得对它的分析变得困难。运行时的复杂性使得无法直接优化大多数在全图进行的聚类方法(Sima and Schaeffer ,2005)。所以我们展示图合成试验来得到算法的能力。所有的试验都由下图1所示体现。以下图合成试验,如果没有特殊说明,都限定为非加权图。
3.1 二分类集合
聚类算法应该将密集区保持在一起,同时分离稀疏连接区域。最高的密集度体现在n个节点的子图中出现的全连接。我们定义一个n-二分类集合作为两个n-类 的图,每个节点都刚好只有一条边指向它所不同的类别。
图5 和 6分别是当n=4,10时的情况。
图6: 10-二分类图集
我们很期望有一个聚类的算法来分割成两个小集团。然而当我们使用未加权的图时,CW算法只剩下两个选择:生成两个类别或者将所有节点划分成一个类别。这在很大的程度上取决于早期迭代时的随机选择-如果同一个类被分配给两个组中的多个节点,则最终会覆盖整个图形。图7说明了不同的n值下,稳定在2分类集群中的概率:
图7:在 n-bipartite cliques 中获得两个稳定簇的百分比
显然CW算法的结果有不确定性。在4-bipartite 时只有一半的概率可以实现分离。然而,这种问题在小的图形中虽然是无法忽略的,但在图7所示的更大图形中不再存在。
3.2 小世界图
在大量自然系统中采用的结构都是small-world(SW)图。由于篇幅有限,不作深入讨论,可见(Watts 1999)。这里,我们在语言数据上都采用SW图。在(Ferrer-i-Cancho and Sole,2001),试验部分出现的图也具有小世界的性质,即在任意节点具有高聚集系数和短的平均路径长度。Steyvers 和 Tenenbaum(2005)表明,关联网络和语义资源都是无标注的SW图:它们的等级分布遵循指数规律。一个无标度的SW图,生成的一个模型是不定向生成的:我们从一小部分完全连接的节点开始,当增加一个新的节点时,根据它的级别按照一定的概率来选择一个已经存在的节点v。这个新的节点在v节点的附近位置被M个节点连接。生成的模型由节点数量n和网络的平均连通性参数化,将n用2M处理。
我们假设我们处理的自然系统可以用小世界图来表示。如果两个或两个以上的系统互相干扰,它们的图通过合并一些节点来连接,保留它们的边。一个图形聚类的算法应该在它的前面部分分割出结果图,至少没有太多节点被合并的话。
我们进行了试验测试CW算法在SW图形矩阵上的表现:生成各种大小的图形,将它们在不同的程度上合并且测量了与CW算法聚类导致的原始结构重建的部分的数量。当用Steyvers-Tenenbaum 模型生成SW图时,用较小的图的一部分节点与较大的图的节点进行合并,我们修正了M到10和变化的n和合并率r。
图8:SW图根据合并率r生成两类结果的概率
图8 总结了300,3000和30000等大小的节点数和300和30000个节点的合并结果。
分离两个合并率r越高的图形越困难并不让人意外,可以看出,合并图形的大小和它们的比例对结果的影响并不是很大,即使大小差别很大,CW算法也能够识别不同的聚类-甚至在扭曲的混合中表现更佳。当合并率在20% - 30%时,仍然有超过50%的概率能区分出来,并且可以在CW的迭代平均运行几次的情况下就能区分。
3.3 速度问题
比较确切的说,该算法并不收敛,因此设置一个停止标准或者迭代次数是很有必要的。为了表明在几乎收敛之前,只有很少的迭代是需要的,我们在第50次的迭代聚类和早期迭代聚类之间测量了标准化的交互信息。这是在两个未加权的节点数分别为1000(1K)和10000(10K)的SW图和一个M=5加权了7种网络的共现图上进行的,共现图具有22805个节点和232875条边。表1表明了对于未加权图,在仅仅20-30次迭代之后的变化是很小的。在40-50次迭代,标准化的MI值不再提高。加权图的收敛速度要快得多因为在仅仅6次迭代之后就达到了稳定的状态。
4. 自然语言处理实践
在这部分,给出了一些由自然语言数据生成的图形的实验结果。首先,我们定义一个共视图的概念,在4.1和4.3小节应用:如果两个词汇共同出现在文本的一个特定的单元中,比如一个句子,则为共视。用重要性衡量它们的共同出现是有意义的还是随机的。在这种情况下,我们使用(Dunning 1993)描述的对数似然测量方法。我们将词汇看做图中的节点。两个词汇之间的边的权值被设定成它们共同出现的意义值,如果这个意义值超过了某个阈值的话。在实验中,我们从15开始使用意义值。用至少一条边包含的全部词汇和这些边就被称之为共视图。
通常,CW算法应用在真实的图形上产生大量的聚类,其中大多数聚类都很小。在大多数应用中,最好定义一个最小的聚类大小或者类似的东西。
4.1 语言分离
本节将简要回顾(Biemann and Teresniak,2005)的结果,这就是CW算法第一次被提及地方。任务是基于句子中的标记,分离不同语言的语料库。
多种语言的语料库共现图类似于SW图合成:每种语言组成一个分离的共视图,在不止一种语言中使用过的词汇是连接几个图的共有成员。通过CW分割,图被分成单个语言的部分。在基于单词的语言识别上这些部分被用作词汇清单。(Biemann and Teresniak,2005)报告几乎完美的表现,跟两种语言的高度倾斜混合一样,将7种语言的混合实现分离。
在这个过程中,语言上比较模糊不清的词只分配给一种语言,由于任务的高度冗余并不影响表现。然而,或许可以使用软分区来获得每个单词的语言分布情况。
4.2 获得单词种类
在词汇种类获取上,我们使用不同的图:邻近共现的二阶图。为了设定图形,根据与他们直接相邻出现的词汇进行一种共现计算,来产生有效的词对。这可以看做一个双边图,图9 a给出了一个简单示例。注意,如果两边都出现了相似的单词,它们形成了两个不同的节点。
这张图通过比较两个词汇的左右两边共同出现的词汇的数量来转换成二阶图。两个单词之间的相似度是左右共同出现词汇的总和。(译者注:比如一遍文章两句话:我吃饭,我吃面,那么饭和面的相似度就是1,其他词汇相似都是0。结构图如下:
Left rigt
我 吃
吃 饭
面)
图9b 显示了由图9a中的双边图转换的二阶图和经过CW算法划分的结果。类别模糊词drink(drink the drink) 连接了类别的边缘。这里的假设是,与许多词类相接的词语,通常用相同的词性来观察,并在二阶图获得更高的权重。(译者注:比如drink如果是动词,就划分在同词性的类别),在图9,得到的三个类别对应于不同的词性。
图9:双边共现图 a和CW聚类的二阶图b
为了在大规模测试,我们计算了英国国家语料库(BNC)的二阶相似图,不包括最常见的2000个词,当词汇之间的相似度至少为4,才画出权重边。在BNC的每个单词中包含最频繁的标签的词汇都进行了核对检查,最大的类别如表2所示。
表2:二阶图的CW划分得到的最大的类别
CW总共生成了128个类别,其中26种数量超过了100。聚类纯度的加权平均值(按类别大小划分的主要标记数)为88.8%,与Schutze(1995)所报告的有关任务的word类型相比,精确度超过了53%。如何使用这种词群来提高POS-taggers的准确性在(Ushioda,1996)有所提及。
4.3 词感分类
词义感应(WSI)的任务是找到一个词汇的不同含义。词义的数量预先是不知道的,因此只能由一些方法确定。类似于(Dorow and Widdows,2003)提出的方法,我们构造一个词汇图。在此,单词之间的边由在枚举中共同出现的同反义词汇所绘画,生成我们使用的共现图。Dorow和Widdows为目标单词w,通过取出w周围的一个子图(不含w)生成一个图形,并用MCL进行聚类。我们用CW代替MCL。一个聚类就代表w的一个词义。
为了判断结果,采用(Bordag,2006)的方法:为了对词义归类进行评价,将包含不同词语相邻部分的两个子图合并。该算法将合并后的图形分离成之前部分的能力可以用一种无监督的方式测量。Bordag定义了4种方法:
• 恢复精度(rP):找到的词义与标准词义的相似性
• 恢复回测(rR):被正确的分配到标准词义上的单词量
• 精度(P):正确发现歧义的分数
• 回测(R):正确发现语义的分数
我们使用相同的程序在相同的语料库(BNC)上计算,因此可以直接将我们的结果与Bordag使用了基于三层的图聚类方法的结果进行比较。之所以选择该方法是因为它适合未标记的数据:没有语言预处理,如标记或解析,仅测量消除歧义的机制而不是预处理步骤的质量。我们为他的测试1(不同词性)和测试3(不同频段)提供分数。数据来源于BNC的原始文本,对45个测试单词进行了评价。
表3:不同的词性(名词,动词,形容词)下的歧义消除率
表4:不同频段下的歧义消除率
结果(表3和4)表明两种算法都达到了相同的总体性能(P和R),在相同的输入下,Chinese Whispers聚类能够捕获WSI专有的图聚类算法相同的信息。在rP和rR的指标上,CW表现的稍微优越,表明CW会排除少量不集中的词汇,这在使用词群作为消除词义歧义的线索时是有利的。
5. 结论
Chinese Whispers 提供了一种高效的图形聚类算法,并且在理论和实践中得到了验证。图合成进行的试验表明,对于小的图形,由于其非确定性的性质,结果也充满不确定性。但是,虽然有大量的聚类方法可以处理小图形,而CW在于在合理的时间内解决大图形的能力。CW擅长用其他算法比较棘手的较大规模领域的应用。
在讨论的自然语言处理数据中,CW的性能较其他算法相似或更好。像CW一样的其他图形聚类算法,可以自己选择聚类的数量,并且可以处理大小不同的类群,尤其适用于自然语言处理的问题,这类问题的类分布经常是高度倾斜的,并且类的数量是无法预先知道的。
与分区关联,可以按照以下方式建立一个升级版本的CW:将规模相等的类的节点组成活跃节点。活跃节点之间的权重是根据组内对应节点之间的边数来设定的,形成扁平的层次结构。
进一步的试验中将CW应用于其他的图形,比如文档归类引用图,网页引用图和基维百科连接结构。
鸣谢
感谢Stefan Bordag 提供他的WSI评估框架。进一步感谢Sebastian Gottwald 和Rocco Gwizdziel 为独立平台的GUI提供CW实现,可以从作者的主页下载。
参考资料:
略