Язык программирования для генератора текстов


Содержание

Генератор текста на цепях Маркова

Давно пора было написать этот пост, благо цепи Маркова — один из распространенных алгоритмов для построения дорвеев. Они позволяют генерировать текст, если в кратце, который является уникальным в глазах поисковых алгоритмов. Разумеется он не читабелен и чем-то напоминает речь нового мэра Киева…, поэтому полезность использования данного подхода — сомнительна. Но! можно попробовать комбинировать читабельное и не читабельное, например. Давайте ознакомимся с темой по ближе.

Теория

Цепи Маркова — это вероятности получения события на основе предыдущего события.

Да, знаю, туманное определение. Но, положим у нас есть игральная кость, одна грань которой тяжелее, чем остальные. Ясно, что эта грань будет падать вниз — чаще, от чего ее шанс выпадения будет мал, по сравнению с другими гранями. Цепь Маркова, в применении к кости, будет выглядеть как таблица с … например последними 10 бросками кости и их результатами. Глядя на эту таблицу мы можем примерно предсказать, какой результат будет у следующей серии бросков. Именно такое предсказание и есть результатом работы цепи, она с определенным шансом сообщает нам результат события, которое еще не случилось.

В применении к тексту это выглядит следующим образом. Возьмем поговорку:

Свобода не в том, чтоб не сдерживать себя, а в том, чтоб владеть собой.

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

свобода не
не в
сдерживать
в том
том чтоб
чтоб не
владеть
сдерживать себя
себя а
а в
владеть собой

Как мы видим, после слова «не» могут быть или «в» или «сдерживать», а после слова «чтоб» — «не» или «владеть». При большом объеме текста таких слов будет больше, причем для каждого сочетания. Алгоритм Маркова просто берет одно из таких слов и выводит его основываясь на вероятности его выпадения.

Более подробно можно почитать тут, если вы дружите с английским.

Пишем генератор Маркова

Все что требуется — это получить массив-таблицу, приведенную выше. Ну, а далее собрать из нее некий текст.

Чтобы это сделать надо:

  1. Очистить текст от мусора
  2. Разбить его по пробелам в одномерный массив.
  3. В цикле сгенерировать таблицу
  4. В цикле собрать из таблицы текст

Собственно, чистка и составление таблицы выглядят так:

Если посмотреть на результат работы этого кода, то мы увидим следующее:

Осталось все это немного подфильтровать и объединить в цикле.

Делается это, например, так:

Результат будет таким:

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

Код генератора Маркова

Демонстрация

Результат работы данного кода можно посмотреть тут.

В качестве исходника взят труд Ф. Энгельса «Крестьянская война в Германии», отсюда.

Итоговый текст выглядит так:

Тут, как вы видите, учитываются имена Собственные, есть знаки препинания(хоть и не все), да и в целом текст выглядит вполне … прилично. Я не постесняюсь заявить, что мой генератор текста по цепям Маркова — пока лучший из опубликованных в сети.

К стати, это не полноценная цепь Маркова т.к. тут не учитывается вероятность появления того или иного слова. Чтобы она учитывалась, надо убрать из кода эту строчку:

Если это сделать массив лексем будет выглядеть так:

Шанс выпадения дублированного слова выше, чем всех остальных. Это и есть цепь Маркова. Полноценная. Почему я не использую этот подход? Ответ прост: для большей уникальности исходного текста. Но вам, разумеется, никто не запрещает изменить код и использовать именно такую версию генератора ибо читабельность результата немного повышается.

Умеют ли поисковики детектить такой сгенерированный текст? Сложный вопрос. А вот пользователи — умеют, поэтому поведенческие у сайта с таким наполнением будут очень плохие (от чего трафика на нем не будет вообще). Я думаю, можно попробовать комбинировать читабельный копипаст и цепи Маркова, но лично экспериментировать с этим не хочу. Но вы — можете попробовать.

Доргенам — дорогу, хехе!

Исходники

Ну и, раз уж на то пошло, выложу исходники сюда и на гитхаб.

Умный генератор текстов

10.10.2020, 08:28

Генератор случайных текстов
Здравствуйте! Помогите пожалуйста выполнить лабу. Надо создать в C++ генератор случайных чисел, а.

Умный фильтр
Доброго времени суток! Необходимо вывести/настроить умный фильтр. Данный фильтр выведен/настроен.

Умный вирусняк
Здравствуйте!! Появилась такая проблемка. До недавнего времени спам на предприятие не доходил.

Умный указатель
Не могу понять тему с перегрузкой оператора селектор и найти понятное объяснение этой темы. А так.

Умный счетчик
Всем привет. Как сделать умный счетчик. Кто знает логику просто подскажите, как сделать , коды не.

31.10.2020, 12:23 [ТС] 81 31.10.2020, 14:19 82 31.10.2020, 14:21 [ТС] 83 01.11.2020, 11:24 84
01.11.2020, 11:24
01.11.2020, 20:32 85

Это бред (можно сказать «сновидение»), усреднённый из набора исходных сценариев, как сказал xeonz выше, и вызванный каким-то определённым раздражителем (сигналом, командой).

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

Можно, но у нейросетей есть недостатки:
— чтобы нейросеть научилась писать романы, через неё нужно прогнать миллион разных романов;
— т.к. обучение нейросети — процесс сложный, а для внятного сочинительства нужна большая нейросеть, на это может уйти очень много времени на обычном ПК (от дней до сотен лет), именно поэтому изобретают различные устройства (ускорители по типу графических и целые «нейрокомпьютеры»), обрабатывающие нейросети быстрее обычных процессоров;
— то, чему в итоге обучится нейросеть, контролировать напрямую невозможно (из-за объёма информации и объёма нейросети), так что неизвестно, что в итоге будет выдавать нейросеть — известно лишь, что это будет похоже на те обучающие блоки информации, на которых её обучали.

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

Простейший генератор креативного текста

Наста­ло вре­мя кру­тых про­ек­тов!

Пред­ставь­те, что вы запус­ка­е­те рас­сыл­ку в круп­ной ком­па­нии, полу­чи­ли уже за это мно­го денег и вам хочет­ся как-то её раз­но­об­ра­зить. И вы реша­е­те сде­лать так, что­бы чело­ве­ку в ответ при­хо­ди­ло письмо-благодарность. Но не одно пись­мо на всех, а несколь­ко раз­ных, чем боль­ше — тем луч­ше.

Мож­но их все напи­сать вруч­ную и потра­тить на это несколь­ко дней. А мож­но напи­сать код, кото­рый сам напи­шет все эти пись­ма. Мы все­гда выби­ра­ем вто­рой путь, даже если это не нуж­но, поэто­му сего­дня мы запро­грам­ми­ру­ем гене­ра­тор тек­ста на JavaScript.

Сра­зу ого­во­рим­ся: вам может пока­зать­ся, что этот гене­ра­тор пло­хо рабо­та­ет и выда­ёт дурац­кие тек­сты. Всё дело в том, что в этом алго­рит­ме важ­но преду­смот­реть все вари­ан­ты состав­ле­ния струк­ту­ры тек­ста и самих пред­ло­же­ний, а потом про­ве­рить, как это всё согла­со­вы­ва­ет­ся меж­ду собой. Чем длин­нее и «живее» нужен текст, тем боль­ше вари­ан­тов под­ста­нов­ки слов нуж­но преду­смот­реть.

Алго­ритм рабо­ты гене­ра­то­ра тек­ста будет такой:

  1. Гото­вим HTML-страницу, где это всё будет рабо­тать и запус­кать­ся.
  2. Зада­ём струк­ту­ру тек­ста на уровне абза­цев: при­вет­ствие, само пись­мо, заклю­че­ние.
  3. Пишем шаб­ло­ны для каж­до­го из этих эле­мен­тов.
  4. Слу­чай­ным обра­зом выби­ра­ем, каким тоном будем общать­ся — офи­ци­аль­ным или нет.
  5. Соби­ра­ем всё пись­мо в одно целое.
  6. Заме­ня­ем шаб­лон­ные сло­ва на нуж­ные фра­зы и сло­во­со­че­та­ния.
  7. Пока­зы­ва­ем резуль­тат.

Делаем HTML-страницу

Берём за осно­ву стан­дарт­ный шаб­лон и добав­ля­ем в него:

  • jQuery, что­бы обра­щать­ся к эле­мен­там стра­ни­цы по име­ни;
  • файл скрип­та mail.js, в кото­ром будет про­ис­хо­дить вся магия JS-кода;
  • сти­ли для эле­мен­тов стра­ни­цы, что­бы она выгля­де­ла опрят­но;
  • блок, куда будем выво­дить гото­вое пись­мо;
  • кноп­ку, кото­рая по нажа­тию будет гене­ри­ро­вать новый текст.

Всё это мы уже уме­ем делать, поэто­му про­сто соби­ра­ем код:

Готовим структуру письма и шаблоны для текста

Теперь нам пона­до­бит­ся отдель­ный файл для скрип­та, кото­рый и будет отве­чать за гене­ра­цию писем — mail.js. Созда­ём его в той же пап­ке, что и HTML-документ, и начи­на­ем про­грам­ми­ро­вать.

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

Для это­го мы будем исполь­зо­вать шаб­лон­ные сло­ва, у кото­рых с обе­их сто­рон сто­ят зна­ки дол­ла­ра, напри­мер, $somebody$ . Эти шаб­лон­ные сло­ва будут озна­чать для наше­го алго­рит­ма, что на их месте появит­ся какое-то кон­крет­ное сло­во или целое пред­ло­же­ние. Это мы сами реши­ли, что шаб­ло­ны будут рабо­тать со зна­ка­ми дол­ла­ра — мож­но было выбрать и дру­гие зна­ки.

При­мер: зада­дим по шаб­ло­ну пред­ло­же­ние « Я $love$ $you$ ». Что­бы полу­чи­лась осмыс­лен­ная фра­за, мы долж­ны задать зна­че­ния для обо­их шаб­лон­ных слов. Сде­ла­ем это так:

  • пусть $love$ при­ни­ма­ет зна­че­ния «тебя», «вас», «нас», «их», «всех»;
  • пусть $you$ при­ни­ма­ет зна­че­ния «люб­лю», «нена­ви­жу», «не люб­лю», «рад видеть».

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

  • Я их люб­лю.
  • Я тебя нена­ви­жу.
  • Я вас не люб­лю.
  • Я всех люб­лю.
  • Я нас рад видеть.

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

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

Начало

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

Инте­рес­ный момент — внут­ри мас­си­вов a_text и b_text мы исполь­зо­ва­ли шаб­лон­ное сло­во $somebody$ . Алго­ритм сна­ча­ла под­ста­вит пред­ло­же­ние вме­сте с этим шаб­лон­ным сло­вом, а вто­рым про­хо­дом — заме­нит его на кон­крет­ное зна­че­ние.

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


Теперь мож­но собрать пись­мо в одно целое. Для это­го берём нача­ло, сере­ди­ну и кон­цов­ку, добав­ля­ем HTML-теги и соеди­ня­ем всё в одну стро­ку. Не сто­ит опа­сать­ся того, что всё будет выгля­деть некра­си­во — для это­го мы как раз и добав­ля­ем теги, что­бы они раз­ме­ти­ли наш текст пра­виль­но и кра­си­во.

Мы гово­ри­ли, что сде­ла­ем так, что­бы алго­ритм сам выби­рал, в каком сти­ле сде­лать пись­мо. За это отве­ча­ет пере­мен­ная mood: если она рав­на 0, то стиль будет офи­ци­аль­ным, а если она рав­на 1 — нефор­маль­ным. Что­бы каж­дый раз это чис­ло опре­де­ля­лось слу­чай­ным обра­зом, доба­вим функ­цию, кото­рая воз­вра­ща­ет слу­чай­ное чис­ло в задан­ном диа­па­зоне.

Что­бы было понят­но, что будет про­ис­хо­дить даль­ше в коде, загля­нем немно­го впе­рёд. Алго­ритм будет дей­ство­вать так: возь­мёт струк­ту­ру пись­ма и раз за разом будет нахо­дить все шаб­лон­ные сло­ва со зна­ком дол­ла­ра, нахо­дить нуж­ный мас­сив, отку­да они берут­ся, и под­став­лять их. Так алго­ритм будет рабо­тать до тех пор, пока не закон­чат­ся все шаб­лон­ные сло­ва. Вот как, напри­мер, может выгля­деть наше пись­мо с тега­ми на каж­дом про­хо­де алго­рит­ма.

$a_intro$

Здравствуйте.

Перед вами — пер­вое пись­мо в рас­сыл­ке. Наш $somebody$ рад тому, что вы не про­шли мимо под­пис­ки, и при­гла­ша­ет вас на нашу выстав­ку, адрес — во вложении.

Спасибо, что под­пи­са­лись на нашу рассылку!

Здравствуйте.

Перед вами — пер­вое пись­мо в рас­сыл­ке. Наш дирек­тор рад тому, что вы не про­шли мимо под­пис­ки, и при­гла­ша­ет вас на нашу выстав­ку, адрес — во вложении.

Спасибо, что под­пи­са­лись на нашу рассылку!

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

Меня­ем шаб­лон­ные сло­ва на текст

Здесь прин­цип рабо­ты такой:

  • нахо­дим все сло­ва, где есть знач­ки дол­ла­ра;
  • уби­ра­ем их и полу­ча­ем назва­ние мас­си­ва в объ­ек­те, где хра­нят­ся зна­че­ния для это­го шаб­лон­но­го сло­ва;
  • идём в этот мас­сив и слу­чай­но выби­ра­ем отту­да зна­че­ние;
  • под­став­ля­ем это зна­че­ние вме­сто шаб­лон­но­го сло­ва;
  • дела­ем так до тех пор, пока не закон­чат­ся все шаб­лон­ные сло­ва.

Привязываем скрипт к кнопке и выводим результат

Мы уже про­пи­са­ли в HTML-документе, что по кли­ку будет вызы­вать­ся функ­ция get_text() . Давай­те это запро­грам­ми­ру­ем так, что­бы текст пись­ма сра­зу после сбор­ки появ­лял­ся на экране. Что­бы это сде­лать, исполь­зу­ем jQuery, най­дём блок для выво­да тек­ста text_here и отпра­вим наш текст с HTML-тегами в этот блок.

Бра­у­зер сам рас­по­зна­ет все теги и отфор­ма­ти­ру­ет пись­мо так, как нуж­но нам. Если вы хоти­те дру­гое фор­ма­ти­ро­ва­ние — поме­няй­те теги или про­пи­ши­те в них нуж­ные сти­ли.

Фриланс проекты › Создание генератора текста на основе цепей маркова Создание генератора текста на основе цепей маркова

Нужна программа, генерирующая английский текст с помощью цепей Маркова.

— генерация текста осуществляется по принципу цепи Маркова

— программа должна работать с текстами на английском языке

— платформа win 7,8,10

— интерфейс программы: видела реализацию где есть всего одно окно в котором выбирается первоначальный документ с текстом(.docx) и задается место сохранения генерированного текста(.docx). Также, были варианты где текст вставлялся в поле программы, сверху или сбоку было меню с кнопками и текст генерировался или в отдельном окне, или в том же поле, куда вводился изначальный текст (как максимально примитивная версия ChimpRewriter). Если есть альтернативные варианты — всегда приветствуются — хотела бы услышать.

— как бы банально не звучало, но чем красивее интерфейс, тем лучше — это то, на чем обычно комиссия именно у меня в универе акцентирует внимание. также, интерфейс должен быть на украинском (переведу что надо если что)

— возможность изменять настройки генерации

— предполагается, что в программе не должно быть ограничения на максимальный объем обрабатываемого текста.

Не принципиально на каком языке программирования будет реализовано. Вижу что много инфы для реализации на python, на с# тоже что-то есть. В любом случае, все это сможем обсудить

На выходе нужен будет exeшник и файл с кодом.

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

Хотелось бы быть на связи с исполнителем, чтобы была возможность в случае чего обмениваться вопросами.

Генератор текстов отзывов

Разработка алгоритма автоматического создания отзывов на русском языке с использованием лексико-синтаксических шаблонов. Процесс создания текста при помощи цепей Маркова. Принцип работы Томита-парсера. Применение автоматических генераторов текстов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.09.2020
Размер файла 150,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Автоматическое создание текстов — одна из распространённых задач обработки естественного языка. Генераторы текстов, как правило, применяются в тех случаях, когда к качеству текста не предъявляется жёстких требований, а его написание вручную занимает много времени или является неинтересной задачей — например, составление текстовых сводок данных или написание текстов для поисковой оптимизации веб-страниц.

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

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

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

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

В качестве материала для генератора текстов выбраны отзывы на утюги, доступные на сайтах Яндекс.Маркет и irecommend.ru. Такой выбор был сделан по нескольким причинам: во-первых, относительная простота лексической и синтактической структуры текста отзыва делает удобным применение метода шаблонов, который требуется исследовать. Во-вторых, полученная база сгенерированных отзывов может иметь практическое применение как в поисковой оптимизации, так и в задачах из области opinion mining — таких, как автоматическое выявление поддельных отзывов — что представляется интересным для дальнейшей работы.

1. Обзорно-постановочная часть

1.1 Обзор работ по теме исследования

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

Наиболее распространённым подходом к автоматическому созданию текстов, не зависящим от языка, являются цепи Маркова. Алгоритм, основанный на их применении, представлен в работе Sam Zhang [1]. Работа, проведённая автором, включает реализацию генератора англоязычных текстов на языке программирования Python. В качестве обучающей выборки для модели использованы различные коллекции текстов на английском языке, включая корпус WordNet. Чтобы повысить точность алгоритма, автор использует модель семантического сходства в дополнение к вероятностному подходу.

Ещё одним популярным алгоритмом машинного обучения, применяемым для создания текстов на естественном языке, является использование условных случайных полей. Пример использования данного подхода в разработке генератора англоязычных текстов представлен в работе Wei Lu et al. [3]. Согласно авторам, применение условных случайных полей позволяет эффективным образом генерировать предложения на естественном языке, опираясь на их семантические представления. Предложенный в статье алгоритм состоит из двух этапов. Первый этап включает себя семантический анализ, позволяющий каждому предложению автоматически сопоставить его смысловое представление. На втором этапе происходит само создание текста на основе полученных семантических представлений.

Пример подхода к автоматическому созданию текстов на основе лексико-синтаксических шаблонов описан в работе Kees van Demeter et al. [1] Авторы приводят теоретические основы данного метода и сравнивают его с другими подходами, не основанными на лингвистических знаниях. В статье утверждается, что и основанные на шаблонах, и стандартные генераторы текстов обладают свойством полноты по Тьюрингу. Это означает, что все рекурсивно перечислимые языки могут быть порождены при помощи таких генераторов.

Понятие лексико-синтаксического шаблона в применении к текстам на русском языке представлено в работе Е.И. Большаковой и др. [2]. Авторы приводят определение лексико-синтаксического шаблона как структурного образца языковой конструкции, отображающего её свойства, и представляют свою разработку — язык LSPL, позволяющий описывать текст при помощи шаблонов.

Один из примеров применения автоматических генераторов текстов описан в работе S.G. Sripada et al. [5]. Проект, представленный авторами, относится к системам преобразования данных в текст. Такие системы — один из основных источников спроса на генераторы текстов. Программный комплекс, описанный в статье, принимает в качестве входных параметров автоматически предсказанные данные о погоде и на их основе составляет тексты прогнозов. По словам авторов, автоматическое создание прогнозов погоды — второе по популярности приложение алгоритмов создания текстов на естественном языке.

1.2 Цели и задачи работы

Цель работы — реализовать генератор отзывов, основанный на лексико-синтаксических шаблонах, и сравнить его со стандартным генератором на основе цепеи? Маркова.

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

1. Собрать корпус отзывов с сайтов irecommend.ru и Яндекс.Маркет

2. Разработать шаблоны для основного алгоритма

3. Реализовать генератор отзывов, основанный на шаблонах

4. Реализовать генератор отзывов с применением цепей Маркова и обучить его на собранных данных

5. Сравнить результаты работы двух генераторов

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

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

1.3 Новизна и практическая ценность работы

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

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

2. Теоретическая часть

2.1 Цепи Маркова

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

Цепи Маркова могут использоваться в качестве вероятностной модели естественного языка. [1] Состояниями конечного автомата могут быть или отдельные слова, или N-граммы — последовательности из N слов, идущих подряд в тексте. Применение данной модели к задачам автоматического создания текстов относится к методам машинного обучения.

Процесс создания текста при помощи цепей Маркова состоит из двух основных этапов. На первом из них модель обучается при помощи корпуса — коллекции текстов. Процесс обучения включает в себя вычисление вероятностей переходов: для этого вычисляется частота встречаемости последовательных пар (или (N+1)-грамм) слов в текстах корпуса. На втором этапе создания текста выбирается исходное состояние построенного конечного автомата и затем при помощи генератора псевдослучайных чисел совершаются переходы к следующим состояниям, каждое из которых добавляет следующую N-грамму в генерируемый текст. Процесс перехода повторяется, пока не будет достигнута желаемая длина текста. Точность алгоритма зависит от выбранного значения N и от количества текстов в корпусе.

Для наглядности приведём пример схемы цепи Маркова, построенной по входному тексту. Удачный пример представлен в статье [7], где для построения цепи использовался фрагмент текста песни группы The Smiths «How Soon Is Now»:

of a shyness that is criminally vulgar

I am the son and heir

of nothing in particular».

Рис. 1. Пример цепи Маркова [7]

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

2.2 Лексико-синтаксические шаблоны

Лексико-синтаксические шаблоны позволяют задавать языковые конструкции. Шаблон состоит из логической структуры и семантического описания. Использование лексико-синтаксических шаблонов в задаче создания текстов на естественном языке относится к основанным на правилах методам и требует лингвистических знаний. [4, 2] В данной работе лексико-синтаксическим шаблоном является схема предложения, состоящая из типов слов. Пример шаблона, который используется в алгоритме, представленном в данной работе: схема вида «property person verb», которой соответствует фрагмент отзыва «утюг мне понравился».

2.3 Предложенный алгоритм

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

0. Вручную создаются лексико-синтаксические шаблоны предложений

1. Составляется список характеристик модели


2. Из реальных отзывов извлекаются глаголы и прилагательные при характеристиках

3. Формируется текст: слова подбираются в соответствии с шаблонами и с использованием данных, полученных на шагах 1-2

4. Полученный текст обрабатывается таким образом, что все соседние словоформы становятся грамматически согласованными друг с другом

2.4 Принцип работы Томита-парсера

В основе Томита-парсера лежит расширенный алгоритм LR-разбора (GLR — Generalized Left-to-right Rightmost parsing), предложенный Masaru Tomita в 1984 году [6] и позволяющий анализировать входную последовательность в условиях неоднозначности трактовок, часто возникающей при обработке текстов на естественном языке.

Чтобы применить Томита-парсер в своём проекте, пользователь задаёт конфигурационный файл, словари ключевых слов, корневой словарь и формальные грамматики, на основе которых будет проводиться разбор входного текста. Также у парсера есть функция извлечения фактов, но она не применяется в данной работе. [8]

При запуске Томита-парсера на первом этапе происходит распознавание ключевых слов (в данном проекте ими являются характеристики модели утюга: слова «утюг», «подошва», «парогенератор» и др.). Затем из полученных слов выделяются те, которые встречаются в описанных пользователем грамматиках, и после этого происходит GLR-разбор цепочки слов, за которым следует интерпретация полученного дерева разбора.

2.5 Схемы лексико-синтаксических шаблонов

Систему шаблонов, используемую в алгоритме, можно представить в виде ориентированного графа. Генерируемое предложение начинается в служебной вершине с меткой root. Далее на каждом шаге случайным образом с равной вероятностью выбирается одна из следующих (смежных с текущей) вершин, и в соответствии с её меткой подбирается слово из заданного до запуска алгоритма словаря. Генератор заканчивает строить предложение, когда оказывается в вершине, у которой нет исходящих рёбер. Ниже приведён граф лексико-синтаксических шаблонов, которые использовались в работе.

Рис. 2. Схема лексико-синтаксических шаблонов

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

Примеры отзывов, полученных при обходе графа по различным путям:

1: Утюг мне понравился.?

2: Я купила утюг. Маму разочаровал парогенератор.

3: Вес небольшой.?

4: Удобная ручка.

3+4: Утюг качественный, металлическая подошва.

2.6 Ограничения алгоритма

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

Возможные методы решения

Ограниченный набор схем предложений в шаблонах

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

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

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

Нет согласования между разными предложениями

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

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

3. Практическая часть

3.1 Программная реализация

Курсовой проект написан на языке Python и состоит из нескольких частей: в него входят скрипты для автоматического скачивания отзывов, реализация цепей Маркова, построение графа лексических шаблонов и его применение к созданию текстов. Для скачивания отзывов использованы библиотеки grab и BeautifulSoup, для согласования форм слов при использовании лексических шаблонов — pymorphy2.

Этапы работы программы, генерирующей отзывы на основе шаблонов:

1. На основе заданных вручную правил строится граф шаблонов. Он представлен в виде структуры dictionary («словарь»), где ключи соответствуют вершинам, а значения — спискам рёбер, исходящих из каждой вершины. Каждой вершине присваивается идентификатор, состоящий из типа слова, соответствующего вершине, и номера пути обхода графа, на котором она находится. Пример: verb_4 — глагол на четвёртом пути.

2. При помощи библиотеки BeautifulSoup разбирается файл PrettyOutput.html, полученный после запуска Томита-парсера и содержащий словосочетания, извлечённые им из входных данных

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

4. Генерируется текст. Чтобы получить каждое предложение, происходит следующая процедура:

4.1. Начинается обход графа шаблонов в стартовой вершине с пометкой root. Создаётся пустой список, в который будут записываться слова

4.2. Случайным образом выбирается следующая вершина. Если ей соответствует пометка end, то обход завершен

4.3. Из словаря случайным образом выбирается слово, соответствующее пометке текущей вершины, и помещается в список

4.4. Повторяется шаг 4.2

4.5. Список со словами итеративно просматривается, и для соседних пары слов запускается процедура грамматического согласования

4.6 Список преобразуется в строку и подаётся на выход.

Шаги 1-3 необходимы только при первом запуске генератора или при изменении файла PrettyOutput.html. Граф отзывов и словарь можно сохранить (например, при помощи встроенной библиотеки pickle, позволяющей записывать в файлы бинарные структуры данных) и использовать, запуская алгоритм с шага 4.

3.2 Данные, извлеченные из реальных отзывов

Чтобы построить словарь для генератора текстов, при помощи Томита-парсера из собранного корпуса отзывов были извлечены словосочетания, состоящие из характеристик утюга (перечисленных в списке ключевых слов) вместе с прилагательными или глаголами. Приведём примеры таких словосочетаний, чтобы дать более полное представление о работе генератора.

Язык программирования для генератора текстов

Генерирует текст на основе цепи Маркова, созданного с помощью генератора цепи Маркова.

Принимает отрывок текста через стандартный поток ввода.

Выводит результат в стандартный поток вывода.

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

Количество слов в «some text» должно быть равно порядку цепи маркова + 1.

  • markov_chain — файл с цепью Маркова в формате JSON.
  • k — количество генерируемых слов, то есть, добавляемых к «some text».
  • 0, если цепь Маркова успешно сгенерирова.
  • 1, в любом другом случае.

Генератор цепи Маркова

Создает цепь Маркова на основе текстовых файлов. Кодировка текста должна быть UTF-8. Список ссылок на текстовые файлы должен поступать через стандартный поток ввода. Выводит цепь в формате JSON в стандартный поток вывода.

Генерация текстов. Онлайн-сервисы и программы

Уникальность текста – наиважнейшее требование, предъявляемое поисковыми системами к любому сайту. И хотя некоторые успешные веб-ресурсы состоят из копипаста (скопированного материала), они, скорее, исключение, а не правило.

С падением цен на услуги хостинг-провайдеров, с появлением бесплатных блоговых платформ (BlogSpot, LiveJournal, Blogger и т.д.) у вебмастеров возникла идея: «почему бы продвигать не один сайт, а сразу несколько?». Например, можно создать один основной веб-ресурс и группу других, поддерживающих его (сателлитов). С них можно было бы ссылаться на главный веб-сайт, тем самым улучшая его позиции в поисковых системах. Но такая «сетка сателлитов» также нуждается в уникальном контенте. Где же взять большое количество одинаковых и в то же время уникальных статей? Проблему решает генерация текста.

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

1. Что такое размножение статей

Генерация текстов – это размножение одной статьи на несколько уникальных экземпляров, как правило, схожих по тематике.

Качество статей, полученных в результате размножения, будет во многом зависеть от способа генерации, используемой программы и опыта человека, сопровождающего процесс. Размножение базируется на замене слов основной статьи на синонимы. Чем больше синонимов, тем более уникальными получатся тексты на выходе. А чем качественнее они подобраны, тем более «читабельным» окажется результат.

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

1.1 Для чего нужна генерация текстов

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

Генерация – один из способов получить уникальный и бесплатный (в большинстве случаев) контент для сайта. Ведь далеко не каждый вебмастер готов платить деньги за наполнение его интернет-проектов. Если последних очень много, то покупка контента выльется в круглую сумму.

С другой стороны, если вы ведете группу сайтов одной тематики, то написать для них одну и ту же статью крайне сложно. Можно, конечно, выбрать какую-то готовую статью и отрерайтить ее (что такое рерайтинг) несколько раз, но после 5-10 экземпляров рерайта у человека заканчивается фантазия, и работа тормозится. А если нужна сотня одинаковых статей для 100 сайтов? В этом случае генерация оказывается не только дешевым, но и очень удобным способом раздобыть контент.

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

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

1.2 Синтаксис генераторов

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

  • < >– открывающаяся и закрывающаяся фигурная скобка, используются для создания блоков синонимов.
  • I – вертикальная черта (а не прописная буква “i” или строчная “L”, которые внешне выглядят также), этот символ используется для разделения вариантов синонимов между собой.

Конструкция получается следующей:

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


Пример небольшого шаблона может быть таким:

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

  1. Размножение качественных уникальных статей с применением программы.
  2. Генерация качественных текстов для сайта путем синонимайзера.
  3. Генерация качественных статей с применением сервиса.

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

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

В каждой конкретной программе могут использоваться и другие, «свои» операторы, но эти два – стандартные для всех сервисов.

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

2. Онлайн-сервисы для генерации текста

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

2.1 Сервис SeoGenerator.ru

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

Заготовленный шаблон необходимо размещать в специальной форме, как показано на скрине ниже.

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

Примечательно то, что данный ресурс содержит еще и синонимайзер. Чтобы воспользоваться им, необходимо перейти по вкладке «СИНОНИМАЙЗЕР», расположенной в верхней части экрана. Затем нужный текст вставляется в специальную форму, а после нажатия на кнопку «Обработать» вы увидите результат. Теперь при наведении на выделенные слова вы сможете выбрать подходящие синонимы для них.

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

2.2 Сервис LinksFarm.ru

Менее удачный пример бесплатного онлайн-сервиса для размножения статей – это сайт LinksFarm.ru. В отличие от предыдущего примера здесь есть возможность предпросмотра результатов. Это имеет смысл, т.к. размножение текста в данном сервисе занимает гораздо больше времени.

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

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

3. Программы для размножения статей

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

3.1 Generating the Web

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

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

Перед запуском генерации лучше сначала убедиться, что синтаксис шаблона корректен. После того как это будет сделано, смело нажимайте на кнопку «Генерировать!».

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

Можно изменять количество вариантов тестов, также можно корректировать некоторые настройки. Делается это в нижней части окна программы.

3.2 Программа Seo Anchor Generator

Удобна и данная программа, скачать которую можно по этой ссылке. Принцип работы, да и интерфейс практически ничем не отличается от предыдущего примера.

Вставив шаблон в форму, запустите программу, нажав на кнопку «Генерировать», и затем получите результаты. Они отсортированы, останется лишь скопировать их и вставить туда, куда вам нужно.

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

Meanotek

Искусственный интеллект уже помогает нашим клиентам работать эффективнее

Компьютерное зрение

Медицинские системы

Чат-боты и диалоговые агенты

Комплексная автоматизация

Извлечение информации из текста

Анализ переписки

Распознавание и синтез речи

Машинный перевод

Генерация текстов

Хотите использовать Искусственный интеллект, но не знаете как?

Расскажите нам о своем бизнесе и мы вам поможем это сделать!

Проекты

Успешно выполненные проекты из десятков стран по всему миру.

  • Диалоговые интерфейсы
  • Наука, образование и медицина
  • Интернет магазины и маркетинг
  • Новостная аналитика

Персональный помощник Минди

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

Бот заказа такси

Бот задает вопросы о поездки, сохраняет ответы и передает данные серверу, который назначает машину. Читать дальше >

Поиск и рекомендации оптимального лечения для пациентов

Разработана система рекомендации лечений онкологических заболеваний, с учетом генетического профиля опухоли. Читать дальше >

Классификация тканей по гистологическим картинкам

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

Классификация рентгеновских снимков

Система классификации патологий на рентгеновских снимках, с использованием общедоступного набора данных медицинских изображений. Читать дальше >

Диаграммы Рида-келлога

Генератор рекламных объявлений

Поскольку недавно к нам обратились заказчики с задачей создать описаний для товаров на сайте, мы решили подробнее изучить этот вопрос. Читать дальше >

Генератор текстов для сайтов

В качестве задачи, рассмотрим вопрос автоматической генерации описаний товара на основании отзывов. Т.е. имея несколько отзывов пользователей товара. Читать дальше >

Система выделения информации для банка АО «Банк ЦентрКредит» (Казахстан)

Была разработана система выделения определенной информации из большого массива данных на естественном языке. Читать дальше >

В числе наших клиентов:

Технологии и разработки

Уникальный набор модулей на основе глубоких нейронных сетей

    Выделение обьектов и фактов из текстов на примерах Определение тональности не только целых текстов, но и тональности по отношению к определенным объектам Поддержка принятия решений Не требует ручного выделения признаков Генерация парафраз и новых уникальных текстов на естественном языке Обработка различных языков
  • Ведущий разработчик нейросетевых анализоторов — Денис Станиславович Тарасов
  • Тема: Нейросетевая модель для решения задачи ответа на вопросы пользователя в произвольной предметной области

Публикации

  • Изотова Е.Д. Извлечение фармацевтически значимых аспектных терминов моделью рекуррентной нейронной сети из текстов на естественном языке при малых выборках/Е.Д. Изотова, Д.С. Тарасов//XVIII «Нейроинформатика-2020».- Сб.н.т. — М.: НИЯУ МИФИ.- 2020.- Т. 1 — С.65-74
  • Тарасов Д.С. Нейросетевая модель для решения задачи ответа на вопросы пользователя в произвольной предметной области/Д.С. Тарасов//XVIII «Нейроинформатика-2020».- Сб.н.т. — М.: НИЯУ МИФИ.- 2020.- Т. 3 — С.205-212
  • Tarasov D.S, Izotova E.D. (2020) Deep recurrent neural networks for extracting pharmacological terms from Russian texts» Neuroinformatics (2020) V.2. This paper, produced with collaboration with Institute of Medicine and Biology of Kazan Federal University cons >Показать полностью.
    • D.S. TARASOV, E.D. IZOTOVA. COMMON SENSE KNOWLEDGE IN LARGE SCALE NEURAL CONVERSATIONAL MODELS//Принято к печати, Нейронформатика-2020 (в сборнике Studies in Computational Intelligence, из-ва Springer) In this work we analyze behavior of a number of neural network architectures, trained on Russian conversations corpus, containing 20 million dialog turns. We found that small to medium neural networks do not really learn any noticeable common-sense knowledge, operating pure on the level of syntactic features, while large very deep networks shows do posses some common-sense knowledge.
    • Tarasov D.S. (2020) Preserving personal conversational style and diversity in neural conversational models//Proceedings of International Conference on Artificial Neural Networks — Neuroinformatics (2020) V.2. This paper presents a method to apply specific personal conversation traits to neural dialog models, trained on large heterogeneous dialog corpus (Abstract is avaliable from conference program url — http://neuroinfo.ru/index.php/en/schedule/sections?year=2020#Stend5).
    • Tarasov D.S. (2020) Neural network model for general domain question answering//Proceedings of International Conference on Artificial Neural Networks — Neuroinformatics (2020) V.3. In this work we propose novel neural network model, capable of answering questions without topic restriction by reading natural language documents prov >

      Русский нейросетевой чатбот

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

      Автоматическая генерация уникальных текстов для SEO

      В последние годы уникальный текст стал распространенным инструментом, который SEO-специалисты рекомендуют для продвижения сайтов.

      Автоматическая генерация осмысленных уникальных текстов

      В качестве задачи, рассмотрим вопрос автоматической генерации описаний товара на основании отзывов. Т.е. имея несколько отзывов пользователей товара.

      Система анализа текстов

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

      РыбаТекст

      Онлайн-генератор случайного текста, правильный Lorem Ipsum на русском языке. Незаменимый помощник любого дизайнера, вебмастера и проектировщика.

      Текст-рыба на русском языке

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

      C помощью этого онлайн-генератора рыботекста можно пачками плодить как отдельные предложения, так и целые абзацы отменнейшего рыбы-текста. А для любителей автоматизации даже реализован API фиштекста.

      Генератор текста

      Генератор заголовков

      Русский аналог Lorem Ipsum

      Прародителем текста-рыбы является известный «Lorem Ipsum» – латинский текст, ноги которого растут аж из 45 года до нашей эры. Сервисов по созданию случайного текста на основе Lorem Ipsum великое множество, однако все они имеют один существенный недостаток: их «рыба текст» подходит лишь для англоязычных ресурсов/проектов. Мы же, фактически, предлагаем Lorem Ipsum на русском языке – вы можете использовать полученный здесь контент абсолютно бесплатно и в любых целях, не запрещенных законодательством. Однако в случае, если сгенерированный здесь текст используется в коммерческом или публичном проекте, ссылка на наш сервис обязательна.

      Принцип работы генератора бредотекста

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

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

      Универсальный код речей

      Другое название – «универсальный генератор речей». По легенде, всякие депутаты и руководители в СССР использовали в своих выступлениях заготовленный набор совмещающихся между собой словосочетаний, что позволяло нести псевдоумную ахинею часами. Что-то вроде дорвеев для политсобраний.

      Кстати, «универсальный код речей» насчитывает только 40 таких словосочетаний, тогда как в нашем случае – их уже 192. Из них наш генератор рыбатекста способен составить примерно 5 287 500 уникальных предложений-комбинаций (в оригинале же — только 10 000). Просто вдумайтесь: около миллиарда символов случайного текста.

      Если вам есть, что сказать

      То, что вы видите – не финальная версия РыбаТекста. Мы планируем развивать сервис, и для этого нам нужна обратная связь от вас, ваши советы и пожелания. Если вы заметили неточности, ошибки или у вас есть мысли по улучшению сайта – пишите на dev@fish-text.ru или в комментариях ниже. К слову, некоторые свои планы по развитию сайта и добавлению новых фич мы изложили в разделе TODO, обязательно туда загляните.

      Комментарии

      Оцените сервис — это поможет нам стать лучше

      Программы для размножения статей и генерации текстов

      На днях активно занялся работой со статьями, как и обещал, думаю проверить на практике данный метод работы, причем это не только чтобы поднять тИЦ статьями, а скорее просто вывести проект в топ. Подопытный в этом эксперименте — сайт про игру готика 4. Собираюсь доказать потенциальным покупателям, что там есть хорошие перспективы, учитывая, что пик популярности игры (точнее запростов) будет начинаться с поздней осени + всю зиму. Поэтому неплохо подготовить фундамент под это дело уже сейчас. Вообще ниша компьютерных игр — очень интересная, там есть позитивные моменты, как-то об этом расскажу. Так вот, вернемся к теме поста — размещать статьи можно как на платных площадках, так и в инете полно бесплатных вариантов — блогохостинги, сервисы, предлагающие создать свой простой сайт и захостить у них, плюс, конечно же, каталоги статей.

      Но для этого нужен исходный материал — собственно статьи. Эффект от одинаковых текстов минимален, хорошо когда каждая из опубликованных заметок более-менее уникальна. Поэтому обязательным пунктом такого продвижение является размножение статей — то есть генерация текстов из 1го уникального пары сотен похожих, но не одинаковых материалов. Для готики я решил не рисковать и заказал данную услугу у одного человека на Серче, который таковым занимается — за 55 статей я заплатил 14 баксов (1,4 wmz за 100 символов в статье). В принципе, тексты получились очень неплохие, я результатом доволен, остается только узнать, как их воспримут ПС:) Кого будут интересовать контакты — пишите в аську.

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

      SEO Anchor Generator

      Во-первых, благодарность автору блога Shakin`у за статью как из одной статьи сделать тысячи, где он рассказал о своем опыте работы с программой под названием SEO Anchor Generator .

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

      • поддержка 3 видов конструкций (переборы: , перестановки: [x1|x2|x3], перестановки с разделителем: [+separator+x1|x2|x3];
      • поддержка вложенного синтаксиса;
      • подсветка синтаксиса, скобок;
      • ограничения на длину строк, количество результатов.
      • исправление ошибок: несколько пробелов, большая буква в слове после точки, добавление пробелов после знаков препинания и т.п.
      • перемешивание результатов;
      • удаление одинаковых строк;
      • сохранение сгенерированных строк в файл, либо копирование в буфер обмена.

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

      Generating The Web

      Чуть позже я нашел на Серче еще одну очень интересную программу от компании, которая разрабатывает сео софт — Generating The Web . Она также распространяется абсолютно бесплатно, но вот возможности у нее побольше, чем у первой.

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

      • перестановка с разными разделителями — [1 | 2 | 3 | 4 ], в итоге получим, например — 2, 3, 1 и 4.
      • использование переменных (#set %VAR% = SomeValue) — переменные идут перед текстом, помогают сделать конструкцию более читабельной.
      • сохранение результатов в один или несколько файлов, при сохранении генерированных статей можно в один файл можно выбрать любой удобный разделитель.
      • Расстановка ссылок в тексте!

      Отдельно следует заметить 2 весьма уникальные возможности.

      Подстановка синонимов с помощью внешних словарей! — в программу встроены 2 словаря, плюс можно подключить пользовательские словари. Причем, если, вы походу текста добавляете синонимы — они сохраняются в так называемой «базе недавно использованных синонимов» и потом используются в новых заданиях.

      Удаление дубликтов методом шинглов — кроме точных совпадений есть вот такой интересный метод, которые позволяет получить максимально качественные уникализированные размноженные статьи. В качестве параметров вы задаете длину (количество слов) шингла и процент схожести текстов. Например, я ставил шингл — 3, схожесть 10%, в результате чего из нескольких миллионов вариантов получил около 50-ти статей, удовлетворяющих требованиям.

      То есть чем меньше длина шингла, тем уникальнее результаты и, конечно, дольше будет производиться обработка. Чем больше процент схожести — тем больше текстов у вас останется после фильтрации. По времени процесс занимает немало, но я делаю ставку на качество статей, поэтому по поводу того, что «долго» особо не переживаю. Алгоритм моей работы таков — разбиваю текст на небольшие абзацы, после чего в каждый из них начинаю добавлять варианты перебора и перестановок. Затем запускаю генерацию текста и берусь за следующий кусок статьи — пока делаю его, результаты по прошлому будут готовы. Затем все это заливаю в несколько файлов — например, у меня получилось 3 файла для 3 абзацев текста. Ну и в конце случайным образом из разных файлов комбинирую финальный вариант.

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

      Кто какие еще программы для размножение статей использует? Или заказываете услуги?

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