Highlight (nicht löschen) wiederholen Sie die Sätze oder Ausdrücke in einem word-Dokument
Bin ich immer den Eindruck, dass dies nicht möglich ist, in word, aber ich denke, wenn Sie sind auf der Suche nach einer 3-4 Wörter, die kommen in der gleichen Reihenfolge, die irgendwo in einem sehr langen Papier, das ich finden konnte, Duplikate des gleichen Phrasen.
Ich kopieren und einfügen eine Menge an Dokumentation, die Sie aus der Vergangenheit Papiere und war in der Hoffnung zu finden, einen einfachen Weg zu finden, wiederholt Informationen in diesem 40+ Seiten-Dokument gibt es eine Menge unterschiedlicher Formatierung, aber ich wäre bereit, vorübergehend loswerden formatieren, um zu finden, wiederholt Informationen.
- Es würde schwierig werden. Im ersten Absatz deiner Frage, es gibt 81 3-und 4-Wort-Gruppen. Vorstellen, wie viele es sein würden, 40+ Seiten-Dokument.
- Ich Frage mich, ob Sie sich auf bestimmte Wörter - Wörter, die länger als, sagen wir, sieben Buchstaben? Es könnte dann möglich sein, sehen Sie sich die Worte auf beiden Seiten oder so wichtige Worte.
- Wäre ein Konzept ähnlich wie ein KUMPEL helfen? Ich denke die Suche wird jedes Wort Gruppe in Serie, beginnend mit dem ersten Wort im Dokument (addition der DAWG/Referenzierung, was wurde schon Hinzugefügt, wie Sie gehen, wo jeder Knoten ist ein Wort, nicht ein Brief) wäre nicht unmöglich. Sie würde müssen nur einen Weg finden, um diese Struktur erstellt, die in VBA und/oder eine externe DLL. Ich hatte versucht, etwas ähnliches einmal, aber ich fand es schon eine Herausforderung, mit den standard-Bibliotheken zur Verfügung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Markieren Sie alle doppelten Sätze, können Sie auch
ActiveDocument.Sentences(i)
. Hier ist ein BeispielLOGIK
1) Bekommen alle die Sätze aus dem word-Dokument in ein array
2) Sortieren Sie das array
3) Extrakt Duplikate
4) Markieren Sie Duplikate
CODE
SNAPSHOTS
VOR
NACH
This is a green apple
undThis is a green Ball
.This is a green
gemeinsam in Ihnen 🙂...looking for any 3-4 words that come in the same sequence...
) in der ursprünglichen Frage. Mein Beispiel erlaubt eine individuelle Anpassung derselben sowie (mit dem übergebenen argumentChainLength
).Habe ich nicht meine eigenen DAWG Vorschlag, und ich bin immer noch daran interessiert, zu sehen, wenn jemand anderes hat einen Weg, dies zu tun, aber ich war in der Lage zu kommen mit diesem:
Habe ich getestet, die auf eine 258 Seiten-Dokument (
TheStory.txt
) von diese Quelle, und es lief in nur wenigen Minuten.Sehen die
test()
sub für die Nutzung.Müssen Sie einen Verweis auf die Microsoft Scripting Runtime mit der
Scripting.Dictionary
Objekte. Wenn das unerwünscht ist, kleine änderungen können gemacht werden, zu verwendenCollections
anstelle, aber ich bevorzuge dieDictionary
wie hat es die nützliche.Exists()
Methode.I did not test the speed of my own until just now.
Wenn das ist eine Tatsache dann, nehme ich meine Worte zurück. Ich war einfach nur neugierig, wenn Ihr code wird wie du sagst (was ich immer noch unglaublich), dann haben Sie wirklich brauchen nicht jemand anderen code 😉 Aber im ernst Ihr code gelingt, finden alle doppelten Sätze UND Phrasen in den 258 Seiten-Dokument in weniger als einer minute? Leider kann ich nicht testen, da ich nicht herunterladen, die 625 MB schwere Dokument.On Error
Schritte, so hätte ich erwartet, dass eine Warnung/dialog. Ich habe auch gescannt, der doc und gefunden Höhepunkte während, all der Weg zur letzten Seite. Wenn jemand beweisen mich nicht falsch, dann würde ich gerne wissen was ich falsch gemacht habe mit meinem test (laufen mit Phrasen, die aus 5 Wörtern, die wahrscheinlich von Bedeutung ist) also ich nicht es wieder tun!1 hr 11 mins
. Ich bin jetzt läuft das makro. Ich hatte erwartet, dass Ihr makro fertig in 10-15 Minuten max basierend auf Ihrer Studie, dass es lief in weniger als einer minute für 258 Seiten. Es ist ja schon nach 20 Minuten... das makro noch läuft. Halten Sie auf dem Laufenden, wenn es endet. Die einzige änderung, die ich gemacht, um Ihren code wurdeDim MatchCount As Integer
zuDim MatchCount As Long
wie ich immer war, ein überlauf-Fehler (was ja auch verständlich ist)1 Hr 18 Mins
Wählte ich eine eher lahme Theorie, aber es scheint zu funktionieren (zumindest, wenn ich die Frage richtig cuz manchmal bin ich ein langsam understander).
Ich lade den gesamten text in einen string laden Sie die einzelnen Wörter in ein array, eine Schleife durch das array und verketten von string, mit jedes mal, wenn drei aufeinander folgende Wörter.
Denn die Ergebnisse sind bereits in 3-Wort-Gruppen, 4 Wort-Gruppen oder mehr wird automatisch erkannt.
Den code übernimmt ein fortlaufender text ohne Aufzählungszeichen.
" "
, nicht Worte, die das Ende eines Satzes (oder durch ein Komma getrennt werden/andere Satzzeichen) nicht immer übereinstimmen? Beispiel:"I like to do this."
vs."I like to do this sometimes."
(auch, würde ich +1 für heute noch eine gute Antwort, aber ich bin aus der Stimmen für den Tag...)