4

私は、同じ人を表すが異なる方法 (フル ネームまたは短いバージョン) で書かれている名前を照合するのに役立つメソッドを作成しました。次に例を示します。

Paul Samuelson-Smith私の方法に基づいて等しいとPaul Smith見なされます:

private static boolean equalName(String name_2, String name_1){
        boolean equality1 = true;
        name_1 = name_1.replace("&", " ").replace("-", " ");
        String  []  names1 = name_1.split(" ");
        for (int i = 0; i < names1.length ; i ++) {
            if (!name_2.contains(names1[i])) {equality1 = false; break;}
        }
        boolean equality2 = true;
        name_2 = name_2.replace("&", " ").replace("-", " ");
        String  []  names2 = name_2.split(" ");
        for (int i = 0; i < names2.length ; i ++) {
            if (!name_1.contains(names2[i])) {equality2 = false; break;}
        }
        return equality1 || equality2;
    }

ただし、名前にタイプミスがある場合は、同一人物であるPaul Samuelson-Smithと言う問題はまだあります。Paull Smith私の質問は、タイプミスの可能性を説明するのに役立つ API はありますか? どうすれば方法を改善できますか?

4

2 に答える 2

4

重複の可能性

これは、いくつかの距離アルゴリズムが組み込まれたライブラリです: http://sourceforge.net/projects/simmetrics/

于 2013-10-18T17:58:48.020 に答える
1

必要なアルゴリズムは、真/偽を返すだけではないものです。たとえば、'Paula Smith' と 'Paul Smith' と 'Paul Saumelson-Smith' を比較して、最も一致するものを選択する必要があります。http://www.katkovonline.com/2006/11/java-fuzzy-string-matching/をご覧ください。ただし、分類には適しているため、大規模なデータベースで作業する必要がある場合は、最適な一致を選択してください。

于 2013-10-18T18:10:55.083 に答える