Введение
Генератор бессмысленных текстов. "Диссоциативная пресса" – это генератор пародий (компьютерная программа, создающая бессмысленный текст). Генерируемый текст создается на основе другого текста с использованием метода марковских цепей. Название является пародией на "Associated Press" и психологический термин "диссоциация" (хотя бессвязная речь чаще встречается при афазии и шизофрении – которые, тем не менее, часто путают с диссоциативным расстройством идентичности у неспециалистов). Реализация алгоритма доступна в Emacs. Другая реализация доступна как модуль Perl в CPAN под названием Games::Dissociate.
Dissociated press is a parody generator (a computer program that generates nonsensical text). The generated text is based on another text using the Markov chain technique. The name is a play on "Associated Press" and the psychological term dissociation (although word salad is more typical of conditions like aphasia and schizophrenia – which is, however, frequently confused with dissociative identity disorder by laypeople). An implementation of the algorithm is available in Emacs. Another implementation is available as a Perl module in CPAN, Games::Dissociate.
Алгоритм
Алгоритм начинается с печати последовательности слов (или букв) из исходного текста. Затем он ищет в исходном тексте совпадение последних напечатанных слов или букв. Если найдено несколько совпадений, выбирается случайное из них, и печатается текст, следующий за выбранным совпадением. После того, как напечатано заранее заданное количество текста, процедура поиска повторяется для вновь напечатанного фрагмента. Поскольку слова и фразы обычно появляются в определенных грамматических контекстах, полученный текст часто выглядит грамматически корректным, а если исходный текст выдержан в едином стиле, результат кажется схожим по стилю и тематике, и читателю требуется некоторое усилие, чтобы понять, что он не является подлинным. Однако случайность процесса сборки лишает его логической связности – слабо связанные между собой части соединяются бессмысленно, создавая забавный, абстрактный и случайный результат.
История
Алгоритм диссоциированной прессы описан в HAKMEM (1972) № 176. Название "диссоциированная пресса" впервые стало известно в связи с реализацией Emacs. Брайан Хейс обсудил алгоритм травести в журнале Scientific American в ноябре 1983 года. В статье был представлен искажённый отрывок из произведения Уильяма Фолкнера:
"Когда он забрался на стол, он вошёл. Он никогда не выходил из моего кармана в качестве меры защиты компании от бунтов и кровопролития. И когда он сказал: «Вы мне говорите про билет на автобус, не говоря уже о том, чтобы составлять истории болезни. Тогда закон вернётся с ножом!» Хью Кеннер и Джозеф О’Рурк из Университета Джона Хопкинса обсудили свой генератор травести на основе таблиц частот для микрокомпьютеров в журнале BYTE в ноябре 1984 года. В статье был включён исходный код на Turbo Pascal для двух версий генератора, одна из которых использовала алгоритм Хейса, а другая – алгоритм Hellbat Клода Шеннона. Мюррей Лессер предложил скомпилированную версию на BASIC в журнале в июле 1985 года, в сентябре 1985 года Питер Уэйнер предложил версию, использующую древовидные структуры данных вместо таблиц частот, а в декабре 1985 года Нил Дж. Рубенкинг предложил версию, написанную на Turbo Pascal, которая хранила информацию о частоте в B-дереве.
When he got on the table, he come in. He never come out of my own pocket as a measure of protecting the company against riot and bloodshed. And when he said. "You tell me a bus ticket, let alone write out no case histories. Then the law come back with a knife!" Hugh Kenner and Joseph O'Rourke of Johns Hopkins University discussed their frequency table based Travesty generator for microcomputers in BYTE in November 1984. The article included the Turbo Pascal source for two versions of the generator, one using Hayes' algorithm and another using Claude Shannon's Hellbat algorithm. Murray Lesser offered a compiled BASIC version in the magazine in July 1985, in September 1985 Peter Wayner offered a version that used tree data structures instead of frequency tables, and in December 1985 Neil J. Rubenking offered a version written in Turbo Pascal that stored frequency information in a B tree.