Варианты фраз в excel

Генератор фраз из заданных фрагментов

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

Постановка задачи

В математике такая операция называется декартовым произведением. Официальное определение звучит так: декартовым произведением множеств А и В называется множество всех пар, первая компонента которых принадлежит множеству А, а вторая компонента принадлежит множеству В. Причем элементами множеств могут быть как числа, так и текст.

В переводе на человеческий язык, это означает, что если в множестве А у нас, например, слова «белый» и «красный», а в множестве В «БМВ» и «Мерседес», то после декартова произведения этих двух наборов мы получим на выходе совокупность всех возможных вариантов фраз, составленных из слов обоих списков:

  • белый БМВ
  • красный БМВ
  • белый Мерседес
  • красный Мерседес

… т.е. как раз то, что нам нужно. Давайте рассмотрим пару способов решения этой задачи в Excel.

Способ 1. Формулы

Начнём с формул. Предположим, что в качестве исходных данных мы имеем три списка исходных слов в столбцах A, B и C, соответственно, причем количество элементов в каждом списке может меняться:

Исходные списки слов

Сначала сделаем три столбца с индексами, т.е. порядковыми номерами слов из каждого списка во всех возможных сочетаниях. Первый ряд единичек (E2:G2) введём вручную, а для остальных используем следующую формулу:

Вычисляем индексы

Логика здесь простая: если индекс в вышестоящей предыдущей ячейке уже дошёл до конца списка, т.е. равен количеству элементов в списке вычисленному функцией СЧЁТЗ (COUNTA), то мы запускаем нумерацию заново. В противном случае — увеличиваем индекс на 1. Обратите особое внимание на хитрое закрепление диапазонов знаками доллара ($), чтобы можно было скопировать формулу вниз и вправо.

Теперь, когда у нас есть порядковые номера нужных нам слов из каждого списка, можно извлечь и сами слова с помощью функции ИНДЕКС (INDEX) в три отдельных столбца:

Извлекаем слова

Если вы раньше не сталкивались в своей работе с этой функцией, то очень советую хотя бы по диагонали её изучить — она выручает в очень многих ситуациях и полезна ничуть не меньше (и даже больше!), чем популярная ВПР (VLOOKUP).

Ну, а после останется только склеить построчно получившиеся фрагменты с помощью символа конкатенации (&):

Склеиваем итоговые фразы

… или (если у вас последняя версия Excel) с помощью удобной функции ОБЪЕДИНИТЬ (TEXTJOIN), умеющей склеивать всё содержимое указанных ячеек через заданный символ-разделитель (пробел):

Склейка текста функцией ОБЪЕДИНИТЬ (TEXTJOIN)

Способ 2. Через Power Query

Power Query — это мощная надстройка для Microsoft Excel, выполняющая две основные задачи: 1. загрузку данных в Excel из почти любых внешних источников и 2. всяческие трансформации загруженных таблиц. Power Query уже встроена в Excel 2016-2019, а для Excel 2010-2013 она устанавливается как отдельная надстройка (скачать можно с официального сайта Microsoft совершенно бесплатно). Если вы ещё не начали использовать Power Query в своей работе, то самое время об этом подумать, ибо преобразования типа вышеописанных делаются там легко и непринужденно, буквально за пару движений.

Сначала загрузим исходные списки как отдельные запросы в Power Query. Для этого для каждой таблицы выполним следующие действия:

  1. Превратим таблицы в «умные» кнопкой Форматировать как таблицу на вкладке Главная (Home — Format as Table) или сочетанием клавиш Ctrl+T. Каждой таблице автоматически будет присвоено имя Таблица1,2,3…, которое, впрочем, можно при желании поменять на вкладке Конструктор (Design).
  2. Установив активную ячейку в таблицу, нажмем кнопку Из таблицы (From Table) на вкладке Данные (Data) или на вкладке Power Query (если она установлена у вас как отдельная надстройка для Excel 2010-2013).
  3. В открывшемся окне редактора запросов выберем команду Главная — Закрыть и загрузить — Закрыть и загрузить в… (Home — Close&Load — Close&Load to..) и затем опцию Только создать подключение (Create only connection). Это оставит загруженную таблицу в памяти и позволит обращаться к ней в будущем.

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

Загруженные в Power Query таблицы

Теперь щёлкнем правой кнопкой мыши по первому запросу и выберем команду Ссылка (Reference), чтобы сделать его обновляемую копию, а затем добавим к данным дополнительный столбец через команду Добавление столбца ž- Настраиваемый столбец (Add Column -ž Custom Column). В окне ввода формулы введём имя нового столбца (например, Фрагмент2) и предельно простое выражение в качестве формулы:

=Таблица2

… т.е., другими словами, название второго запроса:

Добавляем столбец с формулой

После нажатия на ОК мы увидим новый столбец, в каждой ячейке которого будет лежать вложенная таблица с фразами из второй таблицы (увидеть содержимое этих таблиц можно, если щёлкнуть мышью в фон ячейки рядом со словом Table):

Вложенные таблицы

Останется развернуть всё содержимое этих вложенных таблиц с помощью кнопки с двойными стрелками в заголовке полученного столбца и сняв при этом флажок Использовать исходное имя столбца как префикс (Use original column name as prefix):

Разворачиваем вложенные таблицы

… и мы получим все возможные сочетания элементов из первых двух наборов:

Результат развертывания

Дальше всё аналогично. Добавляем еще один вычисляемый столбец с формулой:

=Таблица3

…, а затем ещё раз разворачиваем вложенные таблицы – и вот у нас уже все возможные варианты перестановок слов из трёх наборов, соответственно:

Развернули третью таблицу

Осталось выделить все три столбца слева-направо, удерживая Ctrl, и сцепить их содержимое через пробел, используя команду Объединить столбцы (Merge Columns) с вкладки Преобразование (Transform):

Сцепляем фрагменты

Получившиеся результаты можно выгрузить обратно на лист знакомой уже командой Главная — Закрыть и загрузить — Закрыть и загрузить в… (Home — Close&Load — Close&Load to..):

Результаты

Если в будущем что-то изменится в наших исходных таблицах с фрагментами, то достаточно будет просто обновить созданный запрос, щёлкнув по результирующей таблице правой кнопкой мыши и выбрав команду Обновить (Refresh) или нажав сочетание клавиш Ctrl+Alt+F5.

Ссылки по теме

  • Что такое Power Query, Power Pivot, Power Map и Power BI и зачем они пользователю Excel
  • Создание диаграммы Ганта в Power Query
  • 5 способов применения функции ИНДЕКС

Содержание

  1. Генератор фраз из заданных фрагментов
  2. Способ 1. Формулы
  3. Способ 2. Через Power Query
  4. Генератор комбинаций слов в Excel
  5. Предыстория
  6. Онлайн-«перемножатели» и их недостатки
  7. Перемножение списков слов в Excel
  8. Примеры составления комбинаций
  9. Перемножить слова через единый разделитель
  10. Перемножить слова через собственные разделители
  11. Генератор слов в excel
  12. Как перемешать строки и сделать случайный выбор из списка
  13. Что такое случайная выборка?
  14. Случайный выбор значения из списка
  15. Как работают эти формулы
  16. Случайный выбор без дубликатов.
  17. Как работает эта формула
  18. Как выбрать случайные строки в Excel
  19. Как случайно выбрать в Excel с помощью инструмента Randomize.
  20. Как сделать генератор цитат за час

Генератор фраз из заданных фрагментов

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

В математике такая операция называется декартовым произведением. Официальное определение звучит так: декартовым произведением множеств А и В называется множество всех пар, первая компонента которых принадлежит множеству А, а вторая компонента принадлежит множеству В. Причем элементами множеств могут быть как числа, так и текст.

В переводе на человеческий язык, это означает, что если в множестве А у нас, например, слова «белый» и «красный», а в множестве В «БМВ» и «Мерседес», то после декартова произведения этих двух наборов мы получим на выходе совокупность всех возможных вариантов фраз, составленных из слов обоих списков:

. т.е. как раз то, что нам нужно. Давайте рассмотрим пару способов решения этой задачи в Excel.

Способ 1. Формулы

Начнём с формул. Предположим, что в качестве исходных данных мы имеем три списка исходных слов в столбцах A, B и C, соответственно, причем количество элементов в каждом списке может меняться:

Сначала сделаем три столбца с индексами, т.е. порядковыми номерами слов из каждого списка во всех возможных сочетаниях. Первый ряд единичек (E2:G2) введём вручную, а для остальных используем следующую формулу:

Теперь, когда у нас есть порядковые номера нужных нам слов из каждого списка, можно извлечь и сами слова с помощью функции ИНДЕКС (INDEX) в три отдельных столбца:

Ну, а после останется только склеить построчно получившиеся фрагменты с помощью символа конкатенации (&):

Способ 2. Через Power Query

Сначала загрузим исходные списки как отдельные запросы в Power Query. Для этого для каждой таблицы выполним следующие действия:

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

. т.е., другими словами, название второго запроса:

После нажатия на ОК мы увидим новый столбец, в каждой ячейке которого будет лежать вложенная таблица с фразами из второй таблицы (увидеть содержимое этих таблиц можно, если щёлкнуть мышью в фон ячейки рядом со словом Table):

Останется развернуть всё содержимое этих вложенных таблиц с помощью кнопки с двойными стрелками в заголовке полученного столбца и сняв при этом флажок Использовать исходное имя столбца как префикс (Use original column name as prefix) :

. и мы получим все возможные сочетания элементов из первых двух наборов:

Дальше всё аналогично. Добавляем еще один вычисляемый столбец с формулой:

…, а затем ещё раз разворачиваем вложенные таблицы – и вот у нас уже все возможные варианты перестановок слов из трёх наборов, соответственно:

Источник

Генератор комбинаций слов в Excel

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

Предыстория

Периодически возникает потребность произвести операцию комбинирования различных слов и фраз друг с другом.

Сфер применения несколько:

Онлайн-«перемножатели» и их недостатки

Среди специалистов популярны онлайн-генераторы фраз. Их задача – «перемножать» списки заданных слов друг на друга, сохраняя последовательность слов. Пользовался ими и я.

Однако у онлайн-инструментов есть свои минусы:

Перемножение списков слов в Excel

Алгоритмически процедура довольно проста — нужно просто составить все комбинации сочетаний всех значений в столбцах.

Вы не ограничены количеством столбцов для комбинации и выбором разделителей. Единственная ваша задача – чтобы количество комбинаций не превысило максимум, который можно вывести на лист – 1048576 строк.

Для корректной работы макроса (без неожиданных результатов) есть определенные легко выполнимые требования:

Примеры составления комбинаций

Перемножить слова через единый разделитель

Перемножить слова через собственные разделители

Чтобы использовать собственные разные разделители между словами, нужно их просто вставить в ячейку между основными комбинируемыми сущностями. Префикс и суффикс также можно вставлять — в первый и последний столбец соответственно.

Вы наверняка заметили, что после комбинирования значения остаются в разных столбцах. Это легко поправляется инструментом «объединить диапазон по горизонтали». Смотрите пример:

Источник

Генератор слов в excel

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

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

Внимание: вы можете изменить аргументы по своему усмотрению.

Заметки:

(1.) Формула действительна в Excel 2007, 2010 и 2013, но не в Excel 2003. В Excel 2003 используйте формулу = СИМВОЛ (INT (RAND () * 25 + 65)) & CHAR (INT (RAND () * 25 + 65)) & CHAR (INT (RAND () * 25 + 65)) & CHAR (INT (RAND () * 25 + 65))

(3.) Вы можете использовать символ &, чтобы добавить необходимое количество букв.

3. Чтобы создать случайную буквенно-цифровую строку, состоящую из двух букв и двух цифр, используйте эту формулу: = СИМВОЛ (СЛУЧАЙНОМУ (65,90)) И СИМВОЛ (СЛУЧМЕЖДУ (65,90)) & СЛУЧМЕЖДУ (10,99) И вы получите следующие строки в диапазоне, содержащем две буквы и две цифры:

Внимание: вы можете изменить аргументы, чтобы получить цифру, как вам нужно, и использовать &, чтобы добавить количество букв.

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

Легко сгенерировать случайные символьные строки с определенными символами и длиной текста с помощью Вставить случайные данные полезности Kutools for Excel.
Загрузите Kutools для Excel прямо сейчас! (30-дневная бесплатная трасса)

Если вы считаете, что приведенные выше формулы сложны и проблематичны, следующий код VBA может вам намного проще. Пожалуйста, сделайте так:

1. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модуль, и вставьте следующий макрос в Модуль окно.

3. Затем сохраните и закройте код, в ячейке введите эту функцию = RandomizeF (x, y) для вставки случайной строки символов с минимальной длиной x символов и максимальной длиной y символов.

Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.

1. Выберите диапазон, в котором вы будете генерировать случайные строки, а затем щелкните Kutools > Вставить > Вставить случайные данные. Смотрите скриншот:

3. В Вставить случайные данные диалоговое окно, нажмите строка вкладку и выберите нужный тип символов, затем укажите длину строки в Длина строки поле и, наконец, щелкните OK кнопка. Смотрите скриншот:

Затем выбранный диапазон был заполнен случайными строками символов.

1. Выберите диапазон, укажите символы и установите флажок По маске. Затем введите указанные строки данных, которые вам нужны. Смотрите скриншот:

Внимание: С помощью ? для обозначения цифры случайного символа в конечных указанных строках форматирования.

2. Затем нажмите OK or Применить. Указанные строки данных форматирования были сгенерированы случайным образом следующим образом. Смотрите скриншот:

Kutools for Excel‘s Вставить случайные данные может помочь вам легко выполнить следующие операции в ячейках диапазона.

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

Источник

Как перемешать строки и сделать случайный выбор из списка

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

Что такое случайная выборка?

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

Например, вы хотите провести небольшой опрос среди своих клиентов. Очевидно, было бы неразумно рассылать анкету каждому человеку в вашей большой базе данных. Итак, кого вы побеспокоите своими вопросами? Будет ли это 100 новых клиентов, или первые 100 клиентов, перечисленные в алфавитном порядке, или 100 человек с самыми короткими именами? Ни один из этих подходов не соответствует вашим потребностям, потому что они изначально субъективны. Чтобы получить беспристрастную выборку, в которой у всех клиентов есть равные возможности быть выбранными, произведите случайный выбор, используя один из методов, описанных ниже.

Случайный выбор значения из списка

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

Предположим, у вас есть список имен в ячейках A2:A15, и вы хотите выбрать одно из них. Это можно сделать с помощью одной из следующих формул:

Вот и все! Средство выбора случайных имен для Excel настроено и готово к работе:

Примечание. Имейте в виду, что СЛУЧМЕЖДУ – это непостоянная функция, то есть она будет пересчитываться при каждом изменении, которое вы вносите в рабочий лист. В результате ваш случайный выбор из списка также будет постоянно меняться. Чтобы этого не произошло, вы можете скопировать извлеченное имя и вставить его как значение в другую ячейку (Специальная вставка > Значения).

Естественно, эти формулы могут не только выбирать случайные имена, но также и случайные числа, даты или любые другие данные из ячеек.

Как работают эти формулы

Мы используем функцию ИНДЕКС для извлечения значения из списка на основе случайного порядкового номера, возвращаемого СЛУЧМЕЖДУ.

То есть, функция СЛУЧМЕЖДУ генерирует случайное целое число между двумя указанными вами значениями. Для нижнего порога вы указываете число 1. Для верхнего — используете СЧЁТЗ() или ЧСТРОК(), чтобы получить общее количество ячеек с данными. В результате СЛУЧМЕЖДУ() возвращает случайный номер ячейки в вашем наборе данных. Этот номер передается в функцию ИНДЕКС, сообщая ей, какую по счёту ячейку выбрать. Второй аргумент (номер столбца) можно не указывать, поскольку он у нас только один.

Примечание. Этот метод хорошо подходит для выбора одного случайного значения из списка. Если ваш выбор должен включать несколько результатов, приведенная выше формула может возвращать несколько вхождений одного и того же значения, поскольку функция СЛУЧМЕЖДУ не защищена от дубликатов. Это особенно актуально, когда вы выбираете относительно большую выборку из относительно небольшого списка.

Эту задачу можно также решить с помощью формулы

Функция СЛУЧМЕЖДУ() случайным образом выбирает позицию списка, из которой нужно взять одно значение ( для этой функции вероятность выбрать любую строку одинакова).

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

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

Случайный выбор без дубликатов.

Есть несколько способов выбрать случайные данные без дубликатов в Excel. К примеру, вы должны использовать функцию СЛЧИС, чтобы присвоить случайное число каждой ячейке, а затем выбрать несколько ячеек с помощью формулы индекса ранга.

Со списком имен в ячейках A2: A16 выполните следующие действия, чтобы извлечь несколько имен:

Вот и все! Извлекаются пять имен без повторов:

Как работает эта формула

Как и в предыдущем примере, вы используете функцию ИНДЕКС для извлечения значения из столбца A на основе номера позиции. Для этого требуются две разные функции:

Предупреждение! Как показано на скриншоте выше, наша случайная выборка Excel содержит только уникальные значения. Теоретически вероятность появления дубликатов здесь очень мала, но все же существует. И вот почему: в очень большом наборе данных СЛЧИС() может сгенерировать повторяющиеся числа, а РАНГ() будет возвращать одинаковое место для этих чисел. Лично у меня во время тестов ни разу не было дубликатов, но теоретически такая вероятность есть.

Если вы ищете железобетонно надёжную формулу для случайного выбора только с уникальными значениями, используйте комбинацию РАНГ + СЧЁТЕСЛИ вместо просто РАНГ.

Полная формула немного громоздка, но на 100% не содержит дубликатов:

Примечания:

А вот еще одно похожее на предыдущее решение, в котором используется функция НАИМЕНЬШИЙ().

Рядом со столбцом значений для выборки добавляем столбец случайных чисел. Как обычно, используем для этого функцию СЛЧИС().

Предположим, нам нужно выбрать 5 имён. Для этого в колонке С записываем цифры от 1 до 5.

Далее используем формулу

Поясним, как это работает. При помощи функции НАИМЕНЬШИЙ() выбираем самое маленькое значение из сгенерированных чисел. Функция ПОИСКПОЗ помогает нам определить его позицию в списке. И затем при помощи ИНДЕКС() извлекаем имя, находящееся в этой позиции.

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

Но можно сэкономить себе время и не создавать колонку с порядковыми номерами. В качестве счётчика принято использовать функцию СТРОКА().

При копировании вниз СТРОКА(A1) изменится на СТРОКА(А2) и соответственно возвратит номер 2. И так далее. В остальном всё работает точно так же.

Думаю, вы понимаете, что вместо НАИМЕНЬШИЙ() можно вполне использовать НАИБОЛЬШИЙ(). Дело вкуса 😊.

Как выбрать случайные строки в Excel

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

Вы можете для экономии времени использовать кнопки сортировки АЯ или ЯА, но при этом курсор нужно обязательно установить на столбец с формулой СЛЧИС(). Заголовок колонки желательно написать по-русски, иначе он имеет шансы переместиться в конец таблицы.

Теперь осталось нажать ОК, и строки таблицы будут пересортированы и произвольно перемешаны.

Пусть вас не смущает тот факт, что после сортировки по столбцу D вы видите в нем совершенно не упорядоченные числа. Дело в том, что сортировка меняет порядок строк, и тут же вновь происходит пересчёт всех формул СЛЧИС(). Но ведь наша задача не отсортировать, а произвольно перемешать строки, не так ли?

Если вас не совсем устраивает рандомизация вашей таблицы, нажмите кнопку сортировки еще раз, чтобы вновь перемешать её.

Как случайно выбрать в Excel с помощью инструмента Randomize.

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

Слева появится панель настройки, о которой следует сказать чуть подробнее.

Поясним, что скрывается за каждой из цифр.

Замечание. Если в вашей таблице более широкий заголовок, кликните по этой надписи, введите реальное количество строк, и они не будут выделены и использованы.

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

И через секунду вы получите случайный выбор:

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

Если вы хотите протестировать инструмент «Случайный выбор» на своих данных, загрузите полнофункциональную пробную версию Ultimate Suite for Excel.

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

Источник

Как сделать генератор цитат за час

Прелесть генераторов в том, что можно автоматизировать свой труд и сэкономить время. Они полезны для приложений, веб-сайтов, блогов, гороскопов. Техника будет сама напоминать вашим читателям про ваш продукт, не используя одну и ту же назойливую картинку. А «готовка» генератора займет 40-60 минут. Попробуйте, господа!

Создать машину, которая работает как InspiroBot.me — легко!

Впервые о InspiroBot AI написал Techcrunch в 2015 году, рассказав, что такой инструмент хорошая замена человеческого труда по созданию философских постов для социальных сетей.

InspiroBot о себе заявляет: «Я — искусственный интеллект, призванный генерировать неограниченное количество уникальных вдохновляющих цитат для бесконечного обогащения бессмысленного человеческого существования.» Другими словами, автор бота — Педер Джоргенсен (Peder Jørgensen), загрузил словарь и фоновые картинки, чтобы генерировать бесконечное количество цитат.

Вот как это работает, по рассказу автора блога в техфоруме Steemit.com:
Слова разделены на семантические группы и прописаны виды фраз по смыслу, например:

Для подбора таких грамматических структур существует разные инструменты, например: Link Grammar Parser, где есть циклические отношения между словами — правила синтаксиса. По такому же принципу работает корректор пунктуации в Word Office. Кроме того, есть словарь на английском языке — Word Net, где части речи сгруппированы в наборы синонимов.

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

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

Инструкция по разработке бота — цитатника:

1 — Для начала в Google Spreadsheets или Microsoft Excel строем генератор фраз из заданных фрагментов. (Такой же механизм используют маркетологи для создания ключевых фраз для SEO.) Прописываем структуру предложения, разделяя слова по смыслу. Заполняем синонимы, которые подходят под фразу в нужной форме(падеже/времени и т.д.).

2 — После этого задаем комбинаторику выражений в виде индексов, как если бы пытались отгадать код от сейфа. Это действие не нужно делать в ручную, формулы можно подглядеть в Youtube. И вот текстовый результат — готовые мотивационные цитаты, так из 26 отдельных слов выходит 500+ уникальных выражений.

3 — Следующий шаг — работа с Python. Для этого скачиваем редактор VS Code. Там создаем файл с расширением — example.py, редактор автоматически покажет, что вы работаете теперь в питоновском исходнике. Обновите свой Python до версии 3.8, чтобы работали все библиотеки.

Дальше все разберем шаг за шагом:

Для работы с Google Spreadsheets нужен — “gspread”
Для функции рандома вводим “random”
Для работы с графикой вводим “PIL”
Отдельно прописав в терминале pip install

После подключаем Google API, чтобы получить данные из таблицы.

Для этого прописываем скоп ссылок:

и подключаем креденшелы.

Подробнее как подключить API можно ознакомиться тут.

Далее мы указываем лист, в которой находится таблица с данными:

В моем случае я назвала лист с фразами в Google Spreadsheets — “Quotes”

Возвращаемся обратно к скрипту.

Сперва надо создать объект, куда запишем все ранее сгенерированные фразы из наших таблиц:

Следом нужно в цикле получить все строки со склейками:

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

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

Потом берем из директории любое изображение с функцией рандома:

Нужно еще скачать шрифты с кириллицей. Быстренько идем на google fonts и скачиваем любой понравившийся шрифт и кладем рядом, выбираем позицию для изображения(250, 250 можно чуть выше, ниже, как хотите):

Берем готовую цитату и массива по рандомному индексу:

Функция draw нарисует текст в указанной позиции с нужным шрифтом:

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

Источник

You can use text functions to manipulate text strings in Excel. However, you can’t use them with regular expressions. As of writing this article VBA is your only option. In this guide, we’re going to show you how to use regular expressions in Excel.

Download Workbook

What is a regular expression?

A regular expression (also known as regex or regexp shortly) is a special text string for specifying a search pattern. They are like wildcards. Instead of specifying the number of characters, you can create patterns to find a specific group of characters, like searching between «b» to «o», using OR logic, excluding some characters, or repeating values.

Regular expressions are commonly used for text parsing and replacing operations for all programming languages. To use regular expressions in Excel, we will be using VBA.

Pattern Description Samples
^jack begins with «jack» jack-of-all-trades, jack’s house
jack$ ends with «jack» hijack
^jack$ is exactly «jack» jack
colo[u]{0,}r can include «u» at least 0 times colour, color (not colur)
col[o|u]r includes either «o» or «u» color, colur (not colour)
col[^u]r accepts any character except «u» color (not colur or colour)

How to use regular expressions

Let’s start using regular expressions in Excel by opening VBA. Press Alt + F11 keys to open VBA (Visual Basic for Applications) window. Add a module to enter your code.

Next step is to add regular expression reference to VBA. Click Tools > References in the VBA toolbar. Find and check Microsoft VBScript Regular Expressions 5.5 item in the References window. Click OK to add the reference.

How to use regular expressions in Excel 02

Using the VBScript reference, we can create a regular expression object, which is defined as RegExp in VBA. A RegExp object has 4 properties and 3 methods:

Properties

Name Type Description
Global Boolean Set True to find all cases that match with the pattern.
Set False to find the first match.
IgnoreCase Boolean Set True to not make case-sensitive search.
Set False to make case-sensitive search.
Multiline Boolean Set True if your string has multiple lines and you want to perform the search in all lines.
Pattern String The regular expression pattern you want to search.

Methods

Name Arguments Description
Execute sourceString As String Returns an array that contains all occurrences of the pattern matched in the string.
Replace sourceString As String replaceVar As Variant Returns a string which all occurrences of the pattern in the string are replaced with the replaceVar string.
Test sourceString As String Returns True if there is a match. Otherwise, False.

Code Samples

A function that returns TRUE/FALSE if the pattern is found in a string

Public Function RegExFind(str As String, pat As String) As Boolean

‘Define the regular expression object

Dim RegEx As New RegExp

‘Set up regular expression properties

With RegEx

.Global = False ‘All occurences are not necessary since a single occurence is enough

.IgnoreCase = True ‘No case-sensitivty

.MultiLine = True ‘Check all lines

.Pattern = pat ‘pattern

End With

RegExFind = RegEx.Test(str)

End Function

How to use regular expressions in Excel 04

After writing the code, you can use this function as a regular Excel function.

A function that replaces the pattern with a given string

Public Function RegExReplace(str As String, pat As String, replaceStr As String) As String

‘Define the regular expression object

Dim RegEx As New RegExp

‘Set up regular expression properties

With RegEx

.Global = False ‘All occurences are not necessary since a single occurence is enough

.IgnoreCase = True ‘No case-sensitivty

.MultiLine = True ‘Check all lines

.Pattern = pat ‘pattern

End With

RegExReplace = RegEx.Replace(str, replaceStr) ‘Return the modified string with replacement value

End Function

How to use regular expressions in Excel 06

The following sample shows how to replace strings that start with «col», continue with 0 or 1 occurrences of «o» and single «u», and finally ends with an «r» character with «Color» string.

  • Предыстория
  • Онлайн-“перемножатели” и их недостатки
  • Перемножение списков слов в Excel
  • Примеры составления комбинаций
    • Перемножить слова через единый разделитель
    • Перемножить слова через собственные разделители
  • Смотрите также

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

Предыстория

Периодически возникает потребность произвести операцию комбинирования различных слов и фраз друг с другом.

Сфер применения несколько:

  • PPC-специалисты перемножают списки, чтобы составить всевозможные ключевые слова для Яндекс.Директа или Google Ads
  • Вебмастера генерируют искусственные тексты для однотипных страниц, используя инструменты как составитель предложений.
  • А кто-то использует перемножение списков для генерации бредовых фраз для дурашливых сайтов.

Онлайн-“перемножатели” и их недостатки

Среди специалистов популярны онлайн-генераторы фраз. Их задача — «перемножать» списки заданных слов друг на друга, сохраняя последовательность слов. Пользовался ими и я.

Однако у онлайн-инструментов есть свои минусы:

  • Для них нужен интернет — а он все еще не всегда и везде доступен. А кому-то, наоборот, от него хочется сбежать :)
  • Зачастую количество столбцов для ввода ограничено и нельзя добавить самостоятельно столбец для ввода
  • Не всегда доступна возможность использовать собственный разделитель
  • Вывод финален и его нельзя изменить.
  • Если вы допустили ошибку, зачастую все списки придется вводить заново, т.к. они не сохраняются

Поскольку не хотелось становиться заложником проблем, связанных с онлайн-перемножалками слов, я решил сделать собственный генератор словосочетаний. Он доступен бесплатно как часть моей надстройки для работы с семантическим ядром — !SEMTools для Excel.

Группа инструментов по объединению данных в !SEMTools для Excel
Инструмент находится в меню “Комбинации” -> Значения ячеек

Алгоритмически процедура довольно проста – нужно просто составить все комбинации сочетаний всех значений в столбцах.

Вы не ограничены количеством столбцов для комбинации и выбором разделителей. Единственная ваша задача – чтобы количество комбинаций не превысило максимум, который можно вывести на лист – 1048576 строк.

Для корректной работы макроса (без неожиданных результатов) есть определенные легко выполнимые требования:

  • Данные нужно вводить всегда с первой строки (A1, B1, C1)
  • В столбцах не должно быть полностью пустых ячеек – инструмент остановится на последней непустой ячейке в столбце
  • Если среди столбцов будут пустые, макрос возьмет на вход данные до первого пустого столбца

Примеры составления комбинаций

Перемножить слова через единый разделитель

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

Генерируем комбинации для объединения через единый разделитель

Перемножить слова через собственные разделители

Чтобы использовать собственные разные разделители между словами, нужно их просто вставить в ячейку между основными комбинируемыми сущностями. Префикс и суффикс также можно вставлять – в первый и последний столбец соответственно.

Вы наверняка заметили, что после комбинирования значения остаются в разных столбцах. Это легко поправляется инструментом «объединить диапазон по горизонтали». Смотрите пример:

Смотрите также

  • Как составить словарь и посчитать количество уникальных значений.
  • Парсинг поисковых подсказок Яндекс.
  • Парсинг поисковых подсказок Google.
  • Ngram анализ в Excel.

MCH, считает не совсем корректно, вернее, считает то нормально, но только для __идеальных__ входных данных, как в первоначальном примере.
К сожалению, я не учел некоторые детали в первоначальном ТЗ.

Попробовал поковырять скрипт — либо ошибки, либо неверная выдача. Своих знаний никак пока не хватает.

Ошибки отработки скрипта:
1. входные данные должны быть разделены по отдельным колонкам, как в моем примере, (а не как вы предложили, в одной)— т.к. в качестве входных данных также выступают и фразы. Поэтому, если я объединяю свои входные данные в одну колонку — то сейчас скрипт не корректно отработает, т.к. сейчас в вашем варианте решения разделителем выступает пробел.

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

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

Уточненное ТЗ
Входные данные
1. На входе может быть 2-10 колонок (или n колонок для общего случая)
2. В каждой колонке содержится текстовая фраза
3. Каждая фраза состоит из 0-10 слов (или m слов для общего случая), во фразе могут быть цифры 0-9 и числа, знаки препинания .,!?, скобки (), кавычки «», дефисы -, слеш прямой и обратный /, двоеточие :, точка с запятой ;, и т.д. Словом, любые знаки препинания и пунктуации (любые символы с клавиатуры)
4. Колонка может содержать пустые ячейки
5. Число строк с фразами в каждой колонке различно

Выходные данные
1. Одна колонка — фразы, вторая колонка — длина строки.
2. Каждая фраза комбинируется с каждой другой фразой, каждая фраза должна побывать на 1, 2, 3, …, n месте.
3. На орфографическое и грамматическое несоответствие слов между собой не обращаем внимания. На итоговый порядок знаков препинания — тоже.
4. Итоговый список отсортирован по убыванию длины строки.

Если решение можно формулой — лучше формулой, что бы я смог разобраться. Или скрипт=)

На Планете прикрепил новый пример.
Сори, что пишу и сюда и туда.

Понравилась статья? Поделить с друзьями:
  • Варианты формул если в excel
  • Вариационный анализ данных в excel
  • Варианты форматирования символов word
  • Вариационные ряды в таблице excel
  • Варианты форматирование ячеек в excel