Giter Club home page Giter Club logo

kbrd's Introduction

KBRD

Towards Knowledge-Based Recommender Dialog System.
Qibin Chen, Junyang Lin, Yichang Zhang, Ming Ding, Yukuo Cen, Hongxia Yang, Jie Tang.
In EMNLP-IJCNLP 2019

Prerequisites

  • Linux
  • Python 3.6
  • PyTorch >= 1.2.0

Getting Started

Installation

Clone this repo.

git clone https://github.com/THUDM/KBRD
cd KBRD

Please install dependencies by

pip install -r requirements.txt

Dataset

  • We use the ReDial dataset, which will be automatically downloaded by the script.
  • Download the refined knowledge base (dbpedia) used in this paper [Google Drive] [Tsinghua Cloud]. Decompress it and get the <path/to/KBRD/dbpedia/> folder, which should contain two files mappingbased_objects_en.ttl and short_abstracts_en.ttl.
  • Download the proprocessed extracted entities set [Google Drive] [Tsinghua Cloud] and put it under <path/to/KBRD/data/redial/.

Training

  1. To train the recommender part, run:
bash scripts/both.sh <num_exps> <gpu_id>
(optional) bash scripts/baseline.sh <num_exps> <gpu_id>
  1. To train the dialog part, run:
bash scripts/t2t_rec_rgcn.sh <num_exps> <gpu_id>

The test results are displayed at the end of training and can also be found at saved/<model_name>.test.

Logging

Training outputs, TensorBoard logs and models files are be saved in saved/ folder.

Evaluation

  1. scripts/score.py is used to hypothesis testing the significance of improvement between different models. To use, first run multiple experiments with num_exps > 1, for example:
bash scripts/both.sh 2 <gpu_id>
bash scripts/baseline.sh 2 <gpu_id>

Then,

python scripts/score.py --name-1 saved/release_baseline --name-2 saved/both_rgcn --num 2 --metric recall@50

where you should remove the trailing _0, _1 automatically added to the model names, nums should be set the same as num_exps above, and recall@50 can be replaced with other evaluation metrics in the paper.

Sample output:

[0.298, 0.2918]
0.2949
0.0031
[0.3417, 0.3369]
0.3393
0.0024
Ttest_indResult(statistic=-11.325204070341204, pvalue=0.007706635327863829)
  1. scripts/display_model.py is used to generate responses.
python scripts/display_model.py -t redial -mf saved/transformer_rec_both_rgcn_0 -dt test

Example output ([TorchAgent] is our model output):

~~
[eval_labels_choice]: Oh, you like scary movies?
I recently watched __unk__
[movies]:
  37993
[redial]: 
Hello!
Hello!
What kind of movies do you like?
I am looking for a movie recommendation.   When I was younger I really enjoyed the __unk__
[label_candidates: 3|37993|50395||Oh, you like scary movies?
I recently watched __unk__]
[eval_labels: Oh, you like scary movies?
I recently watched __unk__]
   [TorchAgent]: have you seen "The Shining  (1980)" ?
~~
  1. scripts/show_bias.py is used to show the vocabulary bias of a specific movie (like the qualitative analysis in Table 4)
python scripts/show_bias.py -mf saved/transformer_rec_both_rgcn_0

โ— Common Q&A

  1. Understanding model outputs. Please see THUDM#15 (comment).

  2. Adapting this code to other datasets. It is not straightforward for this code to be run on other datasets currently. The main reason is that we cached the entity linking process in KBRD for ReDial. Please see THUDM#10 (comment) for details.

  3. Why the recommender and the dialog part are trained separatedly? Please refer to THUDM#9 (comment) for detailed explanation.

If you have additional questions, please let us know.

Cite

Please cite our paper if you use this code in your own work:

@article{chen2019towards,
  title={Towards Knowledge-Based Recommender Dialog System},
  author={Chen, Qibin and Lin, Junyang and Zhang, Yichang and Ding, Ming and Cen, Yukuo and Yang, Hongxia and Tang, Jie},
  journal={arXiv preprint arXiv:1908.05391},
  year={2019}
}

kbrd's People

Contributors

klshuster avatar alexholdenmiller avatar jaseweston avatar stephenroller avatar jackurb avatar uralik avatar emilydinan avatar samhumeau avatar qibinc avatar ajfisch avatar yf225 avatar belbs avatar madrugado avatar bharathc346-zz avatar apsdehal avatar urikz avatar henry-e avatar hadasah avatar ekmb avatar backpropper avatar abisee avatar bavadim avatar bharathc346 avatar bhancock8 avatar pcgreat avatar pemazare avatar isaacmg avatar aszlam avatar swkrueger avatar ssatia avatar

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.