Vergleich von zwei Strings

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vergleich von zwei Strings

    Liebes Forum,

    ich habe folgendes Problem:

    Ich habe zwei Datenbanken in denen Daten von Autohäusern sind. Alle Autohäuser sind in jeder Datenbank, allerdings sind in jeder DB andere Daten zum Autohaus gespeichert.

    Nun möchte ich die Daten zusammenfügen bzw. mit einer Abfrage die Daten aus beiden Datenbanken haben, aber ich habe keine id o.ä. um die jeweils gleichen Autohäuser zu holen. Das Problem ist das die Namen unterschiedlich sind --> Beispiel: Gebrauchtwagen Heller ---> Heller Gebrauchtwagen

    Ich habe schon probiert die Strings mit Levenshtein oder anderen Funktionen zu vergleichen, aber durch die unterschiedliche Namenszusammenstellung funktioniert das nicht. Ich kann auch nicht das Gebrauchtwagen weglassen, da auch Autohaus und viele andere Variatonen vorkommen.

    Hat jemand eine Idee von Euch?

    Danke für die Hilfe
    McD

  • #2
    Liegen Adressdaten dazu vor, die sich mit weniger Aufwand in eine „vergleichbare“ Form bringen lassen, als die Namens-Variationen ...?
    Oder ggf. auch Telefonnummern, die sich wesentlich einfacher „normalisieren“ lassen dürften.

    Ansonsten ist im Zweifelsfalle vielleicht eher Handarbeit angesagt, bevor man übermäßig viel Aufwand in eine algorithmische Lösung eines solchen Problems steckt. Kann man auch an eine Hilfskraft auslagern und auf mehrere Personen aufteilen, falls entsprechend großer Umfang.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo,

      ich weiß nicht, ob es in deinem Falle was bringt, aber ich würde versuchen, die Zeichenketten erstmal nach Worten zu trennen (preg_split("<\\W+>", ...)), dieses Array alphabetisch sortieren und dann mit dem leeren String implodieren. Das ergibt z. B.

      „Ford Autohaus A. Anger“ => „AAngerAutohausFord“
      „Anger Autohaus - Ford Partner“ => „AngerAutohausFordPartner“

      wenn du dann mit Levenshtein rangehst und das Ergebnis auf die Durchschnittslänge relativierst, sollte das schonmal Prozentwerte liefern, anhand derer man die (Un)gleichheit entscheiden kann.

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Zitat von rlebek Beitrag anzeigen
        ... Das Problem ist das die Namen unterschiedlich sind --> Beispiel: Gebrauchtwagen Heller ---> Heller Gebrauchtwagen

        ...
        Hat jemand eine Idee von Euch?
        N-Gram-Vergleich:

        SQL Datensätze nach Ähnlichkeit ordnen - php.de
        (nach "function sqlite_udf_fuzzymatch" suchen)
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Kommentar


        • #5
          Kommt auf die Menge der Daten an. Wenn überschaubar per Hand.

          Eine andere Problematik: geht es hier nur um eine Tabelle, oder um komplexe Tabellen Strukturen / Abhängigkeiten ?!?

          Im Zweifel würde ich eine Test leere DB erstellen und beide DBs rein haun, und dann erstmal zu schaun, wieviele doppelt aber mit unterschiedlichen namen vorhanden sind.
          fotos :

          http://www.flickr.com/photos/rassloff/collections/

          Kommentar

          Lädt...
          X