首页 > Java > java教程 > java抓取文字的最大相似度

java抓取文字的最大相似度

(*-*)浩
发布: 2019-10-30 15:28:35
转载
3376 人浏览过

java抓取文字的最大相似度

java抓取文字的最大相似度代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

public static void main(String[] args) {

        //要比较的两个字符串

        String str1 = "汗1滴禾下土";

        String str2 = "汗滴禾下土";

        levenshtein(str1,str2);

         

         str1 = "汗滴禾下土";

         str2 = "汗滴禾下土";

        levenshtein(str1,str2);

         

        str1 = "锄禾日当午";

         str2 = "汗滴禾下土";

        levenshtein(str1,str2);

         

        str1 = "我觉得锄禾日当午";

         str2 = "锄禾日是sag";

        levenshtein(str1,str2);

         

        str1 = "我最帅asdasd";

         str2 = "最帅asdasdqeqwe";

        levenshtein(str1,str2);

    }

  

    /**

     *   DNA分析   拼字检查   语音辨识   抄袭侦测

     *

     * @createTime 2012-1-12

     */

    public static void levenshtein(String str1,String str2) {

        //计算两个字符串的长度。

        int len1 = str1.length();

        int len2 = str2.length();

        //建立上面说的数组,比字符长度大一个空间

        int[][] dif = new int[len1 + 1][len2 + 1];

        //赋初值,步骤B。

        for (int a = 0; a <= len1; a++) {

            dif[a][0] = a;

        }

        for (int a = 0; a <= len2; a++) {

            dif[0][a] = a;

        }

        //计算两个字符是否一样,计算左上的值

        int temp;

        for (int i = 1; i <= len1; i++) {

            for (int j = 1; j <= len2; j++) {

                if (str1.charAt(i - 1) == str2.charAt(j - 1)) {

                    temp = 0;

                } else {

                    temp = 1;

                }

                //取三个值中最小的

                dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1,

                        dif[i - 1][j] + 1);

            }

        }

        /*System.out.println("字符串\""+str1+"\"与\""+str2+"\"的比较");

        //取数组右下角的值,同样不同位置代表不同字符串的比较

        System.out.println("字符串\""+str1+"\"的长度["+str1.length()+"]与\""+str2+"\"的长度["+str2.length()+"]");

        System.out.println("差异步骤:"+dif[len1][len2] +"/" +Math.max(str1.length(), str2.length()));

         

        //计算相似度

        float similarity =1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length());

        System.out.println("------------------------"+(float)1/6);

        System.out.println("使用方法得到的相似度是:"+similarity);*/

        float similarity =1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length());

        System.out.println("字符串【"+str1+"】与【"+str2+"】的相似度是:"+similarity);

        System.out.println();

    }

  

    //得到最小值

    private static int min(int... is) {

        int min = Integer.MAX_VALUE;

        for (int i : is) {

            if (min > i) {

                min = i;

            }

        }

        return min;

    }

登录后复制

输出的结果:

1

2

3

4

5

6

7

8

9

字符串【汗1滴禾下土】与【汗滴禾下土】的相似度是:0.8333333

  

字符串【汗滴禾下土】与【汗滴禾下土】的相似度是:1.0

  

字符串【锄禾日当午】与【汗滴禾下土】的相似度是:0.0

  

字符串【我觉得锄禾日当午】与【锄禾日是sag】的相似度是:0.125

  

字符串【我最帅asdasd】与【最帅asdasdqeqwe】的相似度是:0.53846157

登录后复制

以上是java抓取文字的最大相似度的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
java可以做为web的后端吗?
来自于 1970-01-01 08:00:00
0
0
0
安装JAVA
来自于 1970-01-01 08:00:00
0
0
0
无法安装java
来自于 1970-01-01 08:00:00
0
0
0
java - php调取webservice的map类型,如果封装?
来自于 1970-01-01 08:00:00
0
0
0
这个是Java语言的吗
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板