Русский/English
Проблема поиска неточных повторов в документации программного обеспечения достаточно известна. Повторы в такой документации могут быть злом, то есть свидетельствовать о плагиате, о раздувании документации и пр. Но они могут быть и полезны — для повторного использования фрагментов документации, а также для её унификации. Особенно полезна унификация документов на основе повторов в случае reference-документации (понятие ввёл Д.Парнас): имеется в виду документация, которая пишется как справочник и которую пользователи читают не от начала до конца, а с того места, которое им нужно. Примерами могут служить руководства пользователей, документация открытых программных интерфейсов, руководства программистов и др. Так вот в такой документации важно, чтобы все было единообразно, то есть одинаковая информация выражалась одними и теми же словами.
Мы исследуем проблему повторов в документации программного обеспечения. Первая задача, которую мы решаем — это поиск уже существующих повторов. Причём неточных. И здесь мы столкнулись с большим количеством трудностей. Дело в том, что точные повторы можно искать, используя многочисленные готовые средства. С неточными повторами все обстоит сложнее. Мы решили использовать готовые средства поиска, интегрируя и специализируя их для нашей задачи. Мы используем средства поиска клонов в программах, мы начали использовать средства работы с естественными языками, на очереди — инструменты информационного поиска.
Далее, мы разрабатываем классификацию повторов в разных видах документов, а также метод улучшения (унификации) документации, основанный на повторах.
Кроме того, мы разрабатываем программный инструмент Duplicate Finder, который призван помочь при анализе повторов (точных и неточных) в программной документации.
Данный тул предназначен для поиска и анализа нечетких повторов в документации программного обеспечения. Два фрагмента текста являются нечеткими повторами, если они содержат общую информацию, выраженную синтаксически одинаково (то есть одним и тем же текстом), но имеют ряд отличий, и при этом одинаковой информации существенно больше, чем отличий.
Наш тул работает в двух режимах:
Превый режим нужен для того, чтобы сделать экспресс-оценку наличия повторов в документе. Однако в автоматическом режиме не удаётся выявить семантически корректные повторы - часто объединяются бессмысленные, синтаксически-идентичные фразы, а значимые повторы извлечены не полностью. Имеются и другие проблемы. Однако общая картина «густоты» повторов в документе в этом режиме определяется достоверно. А дальше, для получения корректной информации и дальнейшего использования нечетких повторов в documentation reuse, предлагается интерактивный режим.
Исходный код тула можно взять здесь.