主题:求两个字符串的相似度
海军527725
[专家分:20] 发布于 2011-05-05 17:35:00
请高手帮帮忙,如何计算两个字符的相似度呀,如相似98%
回复列表 (共4个回复)
沙发
孙瑞 [专家分:590] 发布于 2011-05-05 20:30:00
例如:
我知道哦你是说的
与
我不知道你是所得
怎么判断?
这种算法要么难以实现,面临各种歧义问题,要么需要人工智能技术实现。
板凳
一江秋水 [专家分:9680] 发布于 2011-05-06 08:33:00
提供一个思路:
1.先编写一个函数,有两个形参,一个单字符,一个字符串,该函数判断单个字符是否在字符串中出现,如果出现,函数返回值为真,否则为假。
2.再写一个调用过程,声明一个计数变量,然后采用For循环的方式,把字符串1的单个字符顺序取出,这个单字符与字符串2作为调用函数的实参,如果返回值为真,计数变量加1。循环结束后统计字符串2的字符个数,用计数变量值除以字符个数,就可以得出相似度。
或者:两个字符串逐字比较,即比较第一个字符是否相同,再比较第二个字符是否相同。。。相同的话,计数变量加1。这个方法就不需要写函数了。
3 楼
老大徒伤悲 [专家分:29120] 发布于 2011-05-06 09:34:00
十分同意秋水朋友的意见。
另外,还可以考虑在秋水朋友的检测符合以后采取下述数学计算:
将字符串转换成ascii码的数组。从较长的里面从第一字符起截取与较短字符串相等的部分,然后用最小二乘法进行相关分析,得到相关系数;然后从第二字符起再计算;……直到完成。然后对各次算得的相关系数,采用自乘加权的方法进行平均。
这样大概可以得出包括abc与123的相似度。
不过,我这是不知道,你的想法,怎么算相似,怎么不算。乱说一气。
4 楼
cgl_lgs [专家分:21040] 发布于 2011-05-13 10:50:00
楼主其实想要的是“字符串”的相似度,而不是“语言”上的相似度:)
建议楼主可以去看一些开源的compare程序:)
我来回复