Выделите (не удаляйте) повторяющиеся предложения или фразы в текстовом документе
================================================================================

У меня складывается впечатление, что это невозможно в слове, но я полагаю, что если вы ищете какие-либо 3-4 слова, которые встречаются в одной и той же последовательности в любом месте очень длинной статьи, я могу найти дубликаты тех же фраз.

Я скопировал и вставил много документации из прошлых работ и надеялся найти простой способ найти любую повторяющуюся информацию в этом 40-страничном документе. Существует много разных форматов, но я бы хотел временно избавиться от форматирования, чтобы найти повторную информацию.

Чтобы выделить все повторяющиеся предложения, вы также можете использовать`ActiveDocument.Sentences(i)`, Вот пример

**LOGIC**

**1)** Получить все предложения из документа word в массиве

**2)** Сортировать массив

**3)** Извлечь дубликаты

**4)** Выделить дубликаты

**CODE**

**SNAPSHOTS**

**BEFORE**

![enter image description here](/imgs/5WzyB.png)

**AFTER**

![enter image description here](/imgs/xj86e.png)



Я выбрал довольно неубедительную теорию, но, похоже, она работает (по крайней мере, если я правильно понял вопрос, потому что иногда я медлительный понимающий).
Я загружаю весь текст в строку, загружаю отдельные слова в массив, перебираю массив и объединяю строку, содержащую каждый раз три слова подряд.  

Поскольку результаты уже включены в группы из 3 слов, автоматически распознаются группы из 4 или более слов.

Код предполагает непрерывный текст без маркеров.



Я не использовал свое собственное предложение DAWG, и мне все еще интересно узнать, есть ли у кого-то еще способ сделать это, но я смог придумать это:

Я проверил это на 258 страницах документа (`TheStory.txt`) от[этот источник](http://www.anc.org/OANC/index.html#download)и он побежал всего за несколько минут.

Увидеть`test()` саб для использования.

Вам нужно будет сослаться на Microsoft Scripting Runtime, чтобы использовать`Scripting.Dictionary` объекты. Если это нежелательно, небольшие изменения могут быть сделаны для использования`Collections` вместо этого, но я предпочитаю`Dictionary` как это полезно`.Exists()` метод.