将相似性得分填充到存储桶中的组矩阵

问题描述 投票:0回答:1

假设我们在strs中有n个字符串。您将所有字符串进行比较,进行全置换(n ^ 2),并构建一个nxn矩阵,其中每个单元格是2个字符串(i,j)之间的相似性得分。

我该如何进一步将它们分组到存储桶中?实际上,我期望这些字符串相似/落入存储桶中,但是有一些新字符串可能不会,因此我想找到最相似的地方或重新计算存储桶。

public Map<String, List<String>> bucketIt(String[] strs) {
    int[][] arr = new int[strs.length][strs.length];
    for (int i = 0; i < strs.length; i++) {
        for (int j = 0; j < strs.length; j++) {
            arr[i][j] = getSimilarityScore(strs[i], strs[j]);
        }
    }

    // How do I take the scores out of arr[][] and group the strings of strs into buckets.
}

我计划使用tdebatty/java-string-similarity计算分数。对于所有存储桶都使用阈值的解决方案也是可以接受的。

java algorithm sorting data-science computer-science
1个回答
0
投票

也许您可以使用HashTable类型的方法在同一存储桶中存储相似的字符串(即,分数在[score-bucket_size,score + bucket_size]范围内)。

存储桶将只是具有相似得分的所有字符串的(链接的)列表的数组。

理想情况下,您希望将存储桶中的列表保持较小,并使用指数增长算法根据需要增加存储桶的数量。当您长大时,会重新整理桌子。

© www.soinside.com 2019 - 2024. All rights reserved.