microsoft / task_oriented_dialogue_as_dataflow_synthesis

Code to reproduce experiments in the paper "Task-Oriented Dialogue as Dataflow Synthesis" (TACL 2020).
MIT License
304 stars 66 forks source link

How to retrive the refer and recovery information from previous turn? #68

Open PosoSAgapo opened 2 years ago

PosoSAgapo commented 2 years ago

Thank you for releasing this wonderful dataset. I am wondering how one could actually execute a program?

For example, given such dialogue below: __User When is my next staff meeting scheduled for? __User Is there a meeting after that? __StartOfProgram The target program is : ( let ( x0 ( Event.end ( Execute ( refer ( extensionConstraint ( ^ ( Event ) EmptyStructConstraint ) ) ) ) ) ) ( Yield ( > ( size ( QueryEventResponse.results ( FindEventWrapperWithDefaults ( EventOnDateAfterTime ( DateTime.date x0 ) ( ^ ( Event ) EmptyStructConstraint ) ( DateTime.time x0 ) ) ) ) ) 0L ) ) ) The target program before this turn is : ( Yield ( Event.start ( FindNumNextEvent ( Event.subject_? ( ?~= " staff meeting " ) ) 1L ) ) )

We know that the that in the dialogue is to refer to a staff meeting in the previous turn, but how we could automatically resolve this refer and locate the event or entity it refers to? What I mean is, is there a way that could automatically retrieve the referred event/entity from previous dialogue turns?

To be exact: There is a refer function in the target program, which we can know from the context, it refers to the staff meeting. This staff meaning is also in the target program of the previous turn. How can we automatically know that refer refers to staff meeting of the previous program? Is a code provided in the repository to resolve such special functions like refer/recovery/revision? So we could automatically retrieve information from previous turns?

It seems like the repository does not provide a program executor, but I want to is such function provided? If it isn't, training in a Seq2Seq way does not help the model to understand what refer is, since in such occasion, refer is just a normal function like any other function, but we want the model to find related information from the previous turn when the model encounters such function like refer/recovery/revision. If it is, how we could use current codes in the repository to automatically retrieve information from previous turns so that the model could actually use information from previous turns when encountering the refer token?