Doublettenprüfung mit statistischen Verfahren

KAMADO

Mitglied
Hallo Zusammen,

zunächst möchte ich mich vorstellen.

Bin 30 Jahre alt
Hab Wirtschaftsinformatik studiert
Hobbys sind: Seit neustem mit meinem Kind rumtoben ;), IT Neuigkeiten, Fussball, Angeln,

Ich möchte eine Dublettenprüfung in unserem erp System realisieren
.

Ich hab folgende Idee:

Ich möchte die Felder die zur statistischen Prüfung der Dubletten genutzt werden, pro Datenbank auswählen können. Das habe ich mir gedacht, kann noch gerne validiert werden.
Felder, die pro Datenbank zur Dublettenprüfung herangezogenwerden, sollten einer Prüfung unterlaufen, die Tippfehler berücksichtigt.

Max Müller
May Müller x liegt neben y

Statistische Ähnlichkeit sollte einstellbar sein.

Maximillian Kaspersky
Maximilia Kasperski

Da kommen sicherlich noch einige Verfahren dazu, wenn Ihr Ideen oder Code Beispiele habt, bzw. schon mal so was realisiert habt, wäre ich für euer Input sehr dankbar.

Das sind die Beispiele für die Datenbanken und Felder:

Datenbank Kunde:
Felder: Suchwort,Name, Straße, PLZ, Telefonnummer ...

Datenbank Lieferant:
Felder: Suchwort,Name, Straße, PLZ, Telefonnummer ...

Datenbank Artikel:
Felder: Suchwort, Einheit, ...
 

KAMADO

Mitglied
Dein Link hat mir geholfen. Vielen dank dafür.

Auf github habe ich ein paar interessante Beipiele gefunden und eine Diplomarbeit zum Thema: Ähnlichkeitstheorie.

https://github.com/Simmetrics/simmetrics

Code:
import uk.ac.shef.wit.simmetrics.similaritymetrics.AbstractStringMetric;
import uk.ac.shef.wit.simmetrics.similaritymetrics.CosineSimilarity;
import uk.ac.shef.wit.simmetrics.similaritymetrics.EuclideanDistance;
import uk.ac.shef.wit.simmetrics.similaritymetrics.Levenshtein;
import uk.ac.shef.wit.simmetrics.similaritymetrics.MongeElkan;

public class FirstTest {
	public static void main(String[] args) {
//		Testwertepaare
		String str1 = "Toreig";
		String str2 = "Terei";
		
		String str3 = "Bayer";
		String str4 = "Beier";
		
		String str5 = "Stefek";
		String str6 = "Stefka";
		
		String str7 = "Thomas";
		String str8 = "Tomas";
		
		String str9 = "Alex";
		String str10 = "Aleedfx";
		
        AbstractStringMetric metric1 = new Levenshtein();
        AbstractStringMetric metric2 = new Levenshtein();
        AbstractStringMetric metric3 = new Levenshtein();
        AbstractStringMetric metric4 = new Levenshtein();
        AbstractStringMetric metric5 = new Levenshtein();
         
               
//      AbstractStringMetric metric = new CosineSimilarity();
//      AbstractStringMetric metric = new EuclideanDistance();
//      AbstractStringMetric metric = new MongeElkan();


      float result1 = metric1.getSimilarity(str1, str2);
      float result2 = metric2.getSimilarity(str3, str4);
      float result3 = metric3.getSimilarity(str5, str6);
      float result4 = metric4.getSimilarity(str7, str8);
      float result5 = metric5.getSimilarity(str9, str10);
      
      float finalresult = result1*result2*result3*result4*result5;

      //outputs the results
      if (finalresult >= 0.124) {
    	  System.out.println("Es sieht nach einer Doublette aus");
		
	}
      outputResult(result1, metric1, str1, str2);
      outputResult(result2, metric2, str3, str4);
      outputResult(result3, metric3, str5, str6);
      outputResult(result4, metric4, str7, str8);
      outputResult(result5, metric5, str9, str10);

	}
	
	private static void outputResult(final float result, final AbstractStringMetric metric, final String str1, final String str2) {
        System.out.println("Using Metric " + metric.getShortDescriptionString() + " on strings \"" + str1 + "\" & \"" + str2 + "\" gives a similarity score of " + result);

    }

}

Mal gucken, vielleicht wird was draus.
 

Ähnliche Java Themen

Neue Themen


Oben