美文网首页
JAVA 获取两个字符串的相似度

JAVA 获取两个字符串的相似度

作者: 二狗他叔 | 来源:发表于2019-08-14 10:50 被阅读0次

这是一个很实用的功能。

该方法需要传入两个字符串,经过计算,会返回两个字符串的相似度,返回值为float类型。

首先看看几个测试结果

字符串1: "亲爱的朋友们,大家早上好。"
字符串2: "亲爱的朋友们,大家晚上好。"

返回结果:92.30769

字符串1: "亲爱的朋友们,大家早上好。"
字符串2: "大家晚上好。"

返回结果:38.461536

字符串1: "大家晚上好,本书作者以娓娓而谈的文笔和行云流水般的故事,写出医药学研究生池大为空怀壮志、无职无权的苦,时来运转、有名有利的难;"
字符串2: "大家晚上好。"

返回结果:7.936507

字符串1: "。好上晚家大"
字符串2: "大家晚上好。"

返回结果:0.0

字符串1: "大大大大大家家家家家晚晚晚晚晚上上上上上好好好好好。。。。。"
字符串2: "大家晚上好。"

返回结果:20.0

通过这几个例子,大家应该能看出这个方法有什么作用了。

代码如下:

public static float getSimilarityRatio(String str, String target) {

    int d[][]; // 矩阵
    int n = str.length();
    int m = target.length();
    int i; // 遍历str的
    int j; // 遍历target的
    char ch1; // str的
    char ch2; // target的
    int temp; // 记录相同字符,在某个矩阵位置值的增量,不是0就是1
    if (n == 0 || m == 0) {
        return 0;
    }
    d = new int[n + 1][m + 1];
    for (i = 0; i <= n; i++) { // 初始化第一列
        d[i][0] = i;
    }

    for (j = 0; j <= m; j++) { // 初始化第一行
        d[0][j] = j;
    }

    for (i = 1; i <= n; i++) { // 遍历str
        ch1 = str.charAt(i - 1);
        // 去匹配target
        for (j = 1; j <= m; j++) {
            ch2 = target.charAt(j - 1);
            if (ch1 == ch2 || ch1 == ch2 + 32 || ch1 + 32 == ch2) {
                temp = 0;
            } else {
                temp = 1;
            }
            // 左边+1,上边+1, 左上角+temp取最小
            d[i][j] = Math.min(Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1), d[i - 1][j - 1] + temp);
        }
    }

    return (1 - (float) d[n][m] / Math.max(str.length(), target.length())) * 100F;
}~~~~
该方法可以直接使用。

相关文章

  • JAVA 获取两个字符串的相似度

    这是一个很实用的功能。 该方法需要传入两个字符串,经过计算,会返回两个字符串的相似度,返回值为float类型。 首...

  • 编辑距离求解算法分析

    编辑距离是一种衡量两个相似字符串相似性的度量方法。距离越大相似度越小。具体地,两个字符串的编辑距离是其中一个字符串...

  • 2018-08-21

    算法题之字符串相似度 问题描述 面试阿里的时候问了我一个问题,如何求两个字符串之间的相似度,当时不知道该怎么回答,...

  • 余弦相似性获取文章相似度的java实现

    转自:http://www.chepoo.com/cosine-similarity-java-implement...

  • 文本相似度计算与展示

    文本相似度计算方法归类 基于字符串。该方法从字符串匹配度出发,以字符串共现和重复程序为相似度的衡量标准。如编辑距离...

  • python比较字符串相似度

    python自带比较相似度的模块,difflib。比较两个字符串的模块是difflib.SequenceMatch...

  • Python字符串相似度检测

    python自带的字符串相似度检测库 difflib

  • Swift-字符串的相似度

    题目:给定任意两个字符串,计算它们的相似度. 如果将两个不相同的字符串变得相同,通过修改,增加,删除来实现:1.修...

  • 基于马尔科夫的字符串可读性

    文本处理一直是算法学习重要组成,本文对字符串的相似性,可读性做简单记录。 01 字符串相似性 评价字符串相似度最常...

  • 余弦相似度计算

    1. 余弦相似度: 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向...

网友评论

      本文标题:JAVA 获取两个字符串的相似度

      本文链接:https://www.haomeiwen.com/subject/qyawjctx.html