Мы предоставляем реализацию TensorFlow модели диалога на основе CVAE, описанной в статье «Изучение разнообразия на уровне дискурса для моделей нейронных диалогов с использованием условных вариационных автоэнкодеров» , опубликованной в виде длинной статьи в ACL 2017. Дополнительные сведения см. в этой статье.
Если вы используете в своей работе какие-либо исходные коды или наборы данных, включенные в этот набор инструментов, пожалуйста, дайте ссылку на следующий документ. Бибтексы перечислены ниже:
[Zhao et al, 2017]:
@inproceedings{zhao2017learning,
title={Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders},
author={Zhao, Tiancheng and Zhao, Ran and Eskenazi, Maxine},
booktitle={Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},
volume={1},
pages={654--664},
year={2017}
}
Базовый метод HRED с использованием того же набора данных SwitchBoard также реализован в Texar , наборе инструментов для генерации текста общего назначения. Оформить заказ здесь.
python kgcvae_swda.py
запустит обучение по умолчанию и сохранит модель в ./working
Измените флаги TF в верхней части файлаkgcvae_swda.py следующим образом, чтобы запустить существующую модель.
forward_only: False -> True
test_path: set to the folder contains the model. E.g. runxxxx
Затем вы можете запустить модель:
python kgcvae_swda.py
Результаты будут выведены на стандартный вывод, а сгенерированные ответы будут сохранены в test.txt в test_path.
Загрузите встраивание слов Glove с https://nlp.stanford.edu/projects/glove/. По умолчанию используется встраивание слов из 200 измерений, обученное в Твиттере.
Наконец, установите word2vec_path в строке 15 файлаkgcvae_swda.py.
Мы выпускаем два набора данных:
Если вы хотите обучить модель на собственных данных. Пожалуйста, создайте файл рассола следующего формата:
# The top directory is a python dictionary
type(data) = dict
data.keys() = ['train', 'valid', 'test']
# Train/valid/test is a list, each element is one dialog
train = data['train']
type(train) = list
# Each dialog is a dict
dialog = train[0]
type(dialog)= dict
dialog.keys() = ['A', 'B', 'topic', 'utts']
# A, B contain meta info about speaker A and B.
# topic defines the dialog prompt topic in Switchboard Corpus.
# utts is a list, each element is a tuple that contain info about an utterance
utts = dialog['utts']
type(utts) = list
utts[0] = ("A" or "B", "utterance in string", [dialog_act, other_meta_info])
# For example, a utterance look like this:
('B','especially your foreign cars',['statement-non-opinion'])
Поместите полученный файл в ./data и установите data_dir вkgcvae_swda.py.