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

java抓取文字的最大相似度

(*-*)浩
發布: 2019-10-30 15:28:35
轉載
3219 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板