BredoGen.

BredoGen.
Рейтинг
98
Регистрация
19.10.2009
_EvgeN_:
офигеть у вас ценники... у меня тут 8мбит за 6 рублей...

Хах.

А в некоторых странах СНГ вот так:


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

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

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

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

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

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

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

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

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

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



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

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

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

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

.:nbd:.:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ну раз заговорили о генерации. Пишу с кпк, поэтому коротко и возможно это очевидные вещи.

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

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

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

Кому-нибудь интересна тема?

seomoneys:
Дабы не радовать Денисов Поповых, только для этого.

Проверял на Win XP7 x86/x64 и Win Xp x86 - полет нормальный.

Порадуй линуксоидов, открой исходник под GPL :)

Под моно из-за обфускации не запускается. Ну да ладно.

Обфускация конечно штука прикольная, но блин, зачем? Из-за нее даже не запустить.

Ужик:
Сайт открывается везде, кроме Хрома.
Помогите решить проблему, плз. За решение вопроса - 20wmz на пиво гарантирую! 🍻

Chromium 9.0.597.45

Всё работает.

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

Dreammaker:
BredoGen., у меня прикручен вот этот репозитарий https://launchpad.net/~chromium-daily/+archive/ppa из ланчпада, может там никаких страшных зависимостей нет и на дебиане тоже заработает?

К сожалению:


bredogen@debian:~$ sudo aptitude install chromium-browser
[sudo] password for bredogen:
Следующие НОВЫЕ пакеты будут установлены:
chromium-codecs-ffmpeg{a}
Следующие пакеты будут обновлены:
chromium-browser{b}
1 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 1 пакетов не обновлено.
Необходимо получить 15,8 MB архивов. После распаковки 11,4 MB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
chromium-browser: Зависит: libgconf2-4 (>= 2.31.1) но установлен 2.28.1-6
Зависит: libgdk-pixbuf2.0-0 (>= 2.21.6) который является виртуальным пакетом.
Зависит: lzma который является виртуальным пакетом.

Такой libgconf, опять таки только в экспериментале, и скорее всего потянет за собой еще кучу. Ломать зависимости уже не буду, подожду бекпорта в экспериментале. Как вариант еще откатиться до стабильного 6.0.472.63 или таки собрать из сорцов.

Да и не критично, в принципе.

Всего: 556