The plays of William Shakespeare, like many plays, are organized as a series of "scenes" in which various characters speak in sequence. This Demonstration illustrates the structure of eight of his most famous plays by creating links between characters who speak in proximity to each other during a scene. You select the play. You also select the maximum permissible proximity of speakers required to forge a link. Thus, if you select maximum proximity as two, and the sequence of speakers in a scene is "HAMLET", "Ghost", "HAMLET", "MARCELLUS", "HORATIO", then Ghost and MARCELLUS would be linked but Ghost and HORATIO would not be. The Demonstration displays a network showing the relationships among the characters, a list of the most important characters as judged by their "page rank" in this network, and the communities of characters that maximize the "modularity" of the network. If you hover your mouse over a node in the network, the name of the associated character will appear.
Snapshot 1: Macbeth with maximum proximity of 1
Snapshot 2: Macbeth with maximum proximity of 2
Snapshot 3: Romeo and Juliet. Notice that Romeo and Juliet are in separate communities even with maximum proximity of 3.
If the variable playDictionary holds a list of rules mapping a filename onto an XML version of the play, the code required to create the speech sequences is as follows: