毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

java字符编辑的字符串匹配算法的实现+编辑距离算法+JARO算法 第4页

更新时间:2010-11-9:  来源:毕业论文
字符编辑的字符串匹配算法的实现+编辑距离算法+JARO算法
3.1.2 Jaro算法实现
Jaro算法实现的分为几步:
1、 算出匹配窗口:  。例如:
 , , , , 。
2、 在匹配窗口范围内计算两个字符串公共字符数 ,其中字符序列的顺序是未作调整的。如:
(1) 以字符串的最小长度为数组长度,建立数组 ,初始化值为-1(见表3-1)。
表3-1
s1 N a n k i n g         
matchesIndex -1 -1 -1 -1 -1 -1 -1         
s2 N a n j i n g u n v e r s i t y
Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

(2) 在匹配窗口范围为7之内比较,即  中每个字符在对应 左右7个之内比较,  中字符在 中第一次出现,则在数组 中记录下 中出现的字符的索引值(见表3-2)。
表3-2
s1 N a n k i n g         
matchesIndex 0 1 2 -1 4 5 6         
s2 N a n j i n g u n v e r s i t y
Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

(3)  中值不为-1的即是公共字符,容易得到公共字符数 。
3、 算出匹配字符序列中公共字符不同顺序的数目 ,其得到交换次数为 。如:
(1)分别将公共字符相对于字符串 与 放入对应的数组ms1[]={‘N’,’a’,’n’,’i’,’n’,’g’},ms2[]={‘N’,’a’,’n’,’i’,’n’,’g’}中。
(2)数组ms1[]与ms2[]对应索引一一比较,字符不同即 加1,本例不同顺序数目 为0,则交换次数也为0。
4、 以上算出的 , , , 通过公式2.2,计算出两个字符串的相似度 。
Jaro算法
输入:两个带判定的字符串s,t;
输出:Jaro distance;
原文请找腾讯752018766辣'文.论,文.网
http://www.751com.cn 换次数
//***********************
  String max,min;
        //分别找出长度最大字符串和最小字符串
  if(s1.length()>s2.length()){
   max=s1;
   min=s2;
  }else{
   max=s2;
   min=s1;
  }
      //step1: 匹配窗口范围
  int matchRange = Math.max(max.length() / 2 - 1, 0);
  /*给定可能匹配的最大数组,初始化其值为-1;*/
        initMatchindex(){方法体,初始化数组和标识}
  /*step2: 在匹配范围的窗口内比较,算出匹配的字符数matches*/
  getMatches(){方法体,返回匹配的字符数matches值}
  /*找出匹配的字符序列ms1,ms2,以数组存放*/
        getEachMatches(int matches){ 方法体,返回与对应字符串匹配的公共字符数组ms1[],ms2[]}
   /*step3: 算出匹配字符序列顺序不同的个数transpositions*/
        getTranspositions(){方法体,返回return new int[] { matches, transpositions / 2}}
      //***************************************
// step4:计算Jaro distance,公式计算相似度
//****************************************
  public float getDistance(String s1, String s2) {方法体;用公式2.2返回Jaro distance}
3.2 Jaro-winkler算法
Jaro-Winkler的设计最适用于短字符串,被研究出来的的Jaro-Winkler距离方法用在美国的人口统计中,它被设计用来把姓和姓,名和名比较,而不是把整个姓名进行比较。Jaro算法考虑的是相同字符的顺序位置和个数,而Jaro-winkler目的就是通过前缀长度来客观提高jaro算法结果的相似程度
在实际应用中,大量的词以复合词的形式出现,如s1 = where is the book, s2 = where is the chassroom,其公共字符所占比例较高,但其语义不同,判断误差比较大。两个记录的前缀有很多相同的字符,但我们不希望相同的前缀把后面不相同的那部分覆盖掉,所以要对前缀占的比重进行一个限制。相同前缀取值最多取4,如果取值大于4的话,后面的字符串不一致,而前面很长的字符串一致的话,就会导致误判。
William Winkler在Jaro 算法的基础上对其作了修正,给定一个标准,在给定的标准内相似度仍按Jaro distance计算,超过给定的标准的考虑记录的相同前缀并作修正。
3.2.1 Jaro-winkler原理
通过对Jaro distance修正计算Jaro-winkler distance[7]来判断两记录是否为同一实体的不同表述。
Jaro distance大于给定的最低标准(Winkler给定标准值为0.7)时,Jaro-Winkler给两个记录 和 定义了一个修正值p,如果前缀相同的部分长度为 ,则Jaro-winkler distance为:
  (公式2.3)           
 是两个字符串的Jaro distance , 是前缀相同字符的长度,但是规定最大为4 (当 时取 ,当 >4时取 ), 则是根据前缀长度而调整的常数,规定不能超过0.25,不然可能出现 大于1的情况,在Winkler著作中这个常数的标准值是

上一页  [1] [2] [3] [4] [5] [6] 下一页

java字符编辑的字符串匹配算法的实现+编辑距离算法+JARO算法 第4页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。