As a Loebner Contest entrant every year from 2013, I have experienced the original (LPP) and updated (LPP v2) versions of the Loebner Prize Protocol. Both versions of the protocol have proven difficult to use and deterred entrants. I want to suggest a new simpler version of the protocol which I call LPP v3:
1. LPP v3 shall handle any number of simultaneous conversations between entities connected to a single network (LAN). Entities can be judges, confederates or AI’s.
2. Prior to the contest each entity is given a unique name. Names conform to identifier syntax, consist of letters, digits or the underscore character, are case insensitive, and 40 characters or less in length. Examples are JUDGE1, Confederate4, UBERBOT_TEST.
3. There shall be a single shared folder which is readable and writeable by all networked entities. At the start of any contest or pre-contest, entities need two pieces of information: The shared folder path, and the name of the entity they are talking to.
4. To talk, an entity writes a text file entityName~destinationEntity~YYYYMMDD~hhmmss.txt. The content of the text file is the entity’s utterance, using ASCII printable characters only, optionally terminated with CR/LF characters, and limited in size to 32000 characters. Any control characters in the text file are ignored. Optionally we could use the Windows-1252 character set to allow European characters.
5. In the above text file entityName is the entity making the utterance, destinationEntity is the receiving entity, and YYYYMMDD~hhmmss is the date/time stamp as taken from entityName‘s computer. The tilde character is a delimiter which cannot appear in the other sub-strings. Entities can use a simple polling system: after they output their speech, they await a similarly named file from their partner with the latest timestamp. The result will be each entity can talk to its partner, and all conversations flow through the shared folder.
6. For example Judge1 might talk to Frankiebot by sending “Judge1~Frankiebot~20180628~090000.txt” containing the text “Hello”. Frankiebot knows it is talking to Judge1 and picks up this file. It might reply with a file “Frankiebot~Judge1~20180628~090030.txt” containing the text “Hi, I am Frankiebot”. Each round the entity knows to poll for the most recent timestamped file from its partner. Polling should not be done more than once per second as the time stamp only has an accuracy of one second, this also keeps the number of “directory reads” of the shared folder to a reasonable level.
7. There is no requirement for clocks on the entity’s computers to be synchronized, and there are no harmful effects if different entities have different local times. Each speaking entity uses the timestamp from the computer it is running on, so the receiving entity can always find the most recent utterance from its partner by polling for the file with the most recent timestamp embedded in the filename (YYYYMMDD~hhmmss).
8. At no point are any files deleted. This ensures a complete set of transcripts, and a monitoring program could be written that shows the progress of all conversations in real time.
9. By convention the AI’s wait until they are spoken to.
10. It may be objected this approach is inefficient and the shared folder would be a bottleneck. Let’s examine this more carefully. Assume a conversation between one person and one AI, the person types 10 characters per second and takes 10 seconds to compose a 100 character message. Assume the AI composes a 100 character reply in one millisecond. Therefore in 10.001 seconds, 200 bytes are written, 200 bytes are read and two files are created. To extrapolate, conversations between 100 people and 100 AI’s would generate 40k total read/writes and 200 files created in 10 seconds. This is about 4k bytes per second and 20 files per second, which should be well within the reach of modern hardware.
11. I am happy to release this idea to the public domain.
Will Rayer, www.uberbot.ai , 2018-06-28