Hi Christoph,
nein, diesmal werde ich keinen neuen Thread aufmachen, ich vertraue darauf, daß du durch die Seite scrollst ;-)
Dann hast Du etwas falsch gemacht. Normalerweise ist ein guter Regex nicht wesentlich langsamer als ein handgeschnitzter Automat.
Wobei nach meiner Überzeugung ein Stringvergleich trotzdem schneller ist als der einfachste Automat.
Das Problem ist wahrscheinlich erst der RegExp auf lange Texte. Ich optimiere schon, wo ich kann, nutze keine unnötigen Anker und stattdessen RightContext um den Text nach und nach durchzugehen.
RegExp ist aber ansonsten bei mir erste Wahl - ehrlich.
Suche noch immer eine Website für die punctsum/whitesum Methoden, auf der ich den Algorithmus verstehe :-(
Das Problem ist jedoch zu verstehen, _warum_ es funktioniert und wie Du es für Deine Zwecke anpassen kannst.
Die Website (Spam-Schutz) hört sich zum Teil an wie ein angepasster Soundex:
"w1ll1ge H@ck3r w@rten auf d1ch"
das erinnert mich an die beste Vorlesung aller Zeiten:
Kryptographie !!!
Habe gerade mit Levenshtein probiert. Und die nüchterne Erkenntnis ist, daß Levenshtein die Worte komplett aus dem Kontext herausreißt. Damit erkennt Levenshtein kaum noch hinzugefügte oder gelöschte Wörter.
Reine Intuition/Überzeugung:
Wenn ein Absatz verschoben wird, dann ist die Wahrscheinlichkeit eines groben Sinnfehlers des ganzen Textes geringer als beim Löschen oder Einfügen eines Wortes.Bereits zwischen "ist ein" und "ist kein" können 30 Jahre Knast liegen.
Wenn Du es so genau nehmen möchtest ist jeder Schreibzugriff auf die Datei der Hinweis sich das Dingen anzuschauen.
Genau deswegen finde ich die 'Ankermethode' so schön. 'Ein' und 'Kein' werden als inhaltliche Änderung sofort erkannt.
Wird jedoch der ganze Absatz verschoben, so wird die Verschiebung zwar erkannt, aber es wird der Absatz für sich 'im inneren Kontext' verglichen.
Natürlich kann man jedes System aushebeln - man kann den Kontext umstricken ohne neue Wörter zu verwenden.
Letztendlich bleibt mir nur der Vergleich.
Aber ich denke, wie bei jedem brauchbaren Filter, in 90% aller Fälle klingelt die Alarmglocke, und mit dem Rest kann man gut leben.
In diesem Zusammenhang, gerade weil du Knast erwähnst, würde mich interessieren, wie sich die Wikipedia gegen Beleidigungen, Falschmeldungen und Unterstellungen wehrt.
Oder reicht der einfache Hinweis, daß die Webseite ein Plattform zur öffentlichen Meinung darstellt, und deswegen für die Inhalte nicht verantwortlich ist ?
Deshalb bin ich ja auch der Meinung, das für die Feststellung des Änderungsmaßes einfache statistische Methoden vollkommen ausreichen.
Sowas wie Summe der absoluten Differenzen von gleichen Worten ?
Nein, die Betonung lag auch _einfach_! ;-)
Das ist einfach :-D
Der Filter soll ja in erster Linie die mutwillige Zerstörung des Textes feststellen - dazu zählt neben dem Löschen auch ein komplettes Ersetzen durch einen anderen Text.
Hingegen glaube ich nicht, daß man subtile Änderungen (die ja letzlich viel bewirken) automatisch nach gut oder schlecht unterscheiden kann. Dazu wird ein Mensch notwendig sein.
Mir geht es um eine Erleichterung beim Auffinden der relevanten Stellen. Wenn man zwei Texte mit 3000 Worten abgleicht, in dem nur ein Schreibfehler verbessert wurde, dann braucht man schon sehr viel Konzentration - finde ich.
Dieser Algorithmus soll ja dazu dienen, um letztlich Änderungen zu überwachen.Ach, das soll als Editierhilfe dienen?
Ja, dann sag' das doch auch!
Manch einer ist da nämlich etwas schwer von Begriff und wundert sich die ganze Zeit, was Du da anstellst ;-)
Geht wahrscheinlich beides Hand in Hand.
Wenn ich mir bei Wiki das System des Versionstracking anschaue, dann nimmt man zwei Versionen und bekommt die Unterschiede ausgeschmissen.
Und das noch nicht mal so besonders brauchbar, finde ich.
Letztlich kann man damit aber feststellen, was sich in den einzelnen Versionen an relevanten Information geändert hat.
Das Editieren ist vielleicht dabei sehr wichtig. Was ich mir dabei immer vorstelle ist, daß man verlorengegangene Information aus früheren Versionen wieder rekonstruiert:
A. enthält die Informationen
B. ein Teil der Infos werden gelöscht
C. neue Infos kommen dazu
Wenn man jetzt eine neue Version auf der Basis von C erstellt, aber A als Vergleich nimmt, so bekommt man die alten Infos angezeigt, man muß sie jetzt halt wieder einfügen.
Jede Kontrolle muß ja auch einhergehen mit einer Korrektur, es ist zwar schön, wenn man einen Fehler entdeckt, aber es wäre dann nur akademisch, wenn man ihn nicht auch korrigieren könnte.
Ja, für die Darstellung ist das schonmal ganz gut geeignet. Würde das CSS noch auf Klassen umbauen, damit sich die User das individuell anpassen können.
Das mache ich auf jeden Fall, etwa Luxus muß ja sein.
Du könntest Dir auch mal folgende Visualisierungsprogramme anschauen (sind alle Opensource, daher gilt das anschauen nicht nur für die hier verlinkten Screenshots ;-)
http://kdiff3.sourceforge.net/doc/screenshots.html@tile=Kdiff3
http://www.caffeinated.me.uk/kompare/@tile=Kompare
http://meld.sourceforge.net/screenshots.html@tile=meld
Die Links sind allererste Sahne, die Programme habe ich auch so dringenst gebraucht !!!
Lediglich für eine Website kann man die nicht einbinden...
Bei allem gehe ich davon aus, daß die ganze Sache, also auch die Kontrolle, durch den User auf einem Browser stattfinden kann.
Und ich gehe mal davon aus, daß es mehr anständige als unanständige User gibt.
Daher will ich kein rein administratives, sondern eher ein redaktionelles Werkzeug haben, das jeder nutzen kann.
Was ich dann als der Admin mache ist, daß ich eventuell User aussperre oder ein 'Karma' steuere, mehr aber auch nicht.
hasta luego,
Mathias Weitz