Code/Daten für das NAACL'19-Papier Jointly Optimizing Diversity and Relevance in Neural Response Generation
SpaceFusion ist ein reguliertes Multitasking-Lernparadigma, das vorgeschlagen wird, um die unstrukturierten latenten Räume auszurichten und zu strukturieren, die von verschiedenen Modellen gelernt werden, die auf verschiedenen Datensätzen trainiert werden. Von besonderem Interesse ist die Anwendung auf die neuronale Konversationsmodellierung, bei der SpaceFusion verwendet wird, um gemeinsam die Relevanz und Vielfalt der generierten Antworten zu optimieren.
Weitere Dokumente:
unser Vortrag bei NAACL'19 (lang, mündlich).
Die auf der NAACL'19 präsentierten Folien.
Wir haben einen MSR-Blog veröffentlicht, um die Intuition und Implikation zu diskutieren
unsere Nachfolgearbeit, StyleFusion bei EMNLP'19
unsere neuesten Dialog-Bewertungs-/Ranking-Modelle, DialogRPT, auf der EMNLP'20
Der Code wurde mit Python 3.6 und Keras 2.2.4 getestet
Wir haben in diesem Repo Skripte zum Generieren von Reddit und zum Verarbeiten von Switchboard-Datensätzen sowie einen Spielzeugdatensatz zum Debuggen bereitgestellt.
Weitere Einzelheiten finden Sie hier.
So trainieren Sie ein SpaceFusion-Modell: python src/main.py mtask train --data_name=toy
Um den erlernten latenten Raum zu visualisieren: python src/vis.py --data_name=toy
So interagieren Sie mit dem trainierten Modell: python src/main.py mtask interact --data_name=toy --method=?
, wobei die Methode greedy
, rand
, sampling
oder beam
sein kann. Wir haben rand
in der Zeitung verwendet
So generieren Sie Hypothesen zum Testen mit dem trainierten Modell: python src/main.py mtask test --data_name=toy
Um die generierten Hypothesen auszuwerten python src/eval.py --path_hyp=? --path_ref=? --wt_len=?
, das die Präzision, den Rückruf und F1 ausgibt, wie im Dokument definiert. Möglicherweise möchten Sie diesen Befehl zuerst mit -len_only
ausführen, um eine geeignete wt_len
zu finden, die den Unterschied zwischen der durchschnittlichen Länge (Anzahl der Token) von Hypothese und Referenz minimiert.
main.py
ist die Hauptdatei
model.py
definiert das SpaceFusion-Modell (siehe class MTask
) und einige Basislinien
vis.py
definiert die Funktion, die wir zur Visualisierung und Analyse des latenten Raums verwendet haben
dataset.py
definiert den Daten-Feeder
shared.py
definiert die Standard-Hyperparameter
Bitte zitieren Sie unser NAACL-Papier, wenn dieses Repo Ihre Arbeit inspiriert hat :)
@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} }