CN102214238B - 一种汉语词语相近性匹配装置及方法 - Google Patents
一种汉语词语相近性匹配装置及方法 Download PDFInfo
- Publication number
- CN102214238B CN102214238B CN 201110183203 CN201110183203A CN102214238B CN 102214238 B CN102214238 B CN 102214238B CN 201110183203 CN201110183203 CN 201110183203 CN 201110183203 A CN201110183203 A CN 201110183203A CN 102214238 B CN102214238 B CN 102214238B
- Authority
- CN
- China
- Prior art keywords
- character string
- recency
- mutually
- chinese
- string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明提供了一种汉语词语相近性匹配装置及其方法,尤其涉及到汉语术语,该装置和方法用以精确地度量汉语发音、方言、字形、术语等汉语使用中常出现的错误,从而返回更加符合汉语使用习惯的函数值,并且,它能更进一步地挖掘用户的习惯,校准、扩展原有模型,并且可以帮助用于帮助用户直接找到他们期望的词语。
Description
技术领域
本发明涉及一种汉语的词语相近性匹配装置及方法,尤其涉及汉语术语。
背景技术
领域术语是指在一个学科领域中使用,表示该学科领域内概念或关系的词语。术语可以是词,也可以是短语,是在特定学科领域用来表示概念的称谓,或者说,是通过语音或文字来表达或限定科学概念的约定性语言符号。在我国,人们习惯称其为“名词”。术语的具体实例,在阅读科技文献、学习专业课程时随处可见,比如路由器就是计算机网络领域中的术语,DNA就是生命科学领域的术语等。在术语抽取领域,术语表示由两个或两个以上的字所组成的具有一定语法关系的有确切意义的语言单元,如“国家导弹防御系统”。
领域术语的提取在各个领域都有很重要的应用。在领域本体构建过程中,需要对领域术语进行及时地更新,因此领域术语的提取方法在领域本体的构建和维护过程中发挥着至关重要的作用。在信息检索领域,构建索引时需要引入领域术语集,领域术语提取技术地提高能够大大提高检索的准确率和检索的覆盖率,尤其在垂直搜索方面,如果得到某个领域的术语,对于该领域的搜索可以得到更为精确的信息。在浏览推荐方面,在用户的浏览行为的推荐方面,利用web资源得到的某领域的领域术语,可以帮助我们更准确地把握用户的浏览意图,通过用户的具体浏览行为推荐相关的信息给用户。另外领域术语的提取在广告投放中也有很大的作用,通过得到领域词典,对于网页的分类有很大的帮助,可以更好帮助商业公司对于不同的用户群做更为精细和准确的广告投放。
字符串的相近性函数作为衡量两个字符串之间近似程度的函数,是字符串匹配(String matching)、文本比较(Text Comparison)、信息抽取(Information Extraction)中一项基本技术,它的输入通常是两个相同或不同的字符串,返回一个确定的整数值。两个字符串相近度越高,对应的返回值就越大。这项技术在计算生物学(Computational Biology),信号处理(Signal Processing)中也有广泛的应用。
针对应用场合不同,有很多经典的相近性函数可供选择。例如:编辑距离(Edit Distance或Levenshtein Distance),它考虑了三种编辑操作——插入(Insertion),删除(Deletion)和替换(Substitution),用将一个字符串转换成另一个字符串所需要的最少的编辑操作的数量作为这两个字符串的相近度;Smith-Waterman距离(Smith-Waterman Algorithm)是一种用于找到两个序列中相近区域的算法,经常用于计算生物学中核苷酸序列、氨基酸序列的比对。这种算法中,所涉及的操作也只有三种:插入、删除和替换。除了以上精确计算两个字符串差异的这些算法,也存在其他近似的简单的基于统计的方法。例如:Dice距离(Dice Coefficient)或Jaccard距离(Jaccard Index或Jaccard Similarity Coefficient),这两种方法在计算时都需要先将要比较的字符串s1,s2划分成q-gram,一个字符串的q-gram指的是它的所有长度为q的连续子串,例如,apple的2-gram就是:ap,pp,pl,le。划分结束后,得到两个字符串对应的q-gram集合SQ1,SQ2,则Dice(s1,s2)=2*|SQ1∩SQ2|/(|SQ1|+|SQ2|),Jaccard(s1,s2)=|SQ1∩SQ2|/|SQ1∪SQ2|。考虑到读音相近的字符更容易出现拼写错误,有人发明了基于读音的相近性函数,例如Soundex,这种算法将英文中发音相近的字母编码为相同的数字,例如b,f,p,v都映射为1。h,w这样不存在发音相近的字母的情况则不映射。通过上述方式,一个由英文字母组成的字符串就被转换成一个字母加数字的字符串,再通过更进一步的计算得到这两个字符串的相近度,作为原字符串的相近度。以上这些方法足以覆盖需要衡量字符串相近度的大部分领域,但是它们的局限性在于所有的这些方法都是针对英文,或者可以比较容易地推广到印欧语系的其他语种(例如:法语),对于汉语这样的结合了字形与读音的语种,它们的应用将受到一定的限制。
随着汉语在计算机领域使用的推广,尤其是在互联网使用的普及,提出一种适合汉语的相近性函数是十分有必要的。例如,网络中每天都存在着大量汉语文本信息,而这些或是由人工编辑、或是由机器生成的文档,存在着大量错误,在进行更深层次的操作之前,需要先进行预处理,预处理中的许多步骤(清洗、整合)都涉及到相近性比较。而用户利用关键字查询信息时,也可能出现各种错误(例如只能记住读音,或者更加简单的拼写错误),一个设计良好的相近性函数,可以用于帮助用户直接找到他们期望的词语。
发明内容
本发明所要解决的技术问题是提供一种汉语的词语相近性匹配装置及方法,用以精确地度量汉语发音、方言、字形等汉语使用中常出现的错误,从而返回更加符合汉语使用习惯的函数值,并且,它能更进一步地挖掘用户的习惯,校准、扩展原有模型。
为了解决上述问题,本发明公开了一种汉语的词语相近性匹配装置及方法,所述方法包括:
获取两个待比较的字符串A和B;
计算两个字符串A和B在编辑时的相近度;
获取两个字符串A和B的发音相近度;
获取两个字符串A和B的字形相近度;
对照预先建立的汉字词频统计表Table3和汉字错误信息统计表Table4统计两个字符串A和B的词频和错误信息;
根据统计结果确定两个字符串A和B编辑时的相近度、发音相近度以及字形相近度的权值,计算获取到两个待比较的汉语字符串A和B的匹配度,其中,错误频率之和与词频之和的比值越大,发音相近度所对应的权值越小。
优选的,所述方法还包括:
建立汉字到拼音的对照表Table1;
建立汉字到五笔的对照表Table2;
建立汉字词频统计表Table3;
建立汉字错误信息统计表Table4。
优选的,当所获取的两个待比较的字符串A和B为汉字字符串时,所述方法还包括:
对照对照表Table1将字符串转化为拼音字符串。
优选的,所述计算两个字符串A和B在编辑时的相近度具体包括以下子步骤:
计算两个字符串A和B的编辑距离相近度
根据正确键盘指法,计算两个字符串A和B的键盘分布相近度;
对两个字符串A和B的编辑距离相近度和键盘分布相近度加权求和,获取到两个字符串A和B在编辑时的相近度。
优选的,所述获取两个字符串A和B的发音相近度具体包括以下子步骤:
计算两个字符串A和B的声母相近度;
计算两个字符串A和B的韵母相近度;
对两个字符串A和B的声母相近度和韵母相近度加权求和,获取到两个字符串A和B的发音相近度。
优选的,所述方法在对两个字符串A和B的声母相近度和韵母相近度加权求和后,还包括:
计算两个字符串A和B的模糊音相近度;
将计算的两个字符串A和B的模糊音相近度,与对两个字符串A和B的声母相近度和韵母相近度加权求和的值进行加权求和,获取到两个字符串A和B的发音相近度。
本发明还公开了一种汉语相近性匹配装置,所述装置包括:
字符串获取模块,用来获取两个待比较的字符串A和B;
编辑时的相近度计算模块,用来计算两个字符串A和B在编辑时的相近度;
发音相近度获取模块,用来获取两个字符串A和B的发音相近度;
字形相近度获取模块,用来获取两个字符串A和B的字形相近度;
词频和错误信息统计模块,用来对照预先建立的汉字词频统计表Table3和汉字错误信息统计表Table4统计两个字符串A和B的词频和错误频率;
匹配度获取模块,根据词频和错误信息统计模块的统计结果确定两个字符串A和B编辑时的相近度、发音相近度以及字形相近度的权值,计算获取到两个待比较的汉语字符串A和B的匹配度,其中,错误频率之和与词频之和的比值越大,发音相近度所对应的权值越小。
优选的,所述装置还包括:
表建立模块,用于建立汉字到拼音的对照表Table1、汉字到五笔的对照表Table2、汉字词频统计表Table3、汉字错误信息统计表Table4。
优选的,当所获取的两个待比较的字符串A和B为汉字字符串时,所述装置还包括:
字符串拼音转化模块,对照对照表Table1将字符串转化为拼音字符串。
优选的,所述编辑时的相近度计算模块使用以下步骤计算两个字符串A和B在编辑时的相近度:
计算两个字符串A和B的编辑距离相近度以及
根据正确键盘指法,计算两个字符串A和B的键盘分布相近度;
对两个字符串A和B的编辑距离相近度和键盘分布相近度加权求和,获取到两个字符串A和B在编辑时的相近度。
优选的,所述发音相近度获取模块使用以下步骤获取两个字符串A和B的发音相近度:
计算两个字符串A和B的声母相近度;
计算两个字符串A和B的韵母相近度;
对两个字符串A和B的声母相近度和韵母相近度加权求和,获取到两个字符串A和B的发音相近度。
优选的,所述发音相近度获取模块在对两个字符串A和B的声母相近度和韵母相近度加权求和后,不直接获取两个字符串A和B的发音相近度,而使用以下步骤获取两个字符串A和B的发音相近度:
计算两个字符串A和B的模糊音相近度;
将计算的两个字符串A和B的模糊音相近度、与对两个字符串A和B的声母相近度和韵母相近度加权求和的值进行加权求和,获取到两个字符串A和B的发音相近度。
与现有技术相比,本发明具有以下优点:
本发明利用编辑距离公式及键盘指法规则得到汉语对应拼音的编辑相近度,即反应二者在编辑时是否容易混淆;通过汉字声母、韵母的发音规律得到字符串的声母相近度及韵母相近度,同时结合方言或者普通发音中常见的模糊音,计算字符串之间的发音相近度;由于汉字的字形是汉语一个重要特征,所以利用字形编码——五笔字型编码计算字符串之间的字形相近度;在计算的同时收集信息,用于更新数据;综合上述相近度得到汉语词整体的相近度,充分考虑了汉语的拼写习惯、用户的输入习惯及键盘布局、普通话的发音规则、方言以及常见错误发音的影响、汉字字形等多方面因素,结合统计规律,综合评价汉语词之间的相近度。使得相近性函数的返回值越大,汉语词之间的相近度就越大。
附图说明
图1是本发明实施例所述的一种汉语相近性匹配方法流程图;
图2是本发明实施例所述的一种汉语相近性匹配方法的示意图;
图3是本发明实施例所述的Table1,Table2,Table3和Table4的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
字符串相近性函数在查询、检索领域有着极其重要的意义,它为判断字符串之间的近似程度、估计用户真实查询意图提供依据。定义良好的相近性函数能够通过函数值准确反应字符串的相近度,即值越大、相近性越大,反之则越小(即值越小、字符串之间的差异越少,反之则越多)。英文中有很多广泛使用的、针对不同语境的相近性函数,但是汉语作为综合了字音与字形的语言,直接使用现有的相近性函数并不能对人们直观理解上的字符串之间的近似程度做到很好地估计。所以我们提出了一种综合了语音、字形以及编辑、发音习惯的汉语字符串相近性的度量函数。
实施例:
参照图1,示出了本发明的一种汉语相近性匹配方法流程图,所述方法具体包括:
步骤S101,获取两个待比较的字符串A和B;
按照实际应用中的需求,获取当前需要比较的两个字符串A和B。
优选的,所述方法还包括:
建立汉字到拼音的对照表Table1;
建立汉字到五笔的对照表Table2;
建立汉字词频统计表Table3;
建立汉字错误信息统计表Table4。
实际应用中,通过建立映射表得到汉字拼音对照表Table1,汉字五笔对照表Table2,词频统计表Table3,错误信息统计表Table4。其中前两个表是固定的,后两个表可以在使用过程中进行累计更新,具体的:
建立从汉字拼音对照表Table1,包含两列,分别为汉语字符cn_char和对应拼音字符串sp_string,用cn_char建立索引。同一个汉语字符可以对应两个或更多读音,例如:“会”对应“hui”和“kuai”。
建立汉字五笔对照表Table2,包含两列,分别为汉语字符cn_char和对应五笔字型编码st_string,用cn_char建立索引。例如:“会”对应的五笔字型编码为“wfc”。建立词频统计表Table3,包含三列,分别为汉语字符串cn_string、对应拼音字符串sp_string、对应词频信息word_frequency,用国家发布的常用词词频初始化,用cn_string建立索引。例如:“全力”对应的词频为2618,“会宁”是甘肃省的一个县,是两万五千里长征的终点,它不属于常用词,因此在初始化的时候,Table3中不包含这一项,或者说它对应的词频为0。但是随着信息的统计,可以将它加入到表中,对应拼音字符串为“huining”,第一次加入时词频为1,逐次累加。
错误信息统计表Table4,包含四列,分别为汉语字符串cn_string,正确的对应拼音字符串crt_string,错误的拼音字符串err_string以及相应的错误频率err_frequency,初始化为空,用cn_string和err_string建立索引。例如:“会宁”的正确发音为“huining”,如果出现错误发音“huiling”,我们将其加入到表中,这个错误第一次出现时,对应的错误频率为1,随着出现次数增多而向上累加。如果出现错误发音“huinin”,则将“会宁”和“huinin”作为新的一项加入表中。
步骤S102,计算两个字符串A和B在编辑时的相近度;
假设当前所获取的两个待比较的汉语字符串为string_raw1和string_raw2,如果这两个字符串已经是拼音字符串,则不做任何处理,即sp_string1=string_raw1,sp_string2=string_raw2。
优选的,当所获取的两个待比较的字符串A和B为汉字字符串时,所述方法还包括:对照对照表Table1将字符串转化为拼音字符串。
若二者原本为汉字字符串,则先将其转换为拼音字符串。具体转换方法为:按字符切分string_raw1和string_raw1,得到两个汉语字符集合cn_set1={cn_char11,cn_char12,...,cn_char1m}和cn_set2={cn_char21,cn_char22,...,cn_char2n},其中m、n为两个汉语字符串的长度。
在Table1中查找cn_chari,j,i=1,2,j=1,2,...,m(若i=1),j=1,2,...,n(若i=2),得到sp_stringi,j,若cn_chari,j有两个拼音与之对应,则利用string_raw-i查找Table3,确定相应字符在给定上下文中的发音。通过这样的方式将cn_seti转换为sp_seti={sp_stringij}。再按序组合成对应的拼音字符串sp_string1,sp_string2。例如,如果string_raw1=“全力”,string_raw2=“会宁”,“会”有两个发音“hui”“kuai”,而Table3中只有“huining”,所以可以认为“会”在此发音为“hui”而不是“kuai”,即:cn_set1={“全”,“力”},cn_set1={“会”,“宁”},sp_set1={quan,li},sp_set2={hui,ning},sp_string1=“quanli”,sp_string2=“huining”。
针对上述两种情况,得到实际用来比较的拼音字符串sp_string1,sp_string2。
优选的,所述计算两个字符串A和B在编辑时的相近度具体包括以下子步骤:
计算两个字符串A和B的编辑距离相近度
根据正确键盘指法,计算两个字符串A和B的键盘分布相近度;
对两个字符串A和B的编辑距离相近度和键盘分布相近度加权求和,获取到两个字符串A和B在编辑时的相近度。
具体的,在计算两个字符串在编辑时的相近度时,由于相近性函数主要是用于计算机领域,所以这部分相近度既包含了传统相近性函数中的三种编辑操作(插入、删除和替换),也包含了键盘布局信息。经过综合计算,得到编辑相近度edit_similarity:
计算sp_string1与sp_string2的编辑距离edit(sp_string1,sp_string2),具体的计算方法可以使用经典的动态规划矩阵。如果我们假定返回的函数值越高,字符串的相近度越大,我们需要将编辑距离求倒数,为了避免分母为0,给分母加一个小的常量,例如1例如edit(“quanli”,“huining”)=5,则Edit(“quanli”,“huining”)=1/(edit(sp_string1,sp_string2)+1)=1/(5+1)=1/6。
根据正确键盘指法,左手食指控制的键位为{R,T,F,G,V,B},左手中指控制的键位为{E,D,C},左手无名指控制的键位为{W,S,X},左手小指控制的键位为{Q,A,Z},右手食指控制的键位为{Y,U,H,J,N,M},右手中指控制的键位为{I,K},右手无名指控制的键位为{O,L},右手小指控制的键位为{P}。属于同一集合中的字母更加容易出现输入的错误,因此应该给予更高的相近度。可以参考Soundex中的方法,将一个集合中的元素映射为唯一的一个数字,通过这样的方式将sp_string1与sp_string2转化为一个由数字组成的字符串num_string1和num_string2,然后通过其他已知的相近性函数来计算这二者的相近度。由于键盘分布引入的相近度记为Layout(num_string1,num_string2)。
例如我们将上面的集合依次记为1、2、3、4、5、6、7、8,则“全力”和“会宁”可以表示为num_string1=“454576”,num_string2=“4454541”。假设仍然用前面的编辑距离来计算,edit(“454576”,“4454541”)=3,则Layout(“454576”,“4454541”)=1/(1+3)=1/4。上述两个值加权求和,得到编辑相近度edit_similarity(sp_string1,sp_tring2)=w11*Edit(sp_string1,sp_string2)+w12*Layout(num_string1,num_string2)。若将w11和w12都设为1/2(即对Edit和Layout赋予相同的权重),则edit_similarity(“全力”,“会宁”)=edit_similarity(“quanli”,“huining”)=1/2*Edit(“quanli”,“huining”)+1/2*Layout(“454576”,“4454541”)=1/2*1/6+1/2*1/4=5/24。
步骤S103,获取两个字符串A和B的发音相近度;
优选的,所述获取两个字符串A和B的发音相近度具体包括以下子步骤:
计算两个字符串A和B的声母相近度;
计算两个字符串A和B的韵母相近度;
对两个字符串A和B的声母相近度和韵母相近度加权求和,获取到两个字符串A和B的发音相近度。
优选的,所述方法在对两个字符串A和B的声母相近度和韵母相近度加权求和后,还包括:
计算两个字符串A和B的模糊音相近度;
将计算的两个字符串A和B的模糊音相近度,与对两个字符串A和B的声母相近度和韵母相近度加权求和的值进行加权求和,获取到两个字符串A和B的发音相近度。
汉语和英文很大的一个不同在于汉语中每个字母都会有不随上下文改变的发音,而英文中一些字母可能不发音,也可能在不同的搭配中发音不相同。所以汉语中发音相近度无法像英文那样,直接通过编辑距离或者Soundex来衡量。这一步根据汉语发音特点,得到发音相近度spell_similarity:
汉语的拼音由声母和韵母两部分组成,所以在比较时,也需要从这两部分来考虑。综合两部分的相近度,得到拼音相近度Phoneticize(sp_string1,sp_string2):拆分sp_string1和sp_string2,即进一步划分为声母和韵母的组合序列,在对应位置进行比较。
汉语中的声母一共有23个,按发音部位对声母分类,一共可以分为7类:双唇音(b,p,m),唇齿音(f),舌尖前音(z,c,s),舌尖中音(d,t,n,l),舌尖后音(zh,ch,sh,r),舌面音(j,q,x),舌根音(g,k,h)。还有其他划分声母的方式,但从拼音学习过程以及发音习惯上而言,这样的划分方式更符合我们的需求。属于同一类的声母具有较高的相近度,对于整个字符串,得到综合的声母相近度Initial(sp_string1,sp_string2)。例如:“全”对应的声母为“q”,“会”对应的声母为“h”,分别为舌面音和舌根音,“力”的声母为“l”,“宁”的声母为“n”,都是舌尖中音,因此“会”(hui)和“全”(quan)的声母相近度要弱于“力”(li)和“宁”(ing)的声母相近度。如果将声母属于同一个集合记为1,不属于同一个集合记为0,两个声母的权重分别为1/2(2是汉语字符串中汉语字符的个数),则Initial(“quanli”,“huining”)=1/2*Initial(“q”,“h”)+1/2*Initial(“l”,“n”)=1/2*0+1/2*1=1/2。
汉语中的韵母一共有36个,按照传统音韵学,可以用“四呼”将其划分为4类:开口呼(a,ai,an,ang,ao,e,ei,en,eng,er,o,ong,on),齐齿呼(i,ia,ian,iang,iao,ie,in,ing,iong,iou),合口呼(u,ua,uai,uan,uang,uei,uen,ueng,uo),撮口呼(ü,üan,üe,ün)。和声母相同,属于同一类的韵母具有较高的相近,以此为依据得到两个完整字符串的综合的韵母相近度Vowel(sp_string1,sp_string2)。和声母类似,如果将属于同一个集合记为1,否则记为0,每组韵母的权重为字符串中韵母个数的倒数,Initial(“quanli”,“huining”)=1/2*Initial(“uan”,“ui”)+1/2*Initial(“i”,“ing”)=1/2*1+1/2*1=1。
Phoneticize(sp_string1,sp_string2)=w21’*Initial(sp_string1,sp_string2)+w22’*Vowel(sp_string1,sp_string2),通过前面计算得到的两个值加权求和得到两个字符串的拼音相近度。若给声母相近度和韵母相近度赋予相同的权值,即w21’=w22’=1/2,则Phoneticize(“quanli”,“huining”)=1/2*Initial(“quanli”,“huining”)+1/2*Vowel(“quanli”,“huining”)=1/2*1/2+1/2*1=3/4。
除了考虑普通话的正常发音,还要考虑到人们日常生活中经常出现的发音错误。在很多南方口音中,前鼻音和后鼻音较难区分,而对于一些非专业人员,平舌音、翘舌音的区别也没有那么明显。所以针对这些情况,设置模糊音匹配。例如:{z,zh},{c,ch},{s,sh},{l,n},{f,h},{r,l},{an,ang},{en,eng},{in,ing},{ian,iang},{uan,uang},如果对应的声母(或韵母)在上面设置的模糊音中的同一个集合里,这二者的相近度就应该高,可以计算得到两个字符串这部分的相近度Fuzzy(sp_string1,sp_string2)。例如:将“全力”和“会宁”拆分为{h,ui,n,ing}和{q,uan,l,i},{n,l}可以进行模糊音匹配,如果将进行模糊音匹配后集合的交集与集合大小的比值作为二者的相近度,则Fuzzy(“quanli”,“huining”)=1/4。
sp_string1和sp_string2的发音相近度利用上述两个值加权求和得到:spell_similarity(sp_string1,sp_string2)=w21*Phoneticiz(sp_string1,sp_string2)+w22*Fuzzy(sp_string1,sp_string2)。若设w21=w22=1/2,则spell_similarity(“全力”,“会宁”)=spell_similarity(“quanli”,“huining”)=1/2*Phoneticiz(“quanli”,“huining”)+1/2*Fuzzy(“454576”,“4454541”)=1/2*3/4+1/2*1/4=1/2。
步骤S104,获取两个字符串A和B的字形相近度;
拼音只是汉语中的一部分,它们的相近度只能部分反映两个字符串的相近度。如果给定的两个字符串原本是汉字字符串,那么也需要将字形因素加入到相近性函数的考虑范围中来。五笔字型完全依据笔画和字形对汉字编码,所以用五笔的编码方式一定程度上可以反应汉语字符在字形上的差异。而另一方面,仍然有很多人在使用五笔输入法,从用户使用来考虑,也应该将这个因素加入到相近性函数中来。例如:“全力”的“全”发音为quan,而“会宁”的“会”发音为hui,从字音角度,或者从二者拼音的差异来说,都是非常大的。但是它们在字形上却很接近,因此很容易被人认错。“全”的五笔编码为“wgf”,“会”的五笔编码为“wfc”,它们都包含“w”和“f”,所以可以判定它们的字形一定程度上是接近的。与此相比,“全”和“权”发音相同,但是“权”的五笔编码为“scy”,可见这两个同音字字形差异很大,在拼写或者选择时不容易出现错误。
当字符串中包含汉字字符时,在Table2中查找cn_chari,j,i=1,2,j=1,2,...,m(若i=1),j=1,2,...,n(若i=2),得到st_stringi,j,比较每个字对应的相近度,即stroke_similarityj(st_string1,st_string2)。在将它们综合起来,得到的就是这两个字符串的字形相近度stroke_similarity(string_raw1,string_raw2),也可以将cn_seti转换为st_seti={sp_stringij},而两个字符串对应的集合的相近度,就是它们的字形相近度。例如:如果用五笔编码的Jaccard距离作为衡量两个汉语字符字形相近度的方式,则:stroke_similarity1(“全力”,“会宁”)=Jaccard(“全”,“会”)=Jaccard(“wgf”,“wfc”)=2/4=1/2;stroke_similarity2(“全力”,“会宁”)=Jaccard(“力”,“宁”)=Jaccard(“ltn”,“psj”)=0/6=0;若将一个字符串中的所有字符都赋予相同的权重,则stroke_similarity(“全力”,“会宁”)=1/2*stroke_similarity1(“全力”,“会宁”)+stroke_similarity2(“全力”,“会宁”)=1/2*1/2+1/2*0=1/4。
步骤S105,对照预先建立的汉字词频统计表Table3和汉字错误信息统计表Table4统计两个字符串A和B的词频和错误信息;
统计信息包含两部分,一部分为词语使用信息,另一部分为错误信息。信息统计反应了特定用户的使用习惯,这部分信息保存在Table3和Table4中。信息的来源可以使本地的用户,也可以是网络。
步骤S106,根据统计结果确定两个字符串A和B编辑时的相近度、发音相近度以及字形相近度的权值,计算获取到两个待比较的汉语字符串A和B的匹配度。
通过前面的介绍,可以得到编辑时的相近度、发音相近度以及字形相近度三个相近度:edit_similarity(sp_string1,sp_string2),spell_similarity(sp_string-1,sp_string2)和stroke_similarity(string_raw1,string_raw2)。用Table3和Table4中存储的统计信息确定这三个相近度的权值w1、w2、w3,加权组合得到两个字符串整体的相近度:similarity(string_raw1,string_raw2)=w1*edit_similarity(sp_string1,sp_string2)+w2*spell_similarity(sp_string1,sp_string2)+w3*stroke_similarity(string_raw1,string_raw2)。
当设置三个相近度权重相等,即w1=w2=w3=1/3,则similarity(“全力”,“会宁”)=1/3*edit_similarity(“quanli”,“huining”)+1/3*spell_similarity(“quanli”,“huining”)+1/3*stroke_similarity(“全力”,“会宁”)=1/3*5/24+1/3*1/2+1/3*1/4=23/72。
优选的,其中,错误频率之和与词频之和的比值越大,发音相近度所对应的权值w2越小。参见图2给出了本发明所述一种汉语相近性匹配方法的示意图,图3示出了上述Table1,Table2,Table3和Table4的示意图;需要说明的是,本实施例所述的方法在正式比较之前,需要建立一些映射表,为后续过程提供依据。其中部分表是从一开始就确定的,而另一部分表则在函数使用过程中通过用户反馈、或信息抓取来不断更新。在初始阶段就能够基本确定的表包括汉语字符到拼音、五笔字型编码(86版)的映射表,这部分表通过国家或相关企业、个人发布的标准获得。而词频信息、错误信息需要不断补充完善。统计信息对于汉语相近性函数有着非常重要的作用,例如,“灰常(huichang)”、“会场(huichang)”和“非常(feichang)”,单从读音上来说,前两个更加接近,并且在网络流行语开始变得普遍之前,第一个词就是一个错误拼写。但是,在现代汉语使用中,我们可以发现,“灰常”可以作为“非常”的同义词使用,它们俩的近似程度是很高的。如果语义信息不是字符串相近性函数要考虑的内容,那么在很多方言或者较为常见的错误发音中,“h”和“f”是经常被混淆的,这就是它们相近的依据。
随后,可以利用建立好的映射关系计算汉语字符串的相近度。对于两个输入的汉语字符串string1,string2,先通过映射表找到它们对应的拼音字符串和五笔编码字符串。如果一个字是多音字,则可以通过词频信息判断哪个读音才是正确的。在正式比较之前,可以通过一定的方式对齐输入的汉语字符串,即判断在比较时,string1中的每个汉语字符与string2中的哪个字符对应。接下来就通过比较对应字符之间的相近程度来比较两个完整汉语字符串之间的相近度。
以上对本发明所提供的一种汉语相近性匹配方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (2)
1.一种汉语词语相近性匹配装置,其特征在于,所述装置包括:
字符串获取模块,用来获取两个待比较的字符串A和B;
编辑时的相近度获取模块,通过计算两个字符串A和B的编辑距离相近度以及根据正确键盘指法,计算两个字符串A和B的键盘分布相近度,对两个字符串A和B的编辑距离相近度和键盘分布相近度加权求和,获取到两个字符串A和B在编辑时的相近度;
发音相近度获取模块,通过计算两个字符串A和B的声母相近度,计算两个字符串A和B的韵母相近度,对两个字符串A和B的声母相近度和韵母相近度加权求和,获取到两个字符串A和B的发音相近度;
字形相近度获取模块,用来获取两个字符串A和B的字形相近度;
词频和错误信息统计模块,用来对照预先建立的汉字词频统计表Table3和汉字错误信息统计表Table4统计两个字符串A和B的词频和错误频率;
匹配度获取模块,根据词频和错误信息统计模块的统计结果确定两个字符串A和B编辑时的相近度、发音相近度以及字形相近度的权值,计算获取到两个待比较的汉语字符串A和B的匹配度,其中,两个字符串A和B的错误频率之和与词频之和的比值越大,所述发音相近度所对应的权值越小;
所述装置还包括:
表建立模块,用于建立汉字到拼音的对照表Table1、汉字到五笔的对照表Table2、汉字词频统计表Table3、汉字错误信息统计表Table4;
当所获取的两个待比较的字符串A和B为汉字字符串时,所述装置还包括:
字符串拼音转化模块,对照对照表Table1将字符串转化为拼音字符串。
2.根据权利要求1所述的装置,其特征在于,所述发音相近度获取模块在对两个字符串A和B的声母相近度和韵母相近度加权求和后,不直接获取两个字符串A和B的发音相近度,而使用以下步骤获取两个字符串A和B的发音相近度:
计算两个字符串A和B的模糊音相近度;
将计算的两个字符串A和B的模糊音相近度、与对两个字符串A和B的声母相近度和韵母相近度加权求和的值进行加权求和,获取到两个字符串A和B的发音相近度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110183203 CN102214238B (zh) | 2011-07-01 | 2011-07-01 | 一种汉语词语相近性匹配装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110183203 CN102214238B (zh) | 2011-07-01 | 2011-07-01 | 一种汉语词语相近性匹配装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102214238A CN102214238A (zh) | 2011-10-12 |
CN102214238B true CN102214238B (zh) | 2012-10-24 |
Family
ID=44745546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110183203 Expired - Fee Related CN102214238B (zh) | 2011-07-01 | 2011-07-01 | 一种汉语词语相近性匹配装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102214238B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622337B (zh) * | 2012-02-24 | 2014-05-07 | 浙江和仁科技有限公司 | 基于ihe pix规范的中文自然语言信息匹配方法 |
CN103309886B (zh) * | 2012-03-13 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种基于交易平台的结构化信息搜索方法和装置 |
CN106815593B (zh) * | 2015-11-27 | 2019-12-10 | 北京国双科技有限公司 | 中文文本相似度的确定方法和装置 |
CN106168954B (zh) * | 2016-06-07 | 2019-09-13 | 中国人民解放军国防科学技术大学 | 一种基于编辑距离的负面信息模式模糊匹配方法 |
CN107665190A (zh) * | 2017-09-29 | 2018-02-06 | 李晓妮 | 一种文本校对错误词库的自动构造方法和装置 |
CN109917927B (zh) * | 2017-12-13 | 2022-07-08 | 北京搜狗科技发展有限公司 | 一种候选项确定方法和装置 |
CN111814474B (zh) * | 2020-09-14 | 2021-01-29 | 智者四海(北京)技术有限公司 | 领域短语挖掘方法及装置 |
CN112069374B (zh) * | 2020-09-18 | 2024-04-30 | 中国工商银行股份有限公司 | 一种银行多个客户编号的识别方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484173A (zh) * | 2003-08-10 | 2004-03-24 | 卢小林 | 基于汉字形状的中文单词拼写错误校正方法 |
CN101493812B (zh) * | 2009-03-06 | 2010-12-01 | 中国科学院软件研究所 | 一种音字转换方法 |
-
2011
- 2011-07-01 CN CN 201110183203 patent/CN102214238B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102214238A (zh) | 2011-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102122298A (zh) | 一种中文相似性匹配方法 | |
CN102214238B (zh) | 一种汉语词语相近性匹配装置及方法 | |
CN106598939B (zh) | 一种文本纠错方法及装置、服务器、存储介质 | |
US10120861B2 (en) | Hybrid classifier for assigning natural language processing (NLP) inputs to domains in real-time | |
CN103927329B (zh) | 一种即时搜索方法和系统 | |
CN100568225C (zh) | 文本中数字和特殊符号串的文字符号化处理方法及系统 | |
US20110184723A1 (en) | Phonetic suggestion engine | |
CN105957518A (zh) | 一种蒙古语大词汇量连续语音识别的方法 | |
CN105404621A (zh) | 一种用于盲人读取汉字的方法及系统 | |
JP5231484B2 (ja) | 音声認識装置、音声認識方法、プログラム、及びプログラムを配信する情報処理装置 | |
CN104408037A (zh) | 藏文文本的向量模型表示方法 | |
Vykhovanets et al. | An overview of phonetic encoding algorithms | |
Yang | Burmese word segmentation method and implementation based on crf | |
Wang et al. | Accurate Braille-Chinese translation towards efficient Chinese input method for blind people | |
CN114548049A (zh) | 一种数字正则化方法、装置、设备及存储介质 | |
Asahiah | Development of a Standard Yorùbá digital text automatic diacritic restoration system | |
CN111882462A (zh) | 一种面向多要素审查标准的中文商标近似检测方法 | |
Ahmed et al. | Discovering lexical similarity using articulatory feature-based phonetic edit distance | |
Lu et al. | Language model for Mongolian polyphone proofreading | |
Saychum et al. | Efficient Thai Grapheme-to-Phoneme Conversion Using CRF-Based Joint Sequence Modeling. | |
Li et al. | The study of comparison and conversion about traditional Mongolian and Cyrillic Mongolian | |
Rajendran et al. | Text processing for developing unrestricted Tamil text to speech synthesis system | |
Manohar et al. | Spellchecker for Malayalam using finite state transition models | |
CN101901062B (zh) | 基于音素编码的计算机汉字信息处理方法 | |
Joshi et al. | Input Scheme for Hindi Using Phonetic Mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121024 Termination date: 20130701 |