2013-07-26 1 views
5

मैं दो तारों को समान या समान नहीं वर्गीकृत करना चाहता हूं। उदाहरणजावा में दो स्ट्रिंग के बीच मिलान स्कोर की गणना कैसे करें?

s1 = "Token is invalid. DeviceId = deviceId: "345" " 
s2 = "Token is invalid. DeviceId = deviceId: "123" " 
s3 = "Could not send Message." 

के लिए मैं एक जावा पुस्तकालय है कि 2 तार के बीच और कहा कि स्कोर मैं अगर वे नहीं की समान हैं निर्धारित कर सकते हैं से एक मिलान स्कोर दे सकते हैं के लिए देख रहा हूँ। मेरे कार्यक्रम को केवल एक छोटे डेटा सेट (~ 2000 स्ट्रिंग्स) पर काम करने की जरूरत है। क्या आपको पता है कि वहां कुछ पहले से उपलब्ध है या नहीं? मिलान के लिए

उत्तर

0

के रूप में सुझाव दिया। Levenshtein दूरी एल्गोरिथ्म ...

public class LevenshteinDistance 
{ 
    private static int minimum(int a, int b, int c) 
    { 
     return Math.min(Math.min(a, b), c); 
    } 

    public static int computeLevenshteinDistance(CharSequence str1, CharSequence str2) 
    { 
     int[][] distance = new int[str1.length() + 1][str2.length() + 1]; 

     for (int i = 0; i <= str1.length(); i++) 
      distance[i][0] = i; 
     for (int j = 1; j <= str2.length(); j++) 
      distance[0][j] = j; 

     for (int i = 1; i <= str1.length(); i++) 
      for (int j = 1; j <= str2.length(); j++) 
       distance[i][j] = minimum(distance[i - 1][j] + 1, 
             distance[i][j - 1] + 1, 
             distance[i - 1][j - 1] + ((str1.charAt(i - 1) == str2.charAt(j - 1)) ? 0 : 1)); 

     return distance[str1.length()][str2.length()]; 
    } 

    public static void main(String[] args) 
    { 
     String s1 = "Token is invalid. DeviceId = deviceId: \"345\" "; 
     String s2 = "Token is invalid. DeviceId = deviceId: \"123\" "; 
     String s3 = "Could not send Message."; 

     System.out.println(computeLevenshteinDistance(s1, s2)); // s1 VS. s2 
     System.out.println(computeLevenshteinDistance(s1, s3)); // s1 VS. s3 
     System.out.println(computeLevenshteinDistance(s2, s3)); // s2 Vs. s3 

    } 
} 
1

सभी NLP जावा समस्याओं के लिए, आप अपाचे Lucene परियोजना की जाँच करनी चाहिए। हालांकि, आपकी ज़रूरत के लिए एक साधारण लेवेनशेटिन दूरी अलगो

संबंधित मुद्दे