基于Transformer实现文本分类(Keras/TensorFlow)

2017年,Google 在论文 Attention is All you need 中提出了 Transformer 模型,其使用 Self-Attention 结构取代了在 NLP 任务中常用的 RNN 网络结构。而且实验也证明Transformer 在效果上已经完败传统的 RNN 网络。

简单来说,Transformer  可以被看做是一个 Seq2seq 模型,它包括一个Encoder和一个Decoder。常常被用来做机器翻译,Encoder读入一个英语句子,Decoder输出一个德语句子。

可以用Transformer来实现一个分类器(例如判断自然语言的Sentiment)。这时,我们只需要使用其中的Encoder部分即可。


一、数据集解析

本文的示例使用的是 IMDB 数据集,它已经被包含在了TensorFlow/Keras中。该数据集包含有50000条电影评论,其中的25000条将被作为训练集,另外25000条将被作为测试集。在训练集中有一半的评论为正面评价,另外一半的评论为负面评价。同样地,测试集中的一半评论是正面评价,另外一半评论则为负面评价。

vocab_size = 20000  # Only consider the top 20k words
maxlen = 200  # Only consider the first 200 words of each movie review
(x_train, y_train), (x_val, y_val) = keras.datasets.imdb.load_data(num_words=vocab_size)
print(len(x_train), "Training sequences")
print(len(x_val), "Validation sequence

你可能感兴趣的:(自然语言处理信息检索,tensorflow,transformer,深度学习,文本分类,Python)