一种对中文字串进行匹配的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种对中文字串进行匹配的方法及装置。
背景技术
目前,计算机或者其他电子设备对用户输入的文本内容进行匹配的应用场景有很多,例如,用户在网上检索时,计算机会将用户输入的文本信息和存储在数据库中的信息进行匹配,匹配成功后,计算机会将存储在数据库的信息向用户展示;再例如,用户可以利用计算机或其他电子设备的文本匹配功能对一些物品进行分类,比如,图书管理人员可以利用计算机对图书进行分类,即通过计算机对输入的图书信息进行匹配,完成分类操作,例如,将图书信息为“喜剧”的图书归为一类等。
在上述应用场景下,现有技术对文本内容进行匹配的方法通常是:计算待匹配文本内容所对应字串之间的相似度;这里计算相似度通常是计算一个字串变换到另一字串的编辑距离,并通过比较计算得到的编辑距离与预设的编辑距离阈值的大小,判断这两字串的相似度。
虽然现有技术中通过计算字串之间的编辑距离来获取字串之间的相似度,对于处理英文字串具有良好效果,但是却没有处理中文字串中的形似字和音似字的能力。具体的,现有技术在计算两字串中的形似字或音似字之间的编辑距离时,通常如果计算机发现该形似字或音似字为不同字符时,将该形似字或音似字之间的编辑距离默认为两不同字符进行变换所花费的最大编辑距离,例如,假如规定字串中一个字符变换到另一个字符的最大编辑距离为100,则即使待匹配地两中文字串中有形似字或音似字时,计算机也会将该形似字或音似字之间的编辑距离定为100,在具体应用场景下,通常计算机会判定这两中文字串为不同的两字串,即这两字串匹配失败。而通常用户使用的文本输入法为拼音输入法或者五笔输入法,这样很容易由于用户输入失误导致待匹配的中文字串中出现形似字或音似字,但因为现有技术计算机对中文字串进行匹配时不具备处理形似字和音似字的能力,所以可能会导致两字串匹配失败。
发明内容
本申请实施例提供一种对中文字串进行匹配的方法,用于解决上述现有技术在对文本内容进行匹配时,无法处理中文字串中音似字和形似字的问题。
本申请实施例提供了一种对中文字串进行匹配的方法,该方法包括:获取待匹配的第一字串和第二字串,并将所述第一字串转换成表征所述第一字串笔画或拼音信息的第一编码串,以及将所述第二字串转换成表征所述第二字串笔画或拼音信息的第二编码串;根据所述第一编码串和第二编码串判断所述第一字串和第二字串中相同位置上的字符是否是形似字或音似字,如果所述相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离规则获取所述相同位置上的字符之间的编辑距离,所述编辑距离小于预设的不同字符之间的最大编辑距离;根据所述编辑距离对所述第一字串和第二字串进行匹配。
优选地,所述根据所述第一编码串和第二编码串判断所述第一字串和第二字串中相同位置上的字符是否是形似字具体包括:
根据所述第一编码串和第二编码串所表征的笔画信息,获取所述第一字串中字符对应的笔画信息变换到第二字串相同位置上字符对应的笔画信息之间的变换次数,或获取第二字串中字符对应的笔画信息变换到第一字串相同位置上字符对应的笔画信息之间的变换次数,并根据所述变换次数和相同位置上字符的最大笔画长度判断所述字符是否是形似字。
优选地,在根据所述变换次数和相同位置上字符中的最大笔画长度判断所述字符是否是形似字之前,所述方法还包括:
将所述变换次数与预设形似字对应笔画信息之间变换的最大次数进行比较;
如果所述变换次数大于所述预设形似字对应笔画信息之间变换的最大次数,则确定所述相同位置上的字符不是形似字;
如果所述变换次数小于所述预设形似字对应笔画信息之间变换的最大次数,则根据所述变换次数和相同位置上字符中的最大笔画长度判断所述字符是否是形似字。
优选地,所述将所述第一字串转换成表征所述第一字串笔画信息的第一编码串和将所述第二字串转换成表征所述第二字串笔画信息的第二编码串包括:
根据所述第一字串的笔画顺序对所述第一字串的笔画信息进行表征,获取第一编码串,并根据所述第二字串的笔画顺序对所述第二字串的笔画信息进行表征,获取第二编码串。
优选地,所述将所述第一字串转换成表征所述第一字串笔画信息的第一编码串和将所述第二字串转换成表征所述第二字串笔画信息的第二编码串还包括:
将汉字笔画与数字建立对应关系;
根据所述对应关系使用数字对所述第一字串的笔画信息进行表征,获取第一编码串,并根据所述对应关系使用数字对所述第二字串的笔画信息进行表征,获取第二编码串。
优选地,所述根据所述第一编码串和第二编码串判断所述第一字串和第二字串中相同位置上的字符是否是音似字具体包括:
根据所述第一编码串和第二编码串所表征的拼音信息,判断所述第一字串和第二字串中相同位置上的字符是否是音似字。
优选地,所述判断所述第一字串和第二字串中相同位置上的字符是否是音似字具体包括:
如果所述第一字串和第二字串中相同位置上字符对应的拼音信息中只有音调不同,则确定所述相同位置上的字符是音似字;和/或,
如果所述第一字串和第二字串中相同位置上字符对应的拼音信息中包含有声母模糊音且韵母和声调相同时,则确定所述相同位置上的字符是音似字;和/或,
如果所述第一字串和第二字串中相同位置上字符对应的拼音信息中包含有韵母模糊音且声母和声调相同时,则确定所述相同位置上的字符是音似字。
本申请实施例还提供了一种对中文字串进行匹配的装置,该装置包括获取单元、判断单元和匹配单元,其中:
所述获取单元,用于获取待匹配的第一字串和第二字串,并将所述第一字串转换成表征所述第一字串笔画或拼音信息的第一编码串,以及将所述第二字串转换成表征所述第二字串笔画或拼音信息的第二编码串;
所述判断单元,用于根据所述第一编码串和第二编码串判断所述第一字串和第二字串中相同位置上的字符是否是形似字或音似字,如果所述相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离规则获取所述相同位置上的字符之间的编辑距离,所述编辑距离小于预设的不同字符之间的最大编辑距离;
所述匹配单元,用于根据所述编辑距离对所述第一字串和第二字串进行匹配。
优选地,所述判断单元包括获取子单元和判断子单元,其中:
所述获取子单元,用于获取所述第一字串中字符对应的笔画信息变换到第二字串相同位置上字符对应的笔画信息之间的变换次数,或获取第二字串中字符对应的笔画信息变换到第一字串相同位置上字符对应的笔画信息之间的变换次数;
所述判断子单元,用于根据所述变换次数和相同位置上字符的最大笔画长度判断所述字符是否是形似字。
优选地,所述装置还包括比较单元,所述比较单元用于在根据所述变换次数和相同位置上字符中的最大笔画长度判断所述字符是否是形似字之前,将所述变换次数与预设形似字对应笔画信息之间变换的最大次数进行比较;
如果所述变换次数大于所述预设形似字对应笔画信息之间变换的最大次数,则确定所述相同位置上的字符不是形似字;
如果所述变换次数小于所述预设形似字对应笔画信息之间变换的最大次数,则根据所述变换次数和相同位置上字符中的最大笔画长度判断所述字符是否是形似字。
应用本申请实施例提供的对中文字串进行匹配的方法及装置,在计算两中文字串之间的编辑距离时,首先将这两字串写成编码串的形式,该编码串可以表征这两字串对应的拼音或笔画信息,然后根据这两编码串所表征的这两中文字串的笔画或拼音信息,判断这两中文字串中相同位置上的字符是否是形似字或音似字,如果该相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离的规则计算该相同位置上字符的编辑距离,获得的该编辑距离小于除了预设的两不同字符之间进行变换的最大编辑距离,这样提升了计算机处理中文字串中相似字和音似字的能力,即可以使得计算机对文本内容的匹配更加准确。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种对中文字串进行匹配的方法的具体流程示意图;
图2为本申请实施例1提供的具体编辑操作的框架示意图;
图3为本申请实施例2提供的一种对中文字串进行匹配的装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更加清楚的说明本申请实施例,在说明本申请实施之前,有必有对现有技术中关于文本匹配的方法进行说明,具体如下:
在背景技术中已经提到,计算机中关于文本内容匹配的应用场景有很多,例如,网上各个购物平台中对商品的分类,或者图书管中对于书籍的分类等,这些都会涉及到计算机对文本内容进行匹配的操作。通常计算机在对文本内容进行匹配的方法是计算文本内容对应的字串之间的相似度,而计算两字串之间的相似度通常的方法是计算这两字串之间的编辑距离,例如,计算机在判断文本内容A与文本内容B之间的是否相互匹配时,通常会计算由文本内容A转换到文本内容B需要的最少编辑操作次数,即编辑距离,或者是计算由文本内容B转换到文本内容A所需要的最少编辑操作次数;如果得到文本内容A与文本内容B之间的编辑距离为0时,计算机就认为文本内容A和文本内容B是相同的文本内容,在一些实际的应用场景中,计算机在对物品进行分类时,会认为文本内容A和文本内容B对应的物品属于同类等。
在具体应用场景中,计算机针对两文本内容进行匹配的情况有很多种,例如:相关购物平台的管理人员在对商品进行分类时,当涉及到两商品信息对应字串之间进行匹配时,可以是管理人员同时对新进的一批商品中任意两件商品对应的信息进行匹配,从而完成商品的分类;或者也可以是新进的商品中任意一个商品对应的信息与相关购物平台中已经存储的任意一个商品信息进行匹配,从而完成商品的分类,或者还有其他两文本内容进行匹配的情况,这里不作具体限定。
在现有技术中,通常计算中文字串和英文字串的编辑距离的规则是相同的,如表1为现有技术中利用建模软件SAS中的函数compged计算得到的两英文字串之间的编辑距离,具体内容如下:
编辑操作可以是“替换”、“插入”、“删除”、“空格”、“标点”、“截断”、“双写”和“首字母”等,具体的,在编辑操作为“替换”的一行中:将“manegement facebook”变为“management facebook”,即将“manegement”中的中间字符“e”替换成“a”,获得“management”,通过计算获得由“manegement facebook”变为“management facebook”需要花费的编辑距离为100;在编辑操作为“插入&删除”的一行中:将“mangement facebook”变为“management facebook”,即将“mangement”中插入一个字符“a”,获得“management”,通过计算获得由“mangement facebook”变为“management facebook”需要花费的编辑距离为100,同理,将“management”中删除一个字符“a”,获得“mangement”,需要花费的编辑距离同样也为100;其他编辑操作所花费的编辑距离如表1所示,这里不再赘述。
表1
编辑操作 |
编辑距离 |
举例 |
替换 |
100 |
manegement facebook-->management facebook |
插入&删除 |
100 |
mangement facebook-->management facebook |
空格 |
10 |
managementfacebook-->management facebook |
标点 |
30 |
management,facebook-->management!facebook |
截断 |
50 |
management facebook-->management faceboo |
双写 |
20 |
management facebook-->management facebok |
首字母 |
200 |
management facebook-->nanagement facebook |
上述编辑操作中的“删除”与“截取”的区别是:“删除”是删除字串中间位置的字符,而“截取”是去掉字串中末尾的字符。另外,利用建模软件SAS计算两中文字串之间的编辑距离,与计算英文字串之间的编辑距离的规则一致,例如,由“达夫妮”变换成“达芙妮”,需要将“夫”替换为“芙”,根据上述表1可以知道,编辑操作“替换”需要花费的最低编辑距离为100。
利用建模软件SAS获得的两字串之间的编辑距离对于英文字串,的确可以比较精确的计算出两字串间的编辑距离,在实际应用中,利用建模软件SAS获得的两英文字串的编辑距离也可以很精确的完成两英文字串对应文本内容之间的匹配,而且有时计算机根据计算得到的两英文字串之间的编辑距离,可以对人为输入失误导致的后果进行及时的修正,例如,用户在对物品进行分类时,误将“abc”输成“ab”,这时计算机分别计算“ab”与其他的输入物品信息对应的字串之间的编辑距离,假设通过计算发现从“abc”变换到“ab”的编辑距离为50,假如预设的编辑距离的阈值为80,即该计算机认为编辑距离小于80的为相同字串,这时计算机会将“ab”自动匹配为“abc”,即将“ab”对应的物品归类为“abc”的物品类别中。
但建模软件SAS在计算中文字串之间的编辑距离时,有时无法得到很精确的编辑距离,例如,由字串“达夫妮”变换成字串“达芙妮”,需要将“夫”替换为“芙”,编辑操作“替换”需要花费的最低编辑距离为100,但是在汉字中“夫”与“芙”的拼音相同,且笔画相差也较小,得到的编辑距离却相对较大,在通常没有设定编辑距离阈值的情况下,计算机会认为“夫”和“芙”为不同的字符,即认为“达夫妮”和“达芙妮”为不同的两字串;在实际应用中,假如相关购物平台管理人员在对商品分类时,因为“夫”和“芙”的拼音相同,管理人员在采用拼音输入法时,很有可能误将“达芙妮”输成“达夫妮”,这时计算机根据这两字串的编辑距离,可能不会将“达夫妮”对应的商品归类于“达芙妮”这类商品中,造成分类错误。
因此建模软件SAS在计算两字串的编辑距离时,没有处理中文字串中形似字和音似字的能力,而且该建模软件在处理英文字串和中文字串的规则是相同的,例如,在表1中的编辑操作“双写”,该编辑操也用于中文字串,但是在实际应用中“双写”这种编辑操作,对于中文字串中使用的情况很少,还有编辑操作“首字符”,同样对于中文字串使用的情况也相对较少。因此建模软件SAS没有考虑到中文字串和英文字串的差异性,导致在实际应用中,有时会给用户带来不便。
上述建模软件SAS只是示例性的说明,在实际应用中,还有其他计算字串编辑距离的软件,但是大部分计算编辑距离的软件都会存在上述提到的问题,且为了更清楚的说明本申请实施例中对文本内容匹配的方法,以下对于现有技术对于文本内容匹配的方法均用建模软件SAS进行举例说明。
在对现有技术中关于文本匹配的方法进行说明之后,以下结合附图,详细说明本申请各实施例提供的技术方案。
本申请实施例提供了一种对中文字串进行匹配的方法,用于计算机在对文本内容进行匹配时,提高计算机处理文本内容中形似字的能力。该方法的具体流程示意图如图1所示,包括下述步骤:
步骤11:获取待匹配的第一字串和第二字串,并将所述第一字串转换成表征所述第一字串笔画或拼音信息的第一编码串,以及将所述第二字串转换成表征所述第二字串笔画或拼音信息的第二编码串。
在本步骤中,计算机在对文本内容匹配之前,先要获得待匹配的文本内容对应的字符串,且通常是两文本内容之间进行匹配,即获得两文本内容分别对应的第一字串和第二字串,且该字串可以是英文字串或者是中文字串,同时这里的英文字串或者中文字串中可能夹杂标点符号、空格、数字等,或者是中英文结合的字串形式。
本申请实施例对于处理英文字串之间的编辑距离,与现有技术中处理英文字串的编辑距离的规则相似,详细可以参考表1,且表1只是示例性的说明了几个编辑操作,在实际应用中,还有其他的编辑操作,这里不作具体的限定。
下面重点说明应用本申请实施例计算中文字串之间编辑距离的方法,本申请实施例中对于处于中文字串之间的编辑距离,提供了相应的笔画编码规则,来增加现有技术中处理中文字串中形似字的能力,具体如下:
这里的笔画编码规则是指将中文字串按照固定的笔画规则写成编码形式的字串,该编码形式的字串用来表征中文字串的笔画信息,且该编码形式的字串的表现形式有很多种,例如,该固定规则可以是:按照中文字串的笔画顺序,将该中文字串的笔画表现出来,例如,中文字串“十”可以写成“一丨”;但在实际应用中,有些中文字串的笔画相对较为复杂,这时就可以将该中文字串的笔画用一些编码进行表示,例如,可以将常用的汉字笔画与数字建立对应关系。如表2就是将常用的汉字笔画用数字进行表示,具体如下:笔画“一”用数字“1”表示,笔画“丨”和“亅”用数字“2”表示,笔画“丿”用数字“3”表示等;其中,有些笔画采用相同数字表示的原因是:在实际的应用场景下,由于在中文字串中的某些笔画十分相近,如果用户采用五笔等输入法时,可能将一些笔画输错,导致计算机不能将用户输入的文本进行正确的匹配。
表2
汉字笔画 |
数字 |
一 |
1 |
丨 |
2 |
亅 |
2 |
丿 |
3 |
丶 |
4 |
乁 |
4 |
乀 |
4 |
乛 |
5 |
乚 |
5 |
乙 |
5 |
表2中采用数字表示汉字笔画只是示例性的说明,用户可以根据实际的需要进行自行设定,例如,在具体应用场景下,用户可以统计经常输错的汉字的笔画,自行设定笔画表码表,最大限度的减小在该应用场景下由于用户人为的输入错误产生的不良后果。
类似的,本申请实施例还提供了相应拼音编码规则,来增加现有技术中处理中文字串中音似字的能力,具体如下:这里拼音编码规则是指将中文字串按照固定的拼音规则写成拼音编码形式的字串,该拼音编码形式的字串用来表征中文字串的拼音信息,且该编码形式的字串的表现形式有很多种,例如,该固定规则可以是将中文字串中字符分别写成“声母+韵母+声调”的形式,例如,对于中文字串“间”可以写成“jian1”,即声母为“j”,韵母为“ian”,拼音为一声,即“1”;再例如“可以”,可以写成“ke3yi3”,或者可以写成“keyi33”,用户根据需要自行设定,这里不作具体限定。
步骤12:根据所述第一编码串和第二编码串判断所述第一字串和第二字串中相同位置上的字符是否是形似字或音似字,如果所述相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离规则获取所述相同位置上的字符之间的编辑距离,所述编辑距离小于预设的不同字符之间的最大编辑距离。
在步骤11中已经获得待匹配两文本对应的字串,且根据预设的笔画编码规则将第一字串和第二字串编写成笔画编码形式的字串,该笔画编码形式的字串表征该第一字串和第二字串的笔画信息,即获得第一编码串和第二编码串。
在获得第一编码串和第二编码串后,要判断这两编码字对应的第一字串和第二字串中相同位置上的字符是是否是形似字;具体的判断方法是:根据该第一编码串和第二编码串所表征第一字串和第二字串的笔画信息,获得该第一字串和第二字串中相同位置上字符的笔顺编辑距离,这里的笔顺编辑距离是指该第一字串和第二字串中相同位置上的字符所对应的笔画信息之间进行变换的次数。例如,根据表2中的数字与汉字笔画的对应关系,将中文字串“回力”表示为“252511 53”的编码形式,字串“回匕”表示为“252511 35”的编码形式,根据这两编码串所表征的笔画信息中,只需将“53”进行一次数字交换变为“35”,即从字符“力”和字符“匕”之间的笔顺编辑距离为1。
在获取第一字串和第二字串中相同位置上字符的笔顺编辑距离后,比较该第一编码串和第二编码串中相同位置上字符之间的笔顺编辑距离与预设的相似字对应笔画信息之间的最大编辑距离,如果该笔顺编辑距离比预设的相似字对应笔画信息之间的最大编辑距离大,则该相同位置上的字符不是形式字,如果该笔顺编辑距离比预设的相似字对应笔画信息之间的最大编辑距离小,则再根据该笔顺编辑距离和相同位置上字符中的最大笔画长度判断所述字符是否是形似字。
具体的,可以根据上述两字串中相同位置上字符之间的笔顺编辑与这两字符中的最大笔画长度的比值,判断这两字符是否是形似字,并将该比值与设定的阈值进行比较,从而确定这两字符是否是形似字,即:当计算得到的比值大于该设定的阈值时,则这两字符不是形似字,反之,当计算得到的比值小于该设定的阈值时,则这两字符不是形似字。在实际应用中,有很多种确定两字符是否是形似字的方法,这里只是示例性的说明,不作具体限定。
当上述第一字串和第二字串中相同位置上的字符是相似字时,计算该形似字的编辑距离的规则可以是:采用公式进行计算
其中y代表的两字串之间的编辑距离,a代表的是起始距离,b代表的是笔画编辑距离,100代表的是字串中一个字符进行变换的最大编辑距离,l
max代表的是两字串中的最大长度,例如,“间”和“问”这两字串的最大长度为7。这里笔画编辑距离b是指:两字串对应的笔画编码串之间进行变换时所需的编辑次数,例如,字串“力”和“匕”对应的笔画编码分别为“53”和“35”,即通过将数字“5”和“3”进行一次交换,就可以使得两笔画编码完全相同,则这两字串的笔画编辑距离b的取值为1;且这里的起始编辑距离可以自行设置,例如,如果规定字串中的一个字符进行变换的最大编辑距离为100,即如果两字串进行变换时所要花费的编辑距离为100,则这两字串可以认为完全不相同,即完全不匹配,此时就可以将起始编辑距离设置为20,即这里设定的起始编辑距离要小于一个字符变换的最大编辑距离。
需要说明的是,上述计算形似字的编辑距离的公式
其中,该公式中设定初始距离a和因数100的原因是:确保计算获得的两字串之间的编辑距离的范围是[0,100],因为现有技术中两英文字符之间的编辑距离的范围是[0,100],为了与其对应,对笔顺编辑距离与第一编码串和第二编码串的最大长度的比值进行可调整。
具体的,通过实例来对本申请实施例提供的对于形似字的匹配方法进行说明,如表3所示为:根据字串1和字串2之间的编辑距离获得这两字串间的匹配程度,在匹配之前,先将字串1和字串2根据表2中笔画与数字之间的对应关系进行编写,即:根据字串1和字串2的笔画顺序,且用相应的数字对字串1和字串2的笔画进行表示,获得编码形式字串;具体如下:字串1始终为“回力”,相应的编码形式的字串为“252511 53”,当字串2也为“回力”时,对应的笔画编码为“252511 53”,通过计算得到这两字串间的编辑距离为0,即这两字串完全匹配;当字串2为“耐克”时,对应的笔画编码为“1325221241225135”,通过计算得到这两字串间的编辑距离为200,即这两字串完全不匹配;当字串2为“回刀”时,对应的笔画编码为“252511 53”,通过计算得到这两字串间的编辑距离为20,即这两字串笔画编码相同,但因为“力”和“刀”为不同字串,根据上述公式,因为笔画编码相同,即笔画编辑距离b为0,则这两字串之间的编辑距离为20,即初始编码距离设为20;当字串2为“回匕”时,对应的笔画编码为“252511 35”,通过公式计算得到这两字串间的编辑距离为70,具体计算过程是:a=20,由于这两字串对应的笔画编码分别为“252511 53”和“252511 35”,即只需将“5”和“3”进行一次交换,就可以使得这两字串的笔画编码完全相同,因此这两字串的笔画编辑距离为1,且这里字串对应的最大长度为2,则,即这两字串笔画编码相近;当字串2为“回味”时,对应的笔画编码为“252511 25111234”,同理,通过计算得到这两字串间的编辑距离为100,即这两字串笔画编码不同。假如在实际应用场景中,规定编辑距离的阈值为50,则字串2中除了“回力”可以与字串1匹配以外,计算机也会将“回刀”认为与字串1中的“回力”匹配,这样可以增加计算机对于处理形似字的能力。
表3
字符串1 |
字符串2 |
笔画1 |
笔画2 |
编辑距离 |
说明 |
回力 |
回力 |
252511 53 |
252511 53 |
0 |
完全匹配 |
回力 |
耐克 |
252511 53 |
132522124 1225135 |
200 |
完全不匹配 |
回力 |
回刀 |
252511 53 |
252511 53 |
20 |
笔画编码相同 |
回力 |
回匕 |
252511 53 |
252511 35 |
70 |
笔画编码相近 |
回力 |
回味 |
252511 53 |
252511 25111234 |
100 |
笔画编码不同 |
上述计算机处理中文字字串中的形似字方法只是示例性的说明,在实际应用中,可以自行的对编辑距离进行设定,例如,在处理形似字时,计算编辑距离的公式
中,其中,参数100是根据现有技术中常用的字串中的编辑距离范围来确定的,用户也可以将字串中一个字符记性变换的最大编辑距离规定为200,相应的,a和b的值也可以进行相应的变化,或者采用其他公式计算编辑距离。
同理,在步骤11根据预设的拼音编码规则将第一字串和第二字串编写成拼音编码形式的字串,该拼音编码形式的字串表征该第一字串和第二字串的拼音信息,即获得第一编码串和第二编码串。
计算第一编码串和第二编码串的编辑距离之前,先要判断第一字串和第二字串中相同位置上的字符是否是音似字,判断方法可以是根据该相同位置上的字符对应的拼音信息进行判断:如果这两字串中的拼音只有音调不同时,可以认为这两编码串为音似字;如果这两字串包含有声母模糊音,且这两字串的韵母和音调相同时,这里可以认为该字串是音似字;或者这两字串包含有韵母模糊音,且这两字串的声母和音调相同时,这里也可以认为该字串是音似字。
在确定上述第一编码串和第二编码串中相同位置上的字符为音似字后,要根据预设规则获取该相同位置上的字符之间的编辑距离,该编辑距离小于预设编辑距离,且该预设编辑距离是指除了形似字和音似字以外的其他字符之间的最大编辑距离。
具体的,通过举例清楚的对上述计算音似字之间的编辑距离的规则进行说明,例如,计算音似字的编辑距离的规则可以是:如果两字串为不同字串,但是这两字串对应的拼音相同,这里拼音相同是指声母、韵母和声调均相同,这时如果设定字串之间进行变换的最大编辑距离为100时,可以将这两字串的编辑距离定为20,例如,lian2和lian2之间的编辑距离为20;如果两字串只有声调不同时,编辑距离可以定为30,例如,lian2与lian3之间的编辑距离为30;如果存在模糊音,且只有韵母模糊音或声母模糊音而其他部分的拼音相同时,这两字串的编辑距离可以定为50,例如,lian2和nian2之间的编辑距离为50;如果虽然存在模糊音,但拼音中其他两部分任意一部分不同时,这两字串间的编辑距离为100,则计算机认为这两字串完全不相同,即这两字串完全不匹配,例如,lian2和nian4之间的编辑距离为100。
下面再通过实例来对本申请实施例提供的对于音似字的匹配方法进行说明,如表4所示为:根据字串1和字串2之间的编辑距离获得这两字串间的匹配程度,且表4中的字串1和字串2是根据字串1和字串2的拼音,将字串1和字串2写成“声母+韵母+声调”的编码形式的字串,具体如下:字串1始终为“达芙妮”,相应的编码形式的字串为“da2fu1ni2”,当字串2也为“达芙妮”时,对应的拼音编码为“da2fu1ni2”,通过计算得到这两字串间的编辑距离为0,即这两字串完全匹配;当字串2为“天美意”时,对应的拼音编码为“tian1mei3yi4”,通过计算得到这两字串间的编辑距离为300,即这两字串完全不匹配;当字串2为“达夫妮”时,对应的拼音编码为“da2fu1ni2”,通过计算得到这两字串间的编辑距离为20,即这两字串拼音编码相同,但因为“芙”和“夫”为不同字串,则这两字串之间的编辑距离为20;当字串2为“达付妮”时,对应的拼音编码为“da2fu4ni2”,通过计算得到这两字串间的编辑距离为30,即这两字串只有音调不相同;当字串2为“达芙离”时,对应的拼音编码为“da2fu1li2”,其中,“n”与“l”为模糊音,通过计算得到这两字串间的编辑距离为50;当字串2为“达达妮”时,对应的拼音编码为“da2da2ni2”,通过计算得到这两字串间的编辑距离为100,即这两字串存在读音错误。假如在实际应用场景中,规定编辑距离的阈值为50,则字串2中除了“达芙妮”可以与字串1匹配以外,计算机也会将“达夫妮”和“达付妮”认为与字串1中的“达芙妮”匹配,这样可以增加计算机对于处理音似字的能力。
表4
字符串1 |
字符串2 |
拼音1 |
拼音1 |
编辑距离 |
说明 |
达芙妮 |
达芙妮 |
da2fu1ni2 |
da2fu1ni2 |
0 |
完全匹配 |
达芙妮 |
天美意 |
da2fu1ni2 |
tian1mei3yi4 |
300 |
完全不匹配 |
达芙妮 |
达夫妮 |
da2fu1ni2 |
da2fu1ni2 |
20 |
读音完全相同 |
达芙妮 |
达付妮 |
da2fu1ni2 |
da2fu4ni2 |
30 |
只有声调不相同 |
达芙妮 |
达芙离 |
da2fu1ni2 |
da2fu1li2 |
50 |
模糊音 |
达芙妮 |
达达妮 |
da2fu1ni2 |
da2da2ni2 |
100 |
读音错误 |
在实际应用中,还需要考虑到用户对有些中文字串的拼音不是很明确导致输入字串错误的情况,例如,中文拼音里的平翘舌音,比如:s和sh,c和ch,z和zh,用户很有可能在输入字串时,因为无法确定平翘舌音,导致输入的字串错误;还有些用户因为地域上的差异,会将拼音里的l和n、f和h、r和l等混淆,这样也可能导致用户输入的字串错误。针对这个问题,本申请实施例针对计算一些常见的模糊音对应字串的编辑距离,采取预设的算法使得计算得到的模糊音对应字串的编辑距离,相比现有技术中计算得到的编辑距离要小,例如,现有技术计算得到“can”和“chan”两个字串之间的编辑距离为100(如表一所示),在本申请实施例中可以将“can”和“chan”这两字串的编辑距离规定为50,因为“c”和“ch”是模糊音。在实际应用中,利用本申请实施例提供的关于计算常见模糊音对应字串的编辑距离,减少这些模糊音的编辑距离,这样可以考虑到用户平时的语言习惯,提高了计算机在对用户输入的文本内容进行匹配时的正确率。
如表5所示为本申请实施例提供的部分常见的模糊音,除了上述提到的几个声母模糊音外,还有一些韵母模糊音,例如,an和ang、en和eng、in和ing、ian和iang、uan和uang,这些都是用户相对比较容易错的韵母模糊音;且表5只是示例性的对模糊音进行说明,在实际应用中,还有其他很多用户容易混淆的模糊音,这里不进行具体限定。
表5
现有技术中计算字串间的编辑距离的方法,需要根据一定的计算规则进行计算,例如,上述提到的建模软件SAS中的函数compged的计算规则如表1所示,即函数compged针对不同的编辑操作制定不同计算规则,从而获得编辑距离;另外,compged(s1,s2)表示的是将字串s1变换到s2时的编辑距离,compged(s2,s1)表示的是将字串s2变换到s1时的编辑距离,且有时compged(s1,s2)计算得到的编辑距离与compged(s2,s1)计算得到的编辑距离不相同,即函数compged具有方向性。但在实际应用中,有时需要避免由于函数compged的方向性导致获得的两字串间的编辑距离不同的情况,因此本申请实施例重新定义了计算字串编辑距离的函数,假设新的计算编辑距离的函数为ged,这时可以定义ged(s1,s2)=ged(s2,s1),即由字串s1变换到s2的编辑距离与由字串s2变换到s1的编辑距离相同。
在前述内容提到,在建模软件SAS中,如表1中的编辑操作“双写”,或者编辑操作“单写”,对于英文、中文、数字和标点都是有效的,但是在某些实际应用场景中,“双写”或“单写”这些操作步骤对于处理中文、数字和标点等字串是没有意义的,假如用户在输入中文字串时,用户输错字串的可能性远远大于输多字串或者输少字串的可能性,例如,用户很有可能将“达芙妮”输成“达夫妮”,而在很少情况输成“达芙芙妮”或者“达妮”,即使输成“达芙芙妮”或者“达妮”,用户通常比较容易发现这种错误并及时的进行修正,因此在一些具体的应用场景下,建模软件SAS中的“双写”或“单写”对于中文字串是没有意义的。本申请实施例针对这种情况,可以将“双写”或“单写”定义为只适用于英文等字串,而对于中文、数字和标点等字串不适用。这里所说的“双写”或“单写”针对具体字串的适用性,只是示例性的说明,用户可以根据具体的应用场景进行自行设定,例如,用户可以设定“双写”或“单写”对于英文、标点字串适用,或者对于英文、数字字串适用等。
在建模软件SAS计算两字串之间的编辑距离时,当这两个字串的首字符不同时,计算得到的编辑距离与其他位置中的字符不同时得到的编辑距离不同,例如,表1中的编辑操作“首字符”中,当两字串中的首字符不同时,计算得到的编辑距离是200,而编辑操作中的“替换”,相当于是两字串中间位置的字符不相同时,编辑距离为100,显然,首字符不同的情况下,通过建模软件SAS计算得到的两字串之间的编辑距离较大,但是在计算中文字串间的编辑距离时,首字符不同与其他位置上的字符不同,对于中文字串的区别不大。因此本申请实施例在计算两中文字串间的编辑距离时,这两字串首字符不同与其他位置上的字符不同时所花费的编辑距离相同。
而且,在建模软件SAS中,当两字串中的首尾位置有空格时,对于计算两字串的编辑距离也会有影响,但在实际应用中,对于两中文字串首尾位置上的空格通常是没有意义的,因此本申请实施例定义的函数ged,在计算中文字串的编辑距离时,可以先将首尾空格移除,再进行计算,可以避免由于首尾空格导致计算的编辑距离出现较大的差异。
现有技术在计算中文字串中的形似字或音似字时,通常直接将形似字或音似字之间的编辑距离默认为设定的两不同字符之间的最大编辑距离,而本步骤通过将待匹配的中文字串转换成表征该中文字串的笔画或拼音的编码串,且通过相应的计算形似字或音似字的规则,获得的该编码串之间的编辑距离要比设定的两不同字符之间的最大编辑距离小。
步骤13:根据所述编辑距离对所述第一字串和第二字串进行匹配。
在前面已经提到关于文本内容的匹配,可以通过某种算法计算待匹配文本内容对应字串之间的编辑距离,获得该编辑距离后,还需要设定编辑距离阈值,该阈值用于判断待匹配两字串之间的是否匹配。例如,在某种应用场景下,规定两字串之间的编辑距离阈值为50,即:如果通过计算获得两字串之间的编辑距离在50以下,即两字串之间的编辑距离小于或等于50时,则这两字串之间相互匹配;如果通过计算获得两字串之间的编辑距离在50以上,即两字串之间的编辑距离大于50时,则这两字串之间不匹配。
需要说明的是,在用户输入待匹配文本内容对应的字串时,通常计算机无法识别这两字串是形似字还是音似字,所以在计算机对中文字串进行匹配前,将同一字串分别按照拼音编码规则和笔画编码规则进行转换,获得拼音编码串和笔画编码串,然后分别计算这两个拼音编码串和这两笔画编码串的编辑距离,获得编辑距离较小的为最终获得的编辑距离。但是也存在有些应用场景,只需将两字串按照拼音编码规则或笔画编码规则进行转换,从而能获得拼音编码串或笔画编码串,这里不作具体限定。
另外,本申请实施例在处理有字串1变换到字串2的编辑操作有很多种,具体总结如图2所示:对于英文字串的编辑操作有:增加:将字串1中增加一个字符,获得字符2;删除:将字串1中删除一个字符,获得字符2;交换:将字串1中其中两字符进行交换,获得字符2;首字符:将字串1中的首字符进行改变,获得字串2;修改:将字串1中的一个字符修改,获得字串2;单双写:将字串1中的一个字符双写,获得字串2,或者是将字串中两个相邻的双写的字符改成单写,获得字串2;添加或截取:将字串1中的末尾增加或删除一个字符,获得字串2;标点:将字串1中的标点变换成另一种标点,获得字串2;空格:将字串1中加入或删除空格,获得字串2。对于中文字串的编辑操作有:修改:对字串1中字符进行修改,获得字串2,这里的中文字串具体包括音似字和形似字两种情形,当字串1和字串2中具有音似字时,将这两字串写成拼音编码形式的字串后,可能出现的情形有:1、拼音编码完全相同;2、拼音编码中只有音调不同;3、这两字串中有模糊音;4、除了上述3中情形以外的其他情形;当字串1和字串2中具有形似字时,将这两字串写成拼音编码形式的字串后,可能出现的情况有:1、笔画编码完全相同;2、笔画编码相似;3、笔画编码不相似。
上述内容针对一种对中文字串进行匹配的方法进行了详细的说明,相应的,本申请实施例提供一种对文本内容进行匹配的装置。该装置的具体结构示意图如图3所示,具体包括获取单元31、判断单元32和匹配单元33,其中:
所述获取单元31,可以用于获取待匹配的第一字串和第二字串,并将所述第一字串转换成表征所述第一字串笔画或拼音信息的第一编码串,以及将所述第二字串转换成表征所述第二字串笔画或拼音信息的第二编码串;
所述判断单元32,可以用于根据所述第一编码串和第二编码串判断所述第一字串和第二字串中相同位置上的字符是否是形似字或音似字,如果所述相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离规则获取所述相同位置上字符之间的编辑距离,所述编辑距离小于预设的不同字符之间的最大编辑距离;
所述匹配单元33,可以用于根据所述编辑距离对所述第一字串和第二字串进行匹配。
上述装置实施例的具体工作过程是:首先,获取单元31获取待匹配第一字串和第二字串,然后判断单元32根据该第一编码串和第二编码串判断该第一字串和第二字串中相同位置上的字符是否是形似字或音似字,如果该相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离规则获取所述相同位置上字符之间的编辑距离,该编辑距离小于预设的不同字符之间的最大编辑距离,最后匹配单元33根据该编辑距离对该第一字串和第二字串进行匹配。
本申请实施例提供的装置实施例的具体实施方式有很多种,在一种实施方式中,该判断单元包括获取子单元和判断子单元,其中:
所述获取子单元,可以用于获取所述第一字串中字符对应的笔画信息变换到第二字串相同位置上字符对应的笔画信息之间的变换次数,或获取第二字串中字符对应的笔画信息变换到第一字串相同位置上字符对应的笔画信息之间的变换次数;
所述判断子单元,可以用于根据所述变换次数和相同位置上字符的最大笔画长度判断所述字符是否是形似字。
在另一种实施方式中,所述装置还包括比较单元,所述比较单元可以用于在根据所述变换次数和相同位置上字符中的最大笔画长度判断所述字符是否是形似字之前,将所述变换次数与预设形似字对应笔画信息之间变换的最大次数进行比较,如果所述变换次数大于所述预设形似字对应笔画信息之间变换的最大次数,则确定所述相同位置上的字符不是形似字;
如果所述变换次数小于所述预设形似字对应笔画信息之间变换的最大次数,则再根据所述变换次数和相同位置上字符中的最大笔画长度判断所述字符是否是形似字。
应用本申请实施例提供的对中文字串进行匹配的方法及装置,在计算两中文字串之间的编辑距离时,首先将这两字串写成编码串的形式,该编码串可以表征这两字串对应的拼音或笔画信息,然后根据这两编码串所表征的这两中文字串的笔画或拼音信息,判断这两中文字串中相同位置上的字符是否是形似字或音似字,如果该相同位置上的字符是形似字或音似字,则根据预设的计算形似字或音似字的编辑距离的规则计算该相同位置上字符的编辑距离,获得的该编辑距离小于除了预设的两不同字符之间进行变换的最大编辑距离,这样提升了计算机处理中文字串中相似字和音似字的能力,即可以使得计算机对文本内容的匹配更加准确;在实际应用场景中,本申请实施例可以降低由于用户输入失误导致产生不良后果的几率。
本领域内的技术人员应明白,本申请的实施例可提供为方法或系统。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或是还包括为这种过程、方法、商品或设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变换。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。