# Report ## I. Module in convlab v2: ### 1. DST: * DST is a dialogue-level task that map partial dialogues into dialogues states. * Approach: * Input: a dialogue/a turn with its previous state * Output: dialogue state (i.e slot-value pair) #### 1.1. TRADE: * TRADE model takes \{*dialogue, domain_i, slot_j*\} as input and generates the value corresponding to \{*domain_i, slot_j*\} and the slot gates in {*ptr*, *dontcare*, *none*}. ##### a. Ontology: * Ontology domain-slot has predefined, such as: ```python= - hotel-price range + cheap + do n't care ... - hotel-type + hotel + guest house ... - hotel-parking + yes + do n't care ... - hotel-book stay + 2 + 1 ... - hotel-book day + tuesday + monday ... - hotel-book people + 6 + six ... - hotel-area + east + north ... - hotel-stars + 4 + 2 ... - hotel-internet + yes + do n't care ... - train-destination + bishops stortford + cambridge ... - train-day + friday + we ... - train-departure + cambridge + birmingham new street ... - train-arrive by + 23:27 + 19:51 ... - train-book people + 1 + 15 ... - train-leave at + 21:15 + 15:01 ... - attraction-area + centre + west ... - restaurant-food + turkish + chinese ... - restaurant-price range + expensive + moderate ... - restaurant-area + centre + north ... - attraction-name + all saints church + funky fun house ... - restaurant-name + meze bar restaurant + pizza hut city centre ... - attraction-type + museum + college ... - hospital-department + paediatric clinic + transitional care ... - hotel-name + city centre north b and b + el shaddai ... - taxi-leave at + 18:45 + after 15:45 ... - taxi-destination + express by holiday inn cambridge + dojo noodle bar ... - taxi-departure + christ's college + kirkwood house ... - restaurant-book time + not given + 13:10 ... - restaurant-book day + tuesday + not given ... - restaurant-book people + 2 + 3 ... - taxi-arrive by + 19:15 + 15:45 ... - bus-departure + cambridge ... - bus-destination + london kings cross + bishops stortford ... - bus-leaveAt + 21:45 ... - bus-day + wednesday ... ``` - Example: - Prev_state: ![](https://i.imgur.com/4xkcOwA.png) - Usr_action: ```python= "I need to book a hotel in the east that has 4 stars ." ``` - NLU output: ```python= ['hotel-area-east', 'hotel-stars-4'] ``` - Updated state: ![](https://i.imgur.com/CXFS9xs.png) - Update state algorithm: - Replace value from NLU output to current state. ##### b. Non-Ontology * The zero-shot DST model should be able to generate the correct value of $Y_{target}^{value}$ given dialogue history $X$, domain $D_{target}$ and slot $S_{target}$ where the pair ( $D_{target}$, $S_{target}$) unseen in training pharse. #### 1.2. Sumbt: * SUMBT considers a domain-slot type (e.g., ‘restaurant-food’) as a question andfinds the corresponding slot-value in a pair of userand system utterances, assuming the desirable answer exists in the utterance. Given domain and slot-types (e.g., ‘restaurant’ domain and ‘food’ slot-type), it stimates the probability of corresponding slot-value candidates (e.g., ‘Korean’ and European’) that are predefined in a domain ontology. ![](https://i.imgur.com/D3coEfk.png) #### 1.3. Comer * Using the hierarchical decoder. The hierarchical decoder, a hierarchical stacked decoder, decodes domains, slots, and values in a hierarchical manner, and generates the current round of dialogue state itself as a target sequence. ![](https://i.imgur.com/PknVUUE.png) * Taking the encoder-decoder network as the skeleton, but using hierarchically stacked decoders, first generate slot sequences in the dialogue state , and then generate corresponding value sequences for each slot. * Representation state: (Domain1- Slot1, Value1; Slot2, Value2;… Domain2- Slot1, Value1; …). * Single value assumption: ![](https://i.imgur.com/h2LpcXc.png) ### 2. Policy * Dialogue policy decides the system action for interacting with users based on dialogue states. * Approach: * Input: dialogue state + KB results (database) * Output: system action (speech-act + slot-value pairs) #### 2.1. Rule * From current state, take items randomly from database to recommend. For example: * Usr action: ```python= {'Hotel-Inform': [['Area', 'east'], ['Stars', '4']]} ``` * Constrain: ```python= [['area', 'east'], ['stars', '4']] ``` * From database: ```python= first_item = '''- address : 124 tenison road - area : east - internet : yes - parking : no - id : 0 - location : [52.1963733, 0.1987426] - name : a and b guest house - phone : 01223315702 - postcode : cb12dp - price : {'double': '70', 'family': '90', 'single': '50'} - pricerange : moderate - stars : 4 - takesbookings : yes - type : guesthouse - Ref : 00000000''' second_item = ... ``` * Recommend: ```python= ['Recommend', 'Hotel', 'Name', 'a and b guest house'] ``` ## II. ParlAI * ParlAI (pronounced “par-lay”) is a python framework for sharing, training and testing dialogue models, from open-domain chitchat, to task-oriented dialogue, to visual question answering. * 100+ popular datasets available all in one place, with the same API ### 1. Feature: #### 1.1. Test public model ![](https://i.imgur.com/NIDM3rP.png) #### 1.2. Obtain data: * Follow [this colab tutorial](https://colab.research.google.com/drive/1bRMvN0lGXaTF5fuTidgvlAl-Lb41F7AD#scrollTo=AqckSXqlmWuT), we can use both CMD or python script to download data. #### 1.3. Train model * Ex: train *seq2seq model* with *empathetic_dialogues dataset* and save model in `/from_scratch_model`: ![](https://i.imgur.com/32HCs20.png) #### 1.4. Bringing our dataset ![](https://i.imgur.com/q6ZtaCk.png) #### 1.5. Create our agent model ![](https://i.imgur.com/j8mucHF.png) * Read more in [this colab tutorial](https://colab.research.google.com/drive/1bRMvN0lGXaTF5fuTidgvlAl-Lb41F7AD#scrollTo=AqckSXqlmWuT) #### 1.6. Test model ![](https://i.imgur.com/modKrSq.png)