Top Banner
By: Robert Apeldorn
10

By: Robert Apeldorn. Generate statistical random texts that can be read well Allow for the output texts to be created quickly regardless the size.

Jan 19, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

By: Robert Apeldorn

Page 2: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

Generate statistical random texts that can be read well

Allow for the output texts to be created quickly regardless the size of the input text

Page 3: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

The markov chain algorithm emits output phrases by randomly choosing a suffix that follows the prefix

Suppose we have the text:

“Show your flowcharts and conceal your tables and I will be mystified. Show your tables and your flowcharts will be obvious.” (end)

Page 4: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

Input Prefix: Suffix words that follow:

Show your flowcharts tables

your flowcharts and will

flowcharts and conceal

flowcharts will be

your tables and and

will be mystified. obvious.

be mystified. Show

be obvious. (end)

Page 5: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.
Page 6: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

As I started up the undershirt onto his chest black, and big stomach muscles bulging under the light. “You see them?” Below the line where his ribs stopped were tow raised white welts. “See on the forehead.” “Oh, Brett I love you.” “Lets not talk. Talking’s all bilge. I’m going away tomorrow.” “Tomorrow?” “Yes. Didn’t I say so? I am.” “Let’s have a drink, then.”

Page 7: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

Use an anonymous array to keep track of the suffixes

Use a multiple assignment method to update the prefix

Special characters needed:• $ for scalar• @ for indexed array, use [ ] brackets to

index• Use { } brackets to index hashes

Page 8: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

# markov.pl: markov chain algorithm for 2-word prefixes

$MAXGEN = 10000;$NONWORD = "\n";$w1 = $w2 = $NONWORD; # initial statewhile (<>) { # read each line of input

foreach (split) {push(@{$statetab{$w1}{$w2}}, $_);($w1, $w2) = ($w2, $_); # multiple assignment

}}push(@{$statetab{$w1}{$w2}}, $NONWORD); # add tail

$w1 = $w2 = $NONWORD;for ($i = 0; $i < $MAXGEN; $i++) {

$suf = $statetab{$w1}{$w2}; # array reference$r = int(rand @$suf); # @$suf is number of elemsexit if (($t = $suf->[$r]) eq $NONWORD);print "$t\n";($w1, $w2) = ($w2, $t); # advance chain

}

Page 9: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

Programming Language

Time (seconds) Lines of source code

C 0.30 150

Java 9.2 105

C++/STL/list 1.5 70

Awk 2.1 20

Perl 1.0 18

Page 10: By: Robert Apeldorn.  Generate statistical random texts that can be read well  Allow for the output texts to be created quickly regardless the size.

Kernighan, Brian W., and Rob Pike. The Practice of Programming (Addison-Wesley Professional Computing Series). New York: Addison-Wesley Professional, 1999. Print.