For my reference, further geekiness...
Poetor - an automated poetry generation program, based on relation network algorithms.
1) A poem is a subgraph of graph W, where W represents the entire world used to generate a poem.
2) Each node in the graph represents an atomic phrase. This may be one word, or several.
3) Each node may have n one-directional connections.
4) Each connection may be weighted.
5) Each connection may be assigned a type.
6) Nodes may be in groups.
7) A group is a subgraph of completely connected nodes.
The poem creation process starts with the arbitrary selection of a node. The next node is selected based on several factors:
Group-Preference: a value between one and zero, one meaning _always_ select the next node from another node in this group, and zero meaning that no preference is given to nodes in related groups. If there are no other nodes in this group, then treat the value as one for this iteration.
Link-Type-Preference: This is a map of Link-Type names and a value representing the relative probability of selecting based on this link-type.
Pre-selected structures: This is a subgraph of W which will be used, based on a probabalistic wieghting.