Java中的Winkler表

时间:2018-12-06 09:48:41

标签: java math jaro-winkler

我正在创建一个聊天机器人,它将通过数据集中的最接近值(树图)回答您。系统类似于AIML。

我需要制作Winkler表,这将为我提供结果编号数组。该怎么做?

有一张图片,显示了此表的工作方式: WINKLER TABLE

2 个答案:

答案 0 :(得分:0)

您可以通过3个简单的步骤来完成它。

  1. 为结果矩阵创建一个二维数组: 参见问题Syntax for creating a two-dimensional array

    尺寸当然必须与输入和键的长度匹配。参见https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#length()

  2. 将输入字符串的字符和键作为嵌套循环。请参见https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.1https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#charAt(int)。基本上,您有2个索引,这些索引为您提供2个fsutil.exe file SetCaseSensitiveInfo git_project_root enable 值。

  3. 使用char运算符比较两个字符,并使用索引在二维数组中存储0或1。

答案 1 :(得分:0)

好的,我做了那张桌子。 看起来像下一个:

String[] ts = new String[s2.length()];

int[][] table = new int[s1.length()][s2.length()];
char[] s1c = s1.toCharArray();
char[] s2c = s2.toCharArray();

for(int s1cl = 0; s1cl <= s1c.length - 1; s1cl++) {
    for(int s2cl = 0; s2cl <= s2c.length - 1; s2cl++) {
        if(s1c[s1cl] == s2c[s2cl]) {
            table[s1cl][s2cl] = 0;
        } else {
            table[s1cl][s2cl] = 1;
        }
    }
}

for(int ts1 = 0; ts1 <= s1c.length - 1; ts1++) {
    String res = "";
    for(int ts2 = 0; ts2 <= s2c.length - 1; ts2++) {
        res += ts2;
        if(ts2 == s2c.length - 1) {
            ts[ts1] = res;
            res = "";
        }
    }
}

感谢“ herman”的回答!