Dialog theory

History / Edit / PDF / EPUB / BIB /
Created: June 2, 2016 / Updated: September 27, 2017 / Status: in progress / 3 min read (~581 words)

  • $Statement \subseteq Proposition \subset Conclusion$

In a discussion, each reply is either

  • a new topic
  • following the current topic, thus either continuing the existing chain or creating a new one
  • replying to an old topic

In an IRC chat, one can use the nick of a user to reply to him, for example:

<johnSmith> tomzx: that's pretty nice!

Here are a few rules:

  • We never reply to statements that were emitted after we emitted our reply (sequentiality of timeline)

Here are a few soft rules (not necessarily true):

  • We generally reply to the last statement emitted by the person we're talking with
  • We generally do not talk to ourselves
  • Many statements emitted by the same emitter in short bursts may be in response to the same statements, or different statements
  • An statement emitted after there has been silence for a considerable while generally implies this statement is the start of a new discussion thread

Things that can be done to ease processing:

  • Merge all statements from an emitter that have been emitted sequentially (not interrupted by others)
    • This may make the association of future statements more difficult as it may be unclear what part of the merged statements is being replied to

To associate a sentence with its previous context, the following steps are accomplished:

  • read the sentence and extract word cues
  • determine the start of the discussion thread by observing various hints:
    • temporally close interlocutors
    • a period of inactivity potentially indicating a topic change

  • Commencement rules
  • A collection of locutions
  • Combinations rules for the locutions
  • A collection of commitments
  • Combinations rules for the commitments
  • Locution-commitment assignment rules
  • Termination rules

Source: A Mathematical Model of Dialog, Mark W. Johnson, Peter McBurney, Simon Parsons

  • Statements
  • Claim/Proposition
  • Proof
  • Premise
  • Conclusion
  • Axiom
  • Theorem
  • Fact

// No actors - Monologue

say('I want to create a new github project')
if (ask('Will it have many parts/subprojects?')) {
say('Create a new organization')
do('Create project in new organization')
} else {
say('Create project in personal account')
}

// With language specific verbs - Dialog(2)
tell = say
query = ask

tell('I want to create a new github project') // Tell comes from the first actor
if (ask('Will it have many parts/subprojects?')) { // Ask comes from the second actor
say('Create a new organization') // Say comes from the second actor
query('What should it be named?') // Query comes from the first actor
do('Create project in new organization')
} else {
say('Create project in personal account')
}

// With actors - Dialogue(3..n)

var alex = actor('alex');
var tom = actor('tom');

alex.say('I want to create a new github project')
if (tom.ask('Will it have many parts/subprojects?')) {
tom.say('Create a new organization')
tom.say('Create project in new organization')
//alex.do('Create project in new organization')
} else {
tom.say('Create project in personal account')
}

// Actor based - Dialogue (3..n)

tom(function() {
if (ask('Will it have many parts/subprojects?')) {
say('Create a new organization')
say('Create project in new organization')
} else {
say('Create project in personal account')
}
});

// Actions
tell
say
ask
do
wait

// Things it can do

Extract the list of say to create a list of options for a select
Extract prefixes to make a hierarchical list "I want to ...", "I have to..."