Уроки черного SEO: "Создай свой Дорген"

BredoGen.
На сайте с 19.10.2009
Offline
98
#61
andrewsp:
"Аот"? Я его использовал, там есть даже готовые модули. Но он не решает проблемы читабельности текстовки. Для дора прокатит, для сата или автоблога - нет. Алгоритм, описанные в 2007 году на армаде (с некоторыми улучшениями, чистый отлавливается элементарно по частотке и еще по парочке признаков) уже давно реализован и вполне успешно используется. Но хочется читабельности для автоблогов. А он этого не дает.

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

кому интересно: aot.ru/technology.html

наработок там очень много и есть что почитать по теме.

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

nitrat
На сайте с 27.10.2009
Offline
34
#62

еcть один неплохой велосипед от яндекса - mystem

BredoGen.
На сайте с 19.10.2009
Offline
98
#63
nitrat:
еcть один неплохой велосипед от яндекса - mystem

Был бы он с сорцами :)

У AOT'а, конечно, тоже не всё идеально. Система скорее монолитная, чем модульная, и с документацией там весьма хреново. Но всё, что может понадобиться, там есть.

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

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

Модуль лемматизации и морфологического анализа распознает 20 частей (http://www.aot.ru/docs/rusmorph.html) и соответствующие наборы граммем для этих частей. Мало вероятно, что для генерации понадобится рассматирать все 20, учитывая то, что некоторые из них могут обладать одинаковыми признаками. Тут каждый решает для себя.

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

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

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

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

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

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

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

Все три варианта очень сырые, для оживления текста стоит учитывать вводные слова, правильнее обрабатывать запятые и союзы, а так же обособленные обороты. Возможно, в этом поможет модуль графематического анализа текста (http://www.aot.ru/docs/graphan.html)

Как-то вот так. Поверхностно, копать глубже в эту тему пока нет времени. Дискасc? (:

У ТС безусловно всё намного интереснее, судя по результатам.

.:nbd:.
На сайте с 04.11.2008
Offline
98
#64
BredoGen.:
Первый - просто меняем местами слова с одинаковыми признаками в размеченном тексте. Рассматривать подробно, думаю, не стоит.

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

Партия напильников отправилась на прилавок магазина.

Стая лебедей улетела на юг Франции.

Если заменить каждое второе слово второго предложения на каждое второе слово первого предложения получим:

Стая напильников улетела на юг магазина.

Разбиваем предлжение в цепь по 2 слова, получаем:

стая напильников;

напильников улетела;

улетела на;

на юг;

юг магазина.

весьма сомнительно что пары слов под номерами 1, 2 и 5, достаточно часто встречаются в естественном тексте. Соответственно достаточно легко палятся.

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

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

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

А что если пойти от обратного, не генерировать текст с дальнейшей вставкой или заменой части слов на ключевые, а генерировать текст исходя из ключевых слов?

1) Сделать выборку наиболее частых слов по частям речи и использовать ее в качестве словаря.

2) Подготовить частовстречающиеся в естественном тексте шаблоны предложений.

3) Определить признаки слов в кее и выбрать наиболее оптимальные шаблоны.

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

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

Палю тему Дорген (/ru/forum/439165) + кеи + контент (http://datarama.biz/) + еще немного кеев и скриптов (http://amazingsoftware.ru/) = $$$ Мы делаем доры, а не пишем романы (c) один Дима рефка dino_spomoni (http://goo.gl/w62v3)
Дeнис
На сайте с 14.05.2009
Offline
67
#65

Абсолютно читаемый и связный рассказ без использования конструкций, написанных руками, имхо, нельзя создать. Я про конструкции типа "{большая|красная} машина". А это сотни, а может и тысячи человеко-часов под каждую узкую тематику.

А так, в теории, рассказ разбивается на короткие эпизоды и под каждый эпизод создается много таких конструкций-шаблонов, еще увешанных операторами if и else.

Например человек рассказывает о гостинице:

1. путь от аэропорта/вокзала/порта до гостиницы

2. расположение гостиницы относительно близлежащих объектов

3. внешний вид гостиницы

4. вход в гостиницу

5. описание ресепшена

6. разговор с человеком на ресепшене

7. путь до номера

8. вход в номер

и т.д.

За год в одиночку наверное можно такое написать. Только как-то неохота.

[]
BredoGen.
На сайте с 19.10.2009
Offline
98
#66
.:nbd:.:
Неестественность текста будет достаточно легко палиться при частотном анализе слов (или их пар). Для примера возьмем 2 одинаковых по структуре предложения:

Партия напильников отправилась на прилавок магазина.
Стая лебедей улетела на юг Франции.

Если заменить каждое второе слово второго предложения на каждое второе слово первого предложения получим:

Стая напильников улетела на юг магазина.

Разбиваем предлжение в цепь по 2 слова, получаем:

стая напильников;
напильников улетела;
улетела на;
на юг;
юг магазина.

весьма сомнительно что пары слов под номерами 1, 2 и 5, достаточно часто встречаются в естественном тексте. Соответственно достаточно легко палятся.



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

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

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

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

.:nbd:.:

А что если пойти от обратного, не генерировать текст с дальнейшей вставкой или заменой части слов на ключевые, а генерировать текст исходя из ключевых слов?

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

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

Проблема неестественности текста, я так понимаю, тут тоже не решается?

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

Можно конечно просто брать тексты, разбивать на предложения и превращать автоматом в шаблоны с признаками. Но результат от того-же Маркова будет мало чем отличаться, кроме вставки кеев. Которые тоже бывают разные, иногда лучше определить признаки первого [и последнего?] слова в кее и подобрать, после какой части речи [или перед какой] в тексте лучше его вставить.

.:nbd:.
На сайте с 04.11.2008
Offline
98
#67
Дeнис:
Абсолютно читаемый и связный рассказ без использования конструкций, написанных руками, имхо, нельзя создать. Я про конструкции типа "{большая|красная} машина". А это сотни, а может и тысячи человеко-часов под каждую узкую тематику.

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

K
На сайте с 02.11.2009
Offline
35
#68

Забавно. Вроде открыл тему, чтобы прорекламировать свои услуги, а получил обсуждение этого на 7 страниц. Что могу сказать по поводу последних постов... Ребят, не усложняйте. Чтобы почесать зад, не нужно делать тройное сальто под водой. Всё гораздо проще, чем кажется. И одновременно гораздо сложнее, но тут уже сложность другого уровня :)

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

BredoGen.
На сайте с 19.10.2009
Offline
98
#69
Kroid:
Забавно. Вроде открыл тему, чтобы прорекламировать свои услуги, а получил обсуждение этого на 7 страниц. Что могу сказать по поводу последних постов... Ребят, не усложняйте. Чтобы почесать зад, не нужно делать тройное сальто под водой. Всё гораздо проще, чем кажется. И одновременно гораздо сложнее, но тут уже сложность другого уровня :)

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

А на чем разработки-то ваши? Имею в виду ЯП.

akaplenko
На сайте с 09.09.2009
Offline
48
#70

Только я не понял - почему если есть алгоритм, продается не софт, а какое-то мифическое обучение программистов? Да еще и во множественном числе ?? :-)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий