ИНСТРУМЕНТЫ: Спинтакс - генератор уникального текста

ОБЩАЯ ИНФОРМАЦИЯ

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

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

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

Кратко о символах формата (больше ясности придёт после изучения примеров ниже):

"{" - открывающая фигурная скобка означает начало перечислимого множества значений для случайного выбора;

"}" - закрывающая фигурная скобка означает конец перечислимого множества значений для случайного выбора;

"|" - горизонтальная черта является разделителем вариантов в множестве перечислимых значений;

"[" - открывающая прямая скобка означает начало перечислимого множества значений для случайной перестановки;

"]" - закрывающая прямая скобка означает конец перечислимого множества значений для случайной перестановки;

"+" - применяется для обрамления с двух сторон того символа, что будет использоваться для разделения значений из перечислимого множества для случайной перестановки;

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

Инструмент, поддерживающий спинтакс, вызывается из раздела "Инструменты" в главном окне SocialKit.


Вызов "Генератора уникальных строк на основе спинтакс-выражений" в главном окне программы.

Для вызова генератора уникальных строк на основе спинтакса вам не обязательно добавлять какие-либо аккаунты.

В окне "Генератора уникальных строк на основе спинтакс-выражений" доступны следующие настройки и опции.

Настройки и опции "Генератора уникальных строк на основе спинтакс-выражений".



"Настройки входных данных". В этом блоке можно выбрать источник спинтакс-выражений. На выбор это может быть текстовый файл на диске, где каждое спинтакс-выражение (предложение) начинается с новой строки, или же спинтакс-выражение можно задать в многострочном поле ввода ниже.

"Настройка выходных данных". В этом блоке можно выбрать место, куда программа будет выводить результат - уникальные строки. Если выбрать пункт "Случайно сгенерированная строка", то программа на своё усмотрение (случайным образом) из всех спинтакс-выражений выберет лишь одно и отобразит сгенерированное словосочетание или предложение в соответствующем поле ввода / вывода. Если выбрать пункт "Каталог, куда будут сохранены результирующие списки", то программа по указанному пути будет создавать текстовые файлы с именем "expression<n>.txt" со списком уникальных словосочетаний или предложений, где <n> - индекс файла, соответствующий индексу спинтакс-выражения из внешнего файла или из многострочного поля ввода (см. блок "Настройка входных данных"). Разумеется, если число спинтакс-выражений равно единице, то результирующий список "expression.txt" не будет содержать индекса - все комбинации словосочетаний или предложений будут в одном файле.

"Настройки генератора". В этом блоке можно настроить логику работы спинтекс-генератора. Например, фильтра. Это очень важно, если нужно получить не просто все возможные комбинации на основе спинтакс-выражения, а только лишь уникальные строки или уникальные строки за исключением каких-то определённых стоп-слов (см. кейсы ниже).



КЕЙС 1


Принцип работы спинтакса очень прост. Рассмотрим для начала простейший пример в виде трёх похожих предложений.

Привет, слышал о программе SocialKit?

Здравствуй, слышал о ПО SocialKit?

Добрый день, слышал о софте SocialKit?


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

{Привет|Здравствуй|Добрый день}, слышал о {программе|ПО|софте} SocialKit?


Т.е. составляется предложение-шаблон, в котором варианты того или иного слова перечисляются через символы-разделители "|", а сам массив (перечень) таких слов обрамляется фигурными скобками "{" и "}".

Не трудно догадаться, что для спинтакс-выражения (шаблона), рассмотренного выше, число уникальных предложений будет равняться не 3, а 9, в перечень которых будут входить и три примера исходных предложений.

Привет, слышал о программе SocialKit?
Привет, слышал о ПО SocialKit?

Привет, слышал о софте SocialKit?
Здравствуй, слышал о программе SocialKit?

Здравствуй, слышал о ПО SocialKit?
Здравствуй, слышал о софте SocialKit?
Добрый день, слышал о программе SocialKit?
Добрый день, слышал о ПО SocialKit?
Добрый день, слышал о софте SocialKit?

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

{Привет|Здравствуй|Добрый день}

{программе|ПО|софте}

Соответственно, 3 * 3 = 9 вариантов написания одного и того же смыслового выражения.


Средствами "Генератора уникальных строк на основе спинтакс-выражений" настройки для получения списка с 9 уникальными предложениями будут выглядеть так:


Настройка "Генератора уникальных строк на основе спинтакс-выражений".

Как видно из скриншота выше, спинтакс-выражение было задано как предложение в многострочном поле ввода. Далее был выбран каталог, куда программа запишет текстовый файл "expression<n>.txt" со всеми возможными комбинациями - в нашем примере это 9 уникальных предложений.

Результирующий файл с уникальными предложениями.

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

Однако, как быть, если нужно получить не просто уникальные предложения, а предложения, где все взаимозаменяемые слова уникальны. Напомним, что в нашем примере таких предложений три:

Привет, слышал о программе SocialKit?

Здравствуй, слышал о ПО SocialKit?

Добрый день, слышал о софте SocialKit?


Для этого нам нужно определиться с тем, какие слова не будут влиять на оценку уникальности, а какие будут. В нашем примере на уникальность влияют все слова, заключенные в спинтакс, а именно: "Привет", "Здравствуй", "Добрый день", "программе", "ПО", "софте". Т.е. это те слова, повторение которых мы будем считать недопустимым. Остаются слова "слышал" и "SocialKit", а также предлог "о" - будем считать, что эти два слова и предлог никак не влияют на уникальность или неуникальность предложения.


Пример того, как может выглядеть файл со стоп-словами для "Генератора уникальных строк на основе спинтакса".

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

ВАЖНО! Учтите, что программа сверяет стоп-слова по абсолютному и точному соответствию. Единственным критерием, разбивающим предложение на слова, является символ " " (пробел). Символы ":", ";", ",", ".", "!", "?" отбрасываются программой, если они находятся до символа " " (пробел) или в конце предложения. Символ "-" (тире) разделяется с двух сторон пробелами, потому его тоже нужно добавлять в перечень стоп-слов, если он встречается в спинтакс-выражении в качестве части самого предложения. Не путать с дефисом, который выглядит также, но является частью слова. Например, слово "черно-белый" является одним словом и программа его не разделяет. Соответственно, если в спинтакс-выражении есть слова, разделённые дефисами, то добавлять дефис в перечень стоп-слов не нужно.

Таким образом, настройки генератора для получения предложений с уникальными словами будут иметь вид:

Настройка "Генератора уникальных строк на основе спинтакс-выражений".

А, соответственно, результирующий файл такое содержимое:


Результирующий файл с уникальными ключевыми словами в предложениях.

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

Рассмотрим более сложный пример. Предположим, что все пользователи установили фильтрацию на слова во входящих сообщениях: "программа", "продвижения" и "Инстаграм". Тогда, чтобы обойти эти ограничения нужно либо искать слова синонимы, а их не так много, либо заменять буквы в словах. Последнее даёт возможность получить очень большое число комбинаций не просто уникальных предложений, а ещё и предложений с уникальными словами в каждом.

Создадим такое спинтакс-выражение:

SocialKit - лучшая п{р|p}{о|o}г{р|p}{а|a}мм{а|a} для п{р|p}{о|o}дв{и|u}ж{е|e}н{и|u}я в Ин{с|c}{т|m}{а|a}г{р|p}{а|a}м.


Хитрость состоит в том, что многие латинские буквы по написанию схожи с русскими как две капли воды или похожи на их рукописные аналоги, как, например, с буквой "т", которая может быть также записана, как рукописная "m". Где "m" - это всего лишь строчная латинская буква "M". Принимает такой вид при активации курсива.

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

Если добавить стоп-слова, то их перечень будет таким: "SocialKit", "-", "лучшая", "для", "в".


Настройка "Генератора уникальных строк на основе спинтакс-выражений".



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


Результирующий файл с уникальными словами-синонимами в каждом предложении.

Почему 31, а не 32? Потому, что 32ой вариант написания каждого из трёх слов в нашем примере - это оригинал самого слова. Рекомендуем самостоятельно поэкспериментировать с этими примерами для закрепления материала.



КЕЙС 2

Спинтакс в SocialKit поддерживает и более сложные конструкции - так называемый, расширенный спинтакс.

Рассмотрим на примерах.

{Один|Два|Три} - в результирующий текст попадёт одно из трёх значений (слов) случайно, например, "Три";

[ Один| Два| Три] - в результирующий текст попадёт перестановка значений (слов) случайно, например, "Два Один Три" (обратите внимание, что перед словами в конструкции стоят пробелы, чтобы при перестановки слова не сливались);

[+_+Один|Два|Три] - в результирующий текст попадёт перестановка значений (слов) случайно, разделённых указанными символом-разделителем, например, "Три_Один_Два" (в пробеле на этот раз уже смысла нет);

Обратите также внимание, что специальные символы тоже можно использовать в предложениях, содержащих спинтакс-шаблоны - это называется "экранирование" специальных символов.

[+\++Один|\[Два\]|Три] - в результирующий текст попадёт перестановка значений (слов) случайно, где в качестве разделителей будут зарезервированные символы "+", а также символы обрамлений массивов и множеств "[" и "]", например, "[Два]+Один+Три".

В качестве практического примера рассмотрим следующее спинтакс-выражение:

{Здравствуйте|Привет|Добрый день}, \{username\}, [+ +вы|{сегодня|вчера были}|[+-+прекрасно|ужасны]].


Как видно, в нём есть не только слова-синонимы, но и места, где слова меняются местами.

Настройка "Генератора уникальных строк на основе спинтакс-выражений".

Результирующий файл со списком уникальных предложений будет выглядеть так:

Результирующий файл с уникальными предложениями на основе спинтакса.

Лексема "{username}" в данном случае приведена в качестве примера того, как нужно оформлять спинтакс-выражения, если слова или части предложения содержат специальные символы.

Сервис поддержки клиентов работает на платформе UserEcho