Skip to content
Code and data for paper "Dialog Intent Induction with Deep Multi-View Clustering", Hugh Perkins and Yi Yang, 2019, to appear in EMNLP 2019
Python
Branch: master
Clone or download
Latest commit 01747cc Jan 18, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data clarify labeled examples for airlines Sep 9, 2019
images remove unused figures Oct 31, 2019
metrics add code Sep 4, 2019
model Update multiview_encoders.py Jan 17, 2020
LICENSE.txt add license file for code Sep 5, 2019
README.md simplify readme Oct 31, 2019
pretrain.py add code Sep 4, 2019
proc_data.py Update proc_data.py Jan 17, 2020
requirements.txt add requirements.txt Oct 23, 2019
run_mvsc.py add code Sep 4, 2019
samplers.py add code Sep 4, 2019
train.py
train_pca.py update train files with new data file names Sep 5, 2019
train_qt.py update train files with new data file names Sep 5, 2019

README.md

Code and data for paper "Dialog Intent Induction with Deep Multi-View Clustering", Hugh Perkins and Yi Yang, 2019, to appear in EMNLP 2019.

Data is available in the sub-directory data, with a specific LICENSE file.

Dialog Intent Induction

Dialog intent induction aims at automatically discovering dialog intents from human-human conversations. The problem is largely overlooked in the prior academic works, which created a hugh gap between academics and industry.

In particular, academic dialog datasets such as ATIS and MultiWoZ assume dialog intents are given; they also focus on simple dialog intents like BookRestaurant or BookHotel. However, many complex dialog intents emerge in industrial settings that are hard to predefine; the dialog intents are also undergoing dynamic changes.

Deep multi-view clustering

In this work, we propose to tackle this problem using multi-view clustering. Consider the following example dialogs:

The user query utterances (query view) are lexically and syntactically dissimilar. However, the solution trajectories (content view) are similar.

Alternating-view k-means (AV-KMeans)

We propose a novel method for joint representation learning and multi-view cluster: alternating-view k-means (AV-KMeans).

We perform clustering on view 1 and project the assignment to view 2 for classification. The encoders are fixed for clustering and updated for classification.

Experiments

We construct a new dataset to evaluate this new intent induction task: Twitter Airlines Customer Support (TwACS).

We compare three competitive clustering methods: k-means, Multi-View Spectral Clustering (MVSC), and AV-Kmeans (ours). We experiment with three approaches to parameter initialization: PCA for k-means and MVSC; autoencoders; and quick thoughts.

The F1 scores are presented below:

Algo PCA/None autoencoders quick thoughts
k-means 28.2 29.5 42.1
MVSC 27.8 31.3 40
AV-Kmeans (ours) 35.4 38.9 46.2

Usage

Pre-requisites

To run AV-Kmeans

  • run one of:
# no pre-training
python train.py --pre-epoch 0 --data-path data/airlines_processed.csv --num-epochs 50 --view1-col first_utterance --view2-col context

# ae pre-training
python train.py --pre-model ae --pre-epoch 20 --data-path data/airlines_processed.csv --num-epochs 50 --view1-col first_utterance --view2-col context

# qt pre-training
python train.py --pre-model qt --pre-epoch 10 --data-path data/airlines_processed.csv --num-epochs 50 --view1-col first_utterance --view2-col context
  • to train on askubuntu, replace airlines with askubuntu in the above command-lines

To run k-means baseline

  • for qt pretraining run:
python train_qt.py --data-path  data/airlines_processed.csv --pre-epoch 10 --view1-col first_utterance --view2-col context --scenarios view1
  • to train on askubuntu, replace airlines with askubuntu in the above command-line
You can’t perform that action at this time.