Автономный инструмент для поиска одинаковых/похожих фраз в тексте?

Я ищу инструмент, который находит и перечисляет идентичные фразы в длинном тексте, таком как диссертация.

Цель состоит в том, чтобы найти повторяющиеся тексты, которые были созданы случайно путем копирования/вставки.

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

Возможный дубликат облаков слов и облаков фраз . Посмотрите на мой ответ на этот вопрос ( writers.stackexchange.com/a/14302/5645 ).
@what: Спасибо - этот другой вопрос имеет ту же цель. Однако я не хочу использовать онлайн-инструмент, в котором мой текст обрабатывается и, возможно, хранится на сервере под чьим-то контролем.
Я думаю, что программы проверки на плагиат также могут найти дубликаты в одном файле, но вам придется попробовать. Кроме того, вы можете написать свой собственный инструмент (код доступен в Интернете) или, если вы хотите проверять только полные предложения, используйте регулярные выражения в текстовом редакторе, который их поддерживает (например, Vi(m)) или из командной строки. (например, используя awk), опять же примеры есть в сети.

Ответы (3)

Это зависит от того, насколько вы хотите в это вникнуть и насколько велик проект. Если он находит только идентичные фразы или текст, большинство текстовых процессоров поддерживают это, и, наконец, многие программные IDE поддерживают поиск по регулярным выражениям ( http://en.wikipedia.org/wiki/Regular_expression ). С другой стороны, если вы ищете перефразированные или похожие абзацы и/или выдержки и хотите автоматизировать это (вместо подстроки и поиска вариантов вручную), я бы порекомендовал вам заглянуть на http://www.nltk.org. /

NLTKэто набор инструментов, который объединяет целый ряд инструментов для языковых манипуляций, сортировки и тегов - я понимаю, что он может быть более глубоким, чем вы хотите (но его довольно легко освоить, и он имеет очень хорошую удобную документацию для начинающих http:// www.nltk.org/book/ ).

Я позволю другим комментировать более общие и, возможно, более «используемые из коробки» инструменты типа, поскольку у меня нет опыта работы с ними.

Это одна из основных функций программы ClicheCleaner , которая выделяет отрывки в вашем тексте, которые являются либо клише, либо другими часто используемыми общеупотребительными выражениями, либо вашими собственными фразами, которые вы неоднократно использовали в одном и том же документе. ClicheCleaner включает в себя список почти 7000 уникальных клише и общих выражений, которые сравниваются с вашим текстом.

В настоящее время он работает только с текстовыми файлами; новая версия, которая в настоящее время находится в стадии разработки, позволит редактировать текстовые файлы, файлы Word и PDF в документе.

Он работает на всех версиях Windows.

Раскрытие информации: я являюсь автором этой программы.

Спасибо за эту информацию (и за ясность в отношении вашего отношения к продукту). Позволяет ли он также пополнить словарь клише? Если я знаю, что у меня есть плохая привычка использовать определенное выражение, которое не входит в число 7000, которые оно уже обнаруживает, могу ли я добавить это?
@MonicaCellio В настоящее время вы не можете добавить в список клише, поскольку исходный словарь сильно сжат — например, при проверке клише «потерять рубашку» проверяются различные формы глаголов потерять, потерять и потерять. , а также его, ее, мой и ваш заменяется на «своего». Всего 15 разных версий одного клише. Но в следующей версии я планирую добавить эту возможность, однако пользователю придется вручную вводить все формы клише, которые они хотят проверить.

Как утверждает @user3467349, регулярные выражения (регулярные выражения) — ваш (сложный) друг. Это довольно сложная кривая обучения, но оно того стоит, если вам нужно выполнить какой-либо значительный объем поиска или модификации текста. Многие инструменты поддерживают их использование (а некоторые используют немного разные диалекты для своего синтаксиса).

Если у вас есть доступ к системе Linux (где она почти всегда будет установлена ​​по умолчанию — я ожидаю, что она также должна быть установлена ​​в OS X, но я не использую эту ОС) или к пакету инструментов для вашей ОС (например, как Cygwin для Windows), то следует начать с команды grep(глобальное регулярное выражение печати). Он может найти почти все, что угодно, если вы знаете основы регулярных выражений. Существует также более непонятная команда, agrepкоторая специализируется на поиске вещей, похожих на другие вещи, но я еще не использовал ее.

Другая альтернатива: если у вас есть или вы можете установить язык программирования perlв своей системе (должен быть доступен почти для всех ОС), он поддерживает свой собственный диалект регулярных выражений, который, как мне кажется, является самой мощной версией. Легко получить доступ к функции регулярных выражений Perl, не зная много об остальном языке.

Если у вас есть доступ к системе Linux, то команда

info sed

отобразит инструкции по использованию sedинструмента (который вам в данный момент не нужен). Но если вы прокрутите этот файл справки вниз, вы найдете довольно подробный раздел, объясняющий, как использовать регулярные выражения. Это также приведет к непосредственному их использованию grep.