Few-shot Text Classification with Distributional Signatures
No Data
This repository contains the code and data for our ICLR 2020 paper:
Few-shot Text Classification with Distributional Signatures. Yujia Bao, Menghua Wu, Shiyu Chang and Regina Barzilay.
If you find this work useful and use it on your own research, please cite our paper.
@inproceedings{ bao2020fewshot, title={Few-shot Text Classification with Distributional Signatures}, author={Yujia Bao and Menghua Wu and Shiyu Chang and Regina Barzilay}, booktitle={International Conference on Learning Representations}, year={2020} }
Our goal is to improve few-shot classification performance by learning high-quality attention from the distributional signatures of the inputs. Given a particular episode, we extract relevant statistics from the source pool and the support set. Since these statistics only roughly approximate word importance for classification, we utilize an attention generator to translate them into high-quality attention that operates over words. This generated attention provides guidance for the downstream predictor, a ridge regressor, to quickly learn from a few labeled examples.
For further details on the model and various baselines, please see
src/README.md.
We ran experiments on a total of 6 datasets. You may download our processed data here.
| Dataset | Notes | |---|---| | 20 Newsgroups (link) | Processed data available. We used the
20news-18828version, available at the link provided. | RCV1 (link) | Due to the licensing agreement, we cannot release the raw data. Instead, we provide a list of document IDs and labels. You may request the dataset from the link provided. | | Reuters-21578 (link) | Processed data available. | | Amazon reviews (link) | We used a subset of the product review data. Processed data available. | | HuffPost headlines (link) | Processed data available. | | FewRel (link) | Processed data available.
textand
label.
textis a list of input tokens and
labelis an integer, ranging from 0 to the number of classes - 1.
path, which corresponds to each example's file path in the data distribution.
src/dataset/loader.py.
Run our model with default settings. By default we load data from
data/.
./bin/our.shScripts for other baselines may be found under
bin/.
src/main.pymay be run with one of three modes:
train,
test, and
finetune. -
traintrains the meta-model using episodes sampled from the training data. -
testevaluates the current meta-model on 1000 episodes sampled from the testing data. -
finetunetrains a fully-supervised classifier on the training data and finetunes it on the support set of each episode, sampled from the testing data.
As tryambak007 pointed out, there is an error when using multiprocessing.Queue. Please check out his fork (https://github.com/tryambak007/Distributional-Signatures) for the fix.