一种汉语新动词识别方法
技术领域
本发明涉及汉语自然语言处理、汉语动词自动识别领域,特别是涉及一种汉语新动词自动识别方法。
背景技术
随着互联网的发展,尤其是移动互联网的快速发展,网民在使用汉语时常常不满足于传统的汉语词典,而是自己发明一些新的词语。这给汉语方面的应用系统的开发带来新的挑战。
另一方面,几乎所有的汉语应用系统都涉及动词,即动词是语言应用中的关键。事实上,自从格文法(case grammar)提出以来,以动词为中心的各种方法和系统不断涌现。例如,我国的中文树库的研制、美国的UPenn树库的研制,均离不开动词的识别。同时,在汉语词典增补过程中,经常会手工收集新的词语,包括新的动词。如果有好的新词语收集工具,那么无疑会对汉语词典修订具有很大的益处。
张春霞等人已经对主动词(main verb)进行了研究,但是在现有的动词基础上展开的,不涉及新的动词识别问题。周丹等人也研究了从Web汉语语料中获取新的动词。但是,他们方法基于纯粹的统计计算,因此识别精度和召回率都不能支撑实际的应用。
发明内容
本发明所要解决的技术问题:通过对大语料处理和分析,快速而又准确地从中识别出新的动词,为汉语应用系统、汉语词典修订增补等任务提供重要支撑。其中的关键问题是从大量的可能的新动词中,通过严格的验证计算过程,挑选出准确性高的新动词。
为了解决以上问题,本发明采用了如下技术方案:
一种汉语新动词识别方法,其特征在于:包括以下步骤:
步骤A,对原始训练语料库CNCorpus进行分词,形成分词语料库TCNCorpus:
对CNCorpus中的每篇输入文本D进行分词,分词的工具采用开源的ICTCLAS系统;为了便于处理,分词后,将每篇文本按照句子标点符号进行分拆,形成不含有句子标点符号的简单句;因此,TCNCorpus每个句子的形式为Si=“W1/pos1W2/pos2…Wi/posi…Wn/posn”,其中每个Wi是一个汉语词、汉字、阿拉伯数字、英文单词或字母;posi是其对应的词性;
步骤B,识别分词语料库TCNCorpus中的可能的新动词,形成结果集合Tmp_Verb:
对TCNCorpus中的每条语句Si,对Si中的情形分别按照以下子步骤处理:
步骤B1:如果S
i中出现“W
i,1/pos
i,1W
i,2/v W
i,3/v W
i,4/pos
i,4”的子串,并且pos
i,1≠v,
即pos
i,4不是v、f、a或d任何之一,那么将“W
i,2/vW
i,3/v”放入Tmp_Verb中;所述“W
i,2/v W
i,3/v”,表示将来自于S
i的“W
i,2W
i,3”视为一个可能的新动词;
步骤B2:如果Si中出现“Wi,1/posi,1Wi,2/v Wi,3/posi,3”的子串,并且posi,1≠v,posi,3∈{f,a,d}, 即posi,3是f、a或者d之一,那么将“Wi,2/v Wi,3/posi,3”放入Tmp_Verb中;
步骤C:验证集合Tmp_Verb中的新动词,形成结果集合VerbResult。
步骤B输出的新动词集合Tmp_Verb中的动词具有一定的正确性,但是仍然需要进一步地验证。为了确保所获取的新动词是准确的,我们将种子词典规定为由多个二元对<词语,词性组>构成的资源,其中词性组是多个词性符号的序列,也即一个词语可以有多个词性;
为了便于下文描述,我们将Tmp_Verb中的元素统一地表示为“Wi,2/v Wi,3/posi,3”,其中 posi,3∈{v,f,a,d};这种形式概括步骤B1和步骤B2的输出结果;
验证的方式为:要确认“Wi,2/v Wi,3/posi,3”构成的新动词“Wi,2Wi,3”是一个正确的新动词,首先针对Wi,2进行确认,即在汉语种子词典中确认两个条件:(1)Wi,2是否具有动词的词性? (2)是否有以Wi,2做词头的词语;如果上述条件的答案是肯定的;再针对Wi,3采用类似的方式进行分析,即在汉语种子词典中确认两个条件:(1)Wi,3是否具有posi,3的词性?(2)是否有以Wi,3做词尾的词语;如果上述条件的答案是肯定的,将验证过的新动词放置在集合VerbResult中;
步骤D:输出新动词集合VerbResult。
所述的步骤C具体包括以下内容:
步骤C1:VerbResult={};
步骤C2:Tmp_Verb为空,则验证结束,并且调用模块D,输出VerbResult。否则,从Tmp_Verb中任意取出一个元素“Wi,2/v Wi,3/posi,3”;
步骤C3:W2Support=0;
步骤C4:如果在汉语种子词典中Wi,2具有动词的词性,那么W2Support=在汉语种子词典中存在以Wi,2做词头的词语的个数;
步骤C5:W3Support=0;
步骤C6:如果在汉语种子词典中Wi,3具有posi,3的词性,那么W3Support=在汉语种子词典中存在以Wi,3做词尾的词语的个数;
步骤C7:如果W2Support=0或者W3Support=0,则转步骤C2;
所述步骤C7“W2Support=0或者W3Support=0”表明,在汉语种子词典中没有找到“Wi,2Wi,3”是正确的新动词的证据,从而放弃“Wi,2Wi,3”;
步骤C8:计算
步骤C9:如果Score(Wi,2Wi,3)≥4,则将“Wi,2Wi,3”放入VerbResult中。
有益效果:
本发明提出了一种利用汉语种子词典中的词语的信息,对从汉语语料中获得新动词进行识别。汉语种子词典中的词语的信息包括词性、词头、词尾、统计信息等。在经过160GB的纯文本语料的测试验证后,本发明的系统获得了41012个新的汉语动词。经过准确性分析,结果显示96.9%的新动词为正确的汉语动词。因此,本发明的系统取得了优异的识别性能,解决了汉语新动词识别问题,并为其它的汉语应用系统的开发提供了基础。
附图说明
图1是一种汉语新动词识别系统和方法工作流程图。
图2是新动词识别系统和方法中的步骤B1的示例。
图3是新动词识别系统和方法中的步骤B2的示例之一。
图4是新动词识别系统和方法中的步骤B2的示例之二。
具体实施方式
为了能够更清楚的说明本发明,以下定义并解释如下的术语:
(1)ICTCLAS系统:一个免费的、开源的分词系统,本发明采用的是2012年版本的ICTCLAS。 ICTCLAS系统以文本为输入,输出为该文本的分词序列。ICTCLAS系统下载网址为: http://ictclas.nlpir.org。分词后,每个分词标有词性,其中a表示形容词、b表示区别词、 c表示连词、d表示副词、h表示前缀词、j表示简称词、k表示后缀词、m表示数词、n表示名词、 p表示介词、q表示量词、r表示代词、u表示助词、z表示状态词,等等。
(2)汉语种子词典:由一组人们日常生活使用的词语构成的词典。例如,《新华词典》、金山词霸就是很好的例子。为了便于下面的描述,我们将种子词典规定为由多个二元对< 词语,词性组>构成的资源,其中词性组是多个词性符号的序列。
例如,下面给出的例子可以视为汉语种子词典的一部分:
…
爱上v
创下v
窜v
窜犯v
窜改v
窜扰v
窜逃v
倒下v
登上v
端d v
端量v
端平v
端正v
端坐v
发红v
分红v
挂红v
红a
换上v
记下v
考上v
撂下v
上f v
下f v
写v
写入v
写生v
写实v
写作v
走红v
…
尽管汉语种子词典中的词语不全,但是其中的词语含有有用的信息,为准确地验证获得新的动词具有辅助作用。
(3)词头、词尾:对一个含有2个汉字(或2个以上汉字)的汉语词语(如“倒下”),该词的第一个字称为该词的词头,最后一个字称为该词的词尾。例如,“倒下”的词头和词尾分别为“倒”和“下”。
下面结合附图和具体实施方式对本发明作进一步详细地说明。一种汉语新动词识别系统和方法分为四个模块:
模块A:对原始训练语料库CNCorpus进行分词,形成分词语料库TCNCorpus。
模块B:识别分词语料库TCNCorpus中的可能的新动词,形成结果集合Tmp_Verb。
模块C:验证集合Tmp_Verb中的新动词,形成结果集合VerbResult。
模块D:输出新动词集合VerbResult。
下面详细解释各个模块的工作流程或方法。
模块A:对原始训练语料库CNCorpus进行分词,形成分词语料库TCNCorpus。
所述模块A对CNCorpus中的每篇输入文本D进行分词,分词的工具采用开源的ICTCLAS 系统。为了便于处理,分词后,将每篇文本按照句子标点符号(即句号、分号、逗号、问号、感叹号、省略号)进行分拆,形成不含有句子标点符号的简单句。因此,TCNCorpus每个句子的形式为Si=“W1/pos1W2/pos2…Wi/posi…Wn/posn”,其中每个Wi是一个汉语词、汉字、阿拉伯数字、英文单词或字母;posi是其对应的词性,posi可以是a(表示形容词)、b(表示区别词)、c(表示连词)、d(表示副词)、h(表示前缀词)、j(表示简称词)、m(表示数词)、n(表示名词)、p(表示介词)、q(表示量词)、r(表示代词)、u(表示助词)、 w(表示标点符号)、z(表示状态词)等。
例如,假设文本D中的内容为“我们大家共同努力,终于砸开欧洲市场。”,它是CNCorpus 中的一篇文本。经过模块A的处理,D被分为两个语句,它们的分词结果分别为:“我们/r大家/n共同/d努力/v”、“终于/d砸/v开/v欧洲/n市场/n”。这两条语句都不含句子标点符号。
模块B:识别分词语料库TCNCorpus中的可能的新动词,形成结果集合Tmp_Verb。
对TCNCorpus中的每条语句Si,对Si中的情形分别按照以下子步骤处理:
步骤B1:如果S
i中出现“W
i,1/pos
i,1W
i,2/v W
i,3/v W
i,4/pos
i,4”的子串,并且pos
i,1≠v,
(即pos
i,4不是v、f、a或d任何之一),那么将“W
i,2/v W
i,3/v”放入Tmp_Verb中。
所述“Wi,2/v Wi,3/v”,表示将来自于Si的“Wi,2Wi,3”视为一个可能的新动词,由模块C进行验证,以下子步骤类似。步骤B1产生的结果对应着图2。
如图2所示,例如,假设语句S
i内容为“仆人/n端/v上/v的/u咖啡/n”,“仆人”的词性n≠v,“咖啡”的词性为
“端上”又不属于词典中已知的动词,那么将“端/v上/v”放入Tmp_Verb中。
步骤B2:如果S
i中出现“W
i,1/pos
i,1W
i,2/v W
i,3/pos
i,3”的子串,并且pos
i,1≠v,
(即pos
i,3是f、a或者d之一),那么将“W
i,2/v W
i,3/pos
i,3”放入Tmp_Verb中。
步骤B2产生的结果对应着图3的例子1和图4的例子2。
如图3所示,例如,假设语句Si内容为“儿子/n写/v下/f”,“儿子”的词性为n≠v,“下”的词性属于f,a,d中的f,“写下”又不属于词典中已知的动词,那么将“写/v 下/f”放入Tmp_Verb中。
如图4所示,例如,假设语句Si内容为“在/p窜/v红/a”,“在”的词性为p≠,“红”的词性属于f,a,d中的a,“窜红”又不属于词典中已知的动词,那么将“窜/v红/a”放入Tmp_Verb中。
下面先给出四个具体的文本(采用空格将词分开,并且标注了它们的词性):
原始训练语料库CNCorpus的文本D1:“我们/r 大家/n 共同/d 努力/v,/w 终于/d砸/v 开/v 欧洲/n 市场/n。/w”
原始训练语料库CNCorpus的文本D2:“这些/r 韩国/n 明星/n 在/p 中国/n 很/d快/a 窜/v 红/a。/w”
原始训练语料库CNCorpus的文本D3:“仆人/n 端/v 上/v 的/u 咖啡/n或 /c 红/a 酒/n,/w 亦/d 是/v 自己/r 与/p 在座/v 的/u 女士/n 们/k 先/d 享用/v。/w”
原始训练语料库CNCorpus的文本D4:“二/n 儿子/n 北村/n 孝/n 紘/v 将 /p 自己/r 在/p 监狱/n 里/f 写/v 下/f 的/u 手记/n 卖/v 给/v 了/u 铃木智彦/n,/w 以/p《/w我们/r 一/m 家/q 都/d 是/v 死刑犯/n》/w为/p 题 /n 出版/v。/w”
例如,将步骤B1应用于D3、D4,可以获得“端/v 上/v”、“卖/v 给/v”作为一个新的动词;将步骤B2应用于D2和D4可以获得“窜/v 红/a”、“写/v 下/f”作为两个新的动词。
模块C:验证集合Tmp_Verb中的新动词,形成结果集合VerbResult。
模块B输出的新动词集合Tmp_Verb中的动词具有一定的正确性,但是仍然需要进一步地验证。为了确保所获取的新动词是准确的,本发明利用汉语种子词典的思路。汉语种子词典由一组人们日常生活使用的词语构成的词典。例如,目前流行的新华词典、金山词霸就是很好的例子。为了便于下面的描述,我们将种子词典规定为由多个二元对<词语,词性组>构成的资源,其中词性组是多个词性符号的序列,也即一个词语可以有多个词性。
为了便于下文描述,我们将Tmp_Verb中的元素统一地表示为“Wi,2/v Wi,3/posi,3”,其中 posi,3∈{v,f,a,d}。这种形式概括步骤B1和步骤B2的输出结果。
验证的基本思路是:要确认“Wi,2/v Wi,3/posi,3”构成的新动词“Wi,2Wi,3”是一个正确的新动词,首先针对Wi,2进行确认,即在汉语种子词典中确认两个条件:(1)Wi,2是否具有动词的词性?(2)是否有以Wi,2做词头的词语。如果上述条件的答案是肯定的,那么从词头角度看,“Wi,2Wi,3”是正确的新动词的可能性会增加。然后针对Wi,3采用类似的方式进行分析,即在汉语种子词典中确认两个条件:(1)Wi,3是否具有posi,3的词性?(2)是否有以Wi,3做词尾的词语。如果上述条件的答案是肯定的,那么从词尾角度看,“Wi,2Wi,3”是正确的新动词的可能性会增加。图2给出了验证由“端/v上/v”构成的新动词“端上”是正确的新动词的思路。图3给出了验证由“写/v下/f”构成的新动词“写下”是正确的新动词的思路。图4给出了验证由“窜/v红/a”构成的新动词“窜红”是正确的新动词的思路。
根据上述思路,下面给出具体的计算步骤。在下面步骤中,验证过的新动词将放置在集合VerbResult中。
步骤C1:VerbResult={}。
步骤C2:Tmp_Verb为空,则验证结束,并且调用模块D,输出VerbResult。否则,从Tmp_Verb中任意取出一个元素“Wi,2/v Wi,3/posi,3”。
步骤C3:W2Support=0。
步骤C4:如果在汉语种子词典中Wi,2具有动词的词性,那么W2Support=在汉语种子词典中存在以Wi,2做词头的词语的个数。
步骤C5:W3Support=0。
步骤C6:如果在汉语种子词典中Wi,3具有posi,3的词性,那么W3Support=在汉语种子词典中存在以Wi,3做词尾的词语的个数。
步骤C7:如果W2Support=0或者W3Support=0,则转步骤C2。
所述步骤C7“W2Support=0或者W3Support=0”表明,在汉语种子词典中没有找到“Wi,2Wi,3”是正确的新动词的证据,从而放弃“Wi,2Wi,3”。
步骤C8:计算
步骤C9:如果Score(Wi,2Wi,3)≥4,则将“Wi,2Wi,3”放入VerbResult中。
步骤D:输出新动词集合VerbResult。
实验效果
在经过160GB的纯文本语料的测试验证后,本发明的系统获得了41012个新的汉语动词。经过准确性分析,结果显示96.9%的新动词为正确的汉语动词。因此,本发明的系统取得了优异的识别性能,解决了汉语新动词识别问题,并为其它的汉语应用系统的开发提供了基础。