Textvergleichsalgorithmus
Wir haben eine Anforderung im Projekt, die wir haben, zu vergleichen die beiden Texte ( update1, update2) und kommen mit einem Algorithmus, der definiert, wie viele Wörter und wie viele Sätze haben sich geändert.
Gibt es algorithmen, die ich verwenden kann? Ich bin auch nicht auf der Suche für code. Wenn ich weiß, dass der Algorithmus, kann ich code in java. Danke.
InformationsquelleAutor der Frage java_mouse | 2012-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel wird dies erreicht, indem der Längste Gemeinsame Teilfolge (Häufig genannt das LCS-problem). Dies ist, wie tools wie
diff
Arbeit. Natürlichdiff
ist eine zeilenorientierte tool, und es klingt wie Ihre Bedürfnisse sind etwas anders. Aber ich nehme an, Sie haben bereits errichteten einige Weise zu vergleichen, Wörter und Sätze.InformationsquelleAutor der Antwort FatalError
O(NP) Sequenz-Vergleichs-Algorithmus wird von der subversion-diff-Algorithmus.
Ihrer information, es gibt Implementierungen mit verschiedenen Programmiersprachen von mir in der folgenden Seite von github.
https://github.com/cubicdaiya/onp
InformationsquelleAutor der Antwort cubicdaiya
Irgendeine Art von diff-Variante könnte hilfreich sein, z.B. wdiff
Wenn Sie sich entscheiden, entwickeln Sie Ihren eigenen Algorithmus, Sie gehen zu müssen, um die situation, wo ein Satz wurde eingefügt. Zum Beispiel für die folgenden zwei Dokumente:
The men are bad. I hate the men
und
The men are bad. John likes the men. I hate the men
Ihr Werkzeug sollte in der Lage sein nach vorne zu schauen, um zu erkennen, dass in der zweiten
I hate the men
wurde nicht ersetzt durchJohn likes the men
sondern ist unberührt, und ein neuer Satz eingefügt, bevor Sie es. d.h. es sollte Bericht die Einfügung eines Satzes, nicht die änderung von vier Worten, gefolgt von einem neuen Satz.InformationsquelleAutor der Antwort Howard
Den spezifischen Algorithmus verwendet, um diff und die meisten anderen Vergleich utilities ist Eugene Myer ' s Eine O(ND) - Differenz-Algorithmus und Seine Varianten. Es gibt eine Java-Implementierung der in der java-diff-utils Paket.
InformationsquelleAutor der Antwort Zoë Peterson
Hier sind zwei Papiere, die beschreiben, andere text-Vergleich algorithmen, die sollte in der Regel Ausgabe 'besser' (z.B. kleinere, mehr aussagekräftige) Unterschiede:
Das erste Papier zitiert die zweite und erwähnt diese über den Algorithmus:
Das erste Papier erwähnt wurde, in diese Antwort und die zweite in diese Antwortdie sich sowohl auf die ähnliche Frage ALSO:
InformationsquelleAutor der Antwort Kenny Evitt
Die Schwierigkeit kommt beim Vergleich von großen Dateien effizient und mit guter performance. Ich bin daher implementiert eine variation von Myers O(ND) diff-Algorithmus führt, die durchaus gut und richtig sind (und unterstützt die Filterung basierend auf regulären Ausdruck):
Algorithmus getestet werden kann hier: becke.ch vergleichen-tool, web-Anwendung
Und ein wenig mehr Informationen auf der Homepage: becke.ch vergleichen Werkzeug
InformationsquelleAutor der Antwort becke.ch