Seite 1 von 1

Frage zu Textvergleich (performant)

Verfasst: Montag 9. März 2009, 15:12
von .exe
Hi,

ich bastel zur zeit an einem modul welches 2 beliebige texte (format egal) einliest und den eingelesen Inhalt vergleicht. Soweit so gut nicht sehr schwer.
Doch der knackpunkt ist, dass der vergleich performant sein sollte. Das heist wenn ich zb. Text A (ca 10000 Wörter) mit text B (50000 wörte) auf übereinstimmungen im Inhalt überprüfen möchte dauert das ewig und drei tage (zz 13 Stunden 41min und 12sek :wink: ).

So jetzt meine Frage hat sich schon mal wer mit vergleichs algorythmik im bereich texten befasst und kann mir da sinnfolle tips geben wie man am beseten texte auf Inhalt und oder ähnlichen inhalt vergleicht.

Ich mach das zur zeit so, dass ich immer einen satz (wort für wort) aus der kleineren datei in eine liste lade und diese dann auf inhaltlich satz für satz mit dem größeren dokument vergleiche. Sollten mehr als 50% der liste mit dem vergleichssatz übereinstimmen gibt es ein treffer. Sollte keine übereinstimmung vorhanden sein gibt es kein treffer und der nechste satz wird geladen.

Also über hilfe wie das ganze performanter geht wer ich sehr dankbar.

MFG

.exe

Verfasst: Montag 9. März 2009, 16:18
von rayo
Hi

Also du könntest einen Index über den grösseren Text erstellen, im Stil von:

Code: Alles auswählen

index = set()
for satz in grosser_text:
    index.add(satz)
Die abfrage gestaltet sich dann einfach:

Code: Alles auswählen

for satz in kleiner_text:
    if satz in index:
        print 'Satz vorhanden'
Am besten noch die Sätze vorher in Kleinbuchstaben konvertieren und alle Sonerzeichen herauslöschcen.


Die Suche ist so aber recht eingeschränkt, da nur genau gleiche Sätze gefunden werden.

Gruss

Verfasst: Montag 9. März 2009, 16:27
von EyDu
Vielleicht solltest du uns zunächst mal sagen, was genau du mit Ähnlichkeit meinst. Da gibt es nicht nur ein Maß.

P.S.: Es heißt Algorithmik, das Ding hat nichts mit Rhythmus zu tun ;-)

Verfasst: Montag 9. März 2009, 16:50
von Hyperion
Es gibt ja auch noch das diff-Modul in Python. Evtl. hilft das weiter?

Verfasst: Montag 9. März 2009, 16:54
von .exe
EyDu hat geschrieben: P.S.: Es heißt Algorithmik, das Ding hat nichts mit Rhythmus zu tun ;-)
:lol: oh man da musste ich jetzt echt über mich selbst lachen ^^.

Naja habe per PM nen tipp mit der difflib bekommen.
Soweit ich mir das jetzt angeschaut habe ist das genau das was ich umsetzten wollte.
Werde jetzt mal nen bissel damit spielen und dann hier meine ergebniss posten.

mfg

.exe

*edit* Hyperion war schneller als ich xD