汉语功能块自动分析

时间:2022-08-05 03:34:01

汉语功能块自动分析

摘 要:汉语功能块描述了句子的基本骨架,是联结句法结构和语义描述的重要桥梁。本文提出了两种不同功能块分析模型:边界识别模型和序列标记模型,并使用不同的机器学习方法进行了计算模拟。通过两种模型分析结果的有机融合,充分利用了两者分析结果的互补性,对汉语句子的主谓宾状四个典型功能块的自动识别性能达到了80%以上。实验结果显示,基于局部词汇语境机器学习算法可以从不同侧面准确识别出大部分功能块,句子中复杂从句和多动词连用结构等是主要的识别难点。

关键词:计算机应用;中文信息处理;汉语功能块;边界识别模型;序列标记模型;模型融合

中图分类号:TP391 文献标识码:A

1 引言

句法分析作为自然语言处理的基础技术,被广泛应用于信息抽取、信息过滤以及信息检索等研究领域。但由于自然语言所具有复杂性和不确定性,目前的完全句法分析器还无法达到令人满意的效果。因此目前句法分析技术的一个重要发展趋势就是避开现实存在的巨大障碍,由完全句法分析转向部分句法分析(Partial Parsing)的研究。

完全句法分析着眼于分析整个句子的句法信息,揭示句子中各个成分之间的完整句法关系。而部分句法分析则采用“分而治之”的策略,从句子的局部着手,降低分析的难度。基于语块(Chunk)的句法分析属于部分句法分析,其目标是将具有语法关联的局部语境词语组合形成一个语块,从而为完全句法分析提供一个有效的中间结果。语块的概念最初源自认知心理学,后被引入计算语言学中,近年来得到广泛的关注和研究。从最初的基本名词短语识别,到一般语块识别、小句识别以及近期比较流行的浅层语义角色标注研究,其研究内容和深度也在不断扩展。

汉语功能块概念的提出和相应的大规模语块库的开发为汉语部分分析研究提供了一个新的切入点。它一方面禀承了传统语块分析的问题定义相对简单的优点,同时又因为其描述了汉语句子中的各个主要功能成分,使得它成为汉语句法结构和语义角色链接的重要桥梁。本文通过对功能块描述特点的深入分析,提出了两种不同分析模型:边界识别模型和序列标记模型,并使用不同的机器学习方法进行了计算模拟。通过两种模型分析结果的有机融合,充分利用了两者分析结果的互补性,对汉语句子的主谓宾状四个典型功能块的自动识别取得了较好的实验结果。

2 问题分析

汉语功能块是定义在句子层面上的功能性成分,主要包括主语、谓语、宾语、兼语、状语和补语块等。它们体现了汉语句子的基本骨架。汉语功能块定义具有如下性质:1)穷尽性:句子中的每个实义词都应无遗漏地进入某个功能块;2)线性性:标注完成的功能块形成一个线性序列,即所有功能块处于同一层次,既不交叉也不存在包含关系。

这种自顶向下的功能块定义方式,可以比较方便地建立起句法层面的功能描述关系与语义层面的谓词论元关系的内在联系。但同英语常用的Abney语块定义相比,汉语的功能块粒度更大,组成情况也更为复杂。因此自动识别的难度也更大。下面对本文主要使用的新闻类语块库的相关分布数据进行初步的定量分析。

实验语料库由185个新闻文件组成,总词数约20万。每个文件均由人工标注出功能块的类别和边界信息。由于新闻语料具有用语规范的特点,和口语相比,通常句式较长,结构也较复杂,具有一定的代表性,因此,我们认为选用新闻语料作为后续算法训练和测试的数据,具有很强的代表性,能够反映出问题的复杂性和一般语料处理过程中所具有的普

表1显示了目前定义的8个功能块的基本分布数据。其中主谓宾状块分别占了块总数的97%和覆盖词语总数的98%,是我们研究的重点。从平均长度来看,O、S和D块最为复杂,是我们处理的主要难点。表2进一步列出了O、S和D块的长度分布数据。从中可以看到,长度超过3个单词的S块占了S块总数的26.03 %,其中长度超过5个单词的占13.08%。这些S块通常都由一些包含复杂定语从句的名词短语和完整的主语从句构成,它们会给自动分析过程带来很大的困难。在O块中,大约有25.72%的O块长度超过了5个单词,有44.84%的O块包含了3个以上的单词。这些O块往往包含一个结构相对完整的宾语子句,它们的构成更加复杂,识别起来也更为困难。虽然大多数的D块长度都小于5个单词,但由于许多D块可能由一些复杂的介词短语和方位结构构成,对它们进行准确识别的难度一点也不亚于复杂的S块和O块。

3 模型设计

3.1 边界识别模型

根据功能块的两条基本性质,可以把汉语功能块的分析问题看作是对一个句子进行若干次“切分”的过程,切分出的每一段就是一个完整的功能块,带有相应的功能块类型的标记。按照这个思路,可以将汉语功能块分析的问题转化为一个边界识别问题,形式化描述如下:

令S=表示输入的句子,其中W=w1w2w3…wn表示输入的词语序列,T=t1t2 t3…tn为对应的词性标记序列。边界识别模型输出为一个功能块边界序列O=。其中,B=b1b2b3…bm表示输出的功能块边界类型序列,每个bi为二元组(C1,C2>,C1,C2∈{S,P,O,J,D,C,T,Y},C1表示该边界前的一个功能块的类型,C2表示该边界后的一个功能块的类型;P=p1p2p3…pm则表示与之对应的位置信息。为了保证合法的功能块输出,该边界序列应满足下列一致性条件:对于任意的1≤i≤m-1,bi=,bi+1=,有C2=C3。下面给出一个具体处理实例,输入句子:

核电/n1是/v2一/m3种/q4安全/a5、/、6清洁/a7、/、8经济/a9的/u10能源/n11。/。 (1)

其中总共包含12个词项(每个标点符号都作为一个词项),共有11个可能出现功能块边界的位置(使用数字下标标出)。如果功能块分析器能正确地对句子S进行分析,则在位置1和位置2处会分别出现一个SP和PO功能块边界。分析结果可以表 示如下:

核电/n是/v一/m种/q安全/a、/、清洁/a、/、经济/a的/u能源/n。/。(2)

据此,可以得到如下的功能块标注输出结果:[S核电/n][P是/v][O一/m种/q安全/a、/、清洁/a、/、经济/a的/u能源/n]。/。(3)

具体实现可考虑采用分治思想,将原有的复杂识别模型拆分为若干个简单二元分类问题,并逐一解决,最后加以综合。考虑到主谓宾块对句子意义描述的重要作用,本文主要对SP和PO边界识别子问题进行了深入研究。通过大量实验分析,从Naive Bayes模型、决策树模型和SVM中选择了最终性能最好的SVM模型作为后续处理的基础模型。

3.2 序列标记模型

功能块分析可以转化为序列标注问题,通过为文本句子中的每个词语标注一个合适的类别标记,实现功能块的自动分析。标记集中的每个标记均由两部分构成,第一部分为词语在功能块中的位置,如功能块的起始位置用B表示,内部位置用I表示;第二部分为功能块的类型标记,目前我们只考虑P、D、O和S这4类功能标记,这样可以尽量减小标记集的大小,从而减小算法的计算复杂度。这两部分标记字母之间使用“一”来分隔。对于不属于这几类功能块的单词,我们统一使用O来标记。这样,就得到如下含有9个元素的标记集:T={B-P,I-P,B-D,I-D,B-O,I-O,B-S,I―S,O)。

具体计算问题描述如下:设输入的序列为X=x1x2x3…xn,其中xi为一个词语,并带有相应的词性标记,如xi一核电/n,相应的输出序列为Y=y1y2y3…yn,其中yi∈T。则对一个输入序列X进行标注的过程就是为其寻找一个最优的输出标记序列Y的过程。根据序列Y就可以方便地还原出相应的功能块标注结果来。例如:针对上面的输入句子(1),如果能得到以下的序列标记结果:“核电/nB-S是/v B-S一/m B-O种/q I-O安全/a I-O、/、I-O清洁/aI-O、/、I-O经济/a I-O的/u I-O。能源/O。/。O”,我们就可以还原出上面同样的标注结果(3)。

考虑到CRF(条件随机场)模型在各类序列标注问题,包括词类标注、专名识别、语义角色标注中都显示出了很好的处理效果,本文主要使用了CRF模型来实现功能块分析的序列标注处理。

4 实验结果

我们从实验语料库中随机抽取18个文件作为测试集,其余167个文件作为训练集。两者的词语总数分别为27 888和179 516,分布比例约为1:9。在这个同样的数据集上,我们分别使用SVM模型和CRF算法进行了边界识别模型和序列标记模型的计算模拟。

4.1 边界识别模型实验结果

在SVM算法的实验中,我们采用Cornell大学的Thorsten Joachims开发的SVMlight软件包。针对每个待识别边界位置,选择不同长度的观察窗口,形成了以下4个特征模板:T1:w-2w-1wlw2t-2t-Itlt2;T2:w-3w-2w-1wlw2w3t-3t-2t-Itlt2t3;T3:w-4w-3w-2w-1wlw2w3w4t-4t-3t-2t-1tlt2t3t4;T4:w-5w-4w-3w-2w-1wlw2w3w4w5t-5t-4t-3t-2t-1tlt2t3t4t5。

我们使用功能块边界的准确率、召回率和Fβ=1值来评价各个实验结果的优劣。定义如下:设Cp表示算法所识别出的功能块边界总数,Cc为识别出的正确的功能块边界总数,Co为测试集中功能块边界的数目,则相应的准确率、召回率和Fβ=1值可以定义如下:准确率P=Cc/Cp;召回率R=Cc/Co;Fβ=1=2×P×R/(P+R)。实验结果表明,在T4模板,两者的识别结果达到最佳:对SP边界,P=86.15%,R=68.89%,F=75.56%;对PO边界,P=78.74%,R=86.12%,F=82.26%。

SP边界的识别结果和PO边界的识别结果存在着很大的不同,SP边界的识别结果是准确率高于召回率,而PO边界的识别结果则是召回率高于准确率。二者之间的不同充分反映了两类问题的差异性,SP边界可能往往比较模糊,算法在识别时,倾向于只识别那些比较明显的边界,而PO边界则由于宾语块较为复杂,容易出现宾语块被切碎的情况,而使得准确率低于召回率。

4.2 序列标记模型实验结果

我们使用Taku Kudo开发的开源CRF++软件包ver0.42,进行大量特征选择实验,最终选择以下特征组合:1)左右各两个词的词语和词类信息;2)功能标记转移特征;3)相邻2个词语和词类的组合特征;4)相邻3个词语的词类组合特征。表3显示了4个主要功能块的性能分析结果。与上面的SVM结果评价方式不同,这里的评价对象是各个功能标记词语。定义如下:设置算法标注出的功能块标记总数为Cp,其中正确的标记数目为Cc,在测试集中的C功能块的标记总数为Co。而准确率、召回率和Fβ=1值的计算方法则与SVM模型相同。

5 模型融合与汇总处理

边界识别模型和序列标记模型分别从两个不同角度进行了特定功能块的自动分析。可以预期,当不同的模型在识别结果上达成一致时,所得到的结果的准确率会比原有的单独模型更为可靠。并且通过两者实验结果的融合分析,可以使我们对功能块分析的主要难点有更全面的认识。

5.1 两个模型识别一致情况的分析

首先,我们将CRF的标记序列转换为SP和PO边界标注结果,并对2类模型识别一致的结果进行性能评价,得到了表4的实验数据。从中可以看出,2类模型汇总结果的准确率有了较大提高,但其代价是整体召回率下降。因此,如果需要高精度的输出结果,使用2类模型的融合汇总结果是比较有效的。从平均结果来看,CRF算法综合性能最优,如果对输出结果的精度稍低,也可以考虑直接采用CRF算法输出的结果。其中我们最关心的两者一致结果中的分析错误,对SP和PO边界,分别占 了6%和13%。它们是功能块自动分析的主要难点,对此的深入分析可以为后续的算法改进和完善提供重要的客观参考。

为了能够对各种错误类型的分布有一个初步的了解,我们从开放测试结果中随机抽取出了133个一致结果错误,通过人工分类分析,总结了以下常见错误类型:

(1)复杂宾语块分析错误。这些宾语往往具有完整的句子结构,如果单独将宾语拆分出来分析,则算法的识别结果往往是正确的。但整体上的复杂宾语块却很难识别出来。如:

在上述的第二个例句中,谓语“记得”后面跟随的宾语成分长达14个单词,此时CRF的标记结果倾向于以后面的宾语成分作为句子的主干,结果误将动词“记得”划入了S块中,而SVM的边界识别结果,则根据局部信息,准确地对P块和O块进行了切分,但是由于局部信息的局限性,同时也将O块误分为多个成分。

如果将“的”字前的成分单独抽取出来,我们可以看到算法的效果还是很不错的,但当我们需要语义信息,或是需要对文本内容的深入理解时,目前的机器学习算法也就无能为力了。这类错误也是所有错误中最难用机器来解决的。

还有一类复杂“的”字结构,将动词短语名词化,这类错误也很难以处理,例如:

(3)多个动词连用结构中的准确功能关系判定错误。例如:

由于目前的识别模型没有使用更复杂的词汇语义信息,因此对上面的各个相邻动词之间的功能关系很难准确识别。

(4)DP结构被误识别为SP结构,也是一致错误中比较难以处理的问题。例如:

在状语块中常常会出现一些名词短语,如时间名词短语,方位名词短语等,当这些短语后接动词时,通常形成主谓结构,但少数情况也可以确定为状语成分。这些情况的准确判定需要更多的语言学知识。

(5)由于补语块、兼语块等类型的功能块未列入我们的研究范围,因此,有时补语块、兼语块等会被误识别为宾语块。例如:

(6)由于对一些结构的不同理解造成的不一致情况。例如:

在上述的2个例句中,人工标注语料中的谓语成分粒度较粗,自动识别算法在此基础上做进一步的切分是可以接受的。

表5的统计数据显示,1、2、3类错误所占的比例达到78%,是目前算法的主要处理难点。其中第1类错误往往是由于功能块本身过长,算法在缺乏语义知识的情况下,经常将一个完整的功能块进行分断处理。第2类错误则由于缺乏对功能块中复杂定语的准确理解而误将它们拆散为多个功能块。第3类错误反映了汉语缺乏形态变化的多个动词连用情况对自动识别算法的影响。要解决这些问题,一方面需要引入更多的词汇语义知识,另一方面,对目前的功能块标注体系进行重新设计,针对一些复杂功能块描述进行分层次的内容拆分,形成粒度较小和功能特征更为明确的基本功能块,应该也是一条可行的改进思路。

另外,一些可以不同理解的不一致情况6也占了8%左右,再加上判断比较模糊的情况4和目前分析器没有处理的情况5,表明对目前的自动分析器的性能评价结果存在一定程度的低估现象。有关内容应在后续处理中加以注意。

5.2 两个模型识别不一致情况的处理

通过上面的实例分析,我们发现两种不同的模型在处理同一个句子时,存在一定的互补性,即在某些条件下一种模型的结果表现较好,而在其他的情况下,另一种模型的表现更佳。如果能够发掘出这些规律,就可以在两个模型出现不一致结果时,采用合理的策略进行修正,进一步提高最终的识别结果。

从这个思路出发,我们手工总结了6条规则,使用SVM输出对CRF结果进行修正,使整体的FMeasure值提高了大约0.37个百分点。虽然改进不大,但其性能提高幅度已接近或超过纯粹通过增加特征而产生的统计模型性能提高效果,显示出统计和规则相结合方法的处理优势。目前,人工制定的规则数目还比较少,覆盖的范围也不是很广,如果能继续增加一些合理的排歧规则,或者利用词汇关联对信息进行自动选择评价,相信会进一步改善最终的输出结果。

6 完整功能块识别结果的分析评价

通过以上的模型融合和自动修正处理,可以将最终的CRF标注结果转换成完整功能块标注,并进行以下针对完整功能块的性能评价:令Cp为识别出的功能块的数目,Cc为识别正确(功能块类型和左右边界全部正确)的功能块数目,Co为测试集中的功能块数目。

表6的实验结果显示,目前的分析器在功能块层面上基本可以达到80%左右的准确率和召回率。其中宾语块的识别性能较差是与它的本身复杂度密切相关的。但D、P块的识别结果偏低,却出乎我们的预期。通过对处理结果的深入分析,我们发现目前的人工标注语料对D、P边界处理存在着许多不一致现象,特别是多个副词状语与谓语动词连用情况:可能把多个副词标注为一个D块,也可能把它们分别标注为多个D块;可能把谓语动词单独标注为一个P块,也可能把它们与左边的一个或多个副词合并标注为一个P块。这种情况对人的理解没有问题,但通过统计模型学习并识别处理后,就会产生许多自动识别的D、P块边界与人工标注结果不一致现象,从而导致相关性能指标的下降。而这些情况,是不应该判定为自动分析错误的。通过考虑以上语言表述模糊情况重新进行D、P块的性能评价,我们得到了以下新的F-measure值:D-86.64%,P-86.58%。它们比较客观地反映了目前自动分析器的真实处理能力。

目前国内外在功能块层面上进行的相关研究不是很多。CoNLL-2001曾提出一个英语子句识别任务,其目标是自动识别英语句子中的所有嵌套子句。考虑到这个问题的复杂性,他们把它拆分成三项子任务:子句起点识别、终点识别和完整嵌套结构识别。其中最困难的第三项子任务基本上与我们定义的序列标记问题难度相当。当时最好系统的开放测试F1值为78.63%,后来,通过改进算法,将分析性能提高到了80.44%。使用基于存储学习(MBL)方法,在语块识别结果基础上自动构建德语和英语的部分句法树,完成相应功能块的自动识别,整体识别准确率分别达到了89.73%和90.04%,召回率分别为61.45%和59.79%。德爱礼在我们目前的功能块标注语料库上,采用判定树模型进行了各个功能块的边界自动识别研究,通过使用从北大语法信息词典中提取的各种特征进行参数训练,最好F1值达到了75%左右。这些研究从不同侧面证明了功能块自动分析问题的处理难度。

7 结 论

自顶向下的复杂功能块设计为汉语部分分析研究提出了新的挑战。本文通过对功能块描述特点的深入分析,提出了两种不同分析模型:边界识别模型和序列标记模型,并使用不同的机器学习方法进行了计算模拟。实验结果显示:基于局部词汇语境的SVM模型和CRF算法可以从不同侧面准确识别出大部分功能块,句子中复杂定语从句、主宾语从句和多动词连用结构等是主要的识别难点。如何应用更丰富的词汇语义知识,并重新设计分层次的功能块描述体系,进一步提高目前自动识别器的处理性能,将是我们下阶段的主要研究重点。

上一篇:强化园林专业学生实践能力的教学模式探索 下一篇:森林资源保护与游憩专业实践教学体系的建构