基于音形码的中文字符串相似度算法(转)

本文介绍了基于音形码的中文字符串相似度算法,探讨了编辑距离、N-Gram、Jaro-Winkler和Soundex算法在处理中文时的局限性,并提出音形码算法作为解决中文同音字、方言发音和字形相似度问题的新方法。音形码结合了汉字的发音和形状特征,通过特定编码规则计算相似度,适用于中文纠错和模糊查询场景。
摘要由CSDN通过智能技术生成

基于音形码的中文字符串相似度算法(转)

转自 【https://blog.csdn.net/chndata/article/details/41114771

字符串相似度算法是指通过一定的方法,来计算两个不同字符串之间的相似程度。通常会用一个百分比来衡量字符串之间的相似程度。字符串相似度算法被应用于许多计算场景,在诸如数据清洗,用户输入纠错,推荐系统, 剽窃检测系统,自动评分系统,以及网页搜索和DNA序列匹配这些方向都有着十分广泛的应用。

常见的字符串相似度算法包括编辑距离算法(EditDistance),n-gram算法,JaroWinkler算法以及Soundex算法。本文接下来大略的介绍一下这几种算法,有兴趣的读者可以在互联网找到一些更详细的资料。

最常见的相似度算法为编辑距离算法(EditDistance),该算法将两个字符串的相似度问题,归结为将其中一个字符串转化成另一个字符串所要付出的代价。转化的代价越高,说明两个字符串的相似度越低。通常可以选择的转化方式包含插入,替换以及删除。

N-Gram算法则是基于这样的一个假设: 即在字符串中第n个词的出现只与前面n-1个词相关,而与其他任何词都不相关,整个字符串出现的概率就是各个词出现的概率的乘积。 N-gram本身也代表目标字符串中长度为n的子串,举例,“ARM”在“ARMY”中,便是一个3-gram。当两个字符串中,相同的n-gram越多时,两个字串就会被认为更加相似。

Jaro Winkler则是将n-gram算法更进了一步。将n-gram中的不匹配的部分同时进行了换位的考虑,使得能获得更准确的相似程度。JaroWinkler在比较两个较短字符串的情况下,能够取得很好的结果。

Soundex算法与前面几种都不太相同。该算法的特点是,它所关注的问题并非两个字符串文本上的相似程度,而是发音的近似。首先,该算法会将两个字符串分别通过一定的hash算法转换成一个hash值,该值由四个字符构成,第一个字符为英文字母,后面三个为数字。进行转化的hash算法并非随机选取,而是利用了该拉丁文字符串的读音近似值。

当获得了两个字符串的读音上的hash值之后,该算法再对两个hash的相似度进行计算,便可以得出输入字符串的读音相似度。

Soundex算法的另一个应用场景在于,用户进行模糊查询时,可以通过Soundex值进行过滤,以提高查询性能。

问题描述
这些常见的字符串相似度算法在处理拉丁文字的文本匹配时,都能起到非常好的效果。它们本身最初的发明者也是为了解决拉丁文字中遇到的问题。然而,对于象形文字相似度计算,比如说中文,这些算法就显得捉襟见肘了。

举例来说明:

南通市 – 难通市 – 北通市

对于编辑距离算法而言,南通市和难通市之间的相似度,与南通市和北通市的相似度,是一模一样的,因为两者都需要付出相同的代价来转换成另一个。 使用N-Gram算法,得出的也是相同的结果。然而,对于熟悉汉字的人来讲,南通市和难通市理应有着更加接近的相似度。因为两者的发音完全相同。

既然是发音的问题,那么有没有可能利用Soundex算法来解决呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值