Git Product home page Git Product logo

diffusemp's Introduction

DiffusEmp

This repo contains the official implementation for the ACL 2023 paper: DiffuEmp: A Conditional Diffusion Language Model with Multi-Grained Control for Empathetic Response Generation

Highlights

The main contribution of this paper is threefold: (1) We introduce explicit multi-grained control signals to solve the monotonous empathy problem, and convert the empathetic response generation into a controllable setting. (2) We propose DiffusEmp, a novel diffusion model-based framework, to unify the utilization of dialogue context and control signals, achieve elaborate control with a specific masking strategy, and integrate an emotion-enhanced matching method to produce diverse responses for a given context. (3) Experimental results show that our method outperforms competitive baselines in generating informative and empathetic responses.

Setup

pip install -r requirements.txt 

Datasets

EmpatheticDialogue dataset comprises 24,850 open-domain multi-turn conversations between two interlocutors. To download the EmpatheticDialogues dataset:

wget https://dl.fbaipublicfiles.com/parlai/empatheticdialogues/empatheticdialogues.tar.gz

The frames_list.txt can be downloaded from the following link and placed in the same folder as the dataset. https://drive.google.com/file/d/1odTzaymJkfguF7Wl0vvcIAJwCVgtZXyl/view?usp=sharing

Train

cd scripts
bash train.sh

Decode

cd scripts
bash run_decode.sh

Evaluation

cd scripts
python eval_seq2seq.py 

diffusemp's People

Contributors

surika avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

diffusemp's Issues

At least you should provide the right format of your dataset

the required dataset in your code is .jsonl, but provided dataset in remote netdisk is .csv,

--data_dir /path-to-repo/DiffusEmp/datasets/EmpatheticDialogue/mask-fine 

######
    if split == 'train':
        print('### Loading form the TRAIN set...')
        path = f'{data_args.data_dir}/train.jsonl'
    elif split == 'valid':
        print('### Loading form the VALID set...')
        path = f'{data_args.data_dir}/valid.jsonl'
    elif split == 'test':
        print('### Loading form the TEST set...')
        path = f'{data_args.data_dir}/test.jsonl'
    else:
        assert False, "invalid split for dataset"

where is the script for processing these data.

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.