Giter VIP home page Giter VIP logo

uber-research / fsdm Goto Github PK

View Code? Open in Web Editor NEW
7.0 4.0 3.0 5.28 MB

Code tor the SIGDIAL 2019 paper Flexibly-Structured Model for Task-Oriented Dialogues. It implements a deep learning end-to-end differentiable dialogue system model

License: Apache License 2.0

Python 100.00%
dialogue-systems dialogue-agents deep-learning deep-neural-networks natural-language-processing natural-language-understanding natural-language-generation

fsdm's Introduction

Flexibly-Structured Model for Task-Oriented Dialogues

This repository contains the code of the SIGDIAL 2019 paper:

Lei Shu, Piero Molino, Mahdi Namazifar, Hu Xu, Bing Liu, Huaixiu Zheng, Gokhan Tur

Flexibly-Structured Model for Task-Oriented Dialogues

Here are the slides.

FSDM

FSDM a novel end-to-end architecture for task-oriented dialogue systems. It is based on a simple and practical yet very effective sequence-to-sequence approach, where language understanding and state tracking tasks are modeled jointly with a structured copy-augmented sequential decoder and a multi-label decoder for each slot. The policy engine and language generation tasks are modeled jointly following that. The copy-augmented sequential decoder deals with new or unknown values in the conversation, while the multi-label decoder combined with the sequential decoder ensures the explicit assignment of values to slots. On the generation part, slot binary classifiers that predict if a slot will appear in the answer are used to improve performance. This architecture is scalable to real-world scenarios and is shown through an empirical evaluation to achieve state-of-the-art performance on both the Cambridge Restaurant dataset and the Stanford in-car assistant dataset.

Instructions

Please download GloVe embedding glove.6B.50d.txt from GloVe website and place them under data/glove/.

Dataset

The CamRest676 and Stanford KVRET in-car assistant datasets are provided in a preprocessed JSON format for convenience, but they belong to the original authors. Please download and place them under data/CamRest676 and data/kvret respectively.

Model training

For camrest dataset: python model.py -mode train -data camrest For kvret dataset: python model.py -mode train -data kvret

Model testing

For camrest dataset: python model.py -mode test -data camrest For kvret dataset: python model.py -mode test -data kvret

Model finetuning

For camrest dataset: python model.py -mode adjust -data camrest For kvret dataset: python model.py -mode adjust -data kvret

Hyperparameter configuration

In order to configure hypermeters change the values in config.py or use the -cfg argument: python model.py -mode adjust -data camrest -cfg epoch_num=50 beam_search=True

Citing

If you use the code, please cite:

@inproceedings{shu-etal-2019-flexibly,
    title = "Flexibly-Structured Model for Task-Oriented Dialogues",
    author = "Shu, Lei  and
      Molino, Piero  and
      Namazifar, Mahdi  and
      Xu, Hu  and
      Liu, Bing  and
      Zheng, Huaixiu  and
      Tur, Gokhan",
    booktitle = "Proceedings of the 20th Annual SIGdial Meeting on Discourse and Dialogue",
    month = sep,
    year = "2019",
    address = "Stockholm, Sweden",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/W19-5922",
    pages = "178--187"
}

fsdm's People

Contributors

leishu02 avatar w4nderlust avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

rozgo 594zyc o7s8r6

fsdm's Issues

Reproducibility of the results

Hi,

Thanks for providing the source code!
I tried running the code but obtained some weird results like this

seed bleu match success_f1 info_f1 req_f1
0 0.207949275 (0.3880597014635776, 0.0) (0.7801418389929059, 0.8536585365664378, 0.7182835820761514) 0.722941476 0.87251
1 0.200348767 (0.29850746266429046, 0.0) (0.796334007245739, 0.8766816143301193, 0.7294776119266888) 0.657963441 0.887064
2 0.219101644 (0.36567164176375583, 0.0) (0.797619042623378, 0.8516949152361929, 0.7499999999860074) 0.703427715 0.906561

I did not change anything in config.py except for the random seed, but the results are very low and obviously do not match with the paper. My environment is Python 3.6.5 and the PyTorch version is 1.0.1. Do you have any ideas about how to reproduce the results in your papers? Thanks so much for your help!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.