Seite 2 von 2

Verfasst: Sonntag 5. März 2006, 10:15
von Damaskus
Also ich hab gestern mal mit SOUNDEX rumgespielt und die Ergebnisse waren schonmal nicht schlecht. Dazu jetzt noch ein paar Verknüpfungen und Filter mit einbauen und dann wirds für den Anfang reichen. Wie sich das dann bei Städten mit richtig vielen Straßen verhält muss ich halt mal ausprobieren.

Verfasst: Sonntag 5. März 2006, 14:48
von Mr_Snede
Kann man nicht einen Spamfilter missbrauchen?
- von denen gibt es genug (auch mit python Anbindung)
- Doku / Beispiele sollten auch genug vorhanden sein

Ich hatte die Idee Bogofilter für ein (Web)Recherchetool zu verwenden.

cu Sebastian

Verfasst: Sonntag 5. März 2006, 15:24
von modelnine
Du sprichst jetzt sicherlich von einem bayesschen Filter, oder nicht? Bayes-Filter "erkennen" Kontext, kein Wort was falsch geschrieben ist. Die Anwendungsgebiete sind völlig andere (zumindest im Normalfall).

Verfasst: Donnerstag 20. März 2008, 14:55
von Damaskus
Da der Link zu dem Soundex Modul nicht mehr aktuell ist gibts hier einen Link zu einer compilierten Win32 Version.

www.python-forum.de/downloads/Levenshtein.pyd

Gruß
Damaskus

Verfasst: Donnerstag 20. März 2008, 18:41
von HWK
Warum dann nicht get_close_matches aus dem Standardmodul difflib?
MfG
HWK

Verfasst: Donnerstag 20. März 2008, 19:03
von rayo
jens hat geschrieben:Theoretisch geht das auch mit Google-Maps, allerdings ist Deutschland noch nicht mit Strassen versehen...
Wie nicht mit Strassen versehen?
Also Strassenname sind drin und Routen planen ist doch auch möglich oder?

Gruss

PS: map.google.com hab ich nur in der Schweiz gebraucht, nicht Deutschland.

Verfasst: Donnerstag 20. März 2008, 19:11
von Trundle
rayo hat geschrieben:Wie nicht mit Strassen versehen?
Also Strassenname sind drin und Routen planen ist doch auch möglich oder?
Manchmal ist es recht hilfreich, sich einmal näher anzuschauen, wann der Beitrag erstellt wurde.

Verfasst: Donnerstag 20. März 2008, 19:15
von rayo
Ach immer das doofe ausgraben :) tja dann wars wohl nichts

Gruss

Verfasst: Dienstag 13. Mai 2008, 03:45
von Kai Borrmann
Damaskus hat geschrieben:Da der Link zu dem Soundex Modul nicht mehr aktuell ist gibts hier einen Link zu einer compilierten Win32 Version.

www.python-forum.de/downloads/Levenshtein.pyd

Gruß
Damaskus
Danke für den Tipp.

Nun habe ich sie in das Verzeichnis C:\Python25\Lib\site-packages runtergeladen.

Wie bekomme ich diese Datei dann zum Laufen?

Wenn ich draufklicke, kommt nur Buchstabensalat, es wird also wohl anders zu machen sein?

Verfasst: Dienstag 13. Mai 2008, 05:26
von Leonidas
``import Levenshtein``

Verfasst: Dienstag 13. Mai 2008, 11:57
von OldBoy
Hier 2 Loesungen in Standard-Python:

Code: Alles auswählen

def dist_lev(a, b):
    """
    Calculates the Levenshtein distance between a and b.
    Written by Magnus Lie Hetland (hetland.org)
    """
    n, m = len(a), len(b)
    if n > m:
        a,b = b,a
        n,m = m,n

    current = range(n+1)
    dummy = [n] * (n+1)
    for i in range(1,m+1):
        previous =  current
        current = dummy[:]
        current[0] = i
        for j in range(1, n+1):
            add = previous[j]+1
            delete = current[j-1]+1
            change = previous[j-1]
            if a[j-1] != b[i-1]: change += 1
            current[j] = min(add, delete, change)
            
    return current[n]

def dist_ratio(a, b):
    s = difflib.SequenceMatcher(None, a, b)
    return s.ratio()
z.B.

Code: Alles auswählen

>>> a = 'Meier'
>>> b = 'Mayer'
>>> dist_lev(a,b)
2
>>> dist_ratio(a,b)
0.59999999999999998
>>> dist_lev(a,a)
0
>>> dist_ratio(a,a)
1.0

Noch ein paar Tipps:
  • - vor dem Vergleich die Texte normalisieren
    (Gross-/Kleinschreibung, Sonderzeichen, Vereinheitlichung ( St/Str/Strasse))
    - bei langen Namen duerfen auch die Abweichungen groesser sein
    - anwendungsspezifische Sonderfaelle pruefen
    (z.B: Alleestr./Allerstr. in Essen, Iran/Irak bei Laendern)
Wer konkrete Hilfe braucht, kann sich gerne per PN an mich wenden. Ich habe dies Aufgabenstellung in den letzten Jahren intensiv im Bereich Laenderangabe/Region/Telefongesellschaft bearbeitet.

Gruss

OldBoy