код/данные для статьи NAACL'19 «Совместная оптимизация разнообразия и релевантности в генерации нейронных ответов»
SpaceFusion — это регуляризованная парадигма многозадачного обучения, предложенная для выравнивания и структурирования неструктурированных скрытых пространств, изучаемых различными моделями, обученными на разных наборах данных. Особый интерес представляет его применение к моделированию нейронных разговоров, где SpaceFusion используется для совместной оптимизации релевантности и разнообразия генерируемых ответов.
Еще документы:
наша статья на NAACL'19 (длинная, устная).
Слайды, представленные на NAACL'19.
Мы опубликовали блог MSR, чтобы обсудить интуицию и последствия.
наша следующая работа StyleFusion на EMNLP'19
наши последние модели оценки/рейтинга диалога, DialogRPT, на EMNLP'20
код протестирован с использованием Python 3.6 и Keras 2.2.4.
В этом репозитории мы предоставили сценарии для создания наборов данных Reddit и обработки наборов данных Switchboard, а также игрушечный набор данных для отладки.
Пожалуйста, проверьте здесь для получения более подробной информации.
Чтобы обучить модель SpaceFusion: python src/main.py mtask train --data_name=toy
Чтобы визуализировать изученное скрытое пространство: python src/vis.py --data_name=toy
Чтобы взаимодействовать с обученной моделью: python src/main.py mtask interact --data_name=toy --method=?
, где метод может быть greedy
, rand
, sampling
или beam
. Мы использовали rand
в газете
Чтобы сгенерировать гипотезы для тестирования с помощью обученной модели: python src/main.py mtask test --data_name=toy
Для оценки сгенерированных гипотез python src/eval.py --path_hyp=? --path_ref=? --wt_len=?
, который выводит точность, полноту и F1, как определено в статье. Возможно, вы захотите сначала запустить эту команду с -len_only
чтобы найти правильный wt_len
, который минимизирует разницу между средней длиной (количеством токенов) гипотезы и ссылки.
main.py
— основной файл
model.py
определяет модель SpaceFusion (см. class MTask
) и некоторые базовые показатели.
vis.py
определяет функцию, которую мы использовали для визуализации и анализа скрытого пространства.
dataset.py
определяет источник данных
shared.py
определяет гиперпараметры по умолчанию.
Пожалуйста, процитируйте нашу статью NAACL, если этот репозиторий вдохновил вашу работу :)
@article{gao2019spacefusion, title={Jointly Optimizing Diversity and Relevance in Neural Response Generation}, author={Gao, Xiang and Lee, Sungjin and Zhang, Yizhe and Brockett, Chris and Galley, Michel and Gao, Jianfeng and Dolan, Bill}, journal={NAACL-HLT 2019}, year={2019} }