【NLP】天池新闻文本分类(六)——基于深度学习的文本分类2
前言
本文是NLP之新闻文本分类挑战赛(赛题链接)。
的第六篇:基于深度学习得文本分类3。上一篇是基于深度学习的文本分类2,介绍Word2Vec的文本表示方法、使用TextCNN、TextRNN进行文本分类、以及使用HAN网络结构进行文本分类。本篇将介绍基于Bert的文本分类,具体包括pretrain和finetune两部分。
基于Bert文本分类
Bert Pretrain
预训练过程使用了Google基于Tensorflow发布的BERT源代码。首先从原始文本中创建训练数据,由于本次比赛的数据都是ID,这里重新建立了词表,并且建立了基于空格的分词器。
class WhitespaceTokenizer(object):
def __init__(self, vocab_file):
self.vocab = load_vocab(vocab_file)
self.inv_vocab = {v: k for k, v in self.vocab.items()}
def tokenize(self, text):
split_tokens = whitespace_tokenize(text)
output_tokens = []
for token in split_tokens: