Mettre en évidence (et non supprimer) répéter des phrases ou des phrases dans un document word
Je suis arriver a l'impression que ce n'est pas possible dans word, mais je suppose que si vous êtes à la recherche pour n'importe quel 3-4 mots qui viennent de la même séquence de n'importe où dans un très long article que j'ai pu trouver les doublons des mêmes phrases.
Je fais un copier collé beaucoup de documentation du passé papiers et a été l'espoir de trouver un moyen simple de trouver toute l'information répétée dans ce 40+ document d'une page, il y a beaucoup de mise en forme différente, mais je serais disposé à s'temporairement de se débarrasser de mise en forme afin de trouver des informations qui se répètent.
Il serait difficile. Dans le premier paragraphe de votre question, il y a 81 3 et 4 groupes de parole. Imaginez combien il serait dans un 40+ page de document.
Je me demande si vous pouviez regarder les mots - les mots de plus de, disons, sept lettres? Il pourrait alors être possible de regarder les mots de chaque côté ou ces mots-clés.
Serait un concept similaire à un DAWG de l'aide? Je suis en train de penser à la recherche de chaque groupe de parole dans la série en commençant par le premier mot dans le document (s'ajoutant à la DAWG/référencement de ce qui a déjà été ajouté comme vous allez, où chaque nœud est un mot, pas une lettre) ne serait pas impossible. Vous avez juste à trouver un moyen de créer cette structure en VBA et/ou de l'utilisation d'une DLL externe. J'avais essayé quelque chose de similaire une fois, mais l'a trouvé pour être tout à fait un défi à l'aide de la norme de bibliothèques disponibles.
Je me demande si vous pouviez regarder les mots - les mots de plus de, disons, sept lettres? Il pourrait alors être possible de regarder les mots de chaque côté ou ces mots-clés.
Serait un concept similaire à un DAWG de l'aide? Je suis en train de penser à la recherche de chaque groupe de parole dans la série en commençant par le premier mot dans le document (s'ajoutant à la DAWG/référencement de ce qui a déjà été ajouté comme vous allez, où chaque nœud est un mot, pas une lettre) ne serait pas impossible. Vous avez juste à trouver un moyen de créer cette structure en VBA et/ou de l'utilisation d'une DLL externe. J'avais essayé quelque chose de similaire une fois, mais l'a trouvé pour être tout à fait un défi à l'aide de la norme de bibliothèques disponibles.
OriginalL'auteur rparks21 | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
Pour mettre en surbrillance tous les doublons de phrases, vous pouvez également utiliser
ActiveDocument.Sentences(i)
. Voici un exempleLOGIQUE
1) Obtenir toutes les phrases du document word dans un tableau
2) Trier le tableau
3) D'Extraire Les Doublons
4) mettre en Évidence les doublons
CODE
INSTANTANÉS
AVANT
APRÈS
Dans ce cas, l'OP aura à définir le nombre minimum de mots dans une phrase le reste cela va créer une confusion.
This is a green apple
etThis is a green Ball
.This is a green
courante dans: -))L'OP (
...looking for any 3-4 words that come in the same sequence...
) dans la question d'origine. Mon exemple permet la personnalisation de même (avec l'argument passéChainLength
).Ok. J'ajouterai que la partie ainsi 🙂
OriginalL'auteur Siddharth Rout
Je n'ai pas utiliser mon propre DAWG suggestion, et je le suis toujours intéressé à voir si quelqu'un d'autre a une manière de le faire, mais j'ai été en mesure de venir avec cette:
J'ai testé cela sur une page 258 document (
TheStory.txt
) à partir de cette source, et il a couru dans quelques minutes.Voir le
test()
sous pour l'utilisation.Vous aurez besoin de faire référence à Microsoft Scripting Runtime utilisation de la
Scripting.Dictionary
objets. Si cela n'est pas souhaitable, de petites modifications peuvent être apportées à l'utilisationCollections
à la place, mais je préfère leDictionary
comme il a l'utile.Exists()
méthode.Je n'avais pas l'intention de perdre quelqu'un; je voulais vraiment voir quelques façons différentes de le faire. Je n'ai pas tester la vitesse de ma propre jusqu'à ce que tout à l'heure. J'ai été la planification sur l'attribution de la prime à vous, de toute façon! 😉
Je ne l'ai pas fait pour la générosité 🙂 Vous pouvez l'attribuer à Kim ou à vous-même . C'est ok avec moi. Je viens de regarder pour une question difficile 😉
I did not test the speed of my own until just now.
Si c'est un fait, j'ai mes paroles. J'étais simplement curieux de savoir que si votre code ne comme vous le dites (que je trouve toujours incroyable) alors que vous n'avez vraiment pas besoin de personne d'autre code 😉 Mais sérieusement votre code parvient à trouver tous les doublons les mots ET les phrases dans l'258 document d'une page en moins d'une minute? Malheureusement je ne peux pas tester car je ne peut pas télécharger que 625 MO lourds document.Si quelqu'un d'autre veut le retester, je suis très ouvert à ça! J'ai couru le mien deux fois pour la même raison, mais s'est terminée avec des résultats similaires. Je ne vais pas exclure une erreur appelé à disparaître prématurément, mais je n'utilise pas toute
On Error
étapes, donc je m'attendais à une mise en garde/boîte de dialogue. J'ai aussi scanné le doc et a constaté les faits saillants partout, tout le chemin à la dernière page. Si quelqu'un ne me prouver le contraire, alors je voudrais savoir ce que je fait de mal avec mon test (courir avec des phrases de 5 mots, ce qui a probablement), donc je ne pas le faire à nouveau!Fichier de l'échantillon pour le tester. C'est de 41,8 ko - 800 pages (119996 mots) Le fichier a aussi la mienne et vos macros dans ce que j'ai utilisé. wikisend.com/download/356770/Sample.docm
OriginalL'auteur Gaffi
J'ai choisi un plutôt boiteux théorie, mais il semble fonctionner (au moins, si j'ai le droit de la question parce que parfois je suis un lent entendeur).
Je charge l'intégralité du texte dans une chaîne de caractères, charger les mots dans un tableau, une boucle à travers la matrice et concaténer la chaîne, comprenant à chaque fois de trois mots consécutifs.
Parce que les résultats sont déjà inclus dans les 3 groupes de parole, groupes de 4 mots ou plus sera automatiquement reconnu.
Le code suppose un texte suivi, sans points de balle.
" "
, ne sont pas les mots qui se terminent une phrase (ou qui sont séparés par une virgule/autres signes de ponctuation) pas toujours à la hauteur? Exemple:"I like to do this."
vs"I like to do this sometimes."
(aussi, je dirais +1 pour être toujours une bonne réponse, mais je suis hors de votes de la journée...)Ne vous inquiétez pas au sujet de la voix et vous avez raison. Je n'ai pas accès à mon PC depuis que j'ai quitté le travail, mais je vais écrire une petite fonction demain pour supprimer les signes de ponctuation de la chaîne de recherche.
La fonction a été ajoutée.
Je n'ai pas terminer le test (car il a fallu si longtemps), mais cela prend beaucoup plus de temps que ce soit le mien ou le Sid est un très gros fichier (voir la note sur ma réponse). Cependant, il ne fonctionnent toujours juste parfaitement pour les petits fichiers.
C'est très bien possible. Lors de la réflexion, j'ai aussi devrait probablement avoir utilisé les dictionnaires; charger un tableau de 3 chaînes de mots dans un dictionnaire, s'il en existe un -> copie dans un nouveau dictionnaire et la limite de mon "trouvez -> couleur" pour seulement les chaînes applicables. Je suppose que le "existe" une méthode de dictionnaires peut considérablement augmenter les performances (à l'aide des touches) et peut-être le côté répétitif et explicite "trouver" est ce qui le rend lent.
OriginalL'auteur Trace