发明内容
本发明所要解决的技术问题:针对以上问题本发明提供了一种自动的汉字字形认知相似度的确定方法。
本发明是通过以下技术方案而实现的:一种汉字字形认知相似度确定方法,其特征在于:包括以下步骤:
步骤1.汉字的部件拆分
汉字部件拆分数据库是用于将汉字拆分为树状的层次结构,称为汉字的部件拆分树;
在本发明中,每个汉字部件的组成方式包括半包围、独体、品字、全包围、上下、上中下、左右、左中右共8种结构;汉字基本笔画包括36种,如表1所示;
表1汉字部件数据库中的笔画集合(示例中数字表示示例汉字的第几画是前面的笔画)
ID |
笔画 |
示例 |
ID |
笔画 |
示例 |
ID |
笔画 |
示例 |
ID |
笔画 |
示例 |
1 |
占 |
之1 |
10 |
横竖右勾 |
讠2 |
19 |
横左撇 |
又1 |
28 |
竖横竖 |
鼎6 |
2 |
反点 |
火3 |
11 |
横竖左勾 |
万3 |
20 |
撇 |
夊1 |
29 |
竖横竖左勾 |
马2 |
3 |
横 |
十1 |
12 |
横竖捺 |
辶2 |
21 |
撇横 |
纟1 |
30 |
竖撇 |
厂2 |
4 |
横勾 |
买1 |
13 |
横右弯勾 |
风2 |
22 |
撇竖 |
臿3 |
31 |
竖右勾 |
民3 |
5 |
横撇 |
夭1 |
14 |
横折 |
今4 |
23 |
撇捺 |
巛1 |
32 |
竖左勾 |
于3 |
6 |
横竖 |
马1 |
15 |
横折横撇 |
及2 |
24 |
竖 |
十2 |
33 |
提 |
刁2 |
7 |
横竖横 |
凸2 |
16 |
横折横上勾 |
乙1 |
25 |
竖横 |
山1 |
34 |
右弯勾 |
戈2 |
8 |
横竖横上勾 |
九1 |
17 |
横折弯勾 |
阝1 |
26 |
竖横撇 |
专3 |
35 |
左弯勾 |
犭2 |
9 |
横竖横竖左勾 |
乃2 |
18 |
横折捺 |
之2 |
27 |
竖横上勾 |
儿2 |
36 |
捺 |
夊3 |
步骤2.两棵部件分析树的对齐操作
基本思路是,首先建立能够同时覆盖两棵树的超树,然后将两棵树分别嵌入这棵超树,没有填充的节点作为虚拟的空部件,得到相同结构的两颗树;填充后形成的树可能有多个,选择填充后与参照的拆分树最相似的填充方式;
步骤3.部件分析树中叶子节点间的相似度计算
每个叶子节点都是一个原子部件,是一个线性笔画序列;叶子节点间的相似度,利用带权重的编辑距离来计算;编辑距离是计算两个序列相似度的一种方式,可以度量一个序列通过增加、删除、替换操作变成另一个序列的复杂程度;
在汉字的部件分析树中,两个叶子节点即汉字原子部件u1,u2的相似度如下:
其中,WED(u1,u2)为部件u1,u2的笔画编辑距离,WED(u1,NULL)为u1与一个不带任何笔画的虚拟空部件的编辑距离;
步骤4.部件分析树中中间节点间相似度计算
对于两棵结构树,在结构对齐后,可以自底向上计算各个中间节点的相似度;中间节点的相似度,取决于两方面,一是其对应子树间的相似度,二是子树组成中间节点的结构;对于中间节点和根节点node,记其子树节点为集合C(node),子树部件组的组合结构为S(node);给定node1,node2,两者的基本形似度为两者的综合:
显然,这个公式是递归的,递归的终止条件是当c1,c2为原子部件时,此时BasicSim(c1,c2)=AtomSim(c1,c2),将利用公式(1)进行计算;公式中,组合结构间的相似度函数StruSim的取值由实验得出,如表2给出;
表2部件组合结构间的相似度权重表
步骤5.汉字认知显著度因素计算
前面已经给出了两个汉字的基本形似度;若两个汉字在结构、笔画上越一致,那么两者的基本形似度越高;下面利用汉字的频度信息以度量汉字的认知显著度,给出一种计算汉字认知形似度的方法;
认知相似度函数CogSim考虑了两方面因素;首先是汉字的基本形似度;其次是汉字的认知显著度,用汉字在Web中的字频来体现,其中f(c1)为汉字c1在Web中的字频,f(c2)为汉字c2在Web中的字频,通过Google搜索引擎获得;特殊地,若c1=c2,则CogSim(c1,c2)=1;
步骤6.基于认知形似度计算和词典的形似别字纠错
当人工标注的含别字句子为“W1W2…wk-1(wk->wk’)Wk+1…wn”,n为句子中的词个数,其中wk,1≤k≤n,为一个词,它包含了别字,其正确的词应当是wk’;显然,纠正了wk中别字后的词wk’,与wk具有相同的字数;记wk=c1c2…cm,wk’=c1’c2’…cm’,假设其中别字为cr,其在wk’中的正字为cr’,其中cr,1≤r≤m,m为wk中的字数,不失一般性;设别字cr的认知相似度大于0.6的正字相似字,假设有t个,t为自然数,按相似度由高到低包括simc1>simc2>…>simct;按相似度由高到低逐一将这些正字替换掉别字cr,记其中正字ci替换cr后的词为wk=c1c2…cr-1CiCr+l…cm,并检查wk是否在词典中,若在,则表示该正字可用于纠错,其中1≤i≤t;
找到第1个可纠错的字后,若该字是人工标注的正字,则表示top-1纠错成功;否则,表示top-1纠错失败,继续找下一个可用于纠错的字,并检查是否top-2纠错成功或失败,以此类推;若检查完所有的正字后均没有找到可纠错的字,那么表示对该别字无法纠错;显然,若top-b纠错成功,那么top-(b+1)也纠错成功,1≤b≤t-1;
形似别字纠错方法基于一个汉语词典;为了保证所有正确纠错后的词均能在该词典中找到,本方法用其筛选了测试集,只保留了人工纠错后的词存在于该词典中的句子;
本方法借鉴信息检索中的评价指标,采取的评测标准包括top-m纠错的准确率和召回率,具体定义如下:
·top-b纠错准确率:pb=(top-b纠错成功的句子)/(top-b可纠错的句子数)
·top-b纠错召回率:rb=(top-b纠错成功的句子)/(测试集中所有句子数)
Pb为在系统完成纠错的所有句子中正确的比例,rb表示所有句子中成功纠错的比例,两者是互相制约的;在不同的参数下,同一个别字的两个正字相似度的相对高低可能是不同的;若在计算相似度的方法中,确定参数限制候选相似字较少,那么相对来说这些相似字都较准确,这样可提高准确率pb,但会降低召回率rb;反之,若扩大候选相似度,那么会提高rb,降低pb;下面采用F1值作为两者的综合考虑;
·top-b纠错F1值:F1b=(2×pb×rb)/(pb+rb)。
所述的步骤2中对齐操作通过对分枝较少的树进行填充虚拟的空部件来实现;具体地分以下两个步骤:
步骤2.1,首先构造能够同时覆盖两棵树的极小超树;
步骤2.2,先将一棵汉字的结构树嵌入超树,嵌入后剩余的节点为该汉字的结构树需要填充的空的节点;嵌入后的两棵树在结构上是完全一致的,两个汉字完成了对齐;对齐后,便可以自底向上地在对应的节点间进行相似度计算,最后得到根节点即两个汉字间的形似度。
有益效果:本发明基于字形构建的汉字部件分析数据库,在部件树对齐方法的基础上,利用编辑距离技术,计算两棵部件树中对应的叶子节点和中间节点的相似度。然后用汉字的字频来体现人对汉字的认知显著度特性,最终得到汉字间的认知形似度。较之传统的方法,本发明能够自动对齐部件分析树,并结合了人对汉字的认知特性,在对于由人的认知错误造成的别字自动纠错应用汇总,具有明显的优势。在认知形似别字自动纠错系统的实验中,基于本方法的top-1纠错正确率和召回率分别达到0.970和0.965。
具体实施方式
在《信息交换用汉字编码字符集》(GB2312-80)所收集的6763个汉字中,独体字有336个,仅占4.96%,其余均是复合字。复合字是由复合字、独体字、偏旁、部首等部件,以某种结构组合在一起形成的,其相似度计算是重点和难点。基于汉字的这种组合结构,首先基于部件分析法度量汉字间相似度,然后进一步结合汉字的认知显著度因子,最终得到汉字间认知相似度。
将汉字拆分为树状的层次结构,称为汉字的部件拆分树,有助于计算机对汉字字形的处理。一个汉字部件拆分树的例子如图1所示,以‘寞’字为例,第一层将其拆分为“宀+莫”(部件的组成方式为上下结构类型)、第二层中又将‘莫’拆分为“艹+日+大”(部件的组成方式为上中下结构类型)。
【定义1】汉字的部件分析树:对于汉字c及其线性笔画序列B=blb2…bn,其部件分析树是一棵多叉树,树的根节点是汉字本身;中间节点是B中的连续子串,表示汉字的一个部件;叶子节点是不可拆分的最小汉字部件。
给定两个汉字c1,c2,其对应的拆分树t1,t2。在计算t1和t2的相似度时,若两者的结构不同,那么需要首先进行对齐。对齐的目标是使两棵树具有相同的层次和分叉结构,从而作为下一步两棵树的相似度计算的基础。
下面逐一介绍本发明各个步骤。
步骤1.汉字的部件拆分。
目前,汉字部件拆分数据库是用于将汉字拆分为树状的层次结构,称为汉字的部件拆分树;
在这些数据库中,每个汉字从结构上将其分为左右、上下、包容、被包容和嵌套结构五种类型,笔画一般包括点、横、竖、撇、捺、折6类。在本发明中,针对本发明的设计需要,使用了一种新的拆分方式,其中笔画包括36种,部件的组成方式包括半包围、独体、品字、全包围、上下、上中下、左右、左中右共8种结构。具体地,该数据库中汉字的基本笔画集合如表1。
表1汉字部件数据库中的笔画集合(示例字后数字表示其第几笔为列出笔画)
ID |
笔画 |
示例 |
ID |
笔画 |
示例 |
ID |
笔画 |
示例 |
ID |
笔画 |
示例 |
1 |
占 |
之1 |
10 |
横竖右勾 |
讠2 |
19 |
横左撇 |
又1 |
28 |
竖横竖 |
鼎6 |
2 |
反点 |
火3 |
11 |
横竖左勾 |
万3 |
20 |
撇 |
夊1 |
29 |
竖横竖左勾 |
马2 |
3 |
横 |
十1 |
12 |
横竖捺 |
辶2 |
21 |
撇横 |
纟1 |
30 |
竖撇 |
厂2 |
4 |
横勾 |
买1 |
13 |
横右弯勾 |
风2 |
22 |
撇竖 |
臿3 |
31 |
竖右勾 |
民3 |
5 |
横撇 |
夭1 |
14 |
横折 |
今4 |
23 |
撇捺 |
巛1 |
32 |
竖左勾 |
于3 |
6 |
横竖 |
马1 |
15 |
横折横撇 |
及2 |
24 |
竖 |
十2 |
33 |
提 |
刁2 |
7 |
横竖横 |
凸2 |
16 |
横折横上勾 |
乙1 |
25 |
竖横 |
山1 |
34 |
右弯勾 |
戈2 |
8 |
横竖横上勾 |
九1 |
17 |
横折弯勾 |
阝1 |
26 |
竖横撇 |
专3 |
35 |
左弯勾 |
犭2 |
9 |
横竖横竖左勾 |
乃2 |
18 |
横折捺 |
之2 |
27 |
竖横上勾 |
儿2 |
36 |
捺 |
夊3 |
步骤2.两棵部件分析树的对齐操作
对齐操作通过对分枝较少的树进行填充虚拟的空部件来实现;基本思路是,首先建立能够同时覆盖两棵树的超树,然后将两棵树分别嵌入这棵超树,没有填充的节点作为虚拟的空部件,得到相同结构的两颗树;填充后形成的树可能有多个,选择填充后与参照的拆分树最相似的填充方式;
具体地,对齐操作通过对分枝较少的树进行填充虚拟的空部件来实现;具体地分以下两个步骤。
步骤2.1,首先构造能够同时覆盖两棵树的极小超树。以c1=‘寞’,汉子c2=‘寥’,t1、t2如图2(a)、(b)所示,两者的一棵极小超树为图2(c)所示。
步骤2.2,先将一棵汉字的结构树嵌入超树,嵌入后剩余的节点为该树需要填充的空的节点。这种嵌入可能有多种可能性。在图2中,‘寥’字将嵌入图(c)中,节点05将是一个填充的虚拟节点,再将另一棵汉字的结构树以同样的方式嵌入,得到该字的填充树。在图2中,‘寞’字嵌入图(c)中后,节点07至010将是虚拟节点。
嵌入后的两棵树在结构上是完全一致的,两个汉字完成了对齐。对齐后,便可以自底向上地在对应的节点间进行相似度计算,最后得到根节点即两个汉字间的形似度。
在对齐的过程中,除了原有的上下、左右等部件组合结构外,将引入一种新的部件组合结构。如对于‘寞’字的对齐树而言,07、08这两个虚拟节点在组成04时,就是一种新的组合结构,称为对齐结构。
步骤3.分析树中叶子节点间的相似度计算。
每个叶子节点都是一个原子部件,是一个线性笔画序列;叶子节点间的相似度,利用带权重的编辑距离来计算;编辑距离是计算两个序列相似度的一种方式,可以度量一个序列通过增加、删除、替换操作变成另一个序列的复杂程度;
在汉字的部件分析树中,两个叶子节点即汉字原子部件u1,u2的相似度如下:
其中,WED(u1,u2)为部件u1,u2的笔画编辑距离,WED(u1,NULL)为u1与一个不带任何笔画的虚拟空部件的编辑距离。
步骤4.分析树中中间节点间相似度计算
对于两棵结构树,在结构对齐后,可以自底向上计算各个中间节点的相似度。中间节点的相似度,取决于两方面,一是其对应子树间的相似度,二是子树组成中间节点的结构。如前所述,部件组成结构包括半包围、独体、品字、全包围、上下、上中下、左右、左中右共8种结构。
对于中间节点和根节点node,记其子树节点为集合C(node),子树部件组的组合结构为S(node);给定node1,node2,两者的基本相似度为两者的综合:
显然,这个公式是递归的,递归的终止条件是当c1,c2为原子部件时,此时BasicSim(c1,c2)=AtomSim(c1,c2),将利用公式(1)进行计算;公式中,组合结构间的相似度函数StruSim的取值由实验得出,如表2给出;
表2部件组合结构间的相似度权重表
步骤5.汉字认知显著度因素
前面已经给出了两个汉字的基本形似度。若两个汉字在结构、笔画上越一致,那么两者的基本形似度越高。传统的基于点阵和笔画的计算方法,均是基于这一基本假设。下面,在公式(2)计算汉字间的基本形似度的基础上,本发明将进一步结合汉字的认知显著度因素,以计算汉字间基于认知的形似度。
汉字间的基本相似度刻画了汉字图形间的相似程度,然而人的认知对相似度也有一定影响。认知学家已经发现人们倾向于认为相对非显著的对象更相似于相对显著的对象,而非反之。同样,在人们混淆形似汉字时,更容易将罕用字错写为常用字,如对于‘(涕)泠’,人们更容易将其错写为‘冷’,但反之不然。为了度量该方面影响,本发明进行了基于实验的汉字显著度对字形相似影响的探索。
【定义2】正字/别字:在文本纠错中,将原本正确的汉字称为正字,将错写的汉字称为其别字。
【定义3】记C为汉字集合,记二元函数δ:C×C→[0,1]为汉字间的认知形似函数;给定两个汉字c1∈C,c2∈C,记δ(c1,c2)为别字c2与正字c1的认知形似度,表示将c1错写为c2的概率。
对于汉字c1、c2,若c1比c2认知显著度高,那么δ(c1,c2)>δ(c2,c1);反之δ(c1,c2)<δ(c2,c1)。认知显著度是人们对汉字的熟悉程度,可用汉字在大规模语料中的字频来体现。为了验证假设1,本发明设计了基于语料库的实验。实验的基本方法是,基于大规模语料统计某个正确的字c1被错写为别字c2的概率,并将这种概率看作以c1为正字,别字c2与c1的认知形似度。大规模认知字形别字语料很难获取,因此本发明选择Web作为实验语料库。之所以选择Web,一方面是因为其容易获得且十分庞大,含有大量形似别字;另一方面是因为绝大多数的Web中文网页是人工录入的,产生的形似别字大都来自于人们的认知错误。
实验过程如下:选择一些字形易混淆的汉字对,首先以一组汉字作为正字(如‘戈’),另一组为其别字(如‘弋’),并分别组成正确和错误的词(如“戈壁”/“弋壁”);然后查询错误和正确词在Web中出现的频度,两者之比为两组词互相混淆的概率,记为γ(c1,c2)。这个概率值正比与别字与正字的形似度,即γ(c1,c2)∝δ(c1,c2)。同样,本发明将正字和别字反过来做相同的实验,进而验证两者是否对称。在实验的汉字选择上,本发明考虑了字形复杂程度、字形相似程度、是否常用三个因素,选择的部分汉字如表3所示。
表3.汉字认知形似度实验集(括号中为汉字的字频,单位:万)
id |
c1 |
c2 |
id |
c1 |
c2 |
id |
c1 |
c2 |
1 |
戈(4910) |
弋(427) |
3 |
肓(1660) |
肓(70.3) |
5 |
栗(1900) |
粟(803) |
2 |
戊(913) |
戍(261) |
4 |
肓(1660) |
育(6920) |
6 |
栗(1900) |
票(28300) |
id |
c1 |
c2 |
id |
c1 |
c2 |
|
|
|
7 |
裁(2040) |
栽(2080) |
9 |
徙(266) |
陡(578) |
|
|
|
8 |
裁(2040) |
载(33000) |
10 |
徙(266) |
徒(555) |
|
|
|
以第1对汉字“戈/弋”为例,首先以‘戈’为正字,从汉语词表中得到所有包含‘戈’的词,如{“干戈”,“戈壁”,…}等,然后将‘戈’替换为‘弋’,相应地形成错误词{“干弋”,“弋壁”,…}等,并去掉替换后仍然正确的词汇;然后,本发明对应计算每一对词在Web中出现频度的比,并求其均值作为γ(c1,c2)。形式地,记f(c1)为汉字c1在Web中出现的频度,W(c1)={w1,w2,…wn}为含有c的所有中文词汇,W(c1→c2)为W(c1)中各个词中的c1替换为c2得到的词集,则
实验结果如表4。
表4.汉字认知形似度对称性实验结果
本发明利用汉字的频度信息以度量汉字的认知显著度,给出一种计算汉字认知形似度的方法。
认知相似度函数CogSim考虑了两方面因素;首先是汉字的基本形似度;其次是汉字的认知显著度,用汉字在Web中的字频来体现,其中f(c1)为汉字c1在Web中的字频,f(c2)为汉字c2在Web中的字频,通过Google搜索引擎获得;特殊地,若c1=c2,则CogSim(c1,c2)=1。
步骤6.基于认知形似度计算和词典的形似别字纠错
采用了一种简单的基于词典的纠错方法,而没有深入探讨基于其他语言模型的方法。
当人工标注的含别字句子为“W1W2…wk-1(wk->wk’)Wk+1…wn”,n为句子中的词个数,其中wk,1≤k≤n,为一个词,它包含了别字,其正确的词应当是wk’;显然,纠正了wk中别字后的词wk’,与wk具有相同的字数;记wk=c1c2…cm,wk’=c1’c2’…cm’,假设其中别字为cr,其在wk’中的正字为cr’,其中cr,1≤r≤m,m为wk中的字数,不失一般性;设别字cr的认知相似度大于0.6的正字相似字,假设有t个,t为自然数,按相似度由高到低包括simc1>simc2>…>simct;按相似度由高到低逐一将这些正字替换掉别字cr,记其中正字ci替换cr后的词为wk=c1c2…cr-1CiCr+1…cm,并检查wk是否在词典中,若在,则表示该正字可用于纠错,其中1≤i≤t。
例如,假设人工标注的含别字句子为“此号码是什么(时侯->时候)激活的”,其中别字为‘侯’,其正字为‘候’,所在的词为“时~”,别字‘侯’的认知相似度大于0.6的正字相似字,按相似度由高到低包括:
(0.938)堠>(0.900)候>(0.867)缑>(0.763)糇>(0.733)喉|猴>(0.652)俟
其中,括号中的值表示相似度。本发明将按该顺序逐一将这些正字替换掉别字‘侯’,并检查替换后词“时~”是否在词典中,若在则表示该正字可用于纠错。
找到第1个可纠错的字后,若该字是人工标注的正字,则表示top-1纠错成功;否则,表示top-1纠错失败,继续找下一个可用于纠错的字,并检查是否top-2纠错成功或失败,以此类推;若检查完所有的正字后均没有找到可纠错的字,那么表示对该别字无法纠错;显然,若top-b纠错成功,那么top-(b+1)也纠错成功(1≤b≤t-1);
形似别字纠错方法基于一个汉语词典。为了保证所有正确纠错后的词均能在该词典中找到,本发明用其筛选了测试集,只保留了人工纠错后的词存在于该词典中的句子。
本发明借鉴信息检索中的评价指标,采取的评测标准包括top-n纠错的准确率和召回率,具体定义如下:
·top-b纠错准确率:pb=(top-b纠错成功的句子)/(top-b可纠错的句子数)
·top-b纠错召回率:rb=(top-b纠错成功的句子)/(测试集中所有句子数)
pb为在系统完成纠错的所有句子中正确的比例,rb表示所有句子中成功纠错的比例,两者是互相制约的。需要注意的是,在不同的参数下,同一个别字的两个正字相似度的相对高低可能是不同的。若本发明计算相似度的方法中,确定参数限制候选相似字较少,那么相对来说这些相似字都较准确,这样可提高准确率pb,但会降低召回率rb;反之,若本发明扩大候选相似度,那么会提高rb,降低pb。本发明采用F1值作为两者的综合考虑。
·top-b纠错F1值:F1b=(2×pb×rb)/(pb+rb)。
表5给出了实验结果。
表5.认知形似别字纠错实验结果
|
top-1 |
top-2 |
top-3 |
p |
0.970 |
1.000 |
1.000 |
r |
0.956 |
0.985 |
0.985 |
F1 |
0.963 |
0.993 |
0.993 |
上面所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的构思和范围进行限定,在不脱离本发明设计构思的前提下,本领域中普通工程技术人员对本发明的技术方案做出的各种变型和改进,均应落入本发明的保护范围,本发明请求保护的技术内容,已经全部记载在权利要求书中。