- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
"Аот"? Я его использовал, там есть даже готовые модули. Но он не решает проблемы читабельности текстовки. Для дора прокатит, для сата или автоблога - нет. Алгоритм, описанные в 2007 году на армаде (с некоторыми улучшениями, чистый отлавливается элементарно по частотке и еще по парочке признаков) уже давно реализован и вполне успешно используется. Но хочется читабельности для автоблогов. А он этого не дает.
Он самый. Мне с головой хватило модуля лемматизации и морфологического анализа, т.к покрыло потребности (определение граммем и частей речи) полностью. Насчет особой смысловой нагрузки или читаемости, речи конечно не идет в простейшем варианте, но и для дорвеев это не к чему. Главное сохранить грамматическую правильность текста и связь слов в предложения.
кому интересно: aot.ru/technology.html
наработок там очень много и есть что почитать по теме.
В целом, определяем часть речи и набор граммем для слов, а потом думаем, как могут пригодится цепи маркова. это в самой примитивной реализации.
еcть один неплохой велосипед от яндекса - mystem
еcть один неплохой велосипед от яндекса - mystem
Был бы он с сорцами :)
У AOT'а, конечно, тоже не всё идеально. Система скорее монолитная, чем модульная, и с документацией там весьма хреново. Но всё, что может понадобиться, там есть.
Примерный алгоритм генерации, написан наобум и ничем не потвержден, кроме возможности реализации:
Текст состоит из предложений, предложения из слов. А слова могут относиться к разным частям речи, которые, в свою очередь, обладают собственным набором возможных граммем. От этого и будем исходить.
Модуль лемматизации и морфологического анализа распознает 20 частей (http://www.aot.ru/docs/rusmorph.html) и соответствующие наборы граммем для этих частей. Мало вероятно, что для генерации понадобится рассматирать все 20, учитывая то, что некоторые из них могут обладать одинаковыми признаками. Тут каждый решает для себя.
Определяем, каким набором граммем может обладать каждая из частей, и какие из них определяет модуль. После этого, для каждой части подбираем оптимальный набор, таким образом, чтобы слово (часть речи) обладающие этим набором граммем, могло быть заменено другим словом с индентичным набором без разрушения связи слов в предложении.
Например, "он" [местоимение-существительное] будет обладать определенным набором граммем и мы можем заменить его словом "она" [та же часть речи], которое будет обладать тем же набором. Исходя из этого, мы можем пренебречь граммемой рода, но не можем пренебречь падежом, т.к его изменение, с большей долей вероятности, разрушит связь слов в исходном предложении. Также можно пренебречь местоимением-существительным как частью речи, и просто его не рассматривать, т.к оно схоже с простой формой существительного.
В итоге, имеем некую базу для генерации. Можно, в принципе, забить на подбор граммем и использовать полные наборы, в зависимости от того, что собираетесь делать. На омонимию мы также забиваем, так как смысл текста побоку.
Получаем возможность определить часть речи и граммемы для каждого слова в исходном тексте. Это дает возможность производить генерацию множеством способов.
Первый - просто меняем местами слова с одинаковыми признаками в размеченном тексте. Рассматривать подробно, думаю, не стоит.
Второй вариант - это использование цепей Маркова, в качестве цепей рассматривая схожие наборы граммем и части речи. Для наилучшего результата, скорее всего, придется создавать базу для хранения цепей и пополнять её. Для упрощения задачи, можно использовать модуль морфологического поиска, который поддерживает поиск по морфологическим признакам и частям речи. Мне этот модуль не нужен, поэтому не ковырял.
Третий вариант - гибкая генерация по шаблонам. В качестве признака, в шаблонах можно использовать не только части речи, но и граммемы. Для этих целей можно использовать систему морф. поиска или простую базу, как во втором варианте.
Все три варианта очень сырые, для оживления текста стоит учитывать вводные слова, правильнее обрабатывать запятые и союзы, а так же обособленные обороты. Возможно, в этом поможет модуль графематического анализа текста (http://www.aot.ru/docs/graphan.html)
Как-то вот так. Поверхностно, копать глубже в эту тему пока нет времени. Дискасc? (:
У ТС безусловно всё намного интереснее, судя по результатам.
Первый - просто меняем местами слова с одинаковыми признаками в размеченном тексте. Рассматривать подробно, думаю, не стоит.
Неестественность текста будет достаточно легко палиться при частотном анализе слов (или их пар). Для примера возьмем 2 одинаковых по структуре предложения:
Партия напильников отправилась на прилавок магазина.
Стая лебедей улетела на юг Франции.
Если заменить каждое второе слово второго предложения на каждое второе слово первого предложения получим:
Стая напильников улетела на юг магазина.
Разбиваем предлжение в цепь по 2 слова, получаем:
стая напильников;
напильников улетела;
улетела на;
на юг;
юг магазина.
весьма сомнительно что пары слов под номерами 1, 2 и 5, достаточно часто встречаются в естественном тексте. Соответственно достаточно легко палятся.
Тут я так понял речь идет о том, что по алгоритму цепей Маркова составляются шаблоны, в которые затем подставляются слова соответствующие признакам шаблона? Тогда получим такой же бредотекст как и в первом случае.
Кстати, тут еще есть одна проблема, для чего именно этот текст будет использоваться. Как самомтоятельная единица, ала готовый контент для сатов или как база для дальнейшего использования в дорах. Если второе, то тут нужно будет еще правильно вписать ключевые слова в полученный текст, после чего он станет еще более безобразен.
А что если пойти от обратного, не генерировать текст с дальнейшей вставкой или заменой части слов на ключевые, а генерировать текст исходя из ключевых слов?
1) Сделать выборку наиболее частых слов по частям речи и использовать ее в качестве словаря.
2) Подготовить частовстречающиеся в естественном тексте шаблоны предложений.
3) Определить признаки слов в кее и выбрать наиболее оптимальные шаблоны.
4) Подставить в шаблоны наш кей, а затем оставшиеся позиции заменить на слова соответствующие признакам.
Единственное что в таком тексте процент кеев будет зашкаливать, но его можно понизить если использовать промежуточные прдложения без вхождения кеев или использовать синонимы слов в кее. Короче, как-то так :)
Абсолютно читаемый и связный рассказ без использования конструкций, написанных руками, имхо, нельзя создать. Я про конструкции типа "{большая|красная} машина". А это сотни, а может и тысячи человеко-часов под каждую узкую тематику.
А так, в теории, рассказ разбивается на короткие эпизоды и под каждый эпизод создается много таких конструкций-шаблонов, еще увешанных операторами if и else.
Например человек рассказывает о гостинице:
1. путь от аэропорта/вокзала/порта до гостиницы
2. расположение гостиницы относительно близлежащих объектов
3. внешний вид гостиницы
4. вход в гостиницу
5. описание ресепшена
6. разговор с человеком на ресепшене
7. путь до номера
8. вход в номер
и т.д.
За год в одиночку наверное можно такое написать. Только как-то неохота.
Неестественность текста будет достаточно легко палиться при частотном анализе слов (или их пар). Для примера возьмем 2 одинаковых по структуре предложения:
Партия напильников отправилась на прилавок магазина.
Стая лебедей улетела на юг Франции.
Если заменить каждое второе слово второго предложения на каждое второе слово первого предложения получим:
Стая напильников улетела на юг магазина.
Разбиваем предлжение в цепь по 2 слова, получаем:
стая напильников;
напильников улетела;
улетела на;
на юг;
юг магазина.
весьма сомнительно что пары слов под номерами 1, 2 и 5, достаточно часто встречаются в естественном тексте. Соответственно достаточно легко палятся.
Тут я так понял речь идет о том, что по алгоритму цепей Маркова составляются шаблоны, в которые затем подставляются слова соответствующие признакам шаблона? Тогда получим такой же бредотекст как и в первом случае.
Кстати, тут еще есть одна проблема, для чего именно этот текст будет использоваться. Как самомтоятельная единица, ала готовый контент для сатов или как база для дальнейшего использования в дорах. Если второе, то тут нужно будет еще правильно вписать ключевые слова в полученный текст, после чего он станет еще более безобразен.
Как избежать бредотекста, при полной автоматизации, мне трудно представить. ТС этого вроде-бы добился.
Из самых легких вариантов, увелечение длины цепи в маркове до словочетаний, но это только немного снизит неестественность. Да и вся выдача из бредотекста пока.
А что если пойти от обратного, не генерировать текст с дальнейшей вставкой или заменой части слов на ключевые, а генерировать текст исходя из ключевых слов?
1) Сделать выборку наиболее частых слов по частям речи и использовать ее в качестве словаря.
2) Подготовить частовстречающиеся в естественном тексте шаблоны предложений.
3) Определить признаки слов в кее и выбрать наиболее оптимальные шаблоны.
4) Подставить в шаблоны наш кей, а затем оставшиеся позиции заменить на слова соответствующие признакам.
Единственное что в таком тексте процент кеев будет зашкаливать, но его можно понизить если использовать промежуточные прдложения без вхождения кеев или использовать синонимы слов в кее. Короче, как-то так :)
Проблема неестественности текста, я так понимаю, тут тоже не решается?
Словари собрать не проблема, а вот шаблоны. Язык же невероятно богат и гибок, загонять все возможные варианты в шаблоны, это надо постараться, хотя-бы чтобы структура предложений не была однотипной.
Можно конечно просто брать тексты, разбивать на предложения и превращать автоматом в шаблоны с признаками. Но результат от того-же Маркова будет мало чем отличаться, кроме вставки кеев. Которые тоже бывают разные, иногда лучше определить признаки первого [и последнего?] слова в кее и подобрать, после какой части речи [или перед какой] в тексте лучше его вставить.
Абсолютно читаемый и связный рассказ без использования конструкций, написанных руками, имхо, нельзя создать. Я про конструкции типа "{большая|красная} машина". А это сотни, а может и тысячи человеко-часов под каждую узкую тематику.
Так и нет цели написать программу как у Донцовой, которая генерит книги с детективным сюжетом и смыслом. Есть цель написать программу которая в состоянии сгенерировать текст, который сможет пройти проверку алгоритмами пс.
Забавно. Вроде открыл тему, чтобы прорекламировать свои услуги, а получил обсуждение этого на 7 страниц. Что могу сказать по поводу последних постов... Ребят, не усложняйте. Чтобы почесать зад, не нужно делать тройное сальто под водой. Всё гораздо проще, чем кажется. И одновременно гораздо сложнее, но тут уже сложность другого уровня :)
Порно-текст на армаде, который мне привели в пример, сильно меня воодушевил и дал мне несколько идей. Так что сейчас я попробую написать алгоритм для генерации статей, пригодных для лучших СДЛ.
Забавно. Вроде открыл тему, чтобы прорекламировать свои услуги, а получил обсуждение этого на 7 страниц. Что могу сказать по поводу последних постов... Ребят, не усложняйте. Чтобы почесать зад, не нужно делать тройное сальто под водой. Всё гораздо проще, чем кажется. И одновременно гораздо сложнее, но тут уже сложность другого уровня :)
Порно-текст на армаде, который мне привели в пример, сильно меня воодушевил и дал мне несколько идей. Так что сейчас я попробую написать алгоритм для генерации статей, пригодных для лучших СДЛ.
А на чем разработки-то ваши? Имею в виду ЯП.
Только я не понял - почему если есть алгоритм, продается не софт, а какое-то мифическое обучение программистов? Да еще и во множественном числе ?? :-)