Данная статья будет интересна, в первую очередь, тем, кто занимается разработкой собственных синонимайзеров и интересуется будущим машинного рерайта.

При работе с синонимайзерами у пользователя обязательно возникает вопрос: «а имеет ли это смысл, если еще не изобрели искусственного интеллекта? Возможно, проще и разумнее заплатить рерайтеру?» С какой-то стороны, это действительно проще: даже школьный троечник сможет довести текст до уникальности, сделав при этом не так уж и много ошибок. При этом его услуги будут стоить сущие копейки. Правда, производительность такого работника не велика. Даже если представить, что он работает целый день напролет, поддерживая максимально возможную для человека скорость, у него получится не больше 100 тыс. зн. в день.

Понятно, что если требуется склепать за день десяток сателлитов, такой вариант неприемлем. А если взять в расчет то, что недорогой фрилансер будет обязательно иногда срывать сроки (кстати, на любые претензии по этому поводу заказчик услышит сакраментальную фразу «а чего вы хотели за такие деньги?»), то рациональность заказа контента для сателлитов у живых людей становится весьма сомнительной.

Предупреждая возмущенные возгласы, скажу: качественный контент для СДЛ должны писать профессиональные копирайтеры за приличные деньги. Но это уже совсем другой разговор. Но забудем на время о горе-рерайтерах и поговорим о синонимайзинге и его перспективах.

1. Что там с уникальностью? Чтобы подсчитать, насколько хорошо работает синонимайзер с точки зрения уникализаации текста, сначала определимся, сколько слов нужно заменить, чтобы текст был уникальным. Очевидно, что при проверке уникальности поисковиком используется шингл в 4 или более слов (если бы проверка осуществлялась по меньшему шинглу, 90% текстов попадали бы в разряд не уникальных, а этого не происходит). Таким образом, чтобы получить уникальный шингл, нужно заменить или переместить одно слово из четырех, т.е. 25% текста. Конечно, замены при синонимизации распределяются не совсем равномерно, поэтому для точности накинем еще десять процентов. В итоге, чтобы текст стал уникальным, нужно заменить в нем около 35% слов. Согласитесь, это не так уж и много, и синонимайзер может справиться с такой задачей.

2. А что с читабельностью? Этот вопрос гораздо сложнее первого. Для начала, попробуем перечислить факторы, из которых складывается читабельность:
— грамотность построения фразы (использование правильных морфологических форм слов);
— адекватность замен с точки зрения контекста и стиля статьи; — правильность замены омонимов;
— правильная работа с фразеологизмами.

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

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

Тут тоже не все так просто: в разряд наиболее частых обычно попадают слова, не имеющие прямого отношения к той или иной тематике.
— выделять какие-то лексические и структурные особенности текста, характерные для той или иной тематики, но это титанический труд, сопоставимый с составлением баз синонимов.

Определение темы текста помогает нам работать со многими омонимами, выбирая наиболее подходящий синоним в заданном контексте. Довольно сложно сохранить стиль исходного текста: практически каждое слово в нашем языке имеет свой смысловой оттенок. Возможно, в дальнейшем удастся придумать что-то более технологичное, но пока самые умные сервисы просто стараются, по возможности, подбирать к каждому слову синонимы, наиболее точно передающие не только грубый смысл слова, но и его «интонацию».

С этой же целью особо умные синонимайзеры работают со строками в базах синонимов лишь в одном направлении. Но большая часть синонимайзеров работает по другой схеме. Строка вида антракт|перерыв будет работать в обе стороны, хотя на самом деле перерыв не всегда является антрактом. Конечно, можно заносить такие замены в списки стоп-слов, но это довольно трудоемко. Кроме того, слову «перерыв» может найтись другая, более адекватная замена.

Правильная работа с фразеологизмами обеспечивается использованием баз словосочетаний и стоп-словосочетаний.

3. А как же естественность текста? Естественность синонимизированного текста зависит от его читабельности, синтаксической верности, набора использованных в нем слов. Вопрос читабельности мы уже разобрали, так что сразу обратимся к следующим пунктам. Проблемы с синтаксической структурой текста возникают в том случае, если синонимайзер работает с текстом, не обращая внимания на знаки препинания. В результате такой уникализации замене подвергаются словосочетания, которые в исходном тексте были разбиты знаками препинания, а значит фактически словосочетаниями не являлись. По последним сведениям, алгоритмы Яндекса и Гугла уже научились отслеживать подобные ситуации (хотя, если тексты с пунктуационными и стилистическими ошибками будут проваливать индексацию, добрая половина рунета вылетит из результатов поиска). Однако, лучше отнестись к вопросам пунктуации максимально внимательно и учитывать в алгоритмах замены все знаки препинания. График частоты встречаемости слов с набором используемых слов все еще интереснее. Бытует мнение, что Яндекс анализирует текст с точки зрения частоты встречаемости использованных в нем слов и с подозрением относится к текстам, в которых редкие слова встречаются слишком часто. Действительно ли это так — вопрос интересный, но не настолько важный, насколько это может показаться. Тексты, сгенерированные слишком неудачно индексируются плохо.

Как можно добиться естественности текста с точки зрения распределения частоты встречаемости слов. Для этого используется два механизма:
— во-первых, при составлении базы нужно стараться заменять более редкие слова более частыми, но не наоборот, либо заменять слова синонимами с приблизительно такой же частотой (конечно, о высокой точности речи не идет).
— во-вторых, нужно вводить различные алгоритмы интеллектуальных замен, благодаря которым слова в исходном тексте не заменяются, а меняются местами без нарушения смысла.

Конечно, все эти меры делают процесс составления баз синонимов очень трудоемким и долгим, но пока лучше поступиться процентом замен, чем качеством готового текста. Таким образом, для того, чтобы сделать приличный синонимайзер, не нужно изобретать искусственный интеллект — все перечисленные моменты вполне регулируются выверенными базами синонимов и хорошо продуманными алгоритмами работы с текстом. Конечно владельцам подобных сервисов придется хорошо потрудиться, но результат того стоит.