该存储库适用于论文“无监督学习的快速准确的深度双向语言表示”,该论文详细描述了我们的方法。
T-TA ,即基于Transformer的文本自动编码器,是一种用于无监督学习任务的新型深度双向语言模型。 T-TA 学习简单的学习目标,即语言自动编码,即仅使用上下文来预测句子中的所有标记。与“屏蔽语言模型”不同,T-TA具有自我屏蔽机制,以避免仅仅将输入复制到输出。与 BERT(用于微调整个预训练模型)不同,T-TA 特别有利于获得上下文嵌入,上下文嵌入是从训练语言模型的隐藏层生成的每个输入标记的固定表示。
T-TA模型架构基于BERT模型架构,大多是标准的Transformer架构。我们的代码基于Google的BERT github,其中包括构建自定义词汇表、准备维基百科数据集等方法。
Ubuntu 16.04 LTS
Python 3.6.10
TensorFlow 1.12.0
git clone https://github.com/joongbo/tta.git
cd tta
我们发布了预训练的 T-TA 模型(262.2 MB tar.gz 文件)。
cd models
wget http://milabfile.snu.ac.kr:16000/tta/ tta -layer-3-enwiki-lower-sub-32k.tar.gz
tar -xvzf tta -layer-3-enwiki-lower-sub-32k.tar.gz
cd ..
然后, tta -layer-3-enwiki-lower-sub-32k
文件夹将出现在model/
文件夹中。目前,该模型适用于max_seq_length=128
。
我们发布了代码run_unsupervisedstsb.py
作为 T-TA 的使用示例。为了运行此代码,您可能需要几个 python 包: numpy
、 scipy
和sklearn
。
要获取 STS 基准数据集,
cd data
wget http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz
tar -xvzf Stsbenchmark.tar.gz
cd ..
然后, data/
文件夹中将出现stsbenchmark
文件夹。
跑步:
python run_unsupervisedstsb.py
--config_file models/ tta -layer-3-enwiki-lower-sub-32k/config.layer-3.vocab-lower.sub-32k.json
--model_checkpoint models/ tta -layer-3-enwiki-lower-sub-32k/model.ckpt
--vocab_file models/ tta -layer-3-enwiki-lower-sub-32k/vocab-lower.sub-32k.txt
输出:
分裂 | r |
---|---|
STSb-dev | 71.88 |
STSb测试 | 62.27 |
我们发布了预处理的librispeech 纯文本数据(1.66 GB tar.gz 文件)。在这个语料库中,每一行都是一个句子,因此我们使用句子单元(而不是段落单元)作为训练实例。原始数据可以在LibriSpeech-LM中找到。
cd data
wget http://milabfile.snu.ac.kr:16000/tta/corpus.librispeech-lower.sub-32k.tar.gz
tar -xvzf corpus.librispeech-lower.sub-32k.tar.gz
cd ..
然后, corpus-eval.librispeech-lower.sub-32k.txt
和corpus-train.librispeech-lower.sub-32k.txt
将出现在data/
文件夹中。
得到预处理后的纯文本数据后,我们制作tfrecords(创建训练数据的tfrecords需要一些时间):
rm tfrecords/ tta -librispeech-lower-sub-32k # delete dummy (symbolic link)
python create_tfrecords.py
--input_file data/corpus-eval.librispeech-lower.sub-32k.txt
--vocab_file configs/vocab-lower.sub-32k.txt
--output_file tfrecords/ tta -librispeech-lower-sub-32k/eval.tfrecord
--num_output_split 1
python create_tfrecords.py
--input_file data/corpus-train.librispeech-lower.sub-32k.txt
--vocab_file configs/vocab-lower.sub-32k.txt
--output_file tfrecords/ tta -librispeech-lower-sub-32k/train.tfrecord
我们训练模型(随机初始化)如下:
python run_training.py
--config_file configs/config.layer-3.vocab-lower.sub-32k.json
--input_file " tfrecords/ tta -librispeech-lower-sub-32k/train-* "
--eval_input_file " tfrecords/ tta -librispeech-lower-sub-32k/eval-* "
--output_dir " models/ tta -layer-3-librispeech-lower-sub-32k "
--num_train_steps 2000000
--num_warmup_steps 50000
--learning_rate 0.0001
为了更好的初始化,我们可以添加一行--init_checkpoint "models/ tta -layer-3-enwiki-lower-sub-32k/model.ckpt"
(下载预训练权重后)。
所有代码和模型均在 Apache 2.0 许可证下发布。有关详细信息,请参阅LICENSE
文件。
现在,引用 Arxiv 论文:
@article{shin2020fast,
title={Fast and Accurate Deep Bidirectional Language Representations for Unsupervised Learning},
author={Shin, Joongbo and Lee, Yoonhyung and Yoon, Seunghyun and Jung, Kyomin},
journal={arXiv preprint arXiv:2004.08097},
year={2020}
}
如需使用 T-TA 的帮助或问题,请提交 GitHub 问题。
有关 T-TA 的个人交流,请联系 Joongbo Shin ( [email protected]
)。