[Comm] автоматический поиск тавтологий в тексте

Kirill Maslinsky =?iso-8859-1?q?kirill_=CE=C1_altlinux=2Eorg?=
Ср Апр 9 12:25:33 MSD 2008


On Wed, Apr 09, 2008 at 10:40:09AM +0300, Aleksander N. Gorohovski wrote:
> Доброго времени суток уважаемое 
> сообщество!
> 
> Подскажите, может кто-нибудь встречал 
> под Linux программу
> для поиска в тексте мест, подозрительные 
> на предмет одной из самых
> распространенных стилистических 
> погрешностей:
> расположенных близко по тексту 
> фонетически и морфологически сходных 
> слов,
> чей параллелизм никак не мотивирован.
Встречать не приходилось.
А Вам приходилось встречать отдельную программу не под Linux,
которая бы это делала? 
Интересно, бывает ли такое, и как может называться.

> Т.е. другими словами -- паронимий, или 
> "нечаянных тавтологий".
Паронимиями такое явление называть не совсем точно, правильнее именно
тавтологиями. 

По-английски paronym употребляется в двух значениях (см. Википедию)
1. как синоним однокоренных слов (cognate)
2. как слова очень сходные по звучанию/написанию, но разные по
   значению/происхождению (которые из-за этого часто путают)

По-русски термин "пароним" принято употреблять только во втором
значении.

1. Стилистическая ошибка по первому значению называется как раз
тавтология, и относится к употреблению рядом однокоренных слов (тавтология). 
Кстати, это не считается ошибкой в англоязычной традиции, особенно технических и
деловых документов, поэтому вряд ли найдётся такая программа для
английского языка.

2. Стилистическая ошибка по второму значению называется парономасия, 
это когда в одном предложении встречаются паронимы. Это, мне кажется, 
настолько редкая вещь, что стоит ли беспокоиться?

Вообще теоретически такую программу в первом приближении реализовать 
несложно: 

1. Выбираем размер "окна" в тексте, в пределах которого мы будем искать
однокоренные слова, пускаем это окно "скользить" по тексту. 
2. Разбиваем текст в окне на токены, делаем стемминг (лемматизацию), 
В сизифе есть подходящий простой инструмент с поддержкой
русского языка (snowball).
3. Смотрим на совпадения корней (возможно, с указанной точностью, а
также с учётом stop list и минимальной длины/частотности совпавшей
леммы). 
4. В качестве fallback method для обнаружения сильно изменённых корней (приставки?)
и случайных фонетических совпадений можно делать дополнительное
сравнение по редакционному расстоянию между строками.
5. Репортим пользователю найденные совпадения.

Такой метод даст какое-то количество false positives, но поскольку
результат работы программы все равно предназначен для чтения человеком,
то это некритично.

--
Kirill Maslinsky
ALT Linux Team



Подробная информация о списке рассылки community